“ White-Board-Coding” ไม่เหมาะสมในระหว่างการสัมภาษณ์หรือไม่? [ปิด]


30

นี่เป็นคำถามแบบอัตนัย แต่ฉันชอบที่จะได้ยินความคิดเห็น / ความคิดเห็นจากผู้สัมภาษณ์ / ผู้ให้สัมภาษณ์ในหัวข้อ

เราแบ่งการสัมภาษณ์ทางเทคนิคออกเป็น 4 ส่วน เขียนรหัสอ่านและวิเคราะห์รหัสออกแบบเซสชัน & รหัสบนกระดานไวท์บอร์ด

สำหรับส่วนสุดท้ายสิ่งที่เราขอให้ผู้สัมภาษณ์ทำคือเขียนโค้ดขนาดเล็ก (4-5 บรรทัด) ลงบนไวท์บอร์ดและอธิบายขณะที่พวกเขาผ่านมันไป ให้ฉันชัดเจนว่าจุดประสงค์คือไม่ให้จับคนอื่น เราไม่ได้หาไวยากรณ์ที่สมบูรณ์แบบ แม้มันจะเป็นรหัสหลอกก็ได้ แต่ประเด็นก็คือให้ปัญหาที่ง่ายมากแก่พวกเขาและดูว่าสมองของพวกเขาสามารถสื่อสารแก้ปัญหาให้เราได้หรือไม่ จากปัญหาง่าย ๆ ฉันหมายถึง "Reverse a string", "FizzBuzz" ฯลฯ ...

โปรดทราบว่าเรามักจะถามภาษาที่ชัดเจนก่อนเสมอ เราเป็น. NET C # house เราแค่พูดว่า "หลอกรหัส" ที่มีคนว่างเปล่า / ดิ้นรนกับรหัสจริงๆ

คำถามของฉันคือ"มันไม่เหมาะสม / ไม่มีเหตุผลที่คาดหวังว่าโปรแกรมเมอร์จะเขียนข้อมูลโค้ดบนไวท์บอร์ดระหว่างการสัมภาษณ์หรือไม่"


13
IMHO ค่อนข้างสมเหตุสมผล (และอาจป้องกันการจ้างงานที่ไม่ดีพอสมควรในอดีตนายจ้างของฉันหากมีการดำเนินการเท่านั้น)
Piskvor

3
มันเป็นสิ่งที่น่าหดหู่อย่างมากที่ต้องทำจากมุมมองของผู้สัมภาษณ์ ผู้ที่อ้างว่าประสบการณ์การเขียนโปรแกรม 5 ปีจะไม่มีทักษะพื้นฐานเหล่านี้ได้อย่างไร และ 90% ทำไม่ได้ (นั่นคือ 90% หลังจากกำจัดวัชพืชออก 70% ของ CV ในทันทีและอัตราความล้มเหลว 70% ในการสัมภาษณ์ทางโทรศัพท์)
Michael Shaw

18
We're not looking for perfect syntax.ทำให้สมเหตุสมผลในความเป็นจริงฉันจะบอกว่าแนะนำ! มันไม่มีเหตุผลที่จะวิพากษ์วิจารณ์ข้อผิดพลาดทางไวยากรณ์ในการเขียนโค้ดไวท์บอร์ด
Qwerky

16
ยังไม่คาดหวังลายมือที่สมบูรณ์แบบ การเขียนไวท์บอร์ดเป็นทักษะที่คนส่วนใหญ่ไม่มีและโปรแกรมเมอร์ส่วนใหญ่ในประสบการณ์ของฉันมีการเขียนด้วยลายมืออย่างทารุณเพื่อวางไว้อย่างอ่อนโยนการเขียนในแนวตั้งจะทำให้แย่ลง
jwenting

3
เหมาะสมใช่ มีประสิทธิภาพไม่ นักพัฒนาที่อ่อนแอคนหนึ่งที่ฉันจ้างเป็นการส่วนตัวทำที่ไวท์บอร์ดอย่างชาญฉลาด
pdr

คำตอบ:


47

ในมุมมองของฉันมันเหมาะสมมาก หากคุณต้องการให้งานทำทักษะเฉพาะนั้นเหมาะสมอย่างยิ่งที่จะได้รับการคาดหวังให้แสดงทักษะในการสัมภาษณ์

