Kiểm tra Joel tương đương để đo một lập trình viên [đã đóng]


70

Tôi hiểu rằng để đo lường một dự án hoặc mã, chúng ta có thể sử dụng Thử nghiệm Joel , nhưng có thử nghiệm tiêu chuẩn đơn giản nào (như Thử nghiệm Joel) có thể đo lường và lọc mức độ tốt của một lập trình viên không?

Kế hoạch của tôi là có bài kiểm tra này dưới dạng bộ lọc nhanh trước khi đi kiểm tra chi tiết hơn.


2
Nếu có những bài kiểm tra như thế này đang được sử dụng, tôi nghĩ các lập trình viên nên biết về nó. Chúng có thể hoặc không thể hợp lệ như: Thuê một người có nhiều sửa đổi cơ thể nhất.
JeffO

2
Thật thú vị, khi tôi hỏi câu hỏi này, nó đã bị hạ xuống địa ngục (bây giờ lại tích cực, yay, và nhanh chóng đóng cửa). Nó thực sự rất khác so với cái này? lập trình
viên.stackexchange.com/questions/133691 / từ

8
@ ripper234, lý do cho một câu hỏi bị đóng trên SE hơi giống với những lỗi phần mềm không liên tục, không thể giải thích được - thực sự là một bí ẩn. Một chút giống như bản chất con người thực sự.
tehnyit

8
Bản thân Joel cung cấp một bài kiểm tra đơn giản nhưng nghiêm ngặt: Smart and Gets Things Done . : P
Dan J

FizzBuzz! Chắc chắn rồi!
CraigTP

Câu trả lời:


67

ma trận năng lực lập trình viên .

Như với bài kiểm tra Joel, nó chỉ là một hướng dẫn mơ hồ. Cách duy nhất để đánh giá đúng một lập trình viên là hỏi những lập trình viên giỏi đã làm việc với họ.


27
Vì vậy, vấn đề duy nhất còn lại là đánh giá xem đồng đội trong quá khứ / hiện tại của anh chàng có tốt không ... Rất tiếc.
Péter Török

21
Vâng, nó là đệ quy :)
Tom Squires

13
Điều đó không giống như bài kiểm tra Joel. Câu trả lời của bạn chỉ ra một ma trận chi tiết khổng lồ, bài kiểm tra của Joel là một chuỗi gồm 12 câu hỏi rất đơn giản để trả lời.
Bryan Oakley

2
@BryanOakley - điều đó đúng, nhưng PCM cũng là điều đầu tiên tôi nghĩ đến khi đọc câu hỏi. Kết quả cuối cùng: không có câu hỏi đơn giản nào bạn có thể trả lời để đo lường một lập trình viên!
Joris Timmermans

2
@BryanOakley điểm ma trận phức tạp hơn chuỗi được thực hiện tốt; với tôi tương tự gần hơn với thử nghiệm của Joel sẽ là một chuỗi được tạo bởi các yếu tố cột Cấp 1 trong PCM - "giải thích và sử dụng Mảng ..., sắp xếp cơ bản ... vv"
gnat

25

Tôi sẽ chuyển bài kiểm tra Joel xung quanh:

Họ đã sử dụng kiểm soát nguồn?

Họ có biết làm thế nào để tự động hóa một bước xây dựng?

...

Câu hỏi duy nhất không có vẻ đặc biệt áp dụng là câu hỏi của người kiểm tra. Những câu hỏi khác có vẻ như không phù hợp với điều này là cách chúng tôi xử lý nó như thế nào bạn đã xử lý nó trong các câu hỏi trước đây (Đây là cách chúng tôi xử lý để giữ lịch trình của chúng tôi cập nhật cách bạn đã xử lý lịch trình trong quá khứ?) .

biên tập:

Về cơ bản, bạn không nhận được những thứ trong bài kiểm tra Joel miễn phí, bạn phải thuê những người có thể thực hiện nó. Bạn muốn thiết lập khả năng của họ để thực hiện điều đó.


