Timothy là người quản lí thuê người của một công ti phần mềm lớn, anh ấy giải thích về loại sinh viên mà anh ấy muốn thuê:

“Nhiều sinh viên phần mềm tin rằng cuộc phỏng vấn kĩ thuật chỉ bao gồm viết mã nhưng đó là nhận thức sai. Vì họ tốt nghiệp từ Khoa học máy tính hay Kĩ nghệ phần mềm, họ phải có kĩ năng lập trình cho nên tôi ưa thích cho họ các vấn đề để giải quyết và quan sát cách họ làm nó. Phần lớn các sinh viên mong đợi rằng tôi sẽ cho họ yêu cầu rõ ràng nơi họ có thể viết mã cũng giống như phân công việc trong lớp nhưng điều đó là KHÔNG đơn giản như thế. Sự kiện là không phải mọi vấn đề đều được phát biểu rõ ràng và có nhiều cách để giải nó. Khi được cho một vấn đề, phần lớn sinh viên sẽ nhảy vào viết mã ngay thay vì để thời gian hiểu nó. Đó là một chỉ báo rằng họ là kiểu người sẽ “mã trước, hỏi câu hỏi sau” do đó, công việc của họ có thể có lỗi và cần nhiều kiểm thử. Sinh viên giỏi sẽ hỏi câu hỏi để làm rõ vấn đề cho tới khi họ hiểu đầy đủ nó và chỉ thế thì họ mới viết mã. Đây là loại người tôi muốn thuê.”

“Tuy nhiên đây là vấn đề chính với sinh viên quốc tế vì nhiều người không biết cách hỏi. Họ có thể có đủ tiếng Anh để học trong trường nhưng không có đủ để có đối thoại tốt. Một số người tới từ nền văn hoá không khuyến khích hỏi câu hỏi có thẩm quyền cho nên họ ngần ngại hỏi nhưng không hỏi trong cuộc phỏng vấn, họ vẽ nên hình ảnh thụ động thay vì kiểu tự dẫn lái. Điều đó rất tiêu cực vì họ có thể có kĩ năng kĩ thuật tốt đấy nhưng không có kĩ năng trao đổi. Ngày nay kĩ năng mềm là rất quan trọng vì kĩ năng kĩ thuật một mình là KHÔNG đủ. Đó là lí do tại sao nhiều sinh viên quốc tế bỏ lỡ cơ hội để được thuê vào các công ti hàng đầu vì họ thiếu kĩ năng trao đổi. Để tôi giải thích cho bạn về các sinh viên vội vàng viết mã mà không hiểu vấn đề. Trong thực tế, các yêu cầu thường không được phát biểu rõ và khách hàng thường đổi ý. Điều gì xảy ra khi yêu cầu thay đổi trong khi họ đang viết mã? Điều đó nghĩa là họ phải đổi mã của họ và đó là cách phần lớn các lỗi xảy ra. Họ càng đổi mã nhiều càng nhiều lỗi xuất hiện. Nó cũng có nghĩa là sinh viên biết cách viết mã nhưng KHÔNG biết cách giải quyết vấn đề. Ngày nay nhiều trường chỉ hội tụ vào viết mã nhưng KHÔNG vào giải quyết vấn đề. Mặc dầu viết mã là quan trọng nhưng có nhiều điều trong phát triển phần mềm hơn chỉ là viết mã. Một ứng cử viên được chuẩn bị biết cách hỏi câu hỏi trước khi thực hiện bất kì cái gì và đó là lí do tại sao họ được thuê.”

“Có những sinh viên biết về lí thuyết và thuật toán vì họ có thể ghi nhớ nhiều nhưng khi tới thực hành họ không thể làm gì được. Trong quá khứ, tôi đã phạm sai lầm bằng việc thuê những sinh viên như vậy. Các “sinh viên lí thuyết” này có trí nhớ tốt nhưng không có tri thức thực hành và không biết cách làm cho mọi thứ được làm. Nhiều người là nạn nhân của hệ thống giáo dục lỗi thời coi “ghi nhớ” là có giá trị nhưng KHÔNG có thực hành thực tế. Họ có thể làm tốt trong các kì thi bằng việc học nhồi nhét mọi sách vở và lí thuyết nhưng không thể thực hiện được cái gì. Đây là lí do tại sao phần lớn những người phỏng vấn bây giờ dựa trên “hiệu năng thực tại” thay vì phỏng vấn miệng các câu hỏi và trả lời.”