ผลกระทบของเทคนิคนี้ต่อกระบวนการสรรหามีความชัดเจนมาก 90% ของผู้สมัครล้มเหลวในงานนี้ แต่นักพัฒนาที่คัดเลือกมานั้นดีและนักพัฒนาจะได้รับการเคารพใน บริษัท

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


1
ขอบคุณสำหรับข้อเสนอแนะ ptolemy ชื่นชมมาก คุณตอบว่าสิ่งที่ฉันกำลังมองหาตลอดจนวิธีการที่ฉันจะช่วยผู้สมัครในการแก้ไขปัญหา แต่ในขณะที่คุณยังชี้ให้เห็นฉันรู้สึกงุนงงกับจำนวนผู้สมัคร 5+ ปีที่ไม่สามารถทำได้
Eoin Campbell

1
อันตรายที่ใหญ่ที่สุดในเรื่องนี้คือความยุ่งยากที่เกิดขึ้นและคุณเสนองานให้กับคนที่ล้มเหลวในการเขียนโปรแกรม แต่ก็ทำได้ดีในการสัมภาษณ์อื่น ๆ เช่นการทดสอบทางเทคนิค ความจริงก็คือผู้สมัครเหล่านี้ได้อ่านหนังสือและมีความทรงจำที่ดี คุณกำลังชวนคนอ่านหนังสือหรือไม่? หรือจะเขียนโปรแกรม?
Michael Shaw

@EoinCampbell หากทักษะการสื่อสารมีความสำคัญต่อคุณสิ่งนี้มีความเหมาะสมอย่างยิ่ง

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

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

15

คำถามของฉันคือ "มันไม่เหมาะสม / ไม่มีเหตุผลที่คาดหวังว่าโปรแกรมเมอร์จะเขียนข้อมูลโค้ดลงบนไวท์บอร์ดในระหว่างการสัมภาษณ์หรือไม่?"

มันสมเหตุสมผลมาก อีกทางเลือกหนึ่งสำหรับไวท์บอร์ดอาจเป็นแล็ปท็อปและเครื่องรับแสงเนื่องจากโปรแกรมเมอร์ใช้ในการเขียนโค้ดบนคีย์บอร์ดมากกว่าบนไวท์บอร์ด ตรวจสอบให้แน่ใจว่าสภาพแวดล้อมการพัฒนาอย่าง Eclipse หรือ VS หรือ Idle นั้นกำลังทำงานอยู่ในโครงการเปล่าเมื่อผู้สมัครเริ่มต้นดังนั้นเธอจึงไม่ต้องเสียเวลาค้นหาผ่านแอปพลิเคชันที่ติดตั้งของคุณ


ฉันจงใจไม่ใช้คอมพิวเตอร์ในการสัมภาษณ์เนื่องจากเอฟเฟ็กต์อัจฉริยะ โปรแกรมตัวเลือกที่ไม่มีประสบการณ์โดยการกดปุ่ม และเลือกบางสิ่งจากรายการ ไวท์บอร์ดนี้ทำให้เห็นได้ชัดมาก ...
ไมเคิลชอว์

5
@Polemmy: คิดอย่างนั้นเหรอ? สำหรับไวท์บอร์ดแบบฝึกหัดทั่วไปเช่น "โปรแกรมค้นหาความลึกแรกผ่านต้นไม้" Intellisense จะใช้อะไร?
nikie

2
กระดานไวท์บอร์ด / เอกสารไม่ผิดพลาดและทุกคนรู้วิธีเขียนบนกระดาษ ถ้าคุณให้ IDLE กับฉันเพื่อแก้ปัญหาฉันจะถือว่าคุณเป็นคนงี่เง่าและถ้าคุณให้ Eclipse กับฉันฉันจะใช้เวลาครึ่งเดียวกับการต่อสู้กับปุ่มลัดเริ่มต้น

6
Intellisense (และคุณสมบัติการเติมข้อความอัตโนมัติอื่น ๆ ของ IDE ด้วยเช่นกันฉันแน่ใจว่า) สามารถปิดได้ หรือคุณสามารถให้พวกเขา Notepad (หรือทางเลือกที่ดีกว่าเช่น Notepad ++ ซึ่งเน้นไวยากรณ์ แต่ไม่มีการเติมข้อความอัตโนมัติหรือสิ่งที่คล้ายกัน) แน่นอนมันอาจผิดพลาดได้ แต่ตามความเป็นจริง: คุณพบข้อบกพร่องของ showstopper ใน Notepad กี่ครั้ง?
CVn

