วิธีที่ดีที่สุดในการประเมินโปรแกรมเมอร์ใหม่คืออะไร? [ปิด]


51

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

สิ่งอื่น ๆ ที่ฉันต้องทราบ:

  • ระบบการศึกษาในประเทศของฉันแย่มาก ๆ คนที่เก่งในงานประเภทนี้ดีเพราะพวกเขามีความสามารถหรือพยายามเรียนรู้ด้วยตนเอง

  • การศึกษาระดับมหาวิทยาลัย / บัณฑิต / โพสต์ - บัณฑิตไม่ได้แปลว่าคุณรู้วิธีการทำสิ่งต่าง ๆ อย่างแน่นอน

  • การรับรองยังไม่มีความหมายอะไรที่นี่เพราะคนที่รับผิดชอบหลักสูตรการรับรองยังไม่มีทักษะ (หรือมีงานที่ได้ค่าตอบแทนต่ำ)

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

เราอยู่ในสถาบันรัฐบาลและผู้ที่เป็นผู้สมัครไม่จำเป็นต้องมาจากภายนอก แต่เรามีความเป็นไปได้ที่จะยอมรับหรือไม่รับผู้สมัครใด ๆ จนกว่าเราจะพบผู้สมัครที่ถูกต้อง

ฉันหวังว่าฉันจะฟังดูไม่มั่นใจเกินไปในคำถามของฉัน และ BTW ฉันเป็นโปรแกรมเมอร์ตัวเอง

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


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

คำตอบ:


52

เกี่ยวกับการเลือกผู้สมัครฉันมักจะใช้แผนสามนัด:

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

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

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

ในตอนท้ายของทั้งหมดนี้คุณควรจะสามารถตัดสินใจได้ว่าคุณต้องการให้ผู้สมัครนี้เป็นส่วนหนึ่งของทีมหรือไม่


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

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

1
@ChristopherMahan ค่าของ FizzBuzz (และการเข้ารหัสเล็กน้อย) ก็เป็นผู้รักษาประตูง่าย หากพวกเขาไม่สามารถใช้ FizzBuzz ในภาษาที่พวกเขาเลือกพวกเขาสามารถเขียนรหัสใด ๆ ได้หรือไม่?
Vatine

@Vatine FizzBuzz ทดสอบความสามารถในการใช้เหตุผลเชิงเหตุผลไม่ใช่ทักษะการเขียนโปรแกรม จริงอยู่ที่เราควรจะสามารถทำมันได้ คำถามการเขียนโปรแกรมง่าย ๆ คือ: แสดงบนหน้าจอรายการของรายการที่เรียงในลักษณะที่น่าสนใจ พวกเขาจะต้องเขียนโค้ด แต่พวกเขาจะสามารถดึงเอาประสบการณ์มาเขียนบางสิ่งบางอย่างและไม่ต้องลองคิดพัฒนาสมอง ฉันเคยสัมภาษณ์ล้มเหลวเพราะพวกเขาต้องการให้ฉันใช้ regex และฉันตอบว่าสำหรับปัญหานั้น regex นั้นเป็น overkill และ python มีความสามารถในตัวที่จะทำสิ่งนี้ ฉันไม่ต้องการทำงานที่นั่นฉันเดา
Christopher Mahan

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

20

เริ่มต้นด้วยการมอบFizzBuzzให้พวกเขาเพื่อแก้ปัญหา นั่นควรกำจัดสิ่งที่เลวร้ายที่สุดของพวกเขา

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

คุณสามารถให้ปัญหาที่ยากขึ้นได้หากพวกเขาพบว่าสิ่งเหล่านี้ง่ายมากจนกว่าคุณจะมั่นใจว่าพวกเขาสามารถเดินได้และไม่ใช่แค่พูดคุย


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

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

1
@Andrey - ส่วนที่พูดคุยคือการได้รับข้อมูลเชิงลึกในกระบวนการคิดของพวกเขา คุณต้องการดูว่าพวกเขาคิดอย่างไรเกี่ยวกับปัญหาและวิธีการแก้ไข คุณมีตัวเลือกที่ดีกว่านี้ไหม?
Oded