“Có yếu tố quan trọng khác mà chúng tôi coi là quan trọng: Làm việc tổ. Một sinh viên có thể là người lập trình giỏi nhất nhưng nếu anh ta không thể đóng góp được cho tổ, anh ta đánh mất phần lớn giá trị của mình. Chúng tôi KHÔNG muốn thuê “anh hùng” vì phần mềm là làm việc tổ, KHÔNG phải là công việc cá nhân. Người phát triển giỏi có thể hoàn thành công việc của anh ta nhưng nếu anh ta KHÔNG giúp cho những người còn lại của tổ thì dự án có thể thất bại. Người phát triển giỏi bao giờ cũng có liên lạc với mọi công việc đang diễn ra bên trong tổ, và sẵn sàng giúp đỡ khi được cần. Người phát triển giỏi nhận trách nhiệm cho công việc riêng của họ và làm cho các thành viên khác của tổ được tốt hơn bằng việc giúp họ và coi tổ của họ như một gia đình. Nhiều người phát triển ưa thích làm việc chỗ biệt lập và KHÔNG thích nói chuyện với những người khác. Họ sẽ không bao giờ đi xa trong nghề nghiệp của họ vì làm việc tổ và trao đổi là những kĩ năng quan trọng. Trong phỏng vấn, tôi sẽ hỏi họ về tổ của họ và cách họ hoà hợp với những người khác. Một số sinh viên nói điều xấu về tổ của họ hay về người nào đó trong tổ như “Cô ấy không đủ tốt” hay “Anh ta lười cho nên tôi phải làm hầu hết công việc.” Những bình luận tiêu cực này là thái độ kiêu căng và tôi không bao giờ thuê những sinh viên này. Nếu họ không thể nói được cái gì đó tích cực về tổ của họ, họ không phải là người chơi tốt theo tổ.”

“Một trong những yếu tố quan trọng nhất là thái độ học liên tục. Người phát triển giỏi thường xuyên học những điều mới vì họ khao khát tri thức mới. Trong phỏng vấn việc làm, tôi bao giờ cũng hỏi sinh viên các sách kĩ thuật gần đây nhất là gì mà họ đã đọc trong vài tháng qua. Dựa trên câu trả lời của họ, tôi có thể xác định liệu họ có là người đúng cho công ti của tôi hay không. Ngày nay sinh viên không đọc nhiều mà chỉ hội tụ vào điều họ được dạy ở trường và điều đó là KHÔNG đủ. Chúng ta đang sống trong một “thế giới được kết nối” và có nhiều công nghệ đang nổi lên có tác động vào xã hội của chúng ta. Khi tôi hỏi họ về những xu hướng mới như Big data hay tính toán mây, nhiều người nói rằng họ chưa bao giờ nghe nói về những điều như vậy. Nếu họ không đọc tốt và biết điều gì đang diễn ra trong công nghiệp, tôi sẽ không thuê họ.”

“Là công ti phần mềm lớn và thành công, chúng tôi thường tới thăm các đại học và kiểm điểm chương trình đào tạo của họ. Chúng tôi hỏi các giáo sư để gợi ý sinh viên có “tiềm năng cao” mà chúng tôi có thể thuê. Nếu sinh viên không có mối quan hệ tốt với các giáo sư hay tận dụng ưu thế các giờ trên văn phòng của giáo sư thì họ bỏ lỡ cơ hội này. Một số sinh viên tới trường nhưng không bao giờ nói với giáo sư của họ và vì các giáo sư không biết họ, họ không thể giới thiệu các sinh viên đó được. Chúng tôi thường theo dõi tiến bộ của sinh viên vài tháng hay thậm chí một năm trước khi họ tốt nghiệp để chắc rằng chúng tôi nhận diện sinh viên giỏi nhất để thuê. Chúng tôi đề nghị cung cấp cho họ việc thực tập để cho chúng tôi có thể quan sát họ. Chúng tôi cộng tác với các đại học bằng việc để họ biết loại kĩ năng nào chúng tôi cần trong ba tới năm năm và gợi ý rằng đại học cung cấp đào tạo trong các khu vực đó. Trong trao đổi chúng tôi thuê sinh viên của họ và cung cấp phản hồi cho đại học về hiệu năng của họ. Nếu sinh viên làm tốt, chúng tôi sẽ tiếp tục thuê nhiều sinh viên từ đại học đó. Đó là mô hình mối quan hệ công nghiệp-đại học và đó là lí do tại sao chúng tôi ưa thích thuê người tốt nghiệp từ những chương trình nào đó và trường nào đó.”

—English version—

Conversation with hiring manager – Part 2

Timothy is a hiring manager of a large software company, he explained about the kind of students that he wanted to hire:

“Many software students believe that a technical interview only involves writing code but that is a misconception. Since they graduate from Computer Science or Software Engineering, they must have programming skills so I prefer to give them problems to solve and observe how they do it. Most students expect that I would give them a clear requirement where they can code just like an assignment in class but that is NOT that simple. The fact is not all problems are clearly stated and there are many ways to solve it. When given a problem, most students would jump in coding right away rather than take time to understand it. It is an indication that they are the type of people who would “Code first, ask question later” therefore, their work might have defects and need more testing. Good students would ask questions to clarify the problem until they fully understand it and only then, they code. This is the kind of people that I would hire.”

“However this is a major problem with international students as many do not know how to ask. They may have just enough English to study in school but not enough to have a good conversation. Some come from a culture that do not encourage asking question of authority so they hesitate to ask but by not asking during the interview, they portrait an image of being passive rather than a self-driven type. That is very negative as they may have good technical skills but not communication skills. Today soft-skills are very important as technical skills alone are NOT enough. That is why many international students miss the opportunity to get hired into top companies because they lack of communication skills. Let me explain to you about students who hurry to write code without understand the problem. In reality, requirements are often not well stated and customers often change their minds. What happen when requirements are changing as they are coding? That means they have to change their codes and that is how most defects happen. The more they change their code the more errors happen. It also means students know how to code but do NOT know how to solve problem. Today many schools only focus on coding but NOT solving problem. Although coding is important but there are more in software development than just coding. A prepared candidate knows how to ask question before implement anything and that is why they get hired.”

“There are students who know about theories and algorithms as they can memorize a lot but when come to practice, they cannot do anything. In the past, I have made mistakes by hiring students like that. These “Theoretical students” have good memory but no practical knowledge and do not know how to get things done. Many are victims of an obsolete education system that values “memorization” but have NO actual practice. They may do well in exams by cramming all the books and theories but cannot implement anything. This is why most interviews are now based on “actual performance” rather than oral interview of questions and answers.”

“There is another important factor that we consider important: Teamwork. A student may be the best programmer but if he cannot contribute to the team, he is losing most of his value. We do NOT want to hire “Hero” as software is teamwork, NOT individual work. A good developer may finish his work but if he does NOT help the rest of the team then project may fail. A good developer is always in touch with all the works that are going on within the team, and is ready to help when needed. Good developers take responsibility for their own works and make other team members better by helping them and view their team like a family. Many developers prefer to work in isolation and do NOT like to talk with others. They will never go far in their career because teamwork and communication are important skills. During interview, I would ask them about their team and how they get along with others. Some students would say bad thing about their team or about certain person on the team such as “She is not good enough” or “He is lazy so I have to do most of the work” These negative comments reflect an arrogant attitude and I never hire these students. If they cannot say anything positive about their team, they are not a good team player.”

“One of the most important factors is the continuous learning attitude. Good developers constantly learn new things as they are thirsty for new knowledge. During the job interview, I always ask students what are the most recent technical books that they have read in the past few months. Based on their answers, I can determine whether they are the right person for our company or not. Today students do not read much but only focus on what they are taught in school and that is NOT enough. We are living in a “connected world” and there are so many emerging technologies that impact our society. When I ask them about new trends such as Big data or cloud computing, many said that they never heard of such things. If they do not read well and know what is going on in the industry, I would not hire them.”

“As a large and successful software company, we often visit universities and review their training curricula. We ask professors to suggest “high potential” student that we could hire. If students do not have good relationship with professors or take advantage of professors’ office hours then they miss the chance. Some students go to school but never talk to their professors and as the professors do not know them, they cannot recommend them. We often follow students’ progress several months or even a year before they graduate to make sure that we identify the best students to hire. We offer them internships so we can observe them. We collaborate with universities by let them know what kind of skills that we need in the next three to five years and suggest that universities provide training in those areas. In exchange we hire their students and provide feedback to the university on their performance. If students are doing well, we will continue to hire more students from that university. That is our industry-university relationship model and that is why we prefer to hire graduates from certain programs and certain schools.”