3
แม้ว่ามันจะเป็นแค่ notepad.exe มันก็ยังทำงานได้ง่ายกว่ากระดาษหรือไวท์บอร์ด คุณสามารถแทรกหรือลบเส้นซึ่งเป็นความเจ็บปวดอย่างมากในสื่อทางกายภาพ
CodesInChaos

10

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

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

ดังนั้นในสถานการณ์เช่นนี้แม้แต่สิ่งที่ดีที่สุดก็อาจทำให้สะดุด

สำหรับส่วนสุดท้ายเราขอให้ผู้สัมภาษณ์ทำคือเขียนโค้ดขนาดเล็ก (4-5 บรรทัด) ลงบนไวท์บอร์ดและอธิบายขณะที่พวกเขาผ่านมันไป

ไม่เป็นไร. แต่อีกครั้งเพียงเพราะบางคนไม่สามารถอธิบายสิ่งที่ถูกต้องไม่ได้หมายความว่าพวกเขาไม่รู้จักดี (คำอธิบายเป็นศิลปะการพูด)

ถ้าฉันเป็นคุณฉันจะทำเช่นนี้ในส่วนสุดท้าย ...

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


6
หากส่วนหนึ่งของกระบวนการสรรหาของคุณคือการเสนอสัญญาระยะคงที่มาตรฐานเป็นเวลา 3 เดือนผู้คนจำนวนมากจะลาออกจากบทบาทดัดเพื่อรับข้อเสนอของคุณ?
Michael Shaw

1
ฉันหมายถึงครั้งสุดท้ายในแง่ที่ว่ามันเป็นรายการสุดท้ายในรายการของฉัน ฉันเรียงลำดับของสิ่งต่าง ๆ ในการสัมภาษณ์โดยขึ้นอยู่กับว่าส่วนการสนทนานั้นมีความก้าวหน้าอย่างไรและฉันคิดว่าจุดแข็งและจุดอ่อนของพวกเขาอยู่ที่ไหน สำหรับการเสนอสัญญาระยะสั้นให้กับพวกเขา ... นั่นไม่จริงใน บริษัท เล็ก ๆ ในโลกแห่งความเป็นจริง ฉันไม่มีเวลา / ทรัพยากรที่จะรับความเสี่ยงในการถ่อม้า 3 เดือนกับคนที่อาจไม่ได้ผลและตามที่ทอเลมีชี้ให้เห็นฉันสงสัยว่าผู้สมัครจะกระตือรือร้นเช่นกัน
Eoin Campbell

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

1
@TheJug เห็นด้วยอย่างสมบูรณ์และเราจะมีความสุภาพกับ Juniors & Grads มากเพื่อให้แน่ใจว่าพวกเขาไม่ได้ผ่านกระบวนการ แต่เรามีอาวุโส (อายุ 7-8 ปี) devs ที่ต้องดิ้นรนกับเรื่องนี้
Eoin Campbell

1
"จ้างพวกเขาสำหรับโครงการเล็ก ๆ (แต่เป็นจริง) ... " - คุณแนะนำให้คุณ "จ้าง" เช่นผู้สมัครสามคนที่สมัครรับตำแหน่งแม้ว่าคุณจะวางแผนไว้หรือไม่ ดูเหมือนจะไม่ยุติธรรมสำหรับฉัน! มันอาจจะไม่ปรับปรุงจิตวิญญาณของทีมเช่นกัน
nikie

8

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


7
ฉันไม่รู้ว่าผู้ชายคนนั้นเพราะเขาไม่ได้รับการว่าจ้าง
วินไคลน์

4
@ kevincline กับความเสียหายของ บริษัท เว้นแต่คุณจะได้รับเงินโดยให้ผู้คนมีความกังวลใจ
JayPea

1
@ JayPea: ฉันจะรู้ได้อย่างไรว่าคน ๆ หนึ่งเป็น coder ที่ยอดเยี่ยมถ้าฉันไม่สามารถดูโค้ดได้ ทางเลือกเดียวคือคำแนะนำจากพนักงานที่มีอยู่แล้ว ทุกคนชอบจ้างคำแนะนำที่เชื่อถือได้ แต่นั่นเป็นกลุ่มที่ค่อนข้างเล็ก
วินไคลน์