5
@ มีจริงใช่ฉันจริง ปล่อยให้พวกเขาคิดอยู่ครู่เดียวตามที่พวกเขาจะทำในชีวิตจริงโดยเฉพาะถ้ามันเป็นปัญหาที่หนักหนาสาหัสแล้วถามพวกเขาให้มากที่สุดเท่าที่คุณต้องการ ชอบในการสอบปากเปล่าใด ๆ
Andrey Rubshtein

4
แม้ในฐานะผู้ดูแลโรงเรียนที่มีผู้เชี่ยวชาญด้าน CS หลายคนที่เพิ่งได้รับการยอมรับ แต่ฉันพบว่า fizzbuzz เล็กน้อยเป็นตัวกรองที่ดี คนส่วนใหญ่ที่ฉันเรียนจบอาจไม่สามารถแก้ไขได้ในเวลาอันสมควร คนเหล่านั้นพยายามหางานหรือไม่ ฉันคิดว่าการติดตามjoelonsoftware.com/articles/GuerrillaInterviewing3.htmlเป็นสิ่งที่ดี
Rig

14

แค่มองหาความรักในงาน

ในการอ้างอิง Joel ให้มองหาคนที่ " ฉลาดและทำสิ่งต่างๆให้สำเร็จ "

ส่วนที่เหลือไม่สำคัญ


7
ปัญหาคือคุณไม่สามารถบอกได้ว่ามันฉลาดหรือไม่

4
@Chad: ความหลงใหลในการเรียนรู้ไม่ได้ "ทำให้เสร็จ" ในการค้นหาว่าใครบางคนสามารถทำสิ่งต่าง ๆ ได้คุณต้องขอให้พวกเขาทำอะไรสักอย่าง
kevin cline

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

3
@mouviciel ไม่ได้อยู่ในประสบการณ์ของฉัน โปรแกรมเมอร์ที่ฉลาดที่สุดที่ฉันรู้จักบางคนเปิดเผยมาก

4
หากคุณไม่สามารถนั่งในห้องกับผู้พัฒนาและคิดออกว่าพวกเขาฉลาดหรือไม่หาคนที่สามารถทำได้
JeffO

13

จากการเขียนโปรแกรม 25 ปีของฉัน (ซึ่งเป็นที่ยอมรับมีเพียง 5 หรือ 6 ตัวอย่างของการว่าจ้างโปรแกรมเมอร์อื่น ๆ ):

ตัวชี้วัดเชิงบวก:

  • หลงใหลเกี่ยวกับเทคโนโลยี

  • โปรแกรมเป็นงานอดิเรก

  • จะพูดถึงหูของคุณในหัวข้อทางเทคนิค

  • โครงการด้านส่วนบุคคลที่สำคัญ (และหลายครั้ง) มีความสำคัญในช่วงหลายปีที่ผ่านมา

  • เรียนรู้เทคโนโลยีใหม่ ๆ ด้วยตนเอง

  • มีความเห็นเกี่ยวกับเทคโนโลยีที่ดีกว่าสำหรับการใช้งานแบบต่างๆ

  • รู้สึกไม่สบายใจมากเกี่ยวกับแนวคิดในการทำงานกับเทคโนโลยีที่เขาไม่เชื่อว่าเป็น "ถูกต้อง"

  • สมาร์ทอย่างชัดเจนสามารถสนทนาที่ยอดเยี่ยมในหลากหลายหัวข้อ

  • เริ่มเขียนโปรแกรมมานานก่อนมหาวิทยาลัย / งาน

  • มี "ภูเขาน้ำแข็ง" ที่ซ่อนอยู่ซึ่งเป็นโครงการส่วนตัวขนาดใหญ่ภายใต้เรดาร์เรดาร์

  • ความรู้เกี่ยวกับเทคโนโลยีที่ไม่เกี่ยวข้องมากมาย (อาจไม่ได้อยู่ในประวัติส่วนตัว)

