Vinova tuyển lập trình viên Mobile & Web ở Hà Nội, lương $300-1000

Article: Lập trình viên và chiếc xe bò 1600

Chưa phân loại, Kinh nghiệm tuyển và xin việc
nguoitapdich.myopenid.com 35
Updated over 3 years ago

Một lần chat với chú Phan Anh Vũ trên YIM đã tạo cảm hứng cho tôi viết bài này.

Làm ơn đừng hiểu lầm là chú Vũ dốt đến mức làm cho tôi phải ví lập trình viên với một chiếc xe bò. Hoàn toàn ngược lại, chú Vũ đã đặt những câu hỏi thông minh, đưa ra những luận điểm hay, và do đó mới tạo cảm hứng cho tôi.



Arigatou gozaimashita, Vũ.

Có một câu tôi rất thích hỏi khi phỏng vấn để tuyển nhân viên:

Giả sử trên một con đường phẳng nằm ngang, có một con bò móc vào một cái xe , đang chuyển động về phía trước với vận tốc tương đối đều, con bò đi trước cái xe. Vậy con bò kéo cái xe hay cái xe đẩy con bò?

Câu hỏi trên có giống câu hỏi Microsoft dở hơi không? Có giống Monkey sees - Monkey does không?

Tất nhiên, tôi hỏi câu này hoàn toàn có các lý do của tôi. Xin khẳng định trước là "ai cũng biết" là chiếc xe kéo con bò, nhưng khi tôi hỏi một câu hỏi mang tính "dở hơi" như thế này, tôi không trông đợi một câu trả lời đơn thuần, mà nhằm vào một vài mục đích khác nhau. ("Ai cũng biết" để trong ngoặc kép, vì nói chung là ai cũng biết, trừ một số người không biết Tongue out ).

Mục đích thứ nhất là thử khả năng quyết định nhanh (Quick decision making) của ứng viên.

Nếu như một ứng viên trong vòng 5 giây không nói lên được là "Con bò kéo cái xe", hoặc trong vòng 1 phút mà không nói lên được "Cái xe đẩy con bò", thì nói chung là không có khả năng quyết định nhanh.

Mục đích thứ hai là thử khả năng sáng tạo của ứng viên (Creative thinking).

Đối với những ứng viên trả lời là "Con bò kéo cái xe", tôi sẽ thử xem họ có đưa được ra cái gì khác với Định luật 1 của Newton không.

Nhưng hay hơn cả là nghe trả lời từ những ứng viên trả lời là "Cái xe đẩy con bò". Chỉ có hai loại người trả lời thế: Một là loại uncertainty, don't know shit, day dreaming, và loại thứ hai là những người suy nghĩ sáng tạo, hài hước, và willing to push logical thinking to the limit and beyond the limit.

Người ta nói là Khoảng cách giữa một kẻ điên và một thiên tài chỉ là một sợi tóc. Thực ra thì ngay cả khoảng cách sợi tóc này cũng không phải là quá khó nhận ra, như người ta vẫn làm cho thiên hạ lầm tưởng.

Những kẻ dốt nát thì thường nói quàng, những kẻ muốn tỏ ra khác người, độc đáo thì thường nói trái với lẽ thường, trái với thực tế. Còn những người sáng tạo là những người biết rằng thực tế nó là như thế, nhưng luôn tìm cách để suy xét xem có thể lật ngược vấn đề không, có thể đưa ra cái tốt hơn cái đã có trong thực tế không, hoặc có thể đưa ra theory hay ngụy biện để thử tư duy logic không.

Vì thế, tôi hoàn toàn không phản đối những người trả lời là "Chiếc xe đẩy con bò", với điều kiện là họ phải đưa ra những ngụy biện càng khó nhận ra càng tốt, với những sơ hở logic và toán học hay vật lý học càng khó phát hiện thì càng hay.

Hơn nữa, các phát minh của nhân loại thường ra đời theo kiểu: "Ai cũng biết" là điều A không làm được. Chỉ có một thằng cha "tình cờ" không biết là A không làm được, nên hắn thử làm, và cuối cùng đã làm được điều đó. Thế là một phát minh mới ra đời.

Mục đích thứ ba, và quan trọng nhất, là để xem ứng viên có phân biệt được đâu là bài toán thực tế, đâu là công cụ hay không.