1
@ kevincline อ่านคำตอบของฉันฉันไม่ได้บอกว่าคุณไม่ควรเขียนโค้ดไวท์บอร์ดในการสัมภาษณ์นักพัฒนา
Tamás Szelei

@ JayPea ฉันค่อนข้างมั่นใจว่าการมีพนักงานที่ไม่กังวลในสถานการณ์ที่มีความเครียดสูงเป็นปัจจัยสำคัญในความสำเร็จทางการเงินของ บริษัท หลายแห่ง
Kyle Strand

4

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

การสื่อสารการสื่อสารการสื่อสารเป็นสิ่งที่เป็นพื้นฐานของทุกโครงการขนาดกลางถึงขนาดใหญ่


มันเป็นมากกว่าการสื่อสาร พวกเขาต้องสามารถสื่อสารได้แน่นอน แต่พวกเขายังต้องสามารถบอกวิธีแก้ปัญหาให้ฉันได้ด้วย
Eoin Campbell

4

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

  • รหัสที่ดีไม่ได้ถูกเขียน แต่จะถูกเขียนใหม่ ไวท์บอร์ดไม่เปลี่ยนรูปสวยนักเนื่องจากยากที่จะเปลี่ยนแปลงเมื่อคุณเขียนมัน ควรเปลี่ยนใจทันทีที่คุณเข้าใจปัญหาได้ดีที่สุด
  • ในการสัมภาษณ์เป็นสถานการณ์ที่ตึงเครียดอย่างที่เป็นอยู่ไม่จำเป็นต้องกดดันผู้สมัครเพิ่มเติม คอมพิวเตอร์หลายคนไม่มีลายมือดี Modern IDEs มีเครื่องมือมากมายที่คุณคุ้นเคย และสามารถทำบางสิ่งบางอย่างในนาทีที่คุณต้องการและเป็นส่วนหนึ่งของสไตล์การทำงานของโปรแกรมเมอร์ส่วนใหญ่ เหตุใดจึงนำสิ่งเหล่านี้ทั้งหมดออกไปและสร้างสภาพแวดล้อมที่ประดิษฐ์ขึ้นมาพวกเขาจะไม่ต้องทำงานหากคุณทำข้อเสนอ
  • นอกจากนี้เรายังสนใจในความสามารถในการเขียนแบบทดสอบที่ดีบางทีอาจเป็น TDD สิ่งนี้เป็นไปไม่ได้ที่จะเห็นระหว่างการเขียนไวท์บอร์ด

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

ในขณะที่เซสชันไวท์บอร์ดอาจช่วยกรองผู้สมัครที่ไม่ดี แต่ก็อาจกรองโปรแกรมเมอร์ที่ดีหลายคน


1
กระดานไวท์บอร์ดไม่เปลี่ยนรูป? คุณเพียงแค่เช็ดบางสิ่งออกไปแล้วเขียนใหม่ในสิ่งที่ทำให้มันมีประโยชน์โดยเฉพาะการสอน คุณต้องอยู่ในจักรวาลสำรอง
whatsisname

อาจจะไม่เปลี่ยนรูปเป็นคำที่ผิด (ฉันเอามันมาจากmedium.com/dima-korolev/ ...... - ใครคิดว่ามันเป็นข้อได้เปรียบ) ถึงกระนั้นเมื่อเทียบกับบรรณาธิการมันก็ยากที่จะเพิ่มบางสิ่งที่คุณไม่ได้เว้นที่ไว้ให้
iGEL

3

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

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

