การทดสอบ Joel ที่เทียบเท่าสำหรับการวัดโปรแกรมเมอร์ [ปิด]


70

ฉันเข้าใจว่าในการวัดโครงการหรือรหัสเราสามารถใช้The Joel Testได้ แต่มีแบบทดสอบมาตรฐานง่ายๆ (เช่น The Joel Test) ที่สามารถวัดและกรองโปรแกรมเมอร์ได้ดีแค่ไหน?

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


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

2
ที่น่าสนใจเมื่อฉันถามคำถามนี้มันถูกลงนรก (ตอนนี้บวกอีกครั้งใช่และปิดอย่างรวดเร็ว) แตกต่างจากอันนี้จริง ๆ หรือ programmers.stackexchange.com/questions/133691/…
ripper234

8
@ ripper234 เหตุผลที่คำถามถูกปิดใน SE นั้นเป็นบิตที่ไม่สามารถอธิบายได้ข้อบกพร่องของซอฟต์แวร์ที่ไม่สามารถอธิบายได้ - ความลึกลับจริงๆ บิตเหมือนธรรมชาติของมนุษย์จริงๆ
tehnyit

8
โจเอลตัวเองให้ทดสอบอย่างง่ายที่ยังเข้มงวด: สมาร์ทและได้รับสิ่งที่เสร็จสิ้น : P
Dan J

FizzBuzz! แน่นอน!
CraigTP

คำตอบ:


67

มีเป็นเมทริกซ์โปรแกรมเมอร์สมรรถนะ

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


27
ดังนั้นปัญหาเดียวที่เหลือคือการประเมินว่าเพื่อนร่วมทีมของอดีต / ปัจจุบันนั้นดีหรือไม่ ... โอ๊ะโอ
PéterTörök

21
ใช่มันคือ :) recursive
ทอมสไควร์

13
นั่นไม่เหมือนการทดสอบ Joel คำตอบของคุณชี้ไปที่เมทริกซ์ที่มีรายละเอียดมากการทดสอบของโจเอลเป็นชุดของคำถามที่ตอบง่าย ๆ 12 ข้อ
ไบรอัน Oakley

2
@BryanOakley - จริง แต่ PCM ก็เป็นสิ่งแรกที่ฉันนึกถึงเมื่ออ่านคำถาม ผลที่สุด: ไม่มีคำถามง่ายๆที่คุณสามารถตอบเพื่อวัดโปรแกรมเมอร์!
Joris Timmermans

2
@BryanOakley จุดของเมทริกซ์นั้นซับซ้อนกว่าซีรีย์ ให้ฉันใกล้เคียงกับการทดสอบของ Joel จะเป็นชุดที่ทำจากองค์ประกอบคอลัมน์ระดับ 1ในPCM - "อธิบายและใช้อาร์เรย์ ... , การเรียงลำดับพื้นฐาน ... ฯลฯ "
gnat

25

ฉันจะทำการทดสอบ Joel รอบ ๆ :

พวกเขาใช้การควบคุมแหล่งที่มาหรือไม่?

พวกเขารู้วิธีสร้างขั้นตอนเดียวโดยอัตโนมัติหรือไม่?

...

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

แก้ไข:

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


1
คำถามทั้งหมดของโจเอลเป็นเรื่องเกี่ยวกับสภาพแวดล้อมมากกว่าโปรแกรมเมอร์ หากทีมของฉันไม่ได้ใช้การควบคุมซอร์สโค้ดดังนั้นฉันไม่ได้รวมเข้ากับพวกเขาโดยใช้การควบคุมซอร์สโค้ดของตัวเองนั้นแทบจะไม่ได้รับการปรับปรุงเลย การทำให้ทีมใช้การควบคุมซอร์สโค้ดเป็นการปรับปรุง
Edwin Buck

15

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

การทดสอบ Joel ไม่ใช่การทดสอบแบบ 'มาตรฐาน' เช่นกัน มันเป็นเพียงรายการตรวจสอบ Joel Spolsky โพสต์ในบล็อกของเขา

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


1
+1 การตัดสินทักษะของโปรแกรมเมอร์ที่ดีนั้นเป็นงานหนึ่งที่ยากที่จะหาจำนวน
Karthik Sreenivasan

20
("You're not currently using source control; are there any plans to do so in the future?"), and the answers might be such that you'd accept the job despite a low Joel score. คุณจะทำผิดพลาดในการรับงานโดยวิธีการ ในที่สุดนักพัฒนาทุกคนเรียนรู้ว่าPlans to do so in the futureเป็นเพียงสิ่งที่ผู้สัมภาษณ์บอกว่าจะหลอกลวงคุณ แต่พวกเขาไม่เคยทำเพราะการจัดการที่แย่มาก มีกี่ครั้งที่เราได้ยินบางสิ่งเกี่ยวกับผลกระทบของOh, we are moving towards Agile...มันและกลายเป็นร้านค้าน้ำตกขนาดเล็กอีกแห่งหนึ่ง
maple_shaft

@maple_shaft: ใช่อาจไม่ใช่ตัวอย่างที่ดี ...
tdammers

5
ที่สมบูรณ์แบบ 10 ในการทดสอบจริงโจเอลจะเป็น 12 ... แค่บอก :)
MattDavey