Xét cấu trúc là chiếc xe bò, thì quan trọng nhất là cái xe, chứ không phải con bò. Cái xe là concept, chính vì muốn dùng cái xe để đi lại và chuyên chở các thứ từ điểm A đến điểm B, nên người ta mới muốn nó di chuyển. Và tự nó không di chuyển được, thì người ta mới buộc con bò vào xe, cho nó kéo cái xe.

Nếu suy nghĩ được đâu là concept, đâu là tool, thì mới phát triển được. Và quan trọng hơn nữa là phải thấy được rằng giả sử cái xe tự di chuyển được, thì người ta sẽ không cần con bò. Chính vì nhận ra concept như thế, nên người ta mới nghĩ ra chuyện gắn động cơ vào cái xe, và phát minh ra cái ô tô.

Còn suy nghĩ theo kiểu các chú lập trình viên chỉ học công cụ, chỉ học hết Pascal rồi C, hết Java rồi Ruby, hết Struts, Spring, Hibernate rồi Rails, hết OpenGL đến DirectX, thì có đưa cho các chú lập trình viên đó cái xe bò, các chú chỉ nghĩ ra làm thế nào để nuôi bò béo, bò khoẻ, bò kéo xe lâu mệt ... Hoặc cùng lắm là sẽ nghĩ ra việc buộc ngựa, buộc voi, buộc chó, buộc rùa, ba ba, thằn lằn, cá sấu ... vào xe, chứ không bao giờ nghĩ ra chuyện một cái xe mà không cần con gì.

Nếu có khả năng tư duy trừu tượng cao hơn nữa, thì có thể thấy vấn đề chính là di chuyển người hay đồ vật từ điểm A đến điểm B, Giả sử như người ta có htể dùng phương tiện khác, ví dụ như một tấm thảm bay, một cái chổi, một chiếc máy bay hay tự attach mình vào e-mail... thì người ta sẽ không cần cả cái xe lẫn con bò.

Thế các chú lập trình viên tưởng là các nhân viên thư viện, nhân viên nhân sự, nhân viên lưu trữ phim... trên thế giới người ta cần cái máy tính của các chú lắm à? Yêu nó lắm à? Chẳng qua là người ta cần một công cụ để quản lý thư viện hay quản lý nhân viên hiệu quả hơn, để người ta làm việc ít hơn, về nhà sớm hơn, đỡ mệt hơn, để thời gian còn đua xe, nhảy đầm, tán gái... Và tại thời điểm này, "it happens to be" cái công cụ giúp người ta làm việc đó là cái máy tính. Vì thế người ta mới dùng cái máy tính.

Chứ các chú thử hình dung ra xem một nhân viên nhân sự có thể quát vào một cái máy X là "Tìm cho tao những thằng họ Nguyễn, tuổi dưới 50", và cái máy X đó tìm ngay cho họ, thì có khỉ nào thèm học SQL, rồi bấm vào một cái bảng nhựa gồm 104 phím để ra lệnh "select * from employees where last_name = "Nguyen" and age<50" không? Hay có khỉ nào thèm dùng một cục nhựa có ba nút để rê cursor trên màn hình, chỉ vào một menu Search, rồi chờ một cái search popup dialog hiện ra, rồi toét mắt ra tìm đâu là Last Name, gõ vào chữ Nguyen, đâu là Age, gõ vào 50, đâu là dropdown có <. =, > ,<=, >=, rồi chọn <, sau đó click Ok không? Đấy là chưa kể sau khi làm hết các thao tác đó rồi, rất có thể tất cả những gì mà tên user tội nghiệp đó nhận được chỉ là một NullPointerException, MemoryReadError hoặc một thông báo tối tăm vô nghĩa mà người đó có học nghề nhân sự cả đời cũng chả hiểu được nó có ý nghĩa gì, mà cũng chả việc gì phải hiểu.

Vì thế, một lập trình viên giỏi khác thợ lau bàn phím ở chỗ phân biệt được đâu là concept, đâu là tool, đâu là cái xe và đâu là con bò.

Tất nhiên là một câu hỏi như trên không quyết định hoàn toàn việc nhận hay không nhận một ứng viên. Nhưng nếu hai ứng viên giỏi Ruby hay Rails như nhau, thì thằng nào trả lời câu hỏi trên hay hơn, thì chứng tỏ là nó càng gần với lập trình viên hơn là thợ lau bàn phím (một cách tương đối, eh?).

1 2 3 4 

Editors
ngocdaothanh.myopenid.com 172
phananhvu.myopenid.com 125
chauhonglinh.myopenid.com 2
nguoitapdich.myopenid.com 35

Comments

phananhvu.myopenid.com 125
over 4 years ago

Tóm lại, khi hỏi những câu kiểu thế này, người ta muốn kiểm tra: 

  • Quick decision making
  • Creative thinking
  • Xem ứng viên có phân biệt được đâu là bài toán thực tế, đâu là công cụ hay không.
naphuonghic.myopenid.com
over 4 years ago

Ko thể khẳng định là chiếc xe đẩy con bò hay con bò kéo chiếc xe.

Cần phải xem xét chiếc xe đó có nổ máy hay không, trông dáng điệu của con bò là đang kéo nặng hay đi bình thường.

Khi xác định rõ 2 yếu tố đó, mới đưa ra quyết định chính xác là con bò kéo chiếc xe hay chiếc xe đẩy con bò

Với những ứng viên khẳng định theo 1 kết luận mà chưa biết, hiểu rõ vấn đề, tôi loại ngay lập tức.

naphuonghic.myopenid.com
over 4 years ago

Đọc xong chán chả buồn sửa. có 3 cậu đóng góp cho bài này, nhưng ko hiểu cậu nảo có thái độ hơi "khinh" lập trình viên vậy?? Tôi muốn xem xem các cậu ở cỡ nào mà "khinh" lập trình viên đến thế.

"Thế các chú lập trình viên tưởng là..."
"Chứ các chú thử hình dung..."

Các "chú" mà cậu nào đó đề cập đến trong bài này có thể là những người đáng tuổi cha, chú của các cậu đó. Họ có thể kém 1 chút, nhưng ko được nói cái giọng khinh khỉnh như thế. Nghe rất ngứa tai

doqkhanh.pip.verisignlabs.com
Updated over 4 years ago

cái xe và con bò đi cùng nhau :D chả thằng nào kéo thằng nào!!

Nói chung là không nên tưởng ai cũng như mình :D

instcode.wordpress.com
over 3 years ago

Có mấy bác cứ "mơ màng" rồi hỏi mấy câu dở hơi, sau đó ngồi quây quần bên nhau đưa ra những luận điểm linh tinh để biện minh cho câu hỏi của mình là "hay ho"... Nhưng bác ơi, còn trường hợp nữa, nếu cái thằng coder mà được bác phỏng vấn ấy, nó im im mãi mấy phút để "suy nghĩ", sau đó nó cuòi khinh bỉ thì nó hông phải là cái thằng mà nằm trong tập hợp những thằng bác "tưởng" đâu... {#emotions_dlg.embarassed}

Haha... Nói chung là không nên tưởng ai cũng như mình {#emotions_dlg.tongue_out}

Và tốt nhất, cntt.tv nên viết những bài hay ho hơn tí cho anh em tụi tui mở mang chút... Nếu viết hông được thì cứ đi gom góp rồi dịch lại của người ta như mấy bài trước cũng được {#emotions_dlg.laughing}... Add cái RSS của site digg.com rùi khi ngày ngày dzô đó rinh về dịch, quá trời bài luôn {#emotions_dlg.tongue_out}

ngocdaothanh.myopenid.com 172
over 3 years ago

Hì, take it easy. Nhớ có lần tác giả bài viết này bảo đại khái nếu đến cái nghề kiếm cơm của mình mà LTV còn không tán phét về nó được, thì nên đi chăn bò{#emotions_dlg.laughing}

Bạn instcode thấy gì hay thì giới thiệu cho mọi người với nào. Trang này là blog, chủ yếu để những người trong nghề và những ai định theo nghề LTV ghi chú những trải nghiệm rút ra trong quá trình làm việc và học tập, trước hết là cho bản thân mình để khỏi quên, sau là chia sẻ cho mọi người.

You must login to be able to comment

Uploaded files

No file uploaded yet

You must login to be able to upload

Nhà tài trợ:

Mọi người đều tự do viết bài, sửa bài của người khác, và bình luận ở trang web này. Bạn muốn chủ động tạo bài mới để chia sẻ kinh nghiệm với mọi người? Xin click link ở dưới.

Create new content