แต่ใช่กระดานไวท์บอร์ดสมบูรณ์แบบแม้ว่าฉันคิดว่าคุณควรจะใช้ชุดปัญหาอื่น โยนพวกเขาเป็นปัญหาในโลกแห่งความจริงและให้พวกเขาวาดกลุ่มของ UML-ish squibbles เพื่ออธิบายกลยุทธ์โดยรวมของพวกเขาเพื่อแก้ปัญหานั้น ให้คอมพิวเตอร์กับอินเทอร์เน็ตเพื่อให้พวกเขาสามารถมองหาห้องสมุดบุคคลที่สามที่พวกเขาสามารถใช้เป็นกล่องดำได้ใน squibblescape
ภายในไม่กี่นาทีคุณจะเห็นว่าพวกเขาจัดการกับปัญหาได้อย่างไร คุณสามารถทำให้สิ่งนี้เป็นสิ่งที่น่าสนใจมากโดยการเลือกปัญหาที่คุณไม่จำเป็นต้องมีวิธีแก้ปัญหาในใจและพยายามที่จะ "แก้ไข" พวกเขาเข้าด้วยกันเพื่อดูว่าพวกเขาสื่อสารกันได้ดีแค่ไหน อย่าผลักพวกเขาแรงเกินไปบางคนอาจหยุดถ้าคุณทำ) แล้วเพิ่มข้อกำหนดบางอย่างในทันที นี่เป็นเหมือนการพัฒนาซอฟต์แวร์โดยไม่มีการใช้งานและที่สำคัญที่สุด - โดยไม่ต้องดีบักดังนั้น 15 นาทีจึงใช้เวลานานมาก


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

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

คุณอาจไม่จำเป็นต้องมีใครสักคนในไซต์ แต่อย่างน้อยคุณควรจะโทรศัพท์หาผู้สมัครที่พูดคุยผ่านแบบฝึกหัดการเขียนรหัสไม่ว่าคุณจะใช้อะไรก็ตาม เพียงแค่ส่งคำถามและรอไฟล์ zip ที่จะส่งยังคงมีความเสี่ยงทั้งหมดของการแอบอ้างบุคคลอื่น เป็นตัวอย่างที่ดีที่สุดที่ฉันทำการทดสอบ FooCorp ครั้งเดียวจากนั้นก็เริ่มสนใจ "การทดสอบการเข้ารหัส FooCorp" หลังจากนั้น - และพบว่ามีคนประกาศวิธีแก้ปัญหาที่ดีงาม
Julia Hayward

@JuliaHayward: หากคุณให้ปัญหาเดียวกันแก่ผู้สมัครทุกคนแน่นอนว่าคำตอบจะกลายเป็น google ได้ ไม่น่าแปลกใจใช่ไหม แต่อีกครั้งคำตอบของฉันยังคงอยู่: อย่าทำการเขียนไวท์บอร์ดในระดับ fizzbuzz ในการสัมภาษณ์ มันแสดงให้เห็นว่าคุณไม่ได้กังวลกับการเตรียมปัญหาที่ดีและน่าสนใจ ดังที่คุณได้พูดไปแล้วว่ามีวิธีสร้างความสามารถในการเขียนโปรแกรมขั้นพื้นฐานก่อนที่คุณจะเชิญผู้สมัครเข้าสู่ไวท์บอร์ดของคุณ
back2dos

3

ให้ฉันตอบด้วยคำถามอื่น:

การเขียนโค้ดบนกระดานไวท์บอร์ดมีข้อได้เปรียบที่แท้จริงในการประเมินความสามารถในการเขียนโปรแกรมหรือไม่เมื่อเปรียบเทียบกับการพิมพ์และเรียกใช้โค้ดบนคอมพิวเตอร์?

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


นี่เป็นเพียงความคิดเห็นของคุณหรือคุณสามารถสำรองข้อมูลได้
ริ้น

2
@gnat ฉันแค่โพสต์คำถาม ครึ่งหลังของคำตอบคือความเห็นของฉันใช่ แต่นั่นควรจะค่อนข้างชัดเจนโดยภาษาที่ใช้ ยิ่งไปกว่านั้นคำถามเริ่มต้นด้วยการยอมรับว่าเป็นเรื่องส่วนตัวและขอความคิดเห็นเฉพาะในเรื่องนั้น ๆ ฉันไม่คิดว่า downvote นั้นได้รับการรับประกัน
Kevin C.

@ เควินซีฉันคิดว่าไม่ว่าคุณจะใช้ถ้อยคำใด การเขียนโค้ดไวท์บอร์ดแตกต่างจากการเขียนโค้ดคอมพิวเตอร์ นี่เป็นความคิดเห็นหรือไม่? ไม่แน่นอนตราบใดที่ไวท์บอร์ดไม่สามารถเรียกใช้รหัสได้
Leandro Caniglia

2

ไม่ แต่ IMO วิธีที่ดีกว่าคือการใช้ไวท์บอร์ดเพื่อจุดประสงค์และใช้ UML / sketches / notes สำหรับโครงการที่สมมติขึ้นมาแทนที่จะเป็นแบบเก่า "เขียนแบบสอบถาม sql ให้ฉันเพื่อรับบันทึกทั้งหมด" หรือ "เขียนวิธีการที่ ฝืนสตริง "

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


2

ทุกวันนี้มีการเขียนโปรแกรมจำนวนมากในทีม สำหรับทีมที่ทำงานคนต้องสามารถสื่อสารได้ ส่วนใหญ่ของสิ่งนี้คือความสามารถในการสื่อสารต่อหน้าไวท์บอร์ด (การระดมสมองการให้คำปรึกษาการตรวจสอบรหัสที่เสนอแก้ไข)

ฉันจะดูว่าผู้สมัครอธิบายวิธีแก้ปัญหาการเขียนโปรแกรมโดยใช้รหัสไวท์บอร์ดเพื่อช่วยหรือไม่ หากคำอธิบายนั้นดีพอโปรแกรมเมอร์ที่ดีคนอื่น ๆ ในห้องจะแก้ไขข้อผิดพลาด / ความผิดพลาดใด ๆ บนกระดานโดยอัตโนมัติ

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


0

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


0

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

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

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


-1

ฉันไม่คิดว่ามันไม่มีเหตุผลนอกเสียจากว่าผู้ให้สัมภาษณ์จะมีการเขียนด้วยลายมือที่ไม่ดี นอกจากความแตกต่างเพียงอย่างเดียวในแนวทางของคุณคือการใช้บอร์ดและมาร์กเกอร์ ในบางกรณีผู้สัมภาษณ์ทำสิ่งนี้ แต่ให้กระดาษและปากกาแทน ในกรณีที่มี 3-4 คนที่ทำการสัมภาษณ์ผมจะบอกว่าวิธีการของคุณดีกว่าและเหมาะสมกว่ามาก


1
"ผู้สัมภาษณ์ส่วนใหญ่หรือทุกคนทำสิ่งนี้"เป็น IMO ที่ค่อนข้างหายาก
Kirk Broadhurst

ฉันเดาว่าทุกคนทำอย่างนั้น เป็นเรื่องยากที่จะพบกับพีซีหรือแล็ปท็อปเพียงเพื่อตรวจสอบว่าคุณแก้ปัญหาการเข้ารหัสเฉพาะ แต่บางทีสิ่งต่าง ๆ ในสถานที่ของคุณ หากคุณต้องการฉันสามารถแก้ไขสิ่งนี้ในคำตอบ ??
Pankaj Upadhyay

เห็นฉันจะเห็นว่ามันค่อนข้างหายาก ... ฉันเคยทำงาน 4 ครั้งในช่วง 9 ปีที่ผ่านมาและไม่เคยถูกขอให้เขียนรหัสบนกระดาษ / wb การเข้ารหัสใด ๆ อยู่ที่ IDE ซึ่งเป็นสาเหตุที่ฉันสงสัยว่ามันไม่เหมาะสม ฉันคาดหวังว่านักพัฒนาซอฟต์แวร์จะสามารถใช้รหัส "ย้อนกลับสตริง" ในไม่กี่นาทีโดยไม่ต้องใช้ IDE / Intellisense
Eoin Campbell

ฉันได้ทำการแก้ไขตามประสบการณ์ของคุณ ในการสัมภาษณ์สองครั้งที่ฉันได้รับพวกเขาให้ปากกากับกระดาษเพื่อเขียนวิธีการพิมพ์ชุดฟีโบนักชีและอัลกอริทึมสำหรับการรวมกลุ่ม ดังนั้นฉันคิดว่าสิ่งต่าง ๆ ส่วนใหญ่จะเป็นไปในลักษณะนี้ :-)
Pankaj Upadhyay

ควรชี้ให้เห็นว่าฉันไม่เคยต้องเขียนโค้ดที่คอมพิวเตอร์ ฉันเคยเขียนโค้ดบนกระดาษสองครั้ง (ทั้งเมื่อฉันเป็นจูเนียร์) และผมก็มีการวาดแผนภาพสถาปัตยกรรมบนไวท์บอร์ดครั้งเดียว นั่นจากการสัมภาษณ์ประมาณ 20 ครั้ง ...
Kirk Broadhurst
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.