Cách tốt nhất để đánh giá lập trình viên mới là gì? [đóng cửa]


52

Cách tốt nhất để đánh giá các ứng viên tốt nhất để có một công việc mới (chỉ nói về kỹ năng lập trình) là gì? Trong công ty của tôi, chúng tôi đã có nhiều trải nghiệm tồi tệ với những người có điểm số tốt nhưng không có kỹ năng lập trình thực sự. Kỹ năng của họ chỉ đơn thuần giống như khỉ mã, không có khả năng phân tích vấn đề và tìm giải pháp.

Nhiều điều mà tôi phải lưu ý:

  • Hệ thống giáo dục ở nước tôi tệ - thực sự tệ. Những người giỏi trong loại công việc này là tốt bởi vì họ có tài năng cho nó hoặc thực sự cố gắng tự học.

  • Bằng đại học / sau đại học / sau đại học không có nghĩa là bạn biết chính xác cách thực hiện.

  • Chứng chỉ cũng không có nghĩa gì ở đây vì những người phụ trách khóa học cấp chứng chỉ cũng không có kỹ năng (hoặc đang làm những công việc lương thấp).

Chúng tôi thực sự cần có được những ứng cử viên tốt, linh hoạt và không có suy nghĩ máy móc (bởi vì loại người này theo kinh nghiệm có hiệu suất thấp).

Chúng tôi ở trong một tổ chức chính phủ và những người là ứng cử viên không nhất thiết phải đến từ bên ngoài, nhưng chúng tôi có khả năng chấp nhận hoặc không chấp nhận bất kỳ ứng cử viên nào cho đến khi chúng tôi tìm thấy đúng.

Tôi hy vọng tôi không có vẻ quá tích cực trong câu hỏi của tôi; và BTW tôi là một lập trình viên.

chỉnh sửa: Tôi đã tìm ra rằng đã hỏi một cái gì đó thực sự phức tạp ở đây. Tôi sẽ bỏ chuyển "câu trả lời đúng" chỉ để cho cuộc thảo luận trôi chảy, không có bất kỳ sự thiên vị nào.


Tôi đánh giá cao sự sáng tạo, như bạn nói về mã khỉ. Tôi không thích cách tiếp cận vũ phu, nếu các thế hệ lập trình viên trong quá khứ đã sử dụng một cách tiếp cận nhất định, điều đó có thể có nghĩa là nó tuyệt vời, hoặc chỉ là nó đã được duy trì trong một thời gian dài. Ngoài ra giáo dục không phải tập trung vào các kỹ năng thương mại, và tôi muốn nói rằng nó cực kỳ quan trọng nhưng đặt điểm thực tế đạt được vượt quá mức có thẩm quyền cơ bản là không quá quan trọng. Tôi muốn thấy nhiều hơn về hệ thống kiểu Khan Academy gồm nhiều mô-đun pass / fail nhỏ với các phụ thuộc vượt qua mô-đun khác và thời gian hạ nhiệt trước khi được phép thử lại mô-đun.
alan2here

Câu trả lời:


52

Về lựa chọn ứng cử viên, tôi thường đi với một kế hoạch ba lần:

  • Kiểm tra thường xuyên với các câu hỏi mã hóa giống như FizzBuzz và nhiều câu hỏi kiến ​​thức mà họ phải đưa ra các ví dụ được mã hóa. Tùy thuộc vào vị trí, nó có thể là các nguyên tắc OO, nguyên tắc thiết kế SQL, v.v. Tôi tăng các khó khăn của các câu hỏi trong bài kiểm tra để xem chúng có thể đi được bao xa. Ý tưởng không thực sự là có tất cả các câu hỏi được trả lời (nếu có, càng tốt), mà còn để xem liệu họ có thể thừa nhận khi họ không biết điều gì không. Lòng tin là điều cần thiết và tôi không muốn có ai đó nói dối mình trong đội của mình.

  • Quay trở lại bài kiểm tra với thí sinh và thảo luận xung quanh các câu trả lời. Có thể mở rộng các câu hỏi để đạt đến giới hạn của ứng viên. Điều này có thể được mở rộng, và càng mở rộng thì càng tốt.

  • Phần cuối cùng nhưng không kém phần quan trọng, The Code Review . Tôi yêu cầu ứng viên mang một đoạn mã (tôi thường bỏ qua bài kiểm tra / thảo luận trước đó và bài đánh giá này trước một vài ngày, để họ viết và đánh bóng một đoạn mã). Sau đó, chúng tôi thực hiện đánh giá mã thường xuyên về nó với hai người: một người sẽ trực tiếp làm việc với ứng viên và người đã xem xét bài kiểm tra với ứng viên trước đó. Về đánh giá mã, bạn có thể đọc bài viết này từ JohnFX .

Khi kết thúc tất cả những điều này, bạn sẽ có thể quyết định xem bạn có muốn ứng viên này tham gia nhóm của bạn hay không.


4
Tôi đồng ý về câu hỏi mã hóa và câu hỏi kiến ​​thức, tôi không bao giờ đồng ý yêu cầu các ứng viên mang theo một đoạn mã. Theo tôi, không dễ để tìm thấy một đoạn mã đáng kể: hiển thị thứ gì đó không tầm thường, không đòi hỏi quá nhiều kiến ​​thức về một hệ thống lớn hơn và bạn được phép hiển thị cho người khác.
Andrea Zilio

Tôi sẽ nói xem lại mã. FizzBuzz quá lạm dụng. Và bạn có thể khiến mọi người sợ hãi. Tôi đã từng là một lập trình viên trong các dịch vụ tài chính và chăm sóc sức khỏe, và những thứ như fizzbuzz là vô dụng. Bạn có thể hiểu được sự tương tác phức tạp hơn nhiều. Yêu cầu họ lấy mẫu mã, ngay cả khi đó là FPS trong pygame. Nếu họ không có mẫu mã, họ không phải là lập trình viên.
Christopher Mahan

1
@ChristopherMahan Giá trị của FizzBuzz (và mã hóa tầm thường tương tự) là một người gác cổng đơn giản. Nếu họ không thể triển khai FizzBuzz, theo ngôn ngữ họ chọn, họ có thể viết BẤT K code mã nào không?
Vatine

@Vatine FizzBuzz kiểm tra khả năng suy luận logic, không phải kỹ năng lập trình. Cấp, một người nên có thể làm điều đó. Một câu hỏi lập trình đơn giản sẽ là: hiển thị trên màn hình một danh sách các mục được sắp xếp theo một cách thú vị. Họ sẽ phải viết mã, nhưng họ sẽ có thể rút ra kinh nghiệm để đưa ra một cái gì đó để viết, và không phải cố gắng tìm ra lời trêu ghẹo não. Tôi đã từng thất bại trong một cuộc phỏng vấn vì họ muốn tôi sử dụng regex và tôi đã trả lời rằng vấn đề đó regex là một sự quá mức cần thiết và python có các khả năng tích hợp sẵn để làm điều này. Tôi không muốn làm việc ở đó tôi đoán.
Christopher Mahan

Đánh giá mã là một ý tưởng tồi tệ và phản bác của JohnFX là không đủ. Tôi biết nhiều nhà phát triển tuyệt vời nhưng không làm việc trên bất cứ điều gì bên ngoài các cơ sở mã độc quyền của chủ nhân. Đây là những người có gia đình và những việc cần làm ngoài công việc. Tuy nhiên, khi họ làm việc, họ rất năng suất.
MrFox

20

Bắt đầu với việc cho họ FizzBuzz để giải quyết. Điều đó sẽ loại bỏ những điều tồi tệ nhất trong số họ.

Sau đó, một cái gì đó khó hơn một chút - ví dụ, làm thế nào để đảo ngược một chuỗi mà không được xây dựng trong các chức năng thư viện. Yêu cầu họ nói trong khi giải quyết để xem quá trình suy nghĩ của họ là gì.

Bạn có thể tiếp tục đưa ra những vấn đề khó khăn hơn nếu họ thấy những điều này rất dễ dàng, cho đến khi bạn tin chắc họ có thể đi bộ và không chỉ nói chuyện.


1
Tôi đoán nó có thể phụ thuộc vào trình độ lập trình viên mà bạn đang phỏng vấn. Mặc dù có thể ổn khi truy cập vào khả năng của một người thuê cấp cơ sở, tôi đã xem xét những câu hỏi như vậy trong một cuộc phỏng vấn là một chỉ số rõ ràng rằng đây không phải là một công ty tôi muốn làm việc.
jfrankcarr

3
Tôi không đồng ý với phần nói chuyện. Bạn có thường nói chuyện với bản thân hoặc người khác trong khi giải quyết vấn đề không? Làm thế nào về việc cho một người một không gian và để anh ta suy nghĩ một chút? Vì vậy, trừ khi nó là hoàn toàn tầm thường, tôi nghĩ rằng nó không phải là một thực hành tốt.
Andrey Rubshtein

1
@Andrey - Phần nói chuyện là để hiểu rõ hơn về quá trình suy nghĩ của họ. Bạn muốn xem cách họ nghĩ về một vấn đề và cách tiếp cận giải quyết nó. Bạn có một lựa chọn tốt hơn?
Oded

5
@Oded, vâng, thực tế tôi làm. Hãy để họ suy nghĩ một lúc, một mình , như họ sẽ làm trong cuộc sống thực, đặc biệt nếu đó là một vấn đề khó khăn, và sau đó hỏi họ nhiều như bạn muốn. Giống như trong bất kỳ kỳ thi vấn đáp.
Andrey Rubshtein

4
Ngay cả khi là một tiếp viên tại một trường học có một số chuyên gia CS được công nhận gần đây, tôi thấy rằng fizzbuzz tầm thường là một bộ lọc tốt. Hầu hết những người tôi tốt nghiệp có lẽ không thể giải quyết nó trong một khoảng thời gian hợp lý. Những người đấu tranh để tìm việc làm hoặc không. Tôi nghĩ rằng theo dõi joelonsoftware.com/articles/GuerrillaInterviewing3.html là tốt.
Giàn khoan

14

Chỉ cần tìm kiếm niềm đam mê trong công việc.

Để trích dẫn Joel, hãy tìm những người " Thông minh và hoàn thành công việc " .

Phần còn lại không quan trọng


7
Vấn đề là bạn không thể biết nếu họ thông minh.

4
@Chad: niềm đam mê học tập không "hoàn thành công việc". Để tìm xem ai đó có thể hoàn thành công việc hay không, bạn phải yêu cầu họ làm gì đó.
kevin cline

2
@kevin cline, chỉnh bài của tôi. Họ cần có niềm đam mê với công việc, thường là thể hiện bằng cách muốn học hỏi. Vâng, phải mất một số câu hỏi, cuộc trò chuyện sẽ trôi chảy, nó không nên chỉ là một loạt các câu hỏi. Nhưng để tìm hiểu xem họ có hoàn thành công việc hay không, hãy hỏi ví dụ về nơi họ gặp trở ngại và cách họ vượt qua nó. Mọi người đều gặp trở ngại trong công việc, từ công nghệ, con người, quy trình, nhưng một người thông minh, hoàn thành công việc, sẽ tìm cách khắc phục và có thể giải thích chi tiết, đủ để bán cho bạn khả năng của họ.
CaffGeek

3
@mouviciel không theo kinh nghiệm của tôi. Một số lập trình viên thông minh nhất mà tôi biết là rất hướng ngoại.

4
Nếu bạn không thể ngồi trong phòng với một ứng cử viên phát triển và tìm hiểu xem họ có thông minh hay không, hãy tìm người có thể.
JeffO

13

Dựa trên 25 năm lập trình của tôi (trong đó, chỉ thừa nhận 5 hoặc 6 trường hợp thuê các lập trình viên khác):

Các chỉ số tích cực:

  • Đam mê công nghệ

  • Các chương trình như một sở thích

  • Sẽ nói chuyện với bạn về một chủ đề kỹ thuật nếu được khuyến khích

  • Các dự án cá nhân quan trọng (và thường là rất nhiều) trong những năm qua

  • Tự học các công nghệ mới

  • Ý kiến ​​về công nghệ nào tốt hơn cho các mục đích sử dụng khác nhau

  • Rất khó chịu về ý tưởng làm việc với một công nghệ mà anh không tin là có quyền

  • Rõ ràng thông minh, có thể có những cuộc trò chuyện tuyệt vời về nhiều chủ đề

  • Bắt đầu lập trình từ lâu trước khi học đại học / đi làm

  • Có một số tảng băng trôi ẩn giấu của người Hồi giáo, các dự án cá nhân lớn dưới radar CV

  • Kiến thức về một loạt lớn các công nghệ không liên quan (có thể không có trong CV)

Các chỉ tiêu tiêu cực:

  • Lập trình là một công việc hàng ngày

  • Đừng thực sự muốn nói chuyện với cửa hàng, ngay cả khi được khuyến khích

  • Học các công nghệ mới trong các khóa học do công ty tài trợ

  • Rất vui được làm việc với bất kỳ công nghệ nào bạn đã chọn, tất cả các công nghệ đều tốt

  • Có vẻ không thông minh lắm

  • Bắt đầu lập trình tại trường đại học

  • Tất cả kinh nghiệm lập trình là trên CV

  • Tập trung chủ yếu vào một hoặc hai ngăn xếp công nghệ (ví dụ: mọi thứ phải làm với việc phát triển ứng dụng java), không có kinh nghiệm bên ngoài nó

Ngoài ra, tôi đề nghị:

  • Các FizzBuzz kiểm tra (hoặc một cái gì đó giống như nó để kiểm tra khả năng cơ bản để viết một thuật toán.
  • Phiên bản khó hơn của bài kiểm tra FizzBuzz (để đưa họ đến điểm thất bại hoặc gần thất bại.)
  • Thảo luận về mã của họ và xem liệu họ có sẵn sàng tự phê bình và tìm kiếm các cải tiến (điều mà có lẽ họ không có thời gian thực hiện trong một bài kiểm tra ngắn), chẳng hạn như:
    • tên biến tốt (Tôi đã có các lập trình viên có kinh nghiệm rất giỏi sử dụng các biến trong sản xuất như "cờ" (WTF ??)
    • mô đun hóa.
    • Dự đoán các vấn đề và thực hiện "mã hóa phòng thủ"
  • Một sự sẵn sàng để xem "lỗ hổng" là cơ hội để cải thiện. Tôi nghĩ rằng các lập trình viên giỏi nhất luôn luôn tìm kiếm những sai sót trong mã trước đó của họ. Họ không quá bình thường đến mức nghĩ rằng việc tìm ra một lỗ hổng của họ là một vấn đề cá nhân. Họ coi đó là một cơ hội để làm tốt hơn. (Những người không thể nhìn vào lỗ hổng một cách vô cảm hoặc bị choáng ngợp khi nhìn thấy một lỗ hổng (và trở nên siêu tự tin hoặc, để tránh điều đó, họ bỏ qua sai sót.
  • Họ có thể gỡ lỗi không?
  • Họ có thể kiểm tra đơn vị không? (Tôi đã nói chuyện với quá nhiều lập trình viên nói rằng "QC làm điều đó". Tôi không nói về Kiểm thử, tôi đang nói về kiểm thử: bạn viết một hàm, nó có hoạt động không? vấn đề có thể xảy ra (đầu vào NULL, v.v.)? Nếu bạn không thể làm điều đó, làm thế nào để bạn biết khi nào bạn hoàn thành?
  • Họ có kỹ năng giao tiếp tốt? (ở mức tối thiểu: sự hiểu biết tốt và hiểu biết về bản thân khi họ làm và không hiểu và sẵn sàng nói "Tôi không hiểu, xin vui lòng giải thích lại".

Phần lớn tóm tắt ở trên là từ Làm thế nào để phát hiện ra một lập trình viên giỏi , đó là một bài viết tuyệt vời, tập trung hơn một chút vào các chỉ số phạm vi dài hơn. Nó chắc chắn xác nhận trực giác và kinh nghiệm của tôi. Đó cũng là rất nhiều thứ (như "đam mê") thường không được đề cập trong danh sách kiểm tra "những gì một lập trình viên giỏi".


10

Đánh giá trí thông minh lập trình là một hình thức của Turing Test. Do đó, hiện tại không có quy trình đánh giá mẫu kín nào được đảm bảo để hoạt động. Phải mất các lập trình viên thông minh để nhận ra các lập trình viên thông minh khác, nhưng chỉ với một số xác suất hợp lý.

Cơ hội của bạn sẽ tốt hơn nếu bạn có những người phỏng vấn trong nhóm của bạn có thể ngửi thấy công việc tuyết và không thích làm việc với những người ngu ngốc (ngay cả những người đẹp trai, có sơ yếu lý lịch ấn tượng và có thể tiết lộ tất cả các giải pháp đóng hộp thông thường từ bộ nhớ) .

. yêu cầu họ đăng nó nếu đó là một câu trả lời hay. Tương tự như một bản tóm tắt cho OCR có nguồn gốc đám đông.)


7

Cung cấp cho họ một vấn đề, tốt nhất là một vấn đề liên quan đến miền vấn đề mà họ sẽ giải quyết và yêu cầu họ thảo luận về cách họ sẽ tiếp cận nó. Bạn có thể yêu cầu họ thảo luận, mã giả hoặc viết các bit của mã thực tế tùy thuộc vào mức độ tự tin của bạn ở cấp độ kỹ năng của họ

Ví dụ: nếu tổ chức của bạn thực hiện hội nghị, hãy yêu cầu họ phác thảo cách họ sẽ mã hóa hệ thống đăng ký trực tuyến an toàn. Họ sẽ có thể bao gồm một số điều cơ bản và đặt câu hỏi tốt về chính xác những gì cần phải được thực hiện. Khi bạn tương tác, bạn sẽ có thể xác định xem họ có phù hợp với tổ chức của bạn không và vai trò bạn cần họ thực hiện.

Tôi không phải là một fan hâm mộ lớn của các bài kiểm tra đố lập trình và trêu ghẹo não. Mặc dù họ có thể vui vẻ đối với một số người, họ cũng có thể gây phiền nhiễu và / hoặc gây căng thẳng cho những người khác, bao gồm cả những người có thể phù hợp nhất với nhóm của bạn. Thêm vào đó, thông tin về nhiều bài kiểm tra như vậy có sẵn trực tuyến và sẽ khuyến khích nhồi nhét cho các bài kiểm tra và các chiến thuật khác sẽ làm giảm khả năng sống sót của chúng để đánh giá khả năng lập trình viên.


Tôi đồng ý với bạn về những nhược điểm của bài kiểm tra đố / não để lựa chọn ứng viên. vấn đề là việc xem xét / thảo luận mã với mọi ứng cử viên sẽ tốn quá nhiều thời gian. Và có lẽ kết quả sẽ là subjetive hơn. không chính xác những gì tôi đang tìm kiếm, tôi thích cái gì đó cần ít sự giám sát cá nhân hơn. và sau này khi tôi có nhiều ứng viên phù hợp hơn thì hãy nói chuyện / thảo luận / phỏng vấn họ
Rafael

3
Quá tốn thời gian? Ai đó sẽ phải nói chuyện với các ứng cử viên. Không có bài kiểm tra viết sẽ làm việc. Nội dung của bài kiểm tra sẽ nhanh chóng trở thành kiến ​​thức công khai, và các thí sinh sẽ đến với các câu trả lời ghi nhớ.
kevin cline

10
@kevincline: Chính xác, bạn phải nói chuyện với họ. Tôi đã phỏng vấn tại Xerox (hồi những năm 70) và tôi được hỏi về cách tôi sẽ xử lý các va chạm trong thuật toán băm. Tôi không có nhiều chương trình học chính thức về lập trình, nhưng tôi đã làm việc đó khoảng 5 năm vào thời điểm đó, vì vậy tôi nói rằng tôi không biết băm là gì. Người phỏng vấn của tôi đã giải thích cho tôi, sau đó hỏi lại câu hỏi. Chúng tôi đã tiếp tục trong hơn một giờ khi tôi phát hiện và giải quyết một số loại sự cố va chạm. Anh ấy nói với tôi rằng nếu tôi có thể làm điều đó trong một giờ thì tôi có thể xử lý bất cứ điều gì họ ném vào tôi. Tôi đã nhận được công việc. Vì anh nói chuyện với tôi.
Peter Rowell

@PeterRowell Đó là cách mọi thứ cần phải được. +1
Chiron

3

Đọc câu hỏi này và một số câu trả lời mà nó nhận được đã thôi thúc tôi viết một bài báo mà tôi cảm thấy có thể quan tâm:

Thực hành tuyển dụng kỳ quặc khi tuyển dụng nhà phát triển phần mềm

Ok, vì vậy tiêu đề bài viết là rác rưởi, nhưng bài viết đi vào trọng tâm của vấn đề. Đó không phải là vấn đề của ứng viên mà bạn đã chọn để phỏng vấn họ cho dù họ có thể không phù hợp với vai trò của bạn như thế nào. Nếu bạn không quản lý để xác định một quy trình tuyển dụng có nhiều yếu tố để cho phép bạn tìm ra những viên đá quý, thì bạn sẽ phải sống với hậu quả, và vâng, điều này có nghĩa là có được một vài ứng cử viên có thể không bao giờ đáp ứng với mong đợi của bạn. Lọc ứng viên của bạn dựa trên thư và sơ yếu lý lịch của họ đòi hỏi bạn trước tiên, yêu cầu ứng viên của bạn viết một lá thư về bản thân họ và những gì họ muốn từ vai trò, sau đó xem cách viết sơ yếu lý lịch. Nếu bạn chỉ có một hoặc hai ứng viên tiềm năng để phỏng vấn, thì có lẽ bạn đã thực hiện sàng lọc trước đúng cách.

Cuối cùng, khi bạn tìm thấy 1 hoặc 2 ứng cử viên mà bạn cho là thực sự xứng đáng với thời gian của mình, đừng chỉ hỏi một số câu hỏi của người kiểm tra inane, mà thay vào đó hãy đầu tư thời gian để tìm hiểu những người này và tham gia vào các cuộc thảo luận mở về phần mềm kỹ thuật nói chung. Bạn sẽ học được nhiều hơn từ cách tiếp cận thông thường về ứng viên hơn bao giờ hết trong tình huống phỏng vấn truyền thống (và có phần bất lợi). Ngoài ra, không chỉ đơn giản là giải quyết cho một cuộc phỏng vấn, mà thay vào đó hãy đối xử với các ứng cử viên chính của bạn cho một số cuộc họp nơi sử dụng thảo luận mở và nơi ứng viên có thể gặp gỡ các đồng nghiệp tương lai của họ. Thời gian không bao giờ lãng phí, vì các ứng cử viên không phù hợp sẽ không phát triển mạnh trong một cuộc thảo luận kỹ thuật cao, và sẽ cho thấy những sai sót của họ rất nhanh khi họ mất cảnh giác.


Điểm tốt. Tuy nhiên, tôi sẽ cẩn thận về quá nhiều cuộc phỏng vấn. Cả thời gian của ứng viên và thời gian của bạn đều có giá trị (đặc biệt nếu ứng viên hiện đang làm việc ở nơi khác). Theo kinh nghiệm của tôi, ngày càng nhiều cuộc phỏng vấn có lợi nhuận giảm dần, vì vậy tôi giới hạn ở một hoặc hai cuộc phỏng vấn. Một cuộc phỏng vấn qua điện thoại (bổ sung) cũng có thể là một sự thỏa hiệp.
sleske

1
@sleske, tôi đồng ý với hiệu trưởng, đặc biệt nếu cùng một người tham dự tất cả các cuộc phỏng vấn. Do đó, tốt hơn hết là chia sẻ gánh nặng để tìm ra sự phù hợp nhất cho cả công ty và nhóm và cho bạn cơ hội học hỏi từ những quan sát của người khác. Các cuộc phỏng vấn xấu sẽ không đi xa hơn, nhưng các bên liên quan càng quan tâm đến ứng viên thì bạn càng cần nhiều cuộc phỏng vấn, do đó, không có gì lạ khi có 3 hoặc thậm chí 4 cuộc phỏng vấn trong các nhóm rất rộng. Quá nhiều hơn nữa mặc dù sẽ cho một ấn tượng là vô tổ chức khủng khiếp. Nó cũng trả tiền để nói với ứng viên về số lượng các cuộc phỏng vấn lên phía trước.
S.Robins

@ s-robins ý kiến ​​thú vị, chỉ muốn đưa ra một số vấn đề về một số khía cạnh của câu hỏi của tôi. Do một lý do ngoài tầm kiểm soát của chúng tôi, chúng tôi không thể chọn ứng viên của mình dựa trên quy trình Tuyển dụng thông thường, thay vào đó, các ứng viên chỉ đến và chúng tôi cần nói nếu anh ấy / cô ấy có kỹ năng / kiến ​​thức chính xác để đảm nhận công việc. Có thể trong một quy trình tuyển dụng bình thường, những điều này không xảy ra quá thường xuyên. nhưng ở vị trí của chúng tôi, chúng tôi cần phải đối phó với tình huống này.
Rafael

@Rafael, Nếu tôi hiểu ý kiến ​​của bạn một cách chính xác, bạn đang nói rằng bạn nhận được các ứng cử viên từ "nơi khác" để đánh giá và rằng khó khăn của bạn là đánh giá khách quan về một ứng cử viên mà không biết trước về ứng cử viên đó. Điều này nghe có vẻ giống như một vấn đề mang tính hệ thống trong tổ chức nơi bạn làm việc. Tôi sẽ đề nghị gặp gỡ những người gửi ứng viên theo cách của bạn và làm việc với họ để đưa ra một hệ thống lọc ra những ứng viên rõ ràng không phù hợp trước khi bạn phỏng vấn họ. Có lẽ thậm chí yêu cầu một quy trình ứng dụng chính thức hơn được thực hiện.
S.Robins

@ s-robins bạn hiểu rõ ...
Rafael

1

Bạn chưa nói ngôn ngữ nào, nhưng khá dễ để kiểm tra kiến ​​thức của ai đó. Nó cũng phụ thuộc vào mức độ bạn đang tìm kiếm, nhưng có một nhóm câu hỏi khá lớn liên quan đến các câu hỏi phỏng vấn.

Tuy nhiên, bạn quyết định tổ chức cuộc phỏng vấn của mình, đừng hỏi những câu hỏi phỏng vấn "câu đố tư duy bên" đó .


2
Tôi không chỉ định ngôn ngữ mà chúng tôi đang sử dụng để phát triển, vì chúng tôi tin rằng một lập trình viên giỏi (với khóa học về năng lực hô hấp của anh ấy / cô ấy) có thể học lập trình bằng bất kỳ ngôn ngữ nào độc lập với ngôn ngữ đó.
Rafael

2
@Rafael norvig.com/21-days.html . Như tôi đã nói, nó phụ thuộc vào việc bạn đang tìm kiếm một lập trình viên cơ sở, hay một người cao cấp.
BЈовић

Bởi vì tôi đang nói về hầu hết các ứng cử viên mới tốt nghiệp. Tôi đang đề cập đến các lập trình viên cơ sở, nhưng câu hỏi của tôi đi trong bối cảnh rộng hơn rằng quy trình tuyển dụng cá nhân cụ thể của tôi
Rafael

@Rafael Trong trường hợp đó bạn đang mong đợi quá nhiều từ một thiếu niên. Đọc bài viết tôi đã đăng trong phần bình luận ở trên, trong đó nó cho biết mất bao lâu để thành thạo một ngôn ngữ lập trình.
BЈовић

Tôi không nói về việc thành thạo một ngôn ngữ lập trình cụ thể, tôi đang nói về việc có được người giỏi nhất với bộ kỹ năng lập trình chung tốt nhất, (đó là lý do tại sao tôi không chỉ định ngôn ngữ), tôi không thể hy vọng rằng mọi người đó là khi ứng viên thành thạo ngôn ngữ mà chúng tôi đang lập trình và đó là lý do tại sao chúng tôi có thể mang đến một khóa học về năng lực nếu mọi người không biết ngôn ngữ này.
Rafael

1

Tôi đề nghị bạn nên đi với một câu hỏi FizzBuzz và thuê người đầu tiên vượt qua. Các bài kiểm tra tiếp theo có xu hướng thiếu sót vì không phải mọi lập trình viên giỏi sẽ tiếp cận một vấn đề như bạn, hoặc xử lý một cuộc phỏng vấn mà không nói lắp, hoặc biết các ngôn ngữ bạn muốn hoặc quan tâm hoặc trao đổi như trao đổi số nguyên mà không cần biến số thứ ba (dù sao ai cũng cần điều đó? có nghĩa là, vì RAM vượt quá 128 byte?).

Hãy suy nghĩ về nó. Nếu câu hỏi FizzBuzz loại bỏ 199 trên 200, thì nó chỉ loại bỏ hàng trăm cuộc phỏng vấn. Bạn có thực sự sẽ phỏng vấn hàng trăm khách hàng tiềm năng?

Có vẻ như lợi nhuận giảm dần sau FizzBuzz. Đó là giả định rằng 199/200 thậm chí gần xấp xỉ. Và tôi cho rằng thời gian của BẠN cũng có giá trị ...


2
Đáng sợ làm thế nào FizzBuzz là bài kiểm tra tiêu chuẩn để đánh giá năng lực của một lập trình viên. Tuy nhiên, đây là một thử nghiệm thực sự và đã thử - Tôi không thể cho bạn biết có bao nhiêu lập trình viên có bằng CS không thể làm điều đó (theo 'ngôn ngữ của họ')
Nodey The Node Guy

0

Tôi không chắc đây là bình luận hay trả lời nhưng về cơ bản những gì Matthieu nói. Bạn muốn những câu hỏi dễ ngu ngốc mất một hoặc hai phút (nhưng không quá 5) phút để làm và chúng nên về các lĩnh vực khác nhau.

Những ví dụ về câu hỏi dễ ngu ngốc như vậy là một câu hỏi về đệ quy như bạn có một danh sách và bạn phải in nó theo thứ tự ngược mà không sử dụng một vòng lặp. Một câu hỏi regex đơn giản nếu regex thường được thực hiện trong quá trình phát triển của bạn. Một câu hỏi về bit và byte nếu sử dụng C ++ (viết một mẫu chấp nhận char dài và in ra biểu diễn nhị phân. Không yêu cầu chuyên môn hóa, chỉ cần sử dụng sizeof () để tìm ra độ dài bit)

Bạn sẽ mất khoảng <= 3 phút mỗi câu hỏi


0

Hỏi họ về thử thách lập trình thú vị nhất mà họ từng cố gắng giải quyết nhưng không thể, họ đã sử dụng phương pháp nào trong khi giải quyết nó, tại sao họ không thể giải quyết và cách tiếp cận nào khác mà họ nghĩ có thể giải quyết.

Điều này là đủ để tôi đánh giá khả năng lập trình viên như một lập trình viên.


0
  1. Họ có thể bảo vệ những gì họ tuyên bố họ biết? Họ đưa nó vào sơ yếu lý lịch / CV như một kỹ năng hoặc một cái gì đó họ đã làm trong một dự án khác. Xem làm thế nào sâu họ có thể đi vào chủ đề.
  2. Họ có thể học được điều gì mới không? Nói về khía cạnh cấp cao của công nghệ bạn đang sử dụng hoặc một cái gì đó cụ thể cho nhà quản trị doanh nghiệp bạn làm việc và xem liệu họ có thể nắm bắt được chủ đề hay không. Họ có hỏi những câu hỏi thông minh không? Họ có thể đưa ra một sự tương tự? Nó có giống với những gì họ đã làm trong một ngành công nghiệp hoặc công nghệ khác không?

  3. Họ có muốn lập trình không? Nó không phải là số một trong danh sách của họ, nhưng họ phải thể hiện sở thích viết mã. Và tôi có nghĩa là thực sự viết mã và làm một cái gì đó, không phải ngồi và nói về nó hoặc vẽ trên bảng cả ngày. Không phải để giảm thiểu lập kế hoạch hoặc để thúc đẩy mã hóa cao bồi, nhưng cuối cùng bạn phải có mã. Tránh những người tránh bàn phím. Đây không phải là một vị trí quản lý.

Bạn có thể thực hiện một số điểm trên thang điểm từ một đến mười điều hoặc chỉ dựa vào việc có thể ngửi thấy mùi của chính bạn.


0

Nếu nó làm cho bạn cảm thấy tốt hơn các lập trình viên xấu tồn tại ở hầu hết các quốc gia. Làm thế nào để loại bỏ chúng là vấn đề.

Làm cỏ đầu tiên là sơ yếu lý lịch. Một điều tôi tìm kiếm là rất nhiều kinh nghiệm ngôn ngữ được tuyên bố và không có gì để mô tả những gì họ đã làm trong ngôn ngữ đó. Tôi đã thấy sơ yếu lý lịch rằng họ biết mọi ngôn ngữ từng được phát minh và kinh nghiệm của họ cho thấy họ chỉ thực sự làm việc với Access và Visual Basic. Những người đi ngay trong thùng rác. Sơ yếu lý lịch 10 trang đi ngay vào thùng rác (đặc biệt là mười trang sơ yếu lý lịch từ những người có ít hơn 2 năm kinh nghiệm mà tôi đã nhận được). Từ những sinh viên tốt nghiệp đại học gần đây với ít kinh nghiệm, bạn phải thực sự kén chọn về cách họ thể hiện bản thân. Các candiates tốt nhất cẩn thận với sơ yếu lý lịch của họ, họ không có lỗi. Bạn có thực sự đang tìm kiếm một người quan tâm quá ít đến nỗi anh ấy không bận tâm đến việc đọc lại sơ yếu lý lịch của mình?

Sơ yếu lý lịch chuẩn bị chuyên nghiệp đi trong thùng rác quá. Khi bạn đã đọc hàng trăm hồ sơ xin việc, bạn có thể chọn chúng khi họ sử dụng cùng một cụm từ. Bạn không thể tin tưởng vào nội dung trong một bản lý lịch được chuẩn bị chuyên nghiệp và bạn biết người đó đã không tự chuẩn bị. Đây là kiểu người sẽ dựa vào người khác để giải quyết vấn đề của mình cho anh ta, bạn có thực sự muốn điều đó ở vị trí lập trình không?

Tìm kiếm những thứ làm cho người đó nổi bật cho những người bạn chọn. Tất nhiên điều đó khó hơn với những người vừa mới ra trường, nhưng hãy tìm kiếm những thành tựu, đóng góp cho nguồn mở, v.v.

Loại cỏ tiếp theo là phỏng vấn qua điện thoại. Hỏi về các khái niệm cơ bản liên quan đến công việc thực tế bạn có. Nếu mọi người không có kiến ​​thức cơ bản về các khái niệm bạn cần họ có, họ không đáng bận tâm để đưa vào một cuộc phỏng vấn cá nhân. Giới trẻ thường nghĩ rằng điều này là không công bằng vì họ có thể tra cứu mọi thứ trên Internet, nhưng sự thật là tôi chưa bao giờ gặp một lập trình viên giỏi, người phải tìm kiếm mọi thứ trên Internet. Bạn nên có một số kiến ​​thức về nghề nghiệp của bạn mà bạn không cần phải tìm kiếm mỗi lần.

Sau cuộc phỏng vấn qua điện thoại, bạn nên chọn 4-5 ứng viên tốt nhất và phỏng vấn. Tất nhiên, nếu bạn chỉ có 1-2 ứng cử viên tốt, đừng bận tâm đến việc phỏng vấn những người bạn đã loại. Bây giờ bạn sẽ hỏi những câu hỏi khó và cảm nhận về cách họ tiếp cận vấn đề. Tôi sẽ không bao giờ sử dụng bài kiểm tra fizzbuzz vì nó quá nổi tiếng nên câu trả lời không cho bạn biết gì. Thay vào đó tạo ra một số vấn đề từ cơ sở mã của riêng bạn. Tôi có thể cung cấp cho họ một yêu cầu và một đoạn mã và hỏi họ xem mã có đáp ứng yêu cầu không và nếu không thì tại sao không và họ có thể làm gì để đáp ứng yêu cầu đó. Tôi sẽ yêu cầu họ mô tả vấn đề lập trình khó khăn nhất mà họ phải giải quyết và những bước họ đã thực hiện để tìm câu trả lời. Tôi sẽ hỏi một số câu hỏi kỹ thuật sâu hơn. Hãy nhớ rằng bạn đang cố gắng để cảm nhận về năng lực kỹ thuật của họ, khả năng giải quyết và gỡ lỗi của họ và khả năng của họ để phù hợp với nhóm hiện tại của bạn. Tôi cũng đặt câu hỏi rằng họ không biết câu trả lời để đánh giá mức độ họ xử lý căng thẳng tốt như thế nào, đó là một công việc căng thẳng, tôi không muốn ai đó gấp trong cuộc phỏng vấn vì sự căng thẳng của công việc lớn hơn căng thẳng trong cuộc phỏng vấn . Tôi tìm kiếm những điểm mạnh trong các lĩnh vực chúng tôi hiện đang yếu và khả năng làm việc theo nhóm và để trình bày với khách hàng (nhà phát triển của chúng tôi giao dịch rộng rãi với người dùng), danh sách của bạn có thể khác. t muốn ai đó gấp trong cuộc phỏng vấn vì sự căng thẳng của công việc lớn hơn căng thẳng cuộc phỏng vấn. Tôi tìm kiếm những điểm mạnh trong các lĩnh vực chúng tôi hiện đang yếu và khả năng làm việc theo nhóm và để trình bày với khách hàng (nhà phát triển của chúng tôi giao dịch rộng rãi với người dùng), danh sách của bạn có thể khác. t muốn ai đó gấp trong cuộc phỏng vấn vì sự căng thẳng của công việc lớn hơn căng thẳng cuộc phỏng vấn. Tôi tìm kiếm những điểm mạnh trong các lĩnh vực chúng tôi hiện đang yếu và khả năng làm việc theo nhóm và để trình bày với khách hàng (nhà phát triển của chúng tôi giao dịch rộng rãi với người dùng), danh sách của bạn có thể khác.


-1

Các ứng cử viên phải được đưa ra một vấn đề thực tế để giải quyết với quyền tự do sử dụng bất kỳ công nghệ nào.

Nếu cô ấy xuất hiện trong màu sắc bay, cô ấy vào!

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.