1
Tất cả các câu hỏi của Joel là về môi trường hơn là lập trình viên. Nếu nhóm của tôi không sử dụng kiểm soát mã nguồn, thì việc tôi không tích hợp với họ bằng cách sử dụng kiểm soát mã nguồn của riêng tôi hầu như không phải là một sự cải thiện. Bắt nhóm sử dụng kiểm soát mã nguồn là một sự cải tiến.
Edwin Buck

15

Joel Test chỉ là một kiểm tra cơ bản không chính thức để nhanh chóng đánh giá xem một nơi có điều kiện làm việc tốt cho các lập trình viên hay không. Ngay cả khi nó đạt điểm 10 hoàn hảo, nó vẫn có thể là một lỗ địa ngục sắp phá sản sáu tháng. Điểm thấp là một dấu hiệu cho thấy điều gì đó không hoàn toàn đúng và đưa ra các câu hỏi phỏng vấn xuất sắc ("Bạn hiện không sử dụng kiểm soát nguồn; có kế hoạch nào để làm như vậy trong tương lai không?"), Và các câu trả lời có thể như vậy bạn sẽ chấp nhận công việc mặc dù điểm Joel thấp.

Bài kiểm tra Joel cũng không phải là bài kiểm tra 'tiêu chuẩn'; nó chỉ là một danh sách kiểm tra Joel Spolsky đăng trên blog của mình.

Theo như "đo lường" chất lượng của một lập trình viên; Thật không may, các kỹ năng và phẩm chất thực sự quan trọng của một lập trình viên giỏi là khó hoặc không thể định lượng được, vì vậy không có sự thay thế nào cho việc đánh giá con người kỹ lưỡng. Mặc dù vậy, bạn có thể loại bỏ các ứng viên hoàn toàn không biết gì, bằng cách sử dụng một nhiệm vụ lập trình rất đơn giản - lý tưởng, một cái gì đó liên quan đến đệ quy, cấu trúc cây hoặc con trỏ (một lập trình viên không 'nhận' những thứ này dường như không được sử dụng nhiều). Đối với những người vượt qua bài kiểm tra này, bạn sẽ phải đánh giá các kỹ năng theo cách thủ công: đọc mã họ đã viết, kiểm tra các ứng dụng mà họ đã viết, giao cho họ nhiều nhiệm vụ lập trình hơn (cả thiết kế và triển khai), xem chúng hoạt động, nói chuyện với họ, xem bạn có có thể châm ngòi cho một cuộc thảo luận chuyên nghiệp. Nếu bạn đang tìm kiếm một chuyên gia / chuyên gia ngôn ngữ,


1
+1 Đánh giá các kỹ năng của một lập trình viên giỏi là một nhiệm vụ khó có thể định lượng.
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. Bằng cách này, bạn sẽ phạm sai lầm để chấp nhận công việc. Cuối cùng, mọi nhà phát triển đều học được rằng đó Plans to do so in the futurechỉ là thứ mà người phỏng vấn nói để lừa dối bạn nhưng họ không bao giờ hành động vì quản lý tồi. Đã bao nhiêu lần chúng ta nghe thấy một cái gì đó ảnh hưởng của Oh, we are moving towards Agile...nó và hóa ra đó là một cửa hàng thác nước vi mô khác?
maple_shaft

@maple_shaft: vâng, có lẽ không phải là một ví dụ hay ...
tdammers

5
Một số 10 hoàn hảo trong bài kiểm tra Joel thực sự sẽ là 12 ... chỉ cần nói :)
MattDavey

3
@MattDavey: Điều đó cực kỳ phụ thuộc vào năng lực của bạn để thúc đẩy sự thay đổi. Tôi đã có một trong những trải nghiệm đó khi tôi kinh doanh được hai năm (vâng, chúng tôi sẽ chuyển sang C ++) và nhận được kết quả như mong đợi. Ngày nay, nó sẽ là một vấn đề khác. Tôi có thể nhận ra nếu đó là một mong muốn chân thành nhưng không thể thay đổi, và sau đó biến nó thành có thể.
MSalters