ตัวชี้วัดเชิงลบ:

  • การเขียนโปรแกรมเป็นงานประจำวัน

  • ไม่ต้องการที่จะ "พูดคุยร้านค้า" แม้ว่าจะได้รับการสนับสนุน

  • เรียนรู้เทคโนโลยีใหม่ในหลักสูตรที่ บริษัท ให้การสนับสนุน

  • ยินดีที่ได้ทำงานกับเทคโนโลยีที่คุณเลือกไว้“ เทคโนโลยีทั้งหมดดี”

  • ดูเหมือนจะไม่ฉลาดเกินไป

  • เริ่มเขียนโปรแกรมที่มหาวิทยาลัย

  • ประสบการณ์การเขียนโปรแกรมทั้งหมดอยู่ใน CV

  • มุ่งเน้นไปที่สแต็คเทคโนโลยีหนึ่งหรือสองหลัก (เช่นทุกอย่างเกี่ยวกับการพัฒนาแอปพลิเคชัน Java) โดยไม่มีประสบการณ์นอกเหนือจากนั้น

นอกจากนี้ฉันขอแนะนำ:

  • การทดสอบFizzBuzz (หรืออะไรทำนองนั้นเพื่อทดสอบความสามารถขั้นพื้นฐานในการเขียนอัลกอริทึม
  • การทดสอบ FizzBuzz เวอร์ชันที่ยากขึ้น (เพื่อนำพวกเขาไปสู่ความล้มเหลวหรือจุดที่ใกล้ถึงความล้มเหลว)
  • อภิปรายรหัสของพวกเขาและดูว่าพวกเขาเต็มใจที่จะเป็นคนสำคัญและมองหาการปรับปรุงหรือไม่ (ซึ่งพวกเขาอาจไม่มีเวลาทำแบบทดสอบสั้น ๆ ) เช่น:
    • ชื่อตัวแปรที่ดี (ฉันเคยมีประสบการณ์มากโคเดอร์ที่มีทักษะใช้ตัวแปรในการผลิตเช่น "flag" (WTF ??)
    • modularization
    • การคาดการณ์ปัญหาและการทำ "รหัสป้องกัน"
  • ความเต็มใจที่จะเห็น "ข้อบกพร่อง" เป็นโอกาสในการปรับปรุง ฉันคิดว่าโคเดอร์ที่ดีที่สุดมักจะมองหาข้อบกพร่องในโค้ดก่อนหน้าของพวกเขาอย่างไม่สะทกสะท้าน พวกเขาไม่ได้เห็นแก่ตัวอย่างที่คิดว่าการหาข้อบกพร่องของพวกเขานั้นเป็นการดูถูกส่วนตัว พวกเขาเห็นว่ามันเป็นโอกาสที่จะทำได้ดีกว่า (ผู้ที่ไม่สามารถมองเห็นข้อบกพร่องอย่างไม่เกรงกลัวได้นั้นจะเห็นว่ามีข้อบกพร่องเกิดขึ้น (และกลายเป็นคนที่ไม่มั่นใจอย่างยิ่งหรือเพื่อหลีกเลี่ยงความผิดพลาดนั้น
  • พวกเขาสามารถแก้ไขข้อบกพร่อง?
  • พวกเขาสามารถทดสอบหน่วย? (ฉันได้คุยกับโปรแกรมเมอร์มากเกินไปที่พูดว่า "QC ทำอย่างนั้น" ฉันไม่ได้พูดถึงการทดสอบฉันกำลังพูดถึงการทดสอบ: คุณเขียนฟังก์ชั่นใช้งานได้หรือไม่มันใช้ความพยายามอย่างสมเหตุสมผลในการจัดการกับ ปัญหาที่อาจเกิดขึ้น (อินพุต NULL เป็นต้น) ถ้าคุณไม่สามารถทำเช่นนั้นคุณจะรู้ได้อย่างไรว่าคุณทำเสร็จแล้ว?
  • พวกเขามีทักษะการสื่อสารที่ดีหรือไม่? (อย่างน้อย: ความเข้าใจที่ดีและความรู้เกี่ยวกับตนเองเมื่อพวกเขาทำและไม่เข้าใจและเต็มใจที่จะพูดว่า "ฉันไม่เข้าใจโปรดอธิบายอีกครั้ง"

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


10

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

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

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


7

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

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

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


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

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

10
@kevincline: แน่นอนคุณต้องพูดคุยกับพวกเขา ฉันกำลังสัมภาษณ์ที่ Xerox (ย้อนกลับไปในยุค 70) และฉันถูกถามว่าฉันจะจัดการการชนในอัลกอริทึมการแปลงแป้นพิมพ์ได้อย่างไร ฉันไม่ได้เรียนหนังสืออย่างเป็นทางการมากนัก แต่ฉันก็ทำไปแล้วประมาณ 5 ปีดังนั้นฉันจึงบอกว่าไม่รู้ว่าแฮชคืออะไร ผู้สัมภาษณ์อธิบายให้ฉันแล้วถามคำถามอีกครั้ง เราดำเนินต่อไปนานกว่าหนึ่งชั่วโมงขณะที่ฉันค้นพบ & แก้ไขปัญหาการชนหลายประเภท เขาบอกฉันว่าถ้าฉันทำได้ภายในหนึ่งชั่วโมงฉันก็สามารถจัดการอะไรก็ได้ที่พวกเขาขว้างใส่ฉัน ฉันได้งานแล้ว. เพราะเขาคุยกับฉัน
Peter Rowell

@ PeterRowell นั่นคือสิ่งที่จำเป็นต้องมี +1
Chiron

3

การอ่านคำถามนี้และคำตอบบางส่วนที่ได้รับนั้นทำให้ฉันเขียนบทความที่ฉันรู้สึกว่าอาจเป็นที่สนใจ:

วิธีการสรรหาบุคลากรที่แปลกเมื่อจ้างนักพัฒนาซอฟต์แวร์

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

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


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

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

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

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

@ S-ร็อบบินส์ที่คุณเข้าใจดี ...
ราฟาเอล

1

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

แต่คุณตัดสินใจที่จะระงับการให้สัมภาษณ์ของคุณทำไม่ได้ขอให้บรรดา "ด้านข้างคิดปริศนา" คำถามสัมภาษณ์


2
ฉันยังไม่ได้ระบุภาษาที่เราใช้ในการพัฒนาเพราะเราเชื่อว่าโปรแกรมเมอร์ที่ดี (ด้วยหลักสูตรการตอบสนองต่อความสามารถในการตอบสนองของเขา / เธอ) สามารถเรียนรู้การเขียนโปรแกรมในภาษาใดก็ได้โดยไม่ขึ้นกับ sintax
Rafael

2
@Rafael norvig.com/21-days.html ดังที่ฉันพูดไปแล้วมันขึ้นอยู่กับว่าคุณกำลังมองหาโปรแกรมเมอร์รุ่นเยาว์หรือรุ่นพี่
BЈовић

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

@Rafael ในกรณีนี้คุณคาดหวังมากจากรุ่นน้อง อ่านบทความที่ฉันโพสต์ในความคิดเห็นด้านบนซึ่งจะบอกว่าต้องใช้เวลานานเท่าใดในการเขียนโปรแกรมภาษา
BЈовић

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

1

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

ลองคิดดู หากคำถาม FizzBuzz กำจัด 199 จาก 200 คำถามก็จะตัดการสัมภาษณ์หลายร้อยรายการออกไป คุณจะสัมภาษณ์ผู้มีโอกาสเป็นร้อย ๆ จริงๆหรือไม่?

ดูเหมือนว่าผลตอบแทนลดลงหลังจาก FizzBuzz นั่นคือสมมติว่า 199/200 ใกล้เคียงกันมาก และฉันคิดว่าเวลาของคุณมีค่าเช่นกัน ...


2
น่ากลัวว่า FizzBuzz คือการทดสอบมาตรฐานสำหรับการประเมินความสามารถของโปรแกรมเมอร์ อย่างไรก็ตามนี่คือการทดสอบที่พยายามและเป็นจริง - ฉันไม่สามารถบอกคุณได้ว่าโปรแกรมเมอร์ที่มีองศา CS ไม่สามารถทำได้ (ใน 'ภาษาที่พวกเขาเลือก')
Nodey The Node Guy

0

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

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

ควรนำคุณไปประมาณ <= 3 นาทีต่อคำถาม


0

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

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


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

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

คุณสามารถทำคะแนนในระดับหนึ่งถึงสิบหรือเพียงแค่พึ่งพาความสามารถในการดมกลิ่นของคุณเอง


0

ถ้ามันทำให้คุณรู้สึกว่าโปรแกรมเมอร์ไม่ดีอยู่ในทุกประเทศ วิธีกำจัดพวกมันออกคือปัญหา

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

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

มองหาสิ่งที่ทำให้คนนั้นโดดเด่นในสิ่งที่คุณเลือก แน่นอนว่ามันยากสำหรับคนที่เพิ่งออกจากโรงเรียน แต่มองหาความสำเร็จการมีส่วนร่วมในโอเพนซอร์สและอื่น ๆ

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

หลังจากการสัมภาษณ์ทางโทรศัพท์คุณควรเลือกผู้สมัคร 4-5 คนที่ดีที่สุดและการสัมภาษณ์ แน่นอนว่าถ้าคุณมีผู้สมัครที่ดีเพียง 1-2 คนอย่ากังวลกับการสัมภาษณ์คนที่คุณกำจัดไปแล้ว ตอนนี้คุณกำลังจะถามคำถามยาก ๆ และทำความเข้าใจกับปัญหาที่เกิดขึ้น ฉันจะไม่ใช้การทดสอบ fizzbuzz เพราะรู้จักกันดีดังนั้นคำตอบไม่ได้บอกอะไรคุณ แทนที่จะทำปัญหาบางอย่างจากฐานรหัสของคุณเอง ฉันอาจให้พวกเขามีความต้องการและชิ้นส่วนของรหัสและถามพวกเขาว่ารหัสตรงตามความต้องการและถ้าไม่ใช่เพราะเหตุใดและสิ่งที่พวกเขาอาจจะทำให้มันตอบสนองความต้องการ ฉันจะขอให้พวกเขาอธิบายปัญหาการเขียนโปรแกรมที่ยากที่สุดที่พวกเขาต้องแก้และขั้นตอนที่พวกเขาทำเพื่อหาคำตอบ ฉันจะถามคำถามทางเทคนิคเพิ่มเติมในเชิงลึก จำไว้ว่าคุณกำลังพยายามเข้าใจถึงความสามารถทางเทคนิคการแก้ปัญหาและความสามารถในการดีบั๊กและความสามารถในการปรับให้เข้ากับทีมที่คุณมีอยู่ ฉันยังถามคำถามที่พวกเขาอาจไม่รู้คำตอบเพื่อตัดสินว่าพวกเขารับมือกับความเครียดได้ดีแค่ไหนมันเป็นงานที่เครียดฉันไม่ต้องการให้ใครซักคนในการสัมภาษณ์เพราะความเครียดของงานมากกว่าความเครียดของการสัมภาษณ์ . ฉันมองหาจุดแข็งในพื้นที่ที่เราอ่อนแอและความสามารถในการทำงานเป็นทีมและนำเสนอตัวเองให้กับลูกค้า (ผู้พัฒนาของเราจัดการกับผู้ใช้อย่างกว้างขวาง) รายการของคุณอาจแตกต่างกัน ไม่ต้องการให้ใครซักคนในการสัมภาษณ์เนื่องจากความเครียดของงานมากกว่าความเครียดของการสัมภาษณ์ ฉันมองหาจุดแข็งในพื้นที่ที่เราอ่อนแอและความสามารถในการทำงานเป็นทีมและนำเสนอตัวเองให้กับลูกค้า (ผู้พัฒนาของเราจัดการกับผู้ใช้อย่างกว้างขวาง) รายการของคุณอาจแตกต่างกัน ไม่ต้องการให้ใครซักคนในการสัมภาษณ์เนื่องจากความเครียดของงานมากกว่าความเครียดของการสัมภาษณ์ ฉันมองหาจุดแข็งในพื้นที่ที่เราอ่อนแอและความสามารถในการทำงานเป็นทีมและนำเสนอตัวเองให้กับลูกค้า (ผู้พัฒนาของเราจัดการกับผู้ใช้อย่างกว้างขวาง) รายการของคุณอาจแตกต่างกัน


-1

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

ถ้าเธอออกมาในสีที่บินได้เธอก็อยู่ใน!

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