อุตสาหกรรมเทคโนโลยีกำลังเผชิญกับปัญหาที่น่าสับสน นั่นคือวิศวกรซอฟต์แวร์ระดับอาวุโสสามในสี่คนสอบตกในแบบทดสอบการเขียนโค้ดพื้นฐานระหว่างการสัมภาษณ์งาน ทั้งที่นี่ไม่ใช่แม้แต่ความท้าทายด้านอัลกอริทึมที่ซับซ้อน แต่เป็นงานง่ายๆ อย่างการหาผลรวมของเลขคู่ทั้งหมดในลิสต์ อัตราการสอบตกที่น่าประหลาดใจนี้ได้จุดประกายการถกเถียงอย่างรุนแรงว่าการสัมภาษณ์แบบ live coding จริงๆ แล้ววัดทักษะการเขียนโปรแกรมหรือแค่ความทนทานต่อความเครียด
ปัญหาการสัมภาษณ์งานแบบ Live Coding ที่พบบ่อย:
- คำถามอัลกอริทึมพื้นฐาน ( FizzBuzz , การหาผลรวมของเลขคู่)
- การจัดการโครงสร้างข้อมูล (linked lists, binary trees)
- ความกดดันด้านเวลา: โดยทั่วไป 30-60 นาที
- อัตราความสำเร็จ: ประมาณ 25% ตามรายงานของอุตสาหกรรม
ปัจจัยความเครียดที่อยู่เบื้องหลังความล้มเหลวในการสัมภาษณ์
งานวิจัยล่าสุดจาก Microsoft เผยให้เห็นตัวการจริงที่อยู่เบื้องหลังความล้มเหลวที่แพร่หลายเหล่านี้ เมื่อผู้สมัครแก้ปัญหาการเขียนโค้ดคนเดียวในห้องส่วนตัว พวกเขาทำได้ดีกว่าถึงสองเท่าเมื่อเทียบกับการถูกผู้สัมภาษณ์จ้องมอง การศึกษาพบว่าความเครียดกระตุ้นการตอบสนองแบบ fight-or-flight ของสมอง ทำให้ระดับ cortisol พุ่งสูงขึ้นและทำลาย prefrontal cortex ซึ่งเป็นพื้นที่ที่รับผิดชอบการใช้เหตุผลที่ซับซ้อนและ working memory
ผลกระทบรุนแรงเป็นพิเศษสำหรับกลุ่มบุคคลบางกลุ่ม การศึกษาของ Microsoft แสดงให้เห็นว่าไม่มีผู้หญิงสักคนที่ผ่านแบบทดสอบการเขียนโค้ดในสภาพแวดล้อมสาธารณะ ในขณะที่ผู้หญิงทุกคนประสบความสำเร็จเมื่อทำงานเป็นส่วนตัว สิ่งนี้บ่งชี้ว่าการสัมภาษณ์แบบ live coding อาจสร้างอุปสรรคเชิงระบบที่ไม่เกี่ยวข้องกับความสามารถในการเขียนโปรแกรมจริงๆ เลย
ผลการศึกษาของ Microsoft Research :
- ผู้เข้าสอบได้คะแนนต่ำกว่า 50% เมื่อถูกสังเกตการณ์เปรียบเทียบกับการทำงานคนเดียว
- ผู้หญิง 0% ผ่านการทดสอบในสภาพแวดล้อมสาธารณะ เทียบกับ 100% ในสภาพแวดล้อมส่วนตัว
- งานเดียวกัน ระยะเวลาเดียวกัน ความแตกต่างเพียงอย่างเดียวคือระดับการสังเกตการณ์
ปัญหาการวัดผลที่ผิดพลาด
นักพัฒนาที่มีประสบการณ์หลายคนรายงานรูปแบบที่น่าวิตก พวกเขาค้างในระหว่างเซสชัน live coding แต่สามารถแก้ปัญหาเดียวกันได้อย่างง่ายดายในภายหลังเมื่ออยู่คนเดียว ความขัดแย้งนี้เน้นย้ำปัญหาพื้นฐานของแนวปฏิบัติการจ้างงานปัจจุบัน บริษัทต่างๆ อ้างว่าทดสอบทักษะการเขียนโค้ด แต่จริงๆ แล้วพวกเขากำลังวัดประสิทธิภาพภายใต้สภาวะความเครียดเทียมที่ไม่ค่อยเกิดขึ้นในสภาพแวดล้อมการทำงานจริง
ตอนนี้ผมเป็นนักพัฒนา indie ที่ประสบความสำเร็จและทำงานอิสระ หนึ่งในเหตุผลหลักที่ผมยึดมั่นกับการพัฒนา indie ผ่านช่วงเวลาที่ยากลำบากก็คือผมกลายเป็นคนที่แทบจะจ้างไม่ได้... มีอะไรบางอย่างเกี่ยวกับคนแปลกหน้าที่ยืนเหนือไหล่ผมตัดสินผม กำหนดอนาคตทางการเงินของผมด้วยการให้หรือหักหาม job เหมือนดาบของ Damocles ทำให้ท้องผมปั่นป่วนไปหมด
ปัญหาขยายไปไกลกว่าการตอบสนองต่อความเครียดของแต่ละบุคคล วิศวกรอาวุโสที่มีประสบการณ์หลายทศวรรษพบว่าตัวเองต้องแข่งขันด้วยความรู้อัลกอริทึมที่ท่องจำมากกว่าความสามารถที่พิสูจน์แล้วในการสร้างและดูแลระบบที่ซับซ้อน สิ่งนี้สร้างกระบวนการจ้างงานที่เอื้อประโยชน์ต่อบัณฑิตใหม่และผู้ที่มีเวลาฝึกทักษะเฉพาะการสัมภาษณ์มากกว่าผู้เชี่ยวชาญที่มีประสบการณ์
การต่อต้านของอุตสาหกรรมและแนวทางทางเลือก
การต่อต้านการสัมภาษณ์แบบ live coding กำลังแข็งแกร่งขึ้น บริษัทหลายแห่งกำลังทดลองกับทางเลือกอื่นๆ เช่น โปรเจกต์ take-home ตามด้วยเซสชัน code review หรือมุ่งเน้นไปที่ portfolio ผลงานในอดีตและการสนทนาทางเทคนิค องค์กรบางแห่งได้เปลี่ยนไปใช้ระยะทดลองงานแบบมีค่าตอบแทน โดยตระหนักว่าประสิทธิภาพการทำงานจริงเป็นตัวทำนายที่ดีที่สุดของความสำเร็จในอนาคต
อย่างไรก็ตาม ทางเลือกเหล่านี้เผชิญกับความท้าทายของตัวเอง งาน take-home สามารถถูกโกงได้ด้วยความช่วยเหลือของ AI การรีวิว portfolio อาจเอื้อประโยชน์ต่อผู้ที่มีโปรเจกต์สาธารณะ และระยะทดลองงานต้องการการลงทุนด้านเวลาอย่างมากจากทั้งสองฝ่าย การเพิ่มขึ้นของเครื่องมือเขียนโค้ด AI ทำให้วิธีการคัดกรองแบบดั้งเดิมซับซ้อนยิ่งขึ้น เนื่องจากผู้สมัครสามารถสร้างโซลูชันที่ซับซ้อนได้โดยไม่เข้าใจแนวคิดพื้นฐาน
แนวทางการสัมภาษณ์ทางเลือก:
- โปรเจกต์ที่ทำที่บ้านพร้อมเซสชันตรวจสอบโค้ด
- การตรวจสอบพอร์ตโฟลิโอและ repository บน GitHub
- ระยะเวลาทดลองงานแบบมีค่าจ้าง (โดยทั่วไป 1-5 วัน)
- การแก้ปัญหาร่วมกันโดยไม่มีแรงกดดันด้านเวลา
- การอภิปรายการออกแบบระบบที่เน้นประสบการณ์ในอดีต
เส้นทางไปข้างหนา
การถกเถียงสะท้อนความตึงเครียดที่กว้างขึ้นในการจ้างงานด้านเทค นั่นคือการสร้างสมดุลระหว่างความจำเป็นในการกรองผู้สมัครที่ไม่มีคุณสมบัติออกไป ในขณะที่หลีกเลี่ยง false negative ที่แยกวิศวกรที่มีความสามารถออกไป บริษัทบางแห่งประสบความสำเร็จกับแนวทางผสมผสานที่รวมการสนทนาทางเทคนิคสั้นๆ เข้ากับเซสชันแก้ปัญหาแบบร่วมมือ โดยมุ่งเน้นไปที่การสื่อสารและกระบวนการคิดมากกว่าการเขียนโค้ดที่สมบูรณ์แบบ
หลักฐานบ่งชี้ว่าระบบปัจจุบันเสียหาย แยกผู้สมัครที่มีคุณสมบัติออกไปอย่างเป็นระบบโดยอิงจากการตอบสนองต่อความเครียดมากกว่าความสามารถทางเทคนิค ขณะที่อุตสาหกรรมต่อสู้กับการขาดแคลนความสามารถและความท้าทายด้านความหลากหลาย แรงกดดันให้ปฏิรูปแนวปฏิบัติการสัมภาษณ์ยังคงเพิ่มขึ้น คำถามไม่ใช่ว่าการสัมภาษณ์แบบ live coding จะเปลี่ยนแปลงหรือไม่ แต่บริษัทต่างๆ จะปรับตัวเข้ากับวิธีการจ้างงานที่มีประสิทธิภาพและเป็นธรรมมากขึ้นได้เร็วแค่ไหน
อ้างอิง: Live coding sucks