3
@MattDavey: นั่นขึ้นอยู่กับความสามารถของคุณในการขับเคลื่อนการเปลี่ยนแปลง ฉันมีหนึ่งในประสบการณ์เหล่านั้นเมื่อฉันอยู่ในธุรกิจเป็นเวลาสองปี (ใช่เราจะย้ายไปที่ C ++) และได้รับผลที่คาดหวัง ทุกวันนี้มันจะเป็นเรื่องที่แตกต่าง ฉันสามารถคิดได้ว่ามันเป็นความปรารถนาอย่างจริงใจ แต่ไม่สามารถเปลี่ยนแปลงได้และทำให้เป็นไปได้
MSalters

12

ใช่:

คุณเขียนโปรแกรมในเวลาว่างหรือไม่?

จากประสบการณ์ทั้งหมดของฉันคำถามเดียวนี้บ่งบอกได้มากที่สุดว่าโปรแกรมเมอร์ดีแค่ไหน หากพวกเขาสนุกกับมัน หากพวกเขามีความปรารถนาที่จะทำงานนี้พวกเขาจะทำได้ดี

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

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


2
ทำไมถึงมีเพียงหนึ่งเสียง? IMO นี่คือความแตกต่างที่แท้จริงระหว่างทีมปานกลางและผู้ที่มีนวัตกรรมอย่างแท้จริง
Repo Man

1

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

http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html และ http://imranontech.com/2007/01/24/using-fizzbuzz-to-find-developers- ใคร grok เข้ารหัส /

นั่นจะไม่บอกคุณเกี่ยวกับวุฒิภาวะทางวิศวกรรมซอฟต์แวร์ของแต่ละบุคคล แต่มันจะกำจัดสิ่งที่เลวร้ายกว่าออกไป


0

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


0

คุณใช้การควบคุมแหล่งที่มาหรือไม่?

ใช่ แต่

  • มันไม่ได้บอกอะไรคุณเลย
  • คุณจะรู้ได้อย่างไรว่าฉันส่งต่อการผสาน
  • คุณจะรู้ได้อย่างไรว่าฉันดึงการเปลี่ยนแปลงก่อนผลัก
  • คุณจะรู้ได้อย่างไรว่าฉันสร้างก่อนที่จะยอมรับที่เก็บ

คุณสามารถสร้างบิลด์ในขั้นตอนเดียวได้หรือไม่?

  • ใช่หัวหน้า CI ของเราเขียนสคริปต์และฉันก็เรียกใช้พวกเขาใน PowerShell

คุณสร้างงานสร้างรายวันหรือไม่?

  • เซิร์ฟเวอร์ CI ของเราทำ

คุณมีฐานข้อมูลบั๊กหรือไม่

ใช่ แต่ฉันไม่ได้กำหนดค่าและไม่จัดการมันฉันใช้มัน

คุณแก้ไขข้อบกพร่องก่อนที่จะเขียนรหัสใหม่หรือไม่?

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

คุณมีตารางที่ทันสมัยหรือไม่?

ไม่นั่นไม่ใช่งานของฉัน

คุณมีสเป็คหรือไม่?

ฉันได้รับสเป็คแล้วก็วิเคราะห์และจัดทำเอกสารที่เกี่ยวข้อง

โปรแกรมเมอร์มีสภาพการทำงานที่เงียบหรือไม่?

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

คุณใช้เครื่องมือเงินที่ดีที่สุดที่สามารถซื้อได้หรือไม่?

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

คุณมีผู้ทดสอบหรือไม่

ใช่. จริงๆแล้วใช่และพวกเขาไม่ดีมาก แต่นั่นไม่ได้อยู่ในคำถาม

ผู้สมัครใหม่เขียนรหัสในระหว่างการสัมภาษณ์หรือไม่?

ใช่และพวกเขาล้มเหลว ใช่และพวกเขาผ่าน สิ่งนี้บอกอะไรคุณ

คุณทำการทดสอบการใช้งานในห้องโถงหรือไม่?

ไม่ แต่ถ้าเราทำสิ่งที่ดีกว่า

สรุป:

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

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


8
ฉันไม่เข้าใจประเด็นนี้ คำถามเหล่านี้เกี่ยวกับทีม / บริษัท ไม่ใช่โปรแกรมเมอร์แต่ละคน และ OP ไม่แนะนำให้ใช้คำถามเดียวกันเพื่อประเมินโปรแกรมเมอร์เขาแค่ต้องการคำถามง่าย ๆ
CodesInChaos

1
ฉันคิดว่าฉันเก่งพอ ๆ กับทีมของฉันหรือ บริษัท ที่เราทำงานด้วย ในการทดสอบความคิดเห็นของฉันเช่นนี้ทำให้เอะอะมาก แต่พวกเขาไม่ได้บอกอะไรที่เป็นประโยชน์เกี่ยวกับ บริษัท หรือนักพัฒนา
CodeART

3
How do you know whether I pull changes before pushing? ฉันไม่ทราบว่าคุณใช้ตัวควบคุมแหล่งใด แต่อย่างน้อยใน SVN ถ้าคุณพยายามส่งไปยังโฟลเดอร์ที่มีการเปลี่ยนแปลงที่คุณยังไม่มีการกระทำจะล้มเหลวจนกว่าคุณจะเรียกใช้อัปเดต
Mason Wheeler

พวกเรากำลังใช้ TFS :) ฉันต้องใช้ระบบควบคุมเวอร์ชันอื่น ๆ
CodeART

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