Lập trình viên không biết lập trình

5903

Tôi cũng cảm thấy hơi khó tin, nhưng có rất nhiều nguồn thông tin vẫn gửi về thông qua Twitter và email cho tôi rằng: rất nhiều ứng viên, những người mà đang ứng tuyển để xin các công việc lập trình lại không biết lập trình. Chút nào cả. Bạn hãy đọc một đoạn trích trong email mà Mike Lin đã gửi cho tôi:

Bài viết “Tại sao nhiều lập trình viên lại không biết… code” đã làm thay đổi cái cách mà tôi tiến hành các cuộc phỏng vấn. Trước đây tôi thường tiến hành bằng cách hẹn gặp mặt trực tiếp ứng viên. Nhưng thực tế đã cho thấy đó là cách tốn quá nhiều thời gian, như anh đã đề cập, phần lớn các ứng viên thì đơn giản không phải là người biết lập trình. Vì vậy tôi đã bắt đầu tiến hành phỏng vấn với những câu hỏi về kỹ thuật trước tiên. Lúc đầu thì tôi đưa ra các câu hỏi từ dễ đến khó. Nhưng sau đó tôi nhận ra rằng mình có thể nhận diện và loại ra những người không phù hợp một cách nhanh hơn nếu tôi tiến hành theo cách ngược lại – đó là tôi đưa ra các câu hỏi khó trước – miễn là các câu hỏi khó đó vẫn nằm trong phạm vi “nếu bạn không biết điều này thì bạn không thể làm việc ở đây”. Hầu hết các cuộc phỏng vấn của tôi thường vẫn mất khoảng 20 phút, bởi vì một số câu hỏi khó thường cần một khoảng thời gian để trả lời và đánh giá lại. Nhưng đó đã là một bước cải tiến rất lớn so với cách hẹn gặp mặt trước đây của tôi; và thậm chí công việc này có thể hoàn thành chỉ thông qua điện thoại.

Sau khi đọc xong bài viết của anh, tôi đã bắt đầu tiến hành thực hiện các buổi phỏng vấn lập trình thông qua điện thoại, và sử dụng việc gặp mặt trên web. Thời gian phỏng vấn của tôi bây giờ đã giảm xuống còn khoảng 15 phút cho mỗi ứng viên để nhận ra những người không biết code — và phần lớn ứng viên lại thuộc dạng này.

Tôi viết bài viết đó vào năm 2007, và tôi cảm thấy sốc, nhưng không hoàn toàn ngạc nhiên khi nghe thấy rằng giờ đây “phần lớn” của những người được gọi là lập trình viên, người mà ứng tuyển để phỏng vấn cho một công việc lập trình lại không có khả năng viết những chương trình thuộc dạng nhỏ nhất. Xin nói rõ là, những câu hỏi ở đây không khó — chúng tôi không phải đang nói về những buổi phỏng vấn phức tạp, kiểu như các buổi phỏng vấn yêu cầu giải quyết vấn đề theo phong cách của Google dành cho các nhà khoa học máy tính. Mà đây là những câu hỏi vô cùng đơn giản mà chúng tôi đã yêu cầu các ứng viên trả lời. Và họ không thể. Điều này thì cũng tương tự như việc bạn đang cố gắng tuyển dụng một tài xế xe tải và nhận ra rằng 90% trong số các ứng viên không thể nhận biết đâu là chân gas hoặc đâu là cần số vậy.

Tôi đồng ý rằng điều này có vẻ hơi khùng. Nhưng nó xảy ra như cơm bữa, và dường như đang trở thành một bệnh dịch trong vấn đề tuyển dụng trong ngành công nghiệp của chúng ta.

Bạn chỉ cần đưa ra một vài câu hỏi phỏng vấn có nội dung kỹ thuật đơn giản thì ngay lập tức đã loại bỏ được cả một “sư đoàn” những lập trình viên không-biết-lập-trình. Việc tiến hành phỏng vấn thông qua điện thoại là một lựa chọn khôn ngoan, như tôi đã đề cập ở trên. Nhưng việc phỏng vấn qua internet thì thậm chí còn tốt hơn, và được xem là nhiều tự nhiên hơn đối với công việc lập trình.

Tôi đã không được vui vẻ lắm với việc bắt đầu một cuộc hẹn tuyển dụng trên web và yêu cầu những gã đó chia sẻ màn hình của họ với tôi. Tôi đã tìm kiếm một số công cụ phù hợp hơn cho việc thực hiện các cuộc phỏng vấn lập trình theo phong cách “bút(viết)-và-giấy” thông qua web, nhưng tôi không thể tìm thấy bất kỳ công cụ nào. Vì vậy tôi đã phải làm một công việc mà bất kỳ một lập trình viên có lòng tự trọng nào cũng sẽ làm. Đó là tôi đã tự viết ra một công cụ cho mục đích đó.

Công cụ này đã mang lại giá trị thực sự! Tôi đã đặt lịch trình cho việc bắt đầu phỏng vấn kỹ thuật với mỗi ứng viên xin việc trong khoảng 15 phút. Nhưng buồn thay, tôi thường hoàn thành cuộc phỏng vấn trong chỉ từ 5 đến 10 phút. Tôi sẽ chỉ lên lịch cho một cuộc phỏng vấn gặp mặt trực tiếp cùng với họ nếu ít ra là họ có thể viết được một chương trình đơn giản có khoảng 10 dòng code. Mà điều đó cũng không thường xuyên xảy ra, nhưng ít ra thì tôi không phải lãng phí thời gian quá nhiều như trước đây nữa.

Mike cũng nói thêm rằng công cụ dùng để phỏng vấn coding theo kiểu made-in-tự-tui đó thì không có mục đích nhằm để thể hiện năng lực lập trình của anh. Đơn giản là anh ta thấy cần một công cụ, vì vậy anh ta đã viết ra nó — và sẵn lòng chia sẻ nó với chúng ta. Đó có thể là công cụ tốt cho nhiều người ở ngoài kia; thế còn những công cụ trực tuyến nào bạn thường sử dụng để phỏng vấn các lập trình viên?

Hiện nay đã là 3 năm sau bài viết của mình, và tôi vẫn đang tự hỏi: tại sao có những người mà thậm chí không thể viết nổi một chương trình đơn giản lại ấp ủ một ý tưởng là họ có thể kiếm được một công việc với tư cách là lập trình viên? Rõ ràng, một số người trong số họ đã “thành công” trong việc “lọt qua” được vòng phỏng vấn tuyển dụng. Điều này có nghĩa là tiêu chuẩn phỏng vấn dành cho các lập trình viên trong toàn bộ ngành công nghiệp của chúng ta thì vô cùng kém chất lượng, và đó là một điều đáng hổ thẹn. Nó đang làm giảm giá trị của tất cả lập trình viên đang làm công việc này để kiếm sống.

Ít ra thì những lập trình viên tồi cũng còn có thể đào tạo được; còn những lập trình viên loại không-biết-lập-trình này thì không chỉ chẳng còn hy vọng gì mà họ còn làm rẻ rúng cái nghề nghiệp của mọi người xung quanh họ. Họ phải bị loại trừ, bắt đầu bằng việc đưa ra những bài kiểm tra kỹ thuật lập trình đơn giản và đó nên là một phần của mọi cuộc phỏng vấn lập trình viên.

Techtalk Via vinacode

CHIA SẺ