ทำไมผู้สัมภาษณ์ไม่ขอให้ผู้สมัครอ่านรหัส? [ปิด]


13

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

ทำไมผู้สัมภาษณ์ถึงไม่ตรวจสอบมัน? *

* ในหมู่เพื่อนของฉันฉันเป็นคนเดียวที่ถูกขอให้ตรวจสอบรหัส


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

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

1
@GrandmasterB ผู้สัมภาษณ์ยังปรากฏบนเว็บไซต์นี้ หากพวกเขาตั้งใจที่จะไม่มองหาทักษะการอ่านโค้ดนั่นอาจเป็นเหตุผลที่ดี
Izkata

กรุณาหลีกเลี่ยงการอภิปรายเพิ่มเติมในความคิดเห็น หากคุณต้องการหารือเกี่ยวกับข้อดีของคำถามนี้ต่อไปโปรดเปิดคำถามใน Meta ที่มีการสนทนาดังกล่าว ขอขอบคุณ.
maple_shaft

ฉันต้องการเพิ่มว่าฉันถูกขอให้อ่านรหัสก่อนและชี้ให้เห็นถึงการปฏิบัติที่ไม่ดีและข้อผิดพลาดใด ๆ
andy

คำตอบ:


10

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


4

เวอร์ชั่นสั้น

หากงานประกอบด้วยการดูแลใบสมัครทักษะที่คุณต้องทดสอบระหว่างการสัมภาษณ์คือ:

  • ความสามารถในการเข้าใจ codebase ขนาดใหญ่พร้อมเอกสารประกอบการทดสอบหน่วยฯลฯ

  • ความสามารถในการrefactorรหัสและนำการเปลี่ยนแปลงโดยไม่ทำลายทุกอย่าง

การขอให้ผู้คนอ่านโค้ดจะไม่ช่วยประเมินความสามารถเหล่านั้น

รุ่นยาว

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

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

มีเหตุผลอีกสองสามข้อที่จะไม่ขอให้อ่านรหัสสำหรับงานบำรุงรักษา:

1. มันยากที่จะทำอย่างน่าเชื่อถือ

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

ที่สำคัญกว่ามันบอกอะไรเกี่ยวกับผู้สมัคร? มันมีความสัมพันธ์กับ codebase ดีแค่ไหน?

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

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

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

2. การอ่านโค้ดสั้น ๆ นั้นไม่เหมือนกับการอ่านโค้ดของโปรเจ็กต์ที่คุ้นเคย

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

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

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

3. การบำรุงรักษาซอร์สโค้ดไม่ได้เป็นการอ่าน

เมื่อคุณรักษา codebase คุณกำลังแก้ไขมัน นักพัฒนาที่เพิ่งอ่านรหัสไม่ได้นำสิ่งใดที่มีประโยชน์กับ บริษัท ของเขา

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


2

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

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

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


อ่านใช่เข้าใจหรือไม่ ... ไม่จำเป็น
jmoreno

1
@jmoreno: อาจจะไม่ใช่ แต่ให้เวลาอันมีค่าถ้าคุณขอให้ผู้สมัครเขียนสิ่งที่คล้ายกันคุณจะได้รับความรู้มากกว่าที่คุณสามารถดูพวกเขาอ่านสิ่งที่ซับซ้อน
Joel Etherton

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

1
@DanMonego: ฉันเข้าใจประเด็นของคุณและไม่ใช่ว่าฉันไม่เห็นด้วยเลย แต่คำถามก็คือว่าทำไมการสัมภาษณ์ส่วนใหญ่ไม่รวมการอ่านไม่ใช่คุณค่าของการอ่าน การสัมภาษณ์ส่วนใหญ่ไม่เกี่ยวข้องกับการใช้งานที่ไม่สำคัญมากนักไม่ว่าจะเป็นการอ่านหรือการให้เหตุผลที่เหมาะสมเนื่องจากลักษณะของเวลา
Joel Etherton

1

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

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

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

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

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