12

Vâng:

Bạn có chương trình trong thời gian rảnh?

Theo tất cả kinh nghiệm của tôi, câu hỏi duy nhất này cho thấy hầu hết các lập trình viên giỏi như thế nào. Nếu họ thích nó; nếu họ có đam mê để thực hiện nhiệm vụ, thì họ sẽ giỏi về nó.

Và thẳng thắn, rất nhiều 9 đến 5 công việc không liên quan đến nhiều tiền mã hóa . Họ không liên quan nhiều đến việc lặp đi lặp lại trong suốt vòng đời thiết kế chương trình mới và xem cách thiết kế đó hoạt động / thất bại. Không có sự lặp lại đó, đơn giản là không có thực hành cần thiết cho các lập trình viên để có được các kỹ năng thiết kế chương trình cốt lõi.

Và họ không liên quan đến việc học. Các lập trình viên thậm chí chỉ đơn giản là hack mọi thứ ở nhà sẽ khám phá các giải pháp mới và thú vị mà không bị ràng buộc bởi các doanh nghiệp lớn.


2
Tại sao điều này chỉ có một phiếu bầu? IMO đây là sự khác biệt thực sự giữa các đội tầm thường và những đội thực sự sáng tạo.
Repo Man

1

Nó không chi tiết như Joel Test, nhưng yêu cầu họ viết chương trình buzz fizz sẽ là một dấu hiệu tốt để xem liệu họ có thể viết mã được không.

http: //www.codinghorror.com/blog/2007/02/why-cant-programmers-program.htmlhttp://imranontech.com/2007/01/24/USE-fizzbuzz-to-find-developers- ai-Grok-mã hóa /

Điều đó sẽ không cho bạn biết về sự trưởng thành về kỹ thuật phần mềm của cá nhân, nhưng nó sẽ sàng lọc điều tồi tệ hơn.


0

Eh, tôi có cảm giác với từ ngữ khi bắt đầu. Đó không phải là "bạn đã sử dụng X" hay "Bạn có biết về Y" không, đó là vấn đề thực sự sử dụng và làm. Bất kỳ lập trình viên nào chưa chạm hoặc nghe thấy các mục trong bài kiểm tra Joel chỉ đơn giản là bị ngắt kết nối và cần phải có manh mối. Nhưng bạn đã đúng, các cửa hàng mã thất bại trong bài kiểm tra Joel vì mọi người trong các cửa hàng đều thất bại. Cách phòng thủ duy nhất tôi có thể thấy chạy dọc theo dòng "Tôi đã thử, nhưng không có thẩm quyền. Và bây giờ tôi đang áp dụng ở đây".


0

Bạn có sử dụng kiểm soát nguồn?

Đúng nhưng

  • Nó không thực sự cho bạn biết bất cứ điều gì.
  • Làm thế nào để bạn biết liệu tôi chuyển tiếp hợp nhất?
  • Làm thế nào để bạn biết liệu tôi kéo thay đổi trước khi đẩy?
  • Làm thế nào để bạn biết liệu tôi xây dựng trước khi cam kết vào kho lưu trữ.

Bạn có thể thực hiện xây dựng trong một bước?

  • Vâng, lãnh đạo CI của chúng tôi viết kịch bản và tôi chỉ chạy chúng trong powershell.

Bạn có thực hiện xây dựng hàng ngày?

  • Máy chủ CI của chúng tôi không

Bạn có một cơ sở dữ liệu lỗi?

Có, nhưng tôi chưa cấu hình nó và tôi không quản lý nó, tôi chỉ đơn giản sử dụng nó.

Bạn có sửa lỗi trước khi viết mã mới không?

  • Trong một thế giới hoàn hảo, nơi tôi có tài nguyên không giới hạn - vâng tôi làm. Trong thế giới thực, đôi khi tôi buộc phải đăng nhập chúng và làm việc trên một cái gì đó khác.

Bạn có một lịch trình cập nhật?

Không, đó không phải là công việc của tôi.

Bạn có một thông số kỹ thuật?

Tôi được cung cấp một thông số kỹ thuật, sau đó tôi phân tích nó và sản xuất các tài liệu liên quan.

Các lập trình viên có điều kiện làm việc yên tĩnh?

  • Bạn sẽ không thuê tôi nếu tôi nghe nhạc, nói chuyện với đồng nghiệp của tôi và làm một trò đùa? Phát triển phần mềm được coi là sáng tạo - điều kiện làm việc sẽ thay đổi từ tổ chức này sang tổ chức khác.

Bạn có sử dụng các công cụ tốt nhất tiền có thể mua?

Bạn không biết công cụ tốt nhất là gì và nếu bạn nghĩ rằng bạn làm, sẽ luôn có ai đó tranh luận về quan điểm của bạn.

Bạn có người kiểm tra?

Đúng. Trên thực tế, có và họ không tốt lắm, nhưng đó không phải là câu hỏi.

Các ứng viên mới có viết mã trong cuộc phỏng vấn của họ?

Có và họ thất bại. Vâng và họ vượt qua. Thứ này nói lên điều gì?

Bạn có làm kiểm tra khả năng sử dụng hành lang?

Không, nhưng nếu chúng ta làm điều gì đó tốt hơn?

Để kết luận:

  • Bài kiểm tra này có thể hoạt động tốt trong một thế giới học thuật hoàn hảo, nơi mọi thứ chỉ hoạt động, mọi người hòa đồng, chia sẻ kiến ​​thức và có nguồn lực không giới hạn.
  • Những gì bạn muốn biết là tôi là loại kỹ sư. Những câu trả lời đơn giản sẽ không cho bạn biết bất cứ điều gì hữu ích và tôi nghĩ rằng ai đó phải rất ngây thơ khi yêu họ.
  • Câu trả lời ở trên, cả tiêu cực và tích cực đều không cho bạn biết bất cứ điều gì về khả năng tạo mã sạch của tôi.

Đây không phải là một câu nói hay, nhưng tôi sẽ rất thích nghe loại nhà phát triển mà bạn nghĩ tôi dựa trên các câu trả lời mà tôi đã cung cấp. Điều này hy vọng sẽ chứng minh quan điểm của tôi.


8
Tôi không thực sự hiểu ý của việc này. Những câu hỏi này là về nhóm / công ty, không phải lập trình viên cá nhân. Và OP đã không đề xuất sử dụng các câu hỏi tương tự để khẳng định lập trình viên, anh ta chỉ muốn một bộ câu hỏi đơn giản.
CodeInChaos

1
Tôi nghĩ rằng tôi tốt như nhóm của tôi, hoặc công ty mà chúng tôi làm việc. Theo ý kiến ​​của tôi, những bài kiểm tra như thế này gây ồn ào, nhưng chúng không thực sự cho bạn biết bất cứ điều gì hữu ích về công ty hoặc nhà phát triển.
CodeART

3
How do you know whether I pull changes before pushing? Chà, tôi không biết bạn đang sử dụng kiểm soát nguồn nào, nhưng ít nhất là trong SVN, nếu bạn cố gắng cam kết với một thư mục có thay đổi mà bạn chưa có, cam kết sẽ thất bại cho đến khi bạn chạy Cập nhật.
Mason Wheeler

Chúng tôi đang sử dụng TFS :) Tôi thực sự cần phải tiếp cận các hệ thống kiểm soát phiên bản khác.
CodeART

Những người thực sự sử dụng TFS. Tôi đã học được điều gì đó.
Fabinout
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.