การเป็นโปรแกรมเมอร์มืออาชีพไม่ได้หมายความว่าเราจะสัมภาษณ์งานได้ง่ายๆ เพราะโดยทั่วไปแล้วจะใช้เวลาเป็นสัปดาห์ หรือบางครั้งเป็นเดือนเลยก็มีในการแก้ปญหาไอทีต่างๆ แต่การสัมภาษณ์งานนั้น เรามีเวลาไม่ถึงชั่วโมง วันนี้แอดมินเว็บไซต์ Jobcute ก็เลยเอาบาทความมาฝากเกี่ยวกับทักษะในการสัมภาษณ์ ซึ่งเป็นทักษะที่สามารถเรียนรู้และพัฒนาได้ มาดูกันเลยค่ะ
1. Alert อยู่ตลอดเวลา
เป็นเรื่องธรรมดาอยู่แล้วที่ทุกบริษัทอยากได้พนักงานที่ทำให้องค์กรเติบโตขึ้นเรื่อยๆ ซึ่งเป็นวิธีเดียวที่จะทำให้องค์กรเติบโตขึ้นได้ นั่นคือ พนักงานในองค์กรต้องเก่งและขยัน จึงทำให้ HR คัดเลือกเฉพาะพนักงานที่มีความกระตือรือร้นสูงเข้ามาร่วมงาน
หากคุณยังใช้ชีวิตแบบ slow life ไปวันๆ หรือชอบอู้งาน ทางแอดมินขอแนะนำเลยว่าคุณควรรีบเปลี่ยนตัวเองเพราะความกระตือรือร้นและกระหายการทำงาน นับเป็นสิ่งที่สำคัญพอๆกับทักษะในการทำงานเลยทีเดียว
แต่ถ้าคุณลองเปลี่ยนตัวเองแล้ว แต่ยังพบว่าคุณยังเปลี่ยนได้ไม่เยอะอีก หรือดูเหมือนจะขี้เกียจอีก หายกังวลได้เลยค่ะ เพราะเรื่องแบบนี้สามารถเนียนกันได้ สิ่งที่คุณควรทำก็คือการจดข้อมูลไว้ว่าอะไรที่น่าสนใจเกี่ยวกับบริษัทนี้ ซึ่งสามารถหาอ่านได้เว็บไซต์ของบริษัท จากนั้นคุณสามารถเอาข้อมูลที่ได้อ่านในเว็บไซต์ไปพูดคุยในที่สัมภาษณ์งานได้
2. ความรู้พื้นฐานต้องแน่น
จริงๆแล้วคำถามที่ใช้ในการสัมภาษณ์ก็จะเป็นแนวเดียวกัน ดังนั้น ในฐานะที่คุณสมัครในตำแหน่งของโปรแกรมเมอร์ ความรู้พื้นฐานในด้านนี้จึงเป็นเรื่องที่จำเป็นเช่นเดียวกัน โดยความรู้พื้นฐานที่คุณควรรู้ คือ Hash tables, Linked Lists, Breadth-first search, Depth-first search, Quicksort, merge sort, Binary Search, 2D arrays, Dynamic arrays, Binary Search Trees, Dynamic Programming, และ Big-O Analysis เป็นต้น
3. ขอความช่วยเหลือจากผู้สัมภาษณ์
บางครั้งผู้สัมภาษณ์งานอาจจะมีการใบ้และพยายามพูดนำทางต่อให้เรา แต่ใช่ว่าทุกคนจะได้เท่ากันนะ เพราะโปรแกรมเมอร์บางคนก็มีธีหลอกถามผู้สัมภาษณ์งานเมื่อไหร่ที่ตนตอบคำถามไม่ได้
เมื่อคุณถูกถามคำถามแล้ว ควรเริ่มจากการทวนคำถามอีกครั้ง เพื่อจะเข้าถึงความต้องการของผู้สัมภาษณ์อย่างชัดเจน จากนั้นอธิบายความคิดเห็นให้ละเอียด ต่อมา คือ พูดถึงทางออกที่เป็นไปได้ในการแก้ปัญหานั้นๆก่อนที่จะเริ่มเขียนโค้ดโชว์ให้กับผู้สัมภาษณ์งาน เพราะเป็นวิธีที่ทำให้ผู้สัมภาษณ์รู้สึกมีส่วนร่วมและสามารถโต้ตอบกันได้
4. ปรับใช้ให้เป็น
หากคุณมีความรู้เรื่องการออกแบบระบบต่างๆ จะช่วยเพิ่มโอกาสในการต่อรองให้กับคุณได้ คุณอาจจะถูกสัมภาษณ์ประมาณว่า คุณสามารถออกแบบ Google Maps, Social Network, API สำหรับธนาคารได้หรือไม่ ซึ่งการออกแบบสิ่งเหล่านี้ล้วนแล้วแต่ต้องใช้ทักษะและความรู้เฉพาะด้าน ที่ผู้สัมภาษณ์ถามคำถามแบบนั้น เพียงแค่ว่าต้องการทราบถึงความรู้พื้นฐานของผู้สมัคร และโปรแกรมพื้นฐาานที่ผู้สมัครควรรู้ ได้แก่ HTTP (protocol level), Data Bases (indexes, query planning), CDNs, Caching (LRU cache, memcached, redis), Load balancers, และ Distributed worker systems
คอนเซปต์เหล่านี้ถือว่าเป็นเรื่องที่สำคัญมาก และคุณควรจะรู้ถึงวิธีการปรับใช้โปรแกรมเหล่านี้ด้วย เพื่อสร้างระบบขึ้นมา ทั้งนี้ทั้งนั้น วิธีที่ดีที่สุดในการเรียนรู้เรื่องนี้ก็คือ การอ้างอิงถึงนักวิศวกรหรือนักเขียนโปรแกรมคนอื่น ว่าเขาทำได้อย่างไร ซึ่งแอดมินขอเสนอบล็อค High Scalability ถือว่าเป็นแหล่งข้อมูลที่ดีสำหรับเรื่องนี้เลยทีเดียว
ฺ5. ให้คิดไว้เสมอว่า ผลลัพธ์นั้นสำคัญ
คำถามต่อไปที่ผู้สมัครจะต้องเจอ คือ ประสบการณ์เกี่ยวกับโปรแกรมมิ่งโปรเจคที่คุณเคยทำ แต่คนส่วนใหญ่มักพลาดที่เลือกโปรเจคใหญ่ๆ ที่ดูดี เพื่อที่จะให้ผู้สัมภาษณ์งานสนใจ และทราบถึงความซับซ้อนของโปรเจคชิ้นนั้นมากแค่ไหน และสร้างการเปลี่ยนแปลงอะไรบ้าง เพราะมันเป็นสิ่งที่มองเห็นผลได้อย่างชัดเจนมากกว่า
6. ใช้ภาษา C ที่หลากหลาย
หลายๆคนแนะนำให้พูดถึงเรื่องภาษาที่ถนัด ไม่ว่าจะเป็นภาษา C, C++ และ Java หากรู้จักแค่ภาษาเดียว ก็ต้องเพิ่มความพยายามมากเป็นสองเท่า เพื่อโชว์ศักยภาพของคุณที่มีให้เต็มที่ ซึ่งอาจจะยกตัวอย่างโปรเจคเกี่ยวกับภาษานั้นที่คุณเคยทำได้ก็ยิ่งดีขึ้นไปอีก
7. ความพิเศษของตัวเอง
ผู้สมัครต้องลองพยายามพูดถึงความพิเศษของตัวเอง ไม่ว่าจะเป็นการจบการศึกษาจากมหาวิทยาลัยดัง เคยทำงานในบริษัทชั้นนำ เป็นต้น เพราะสิ่งเหล่านี้สามารถเพิ่มโอกาสให้คุณอีก 30% ในการผ่านการสัมภาษณ์ได้ โปรแกรมเมอร์ถือว่าเป็นอาชีพที่แตกต่างจากอาชีพอื่นๆ เพราะต้องอาศัยทักษะเฉพาะในการทำงานอย่างมาก ดังนั้น ในบางครั้งผู้ให้สัมภาษณ์งานย่อมเข้าใจคุณดีว่าอาจจะป้ำๆเป๋อๆไปบ้าง แต่หากคุณมีศักยภาพจริงๆ งานที่คุณต้องการก็ยังเหมาะสมที่จะเป็นของคุณ
8. การฝึกฝน
ต้องหมั่นฝึกถามตอบคำถามอยู่เสมอ เพราะจะช่วยให้คุณคลายความเครียดและความตื่นเต้นลงได้ โดยที่คุณสามารถฝึกการสัมภาษณ์ให้คุ้นเคย หาลิสต์คำถามและลองจับเวลาดู ตลอดจนพยายามพัฒนาและปรับปรุงคำตอบต่างๆให้ดียิ่งขึ้น รวมทั้งการมีเพื่อนมาช่วยพูดโต้ตอบกันก็เป็นทางเลือกที่ดีอีกทาง
อย่าลืมว่า แม้ว่าทักษะการทำงานโปรแกรมเมอร์และความสามารถของคุณคือสิ่งที่จำเป็นที่สุด แต่การที่จะก้าวเข้าสู่การทำงานได้นั้น คุณต้องมีทักษะการสัมภาษณ์งานและการสื่อสารเช่นกัน เพราะคุณจะเป็นคนเก่งที่คุยคนเดียวไม่ได้ คุณจำเป็นต้องทำงานร่วมกับคนอื่นๆในบริษัทด้วย ดังนั้นพยายามหาข้อมูลเพิ่มเติมและฝึกเรื่องการสัมภาษณ์เข้าไว้ และเชื่่อว่าหากเตรียมพร้อมมาดี งานดีๆก็จะเป็นของคุณในที่สุดค่ะ