มีการวิจัยอย่างเป็นทางการใน FizzBuzz คำถามประสิทธิผลหรือไม่ [ปิด]


23

หลังจากที่ได้เห็นคำถามนี้ในวันนี้เกี่ยวกับรูปแบบของคำถามสัมภาษณ์ FizzBuzz รวมถึงคำถามอื่น ๆ ที่เกี่ยวข้องกับคำถามฉันต้องถาม: มีงานวิจัยอย่างเป็นทางการว่าเทคนิคนี้มีประสิทธิภาพเพียงใดในการสัมภาษณ์? มีคนมากมายที่บอกว่ามันกรองเปอร์เซ็นต์ผู้สมัครที่บ้าคลั่ง (95% + ในบางกรณี) แต่วิธีที่ดีในการค้นหาโปรแกรมเมอร์ / นักพัฒนาที่ดีคืออะไร?

มีการวิจัยบางอย่างที่แสดงให้เห็นว่าทักษะที่อ่อนนุ่มอาจเป็นตัวบ่งชี้ที่ดีกว่าทักษะที่ยากสำหรับการเลือกผู้สมัครที่ดีสำหรับบทบาทงาน อาจมีเหตุผลบางประการที่ทำให้ผู้สมัครจำนวนมากที่ไม่ผ่านการทดสอบนี้ (ความกังวลใจคิดว่า "มันเป็นกลอุบาย" ฯลฯ )


จากความคิดเห็นที่ผ่านมาดูเหมือนว่าความคิดที่อยู่เบื้องหลังคำถาม FizzBuzz คือการพิจารณาว่าบุคคลนั้นมีทักษะการเขียนโปรแกรมที่ดี (เพียงพอ) ที่จะพิจารณาเพิ่มเติมหรือไม่ ฉันไม่เชื่อจริง ๆ ว่า FizzBuzz ทำเช่นนี้ ยังจำได้ว่า FizzBuzz กรองร้อยละมากของผู้สมัครมากในช่วงต้นในกระบวนการจ้างงานซึ่งอาจหมายถึงว่าตัวเลขที่สำคัญของผู้สมัครที่ดีจะถูกลบออกในช่วงต้นเพราะพวกเขาไม่สามารถแก้ปัญหาโง่เร็วพอ

นอกจากนี้ฉันจะชี้ให้เห็นว่าการดูประสิทธิผลของ FizzBuzz เป็นสิ่งที่สามารถทำได้อย่างสมบูรณ์แบบในเชิงปริมาณ สิ่งนี้แตกต่างจากการมองที่ "พอดี" หรือ "ความหลงใหล" ซึ่งมีความผันแปรสูงและไม่มีหลักวิทยาศาสตร์ (แต่ก็ยังค่อนข้างสำคัญสำหรับการตัดสินใจจ้างงานใหม่)


1
ไม่ใช่การวิจัยอย่างเป็นทางการ: codinghorror.com/blog/2007/02/ …และcodinghorror.com/blog/2007/02/why-cant-programmers-program.html
wleao

16
ฉันไม่ต้องการจ้างผู้สมัครที่ไม่สามารถเขียนรหัส FizzBuzz ได้ในขณะที่กังวล
Eric Wilson

นั่นไม่ใช่สิ่งที่บทความที่คุณลิงค์ระบุไว้เช่นกัน มันแสดงให้เห็นว่าคนที่ได้รับการว่าจ้างมีอัตราการออกกลางคันสูง แต่มันไม่มีข้อมูลเกี่ยวกับสิ่งที่ถูกปฏิเสธอย่างแน่นอน สำหรับฉันนี่เป็นการชี้ให้เห็นว่าบริษัท ต่าง ๆ อาจทำงานได้ดีในการกำจัดคนที่ไม่ใช่ด้านเทคนิค (นั่นคือจุดเน้นของการสัมภาษณ์ของพวกเขา) ที่ไม่สามารถทำงานได้ แต่พวกเขาต้องทำการกรองเพิ่มเติมสำหรับคนที่ปฏิเสธที่จะเรียนรู้ หรือปฏิเสธที่จะประพฤติตนเป็นเพื่อนร่วมทีม
Martin York

2
@JMG: คุณต้องแม่นยำมากขึ้น (การสนทนาของสิ่งที่แน่นอน) หากพวกเขาไม่สามารถทำงานด้านเทคนิคของงาน (ทักษะยาก) ทำไมคุณคิดว่าพวกเขามีโอกาส หากคุณจ้างคนที่ตามคำนิยามไม่สามารถทำงานได้พวกเขาได้รับการว่าจ้างเพราะคุณไม่คิดว่าอัตราการออกจากทีมจะเป็น 100% ในกระบวนการสัมภาษณ์ของเราเรามีส่วนเฉพาะเพื่อดูว่าผู้สมัครจะเหมาะสมกับทีมและ บริษัท หรือไม่ แต่ไม่ว่าเราจะชอบพวกเขาเป็นการส่วนตัวมากแค่ไหนก็ไม่มีประโยชน์ในการจ้างคนที่ไม่มีทักษะการเขียนโค้ด
Martin York

3
if their hard skills was weighted more evenly with their soft skillsดังนั้นในฐานะที่เป็นคำตอบ ไม่ ทักษะที่ยากจะเป็นหนึ่งตัวกรอง ทักษะที่อ่อนนุ่มเป็นตัวกรองเพิ่มเติม ไม่ได้เป็นกรณีที่คุณใช้ที่คุณสามารถมีคุณต้องมีA or B A and Bนี่คือวิธีที่ฉันอ่านบทความที่คุณเชื่อมโยง พวกเขากรองแล้วสำหรับ A พวกเขาเพิ่งทำงานได้ไม่ดีในการกรองสำหรับ B.
Martin York

คำตอบ:


14

เป็นเวลานานแล้วที่ฉันได้อ่านงานวิจัยสัมภาษณ์งาน (ดังนั้นฉันจึงไม่สามารถระบุไซต์ที่ฉันขอโทษได้) แต่กฎทั่วไปก็คือผู้คนจ้างงานบนพื้นฐานของทักษะที่นุ่มนวล แต่ไม่มีความสัมพันธ์ระหว่างสิ่งนั้นกับ ประสิทธิภาพ. การทดสอบทักษะเฉพาะสามารถทำงานได้เพราะบุคลิกภาพไม่ได้ (ตามข้อมูลที่วัดได้)

เกือบทุกคนเชื่อว่าเทคนิคการสัมภาษณ์พิเศษของพวกเขาทำงานข้อมูลบอกว่าคุณไม่ควรรำคาญที่จะสัมภาษณ์ ("บอกฉันเกี่ยวกับตัวคุณ" ส่วนหนึ่งของการสัมภาษณ์ซึ่งตรงข้ามกับการทดสอบตามวัตถุประสงค์) เนื่องจากผู้สมัครที่เลือกโดยผู้สัมภาษณ์ อคติต่อคนพาพวกคนดูคล้ายคนสัมภาษณ์คนสูงคนน่าดึงดูด ฯลฯ (คุณควรจ้างคนที่ทำแบบทดสอบได้ดีและไม่ดีในการสัมภาษณ์ที่เหลือเพราะเห็นได้ชัดว่าดีต่องาน แต่ อาจพบว่ามันยากที่จะออกจาก บริษัท ของคุณ)

ฉันคาดหวังว่าจะได้รับเรื่องนี้โดยปกติใครก็ตามที่ฉันบอกเรื่องนี้จะพูดว่า "แต่เราใช้วิธีการ X และมันได้ผลจริงสำหรับเรา" แต่ถ้าคุณไม่

  1. จ้างคนที่ไม่ผ่านการสัมภาษณ์ของคุณ

  2. อย่าบอกเพื่อนร่วมงานของพวกเขาว่าใครผ่านไปแล้วและใครไม่ได้และ

  3. เปรียบเทียบประสิทธิภาพของผู้ที่ผ่านการทดสอบกับผู้ที่ไม่ได้ใช้โดยยอมรับในเกณฑ์วัตถุประสงค์ก่อนหน้านี้

คุณมีความคิดน้อยมากว่ากระบวนการทำงานหรือไม่ น่าเสียดายที่การสัมภาษณ์มีประสิทธิภาพนั้นยากที่จะประเมิน

หากคุณสงสัยการทดลองทำสิ่งต่าง ๆ เช่นขอให้ผู้คนประเมินผู้สมัครตามใบแสดงผลการสัมภาษณ์จากผู้สมัครที่ได้รับการว่าจ้างจริงแล้ว (จากเทคนิคอื่น ๆ ) ผู้ทดสอบจะต้องมีคนทำการสัมภาษณ์เลือกผู้สมัครลบความทรงจำของผู้สัมภาษณ์สุ่มเลือกผู้ที่จะจ้างจากผู้สมัครและเปรียบเทียบประสิทธิภาพของผู้สมัครโดยใช้เกณฑ์วัตถุประสงค์ที่ถูกต้องกับการให้คะแนนโดยผู้สัมภาษณ์ แต่การทดสอบนั้นคือ ยากที่จะดึงออก

ดังนั้นแม้ว่าฉันไม่ได้เห็นงานวิจัย FizzBuzz เฉพาะมันเป็นชนิดของสิ่งที่สามารถแสดงถึงประสิทธิภาพในการทดสอบทางวิทยาศาสตร์ ถ้ามันคัดเลือกผู้สมัครกว่า 95% แล้วฉันก็อยากรู้ว่าทำไม - มันถูกประดิษฐ์ขึ้นมาให้เป็นเรื่องง่ายอย่างไร้เหตุผลที่โปรแกรมเมอร์ไร้ความสามารถเพียงคนเดียวจะไม่สามารถผ่านมันไปได้ ฉันสงสัยว่าเปอร์เซ็นของการทดสอบ "Hello world" เป็นเท่าใด การทดสอบ "ทำให้คอมพิวเตอร์ทำอะไรก็ได้"


+1 นั่นคือเหตุผลที่ฉันถามคำถาม: การจ้างงานนั้นไม่มีหลักวิทยาศาสตร์โดยเนื้อแท้ แต่อย่างน้อยประสิทธิภาพของ FizzBuzz ก็สามารถทดสอบได้ในเชิงปริมาณอย่างน้อยทีเดียว
joshin4colours

@psr: จากประสบการณ์ของฉันในการสัมภาษณ์ผู้สำเร็จการศึกษาใหม่ในสหรัฐอเมริกา BSCS หรือ MSCS ประมาณ 90% ไม่สามารถเขียนโปรแกรมได้ ทำไม? เพราะสถาบันมีแรงจูงใจทางการเงินเพื่อให้พวกเขาอยู่ในโปรแกรมการจ่ายค่าเล่าเรียน
วินไคลน์

1
@kevin cline: ชนิดของการปิดหัวข้อ แต่ใน MSCS ของฉันฉันไม่คิดว่าพวกเขามุ่งเน้นไปที่บรรทัดล่าง อย่างไรก็ตามพวกเขามีความกังวลอย่างยิ่งกับการแยกความแตกต่างของตัวเองในฐานะโปรแกรมการศึกษาเทียบกับโรงเรียนการค้าและอาจารย์จำนวนมากมองลงไปที่การเขียนโปรแกรมเพียงเล็กน้อย
psr

ฉันคิดว่าคุณกำลังมองเห็นความจริงที่ว่าเป้าหมายของคนที่จ้างงานนั้นไม่มากนักในการค้นหาคู่ที่ดีที่สุดเท่าที่จะทำได้เพื่อพยายามหลีกเลี่ยงหายนะ แม้ในเวลาที่เศรษฐกิจดีผู้คนที่เสนองานจะได้รับการพลุกพล่านกับผู้สมัครหลายคนไม่มีสิทธิ์อย่างไร้ความหวัง คุณจะต้องมีตัวกรองด่วนบางประเภทเพื่อที่จะลดจำนวนผู้สมัครลงไปเป็นหมายเลขที่จัดการได้ จุดเริ่มต้นของการทดสอบ fizbuzz คือทำมันเป็นส่วนหนึ่งของหน้าจอโทรศัพท์ หากกลุ่มคนที่ผ่าน Fizzbuzz นั้นอุดมไปด้วยผู้คนที่สามารถเขียนโค้ดได้จริงมันเป็นความช่วยเหลือ
Charles E. Grant

@Charles E. Grant - ฉันเข้าใจ FizzBuzz - จริง ๆ แล้วฉันใช้คำถามเช่นนั้นเมื่อสัมภาษณ์ (ส่วนใหญ่ทุกคนผ่านแม้ว่า) ฉันส่วนใหญ่ตอบสนองต่อ "ทักษะอ่อนนุ่มอาจเป็นตัวบ่งชี้กว่าทักษะยาก" (sic) ซึ่งฉันได้อ่านการวิจัยที่เกี่ยวข้องและในทักษะนุ่มวิจัยช่วยในการสัมภาษณ์ แต่ไม่สามารถแสดงเพื่อช่วยในงาน หรืออย่างแม่นยำมากขึ้นผู้สัมภาษณ์ไม่สามารถระบุผู้สมัครที่จะมีประสิทธิภาพในการทำงานหากพวกเขาพยายามที่จะระบุพวกเขาตามทักษะที่อ่อนนุ่ม
psr

33

จุดประสงค์ของ fizzbuzz ไม่ใช่เพื่อค้นหาโปรแกรมเมอร์ที่ดี แต่เพื่อค้นหาโปรแกรมเมอร์ที่ไม่ดีซึ่งเป็นคนที่ไม่สามารถใช้อัลกอริธึมง่ายๆได้ คำถามของคุณเหมือนกับถามว่ามีการระบุแชมเปี้ยนส์ของ Nascar จำนวนเท่าใดในระหว่างการสอบใบขับขี่ มีหลายอย่างที่อยู่ตรงกลางระหว่างคนที่คุณไม่ต้องการจ้างกับคนที่คุณทำอย่างแน่นอน

มีคลาสอื่น ๆ ของโปรแกรมเมอร์ที่“ ไม่ดี” ที่ต้องการวิธีการระบุตัวตนที่แตกต่างกันเช่นคนที่ไม่เชี่ยวชาญในภาษาที่กำหนดหรือมีปัญหาด้านพฤติกรรม อย่างไรก็ตามโปรแกรมเมอร์ "fizzbuzz-bad" นั้นไม่พึงประสงค์ในระดับสากลซึ่งเป็นเหตุผลว่าทำไมจึงแนะนำให้ทำการทดสอบบ่อยครั้ง ไม่ว่าโปรแกรมเมอร์ที่มีอาณาเขตมากเกินไปหรือผู้ที่ต้องการถ่ายโอนทักษะไปยังภาษาใหม่ก็คือ "ดี" หรือ "ไม่ดี" ขึ้นอยู่กับความต้องการและความชอบของผู้ว่าจ้างแต่ละคน


2
แต่อะไรที่ทำให้โปรแกรมเมอร์ "เลวร้าย"? คุณต้องการใครสักคนที่เป็น coder ที่น่าทึ่ง แต่จะลบการแก้ไขการเช็คอินใด ๆ ลงในรหัส "เขา" ในโครงการหรือไม่? หรือคนที่อาจต้องการความช่วยเหลือเล็กน้อยจาก C ถึง Java แต่จะอุทิศตัวเองอย่างเต็มที่ในโครงการหรือไม่
joshin4colours

4
@JMG: มีโรงเรียนแห่งความคิดที่แจ้งเราว่า "คุณไม่ต้องการเช่นกัน" หากพวกเขามีนิสัยที่ไม่ให้ความร่วมมือเหมือนอย่างหลัง "ก็ไม่ต้องจ้าง"; หากพวกเขาไม่มีทักษะร่วมกัน แต่ต้องการทักษะ "ไม่มีการจ้าง" หากมีบางอย่างเกี่ยวกับผู้สมัครที่ทำให้คุณลังเลเกี่ยวกับการจ้างพวกเขาสำหรับโครงการนี้ "ไม่มีการจ้าง"
SingleNegationElimination

@TokenMacGuy ฉันเดาว่าโรงเรียนควรจะเรียกว่าโรงเรียน "ใกล้เวลาและทรัพยากรที่ไม่มีที่สิ้นสุด" :)
joshin4colours

@Karl คุณสามารถรวมกลับเข้าไปในคำตอบของคุณได้หรือไม่?

5

FizzBuzz ไม่ได้เกี่ยวกับการระบุโปรแกรมเมอร์ที่ดี แต่เป็นการกำจัดคนที่ไม่ดี หากผู้สมัครไม่สามารถผ่านการทดสอบ FizzBuzz พวกเขาไม่รู้วิธีการเขียนโปรแกรมและไม่ควรสมัครตำแหน่งการเขียนโปรแกรม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.