Câu hỏi Joel Test # 11 là: "Các ứng viên mới có viết mã trong cuộc phỏng vấn của họ không?". Lập luận và chống lại để yêu cầu các ứng viên mới viết mã trong cuộc phỏng vấn và đưa ra quyết định về nó là gì?
Câu hỏi Joel Test # 11 là: "Các ứng viên mới có viết mã trong cuộc phỏng vấn của họ không?". Lập luận và chống lại để yêu cầu các ứng viên mới viết mã trong cuộc phỏng vấn và đưa ra quyết định về nó là gì?
Câu trả lời:
Tôi không thấy khuyết điểm. Một cuộc phỏng vấn có nhiều phần, và một ứng cử viên nên được chứng thực 'lên chuỗi' một vài lần.
Tôi phỏng vấn ~ 10 người hàng tuần. Tôi thực sự, thực sự, THỰC SỰ đánh giá cao thực tế rằng nhân sự đã thực hiện tất cả các công việc nền và trình bày cho tôi rất nhiều ghi chú. Vào thời điểm họ đến với tôi, đã đến lúc tôi chấm điểm các bài kiểm tra của họ.
Các xét nghiệm phụ thuộc hoàn toàn vào vị trí. Nói chung, tôi cố gắng thăm dò:
Kỹ năng lập trình chung. Bạn có thể sử dụng các nhà khai thác hiệu quả? Bạn có thể hình dung một hệ thống số có cơ số không phải là 10 không?
Bạn có biết làm thế nào để chúng tôi thuê bạn làm gì không?
Đánh giá các đóng góp của bạn cho bất kỳ dự án nguồn mở nào mà bạn đã liệt kê
Tôi cố gắng để giữ cho nó ngắn, và vui vẻ. Khi tôi đi vào văn phòng, tôi lấy các câu trả lời, xem qua và sau đó tiến hành một cuộc phỏng vấn thứ cấp. Để được tuyển dụng, bạn thường phải trải qua ba cuộc phỏng vấn.
Tôi cũng đánh giá mức độ bạn sẽ hòa nhập với đội sẽ tiếp nhận bạn. Đội đó trông cậy vào tôi để làm điều đó một cách hiệu quả.
Đó là một điều để trả lời các câu hỏi ở dạng meta, đó là một điều khác để thực sự sản xuất mã. Nếu tôi sẽ thuê bạn, tôi thực sự cần phải thấy bạn sản xuất mã.
Với lời xin lỗi đến Scott Whitlock:
Nhược điểm:
Ưu điểm:
Nếu bạn định thuê một người tung hứng, bạn sẽ không điên khi không để anh ta tung hứng cho bạn. Hoặc một nhạc sĩ bạn sẽ có buổi thử giọng. Nếu không, bạn nhận được những thứ như K-strass yo-yo tuyệt vời .
Đi qua một cái gì đó trên bảng trắng là các lập trình viên tương đương với một bản demo thử nghiệm nhanh.
Tôi nghĩ nó rất hữu ích và tôi luôn làm điều đó, nhưng vì lợi ích đã được bảo vệ rất tốt nên tôi sẽ chỉ thảo luận về những tiêu cực (rõ ràng).
Tôi nghĩ rằng các bài kiểm tra mã khá khó có thể cung cấp cho bạn các kết quả dương tính giả: tỷ lệ cược thấp mà một người thực sự không thể viết mã sẽ quản lý để giả mạo nó trong một cuộc phỏng vấn, ít nhất là nếu bạn có một mức độ khó về câu hỏi. (Có lẽ kịch bản rất có thể là họ gian lận bằng cách hỏi một người bạn, nếu đó không phải là một cuộc phỏng vấn trực tiếp.)
Các vấn đề nằm ở phía âm tính giả: các bài kiểm tra mã sẽ khiến bạn từ chối người thực sự là ứng cử viên tốt nhất?
Sự sợ khi đứng trước khán giả
Bạn có thể có ai đó thực sự là một nhà phát triển thực sự giỏi, nhưng họ rất lo lắng về cuộc phỏng vấn này, và họ thực sự cảm thấy sợ hãi. Thực hiện dưới áp lực rất quan trọng ở một mức độ nào đó, nhưng đối phó với sợ hãi giai đoạn không phải là một phần quan trọng của việc trở thành một lập trình viên (so với các ngành nghề khác), và thật không may khi từ chối một người chịu đựng điều đó. Điều này có thể kết hợp: nếu người đó không thể trả lời một câu hỏi mà họ biết họ nên trả lời, họ có thể trở nên chặt chẽ hơn. Hoặc, như trong câu hỏi này , họ cảm thấy họ không thể nói và viết mã cùng một lúc.
giảm thiểu: Bắt đầu với một số câu hỏi tìm hiểu về nền tảng, mục tiêu của họ, v.v., trước khi bạn nhảy vào câu hỏi kỹ thuật. Có lẽ bắt đầu với một số câu hỏi kỹ thuật dễ dàng hơn để họ có được một số động lực. Đừng là một kẻ tinh ranh trong cuộc phỏng vấn (ngụy biện về dấu chấm phẩy, v.v.).
Đó là một biện pháp ồn ào
Các câu hỏi mã thú vị có thể có nhiều hơn một câu trả lời đúng. Nếu một người viết một câu trả lời đúng, và một người khác viết một câu trả lời đúng và hiệu quả hơn, bạn nên đặt bao nhiêu cân?
Ở một mức độ nào đó, đây giống như vấn đề với một số câu hỏi "câu đố": người đó có cái nhìn sâu sắc hay không và bạn nhận được kết quả gần như nhị phân. Trí thông minh có thể ảnh hưởng đến xác suất có được cái nhìn sâu sắc đó, nhưng việc lấy mẫu chỉ một vài lần mang lại cho bạn một biện pháp thô thiển.
Điều này làm phiền tôi về các câu hỏi về mã (mặc dù tôi vẫn sử dụng chúng.) Sự giảm thiểu tốt nhất tôi có thể nghĩ đến là có càng nhiều giải pháp khả thi: ít nhất người đó có thể viết một câu trả lời thô bạo, hoặc một câu trả lời cho một phần của vấn đề Nhận ra điều đó tốt hơn không có gì là một dấu hiệu tốt. Sau đó, nếu họ khám phá nhiều hơn, họ có thể làm cho mã hiệu quả hơn hoặc thanh lịch hơn. Càng nhiều càng tốt, tránh đặt câu hỏi nhận được phản hồi nhị phân.
Nó không thực sự đại diện
Lập trình không phải là một công việc giải quyết các vấn đề thuật toán mười phút lần lượt: có rất nhiều công việc về hiểu biết và thiết kế các hệ thống lớn hơn và tập trung trong thời gian dài, không nói gì đến các kỹ năng giao tiếp. Mã câu hỏi không thực sự kiểm tra điều này.
Nhưng, các câu hỏi về mã không phải là những câu hỏi duy nhất bạn sẽ hỏi: bạn có thể xem lý lịch của họ, tài liệu tham khảo của họ, công việc nguồn mở của họ (nếu có), để tìm bằng chứng về nỗ lực bền bỉ, sáng tạo, kỹ năng giao tiếp.
Biết cách giải quyết các vấn đề thuật toán nhỏ và cách giảm chúng thành mã là điều kiện cần nhưng chưa đủ: nếu bạn không thể giải quyết các vấn đề nhỏ và bạn không thể viết mã không cần thiết thì tất cả những suy nghĩ về bức tranh lớn trên thế giới không phải là sẽ làm cho bạn một nhà phát triển năng suất.
Bất cứ ai cũng có thể giải quyết điều đó
Không, rõ ràng là không. Như bài đăng nổi tiếng của FizzBuzz chỉ ra, những vấn đề bạn có thể nghĩ là những cái bẫy tầm thường không chỉ những sinh viên mới tốt nghiệp mà cả những người có nhiều năm kinh nghiệm trong ngành. Tôi không biết tại sao. Kiểm tra mã là một biện pháp kém (có thể, mặc dù tôi nghĩ là không thể) hoặc họ không đóng góp nhiều cho các dự án trong hồ sơ của họ, hoặc họ đã làm được rất nhiều bằng cách sao chép và dán không mã thuật toán (có thể.)
Thật đáng để thừa nhận rằng bạn thực sự có thể làm được rất nhiều việc mà không cần viết bất kỳ mã thuật toán nào. Mọi người kiếm được rất nhiều tiền cho các ứng dụng có giá trị nằm ở đồ họa hoặc logic kinh doanh không nằm trong cái mà bạn có thể gọi là "lập trình", và điều đó tốt. Nhưng, nếu bạn thực sự cần lập trình viên, nó không phù hợp.
Nó có thể không được hiệu chỉnh tốt
Nếu bạn đưa ra một câu hỏi, câu trả lời rất có thể dễ dàng đối với bạn. Tuy nhiên, nếu bạn được hỏi bất kỳ câu hỏi nào khác có thể so sánh được với màu xanh hoặc câu hỏi không bị lệch về sở thích và nền tảng cụ thể của riêng bạn, điều đó có thể khó hơn nhiều.
giảm thiểu: Chạy thử nghiệm trên một số nhà phát triển mà bạn đã biết và xem cách họ thực hiện. Có lẽ ai đó đã ở trong nhóm của bạn, người mà bạn biết là rất thông minh, sẽ gặp rắc rối với một trong số họ và bạn có thể xem xét điều chỉnh nó. Có lẽ họ sẽ nghĩ về một câu trả lời tốt hơn hoặc khác nhau.
Nó quá giống những chuyện vặt vãnh
Tôi nghĩ rằng các câu hỏi về mã chắc chắn có thể đi vào những câu đố, nếu bạn khăng khăng mọi người biết các API tối nghĩa hoặc có được cú pháp hoàn hảo hoặc nhớ định nghĩa chính xác của thuật toán không cần thiết. Tất cả đều hợp lý khi dựa vào tài liệu, tìm kiếm trên web hoặc lỗi trình biên dịch để nhận và có ít mối tương quan với chuyên môn thực sự. Thậm chí không biết khả năng của API ở đâu có lẽ là đầu mối mà người này đã sử dụng gần đây, nhưng đó không hẳn là vấn đề miễn là họ không nói dối về lý lịch của họ.
Vì vậy, câu trả lời cho điều này khá đơn giản: đừng hỏi những câu hỏi tầm thường và đừng bị treo lên vì những sai lầm tầm thường. Nhắc nhở ứng viên những gì API được gọi hoặc để họ tra cứu nó; sửa lỗi cú pháp; không kiểm tra cho mọi người ghi nhớ định nghĩa cấu trúc dữ liệu.
Làm thế nào để bạn so sánh?
Nếu bạn có hai ứng cử viên và cả hai đều trả lời tốt các câu hỏi, làm thế nào để bạn chọn giữa họ? Bạn có thể chọn người hoàn thành nhanh nhất, nhưng có lẽ ở đó bạn bắt đầu chọn thỏ rừng trên rùa. Bạn có thể làm một vòng khác và hỏi những câu hỏi khó hơn nhiều nhưng tôi cũng không chắc về điều đó. Có lẽ bạn chỉ cần cung cấp cho họ cả A + và cố gắng chọn giữa họ theo các tiêu chí khác (hoặc cố gắng tìm tiền để thuê cả hai.)
Một điều tôi có thể nghĩ đến là thật khó để "mã hóa thành tiếng" trước mặt người khác. Tôi thấy khó khăn ngay cả khi gõ với ai đó nhìn qua vai tôi, và tôi không cô đơn. Tôi nhận thấy khi ai đó gọi tôi đến máy trạm của họ để giúp đỡ một cái gì đó, họ đột nhiên bắt đầu mắc lỗi chính tả, chọn sai hoàn thành mã, thậm chí mắc lỗi hoàn toàn - không ai trong số họ có thể làm được nếu tôi không ngồi ngay đó. Chết tiệt, tôi đã thấy mọi người bắt đầu sử dụng menu cho các thao tác cắt và dán, chỉ vì họ đang bị theo dõi. Đây không phải là hành vi bình thường và các lập trình viên mà tôi đang nói đến là những lập trình viên xuất sắc và khá thông minh bên cạnh đó.
Gần đây tôi đã có một cuộc phỏng vấn trong đó người phỏng vấn hỏi tôi làm thế nào tôi sẽ viết mã cho một hoạt động cụ thể và anh ta nói, "Chỉ cho tôi xem toán học." Chà, tôi đã phải suy nghĩ về vấn đề này trước khi đến với toán học của nó, vì vậy điều đó đã khiến tôi phải lục đục và hawing. Những gì tôi đặt xuống bảng trắng lúc đầu thật xấu hổ, và tôi cảm thấy mình đã thua ở điểm đó. Cuối cùng tôi cũng có được khoảnh khắc A-ha và tìm thấy câu trả lời (thực ra khi cuối cùng nó cũng xảy ra với tôi anh ấy là ai thực sự hỏi), nhưng "mớ hỗn độn" tôi đã làm trước khi đến đó khiến tôi cảm thấy rất khó chịu. Tuy nhiên, tôi đã nhận được công việc, nhưng nếu người phỏng vấn ít kiên nhẫn hơn thì tôi có thể không có.
Tôi nghĩ rằng nếu bạn cho người được phỏng vấn một nhiệm vụ mã hóa, hãy cho họ một chút thời gian để làm việc đó trên máy tính, thậm chí có thể trong một IDE mà họ quen thuộc. Hãy để họ viết mã cho bạn và sau đó nói về nó. Hỏi họ tại sao họ làm mọi thứ theo một cách nhất định, và liệu cách khác có thể không tốt hơn. Bạn sẽ tìm hiểu nhiều hơn từ quy trình đó hơn là yêu cầu họ (nói theo nghĩa bóng) đi vào một cái cốc ngay trước mặt bạn.
Nhược điểm: Không có. Bất cứ lúc nào bạn dành để thiết lập PC, thiết kế kiểm tra mã và xem xét nó sẽ tiết kiệm được những cơn đau đầu chưa từng thấy trong tương lai.
Ưu điểm: "Tin tưởng, nhưng xác minh" - Ronald Regan. Vì vậy, nhiều lần tôi đã thấy và nghe nói về những người cuối cùng đã rời khỏi một vị trí, trong đó trong cuộc phỏng vấn bạn nghĩ rằng bạn đang nhận được một ngôi sao nhạc rock. Bằng chứng là trong pudding; Tôi muốn xem những gì họ có thể làm. Nó sẽ đại diện cho những gì xảy ra khi bạn đầu tư thời gian và tiền bạc để thuê ai đó và thực hiện một dự án mới trước mặt họ.
Nhược điểm:
Ưu điểm:
Khi tôi phỏng vấn cho công việc hiện tại của mình, tôi đã được cung cấp một danh sách các câu hỏi để viết mã cho nhà tuyển dụng. Tôi đã rất ấn tượng bởi vì các câu hỏi rõ ràng được viết bởi một người có kiến thức sâu về SQL, vì vậy nó hoạt động theo cả hai cách.
Bạn thực sự muốn nhờ người viết mã trong cuộc phỏng vấn - thậm chí tốt hơn, hãy nhờ họ ghép chương trình với một thành viên trong nhóm của bạn trong khoảng thời gian X (bất cứ điều gì bạn có thể thoải mái chi trả về thời gian / nhân lực).
Đó là một trong những cách duy nhất bạn có thể biết nếu người đó có thể viết mã hay không.
Tôi hơi thích lập trình cặp vì nó sẽ cho thấy nhóm của họ làm việc, cung cấp cho họ một IDE thực sự để làm việc và cho phép họ giải quyết vấn đề 'thực' (người khác trong cặp có thể hướng dẫn họ qua bất kỳ chi tiết cụ thể nào về môi trường mà người được phỏng vấn không bao giờ có thể biết một cách hợp lý).
Chúng tôi đã bắt đầu sử dụng chính sách tuyển dụng này và chúng tôi thực sự hài lòng với kết quả này.
Bạn đánh giá một con chim bằng lông của nó và một lập trình viên bằng mã của nó.
Khi tôi bắt đầu với công ty hiện tại tôi đang làm việc cho họ, họ đã yêu cầu tôi viết một số mã C tạo hoặc kiểm tra bit chẵn lẻ của một số đầu vào nhị phân (tùy thuộc vào việc bạn đang mã hóa hay giải mã). Đây là một câu hỏi phỏng vấn chính xác bởi vì những loại vấn đề được giải quyết trong quá trình làm việc. Tất nhiên tôi đang nghĩ đến việc không kiểm tra chẵn lẻ mà là làm việc ở cấp độ thấp.
Tất cả các câu trả lời cho đến nay (mà tôi đã đọc) không đề cập đến thực tế rằng Joel Test KHÔNG phải (chỉ) một danh sách thực hành tốt nhất cho các doanh nhân mà là một danh sách kiểm tra để dễ dàng đánh giá của bạn về một nhà tuyển dụng tiềm năng .
Vấn đề là ... nếu họ kiểm tra kỹ lưỡng kẹo của họ thì có lẽ họ thuê những người biết công cụ của họ ... điều đó có nghĩa là với bạn
thay vì sửa lỗi sau chúng ...
Tôi sẽ nói:
Ưu
Nhược điểm
Reverse
phương thức tích hợp hoặc tương tự, hoặc để kiểm tra bằng văn bản những thứ như" Đối số của Foo
phương thức của Bar
lớp "là gì, khi bất kỳ kẻ ngốc nào cũng có thể Google sử dụng tài liệu đó) trái ngược với các câu hỏi về kiến trúc / thiết kế hiển thị ứng viên có thể hoàn thành công việc và giải quyết các vấn đề kinh doanh .Một pro là nó cho thấy ai đó có kiến thức cơ bản về lập trình hoặc bất cứ điều gì (lần cuối cùng tôi gặp điều đó, tôi đã ngạc nhiên về câu hỏi SQL cơ bản như thế nào). Nó cũng có thể làm cơ sở cho một cuộc thảo luận kỹ thuật, hỏi tại sao ứng cử viên lại làm như vậy và như vậy, và làm thế nào để cải thiện nó.
Nó mất thời gian trong cuộc phỏng vấn, có thể được sử dụng cho những thứ khác. Hơn nữa, viết mã trên bảng trắng không phải là môi trường tự nhiên và một số người sẽ gặp nhiều vấn đề nghiêm trọng hơn với nó. Nó có thể khiến bạn bỏ lỡ một nhà phát triển chỉ lo lắng mà không có các công cụ hoặc tài liệu tham khảo thông thường.
Lập trình là một kỹ năng kỹ thuật cao với một loạt các "sản phẩm" rõ ràng. Một ứng cử viên có thể hoặc không thể cung cấp chúng. Vì vậy, không có "khuyết điểm" để đặt câu hỏi kỹ thuật. Điều đó hoàn toàn có thể nói, "hiển thị cho tôi một số mã cho ứng dụng này hoặc" hiển thị cho tôi mã cho ứng dụng mà bạn đã viết. "
KHÔNG làm như vậy có thể dẫn đến một kết quả như sau: Một người đàn ông giàu có đã phỏng vấn một gia sư để dạy con mình chơi cờ vua (như một bài tập mở rộng tâm trí). Gia sư đã mở một bảng rô và bắt đầu nói về 64 ô vuông nhưng không chạm vào một quân cờ. Bị ép thời gian, dù sao bố cũng thuê gia sư. Và gia sư đã dạy các em chơi KIỂM TRA.