Bài viết này được mình dịch lại hoàn toàn từ một bài trên Medium của tác giả, không chỉnh sửa gì vì nội dung rất thực tế và sâu sắc. Đây cũng là câu chuyện mà chính mình và nhiều bạn bè từng trải qua, chỉ là ít ai nói ra. Ở cuối bài mình sẽ để link nguồn để mọi người tiện tham khảo thêm.
1. Mở đầu câu chuyện
Một người bạn của mình vừa gia nhập một công ty FAANG với vai trò engineering manager và cũng trở thành người chịu trách nhiệm tuyển dụng lập trình viên.
Bạn ấy ngỏ ý muốn mình gia nhập công ty vì thế bọn mình đã nói chuyện với nhau. Và mình đã trả lời là:
- Mình không chắc là sẽ vượt qua được các vòng phỏng vấn, nhưng dĩ nhiên mình rất muốn làm việc cùng bạn! Để mình suy nghĩ nhé.
- X và Y cũng nói y như vậy đó, bạn mình trả lời, ám chỉ những lập trình viên khác mà chúng mình đã từng cùng làm việc chung. Họ đều cho rằng mình không đủ trình.
Mình gật đầu đồng cảm, nhưng trong đầu cũng hơi lăn tăn. Những người mà bạn nhắc đến đều là senior engineer thực thụ, giỏi giao tiếp, hợp tác tốt và giải quyết bài toán kỹ thuật rất ổn. Chúng mình đều biết năng lực của nhau, vì đã cùng làm việc cùng nhau gần hai năm trời. Nhưng liệu họ có vượt qua được vòng phỏng vấn của công ty FAANG kia không?
- Theo mình, bạn nên luyện tập trước một chút. Đi phỏng vấn thử tại vài công ty khác, đừng apply vào liền, bạn mình khuyên như thế.
Tại sao các lập trình viên giàu kinh nghiệm lại trượt phỏng vấn coding? Sau đây là một vài suy nghĩ của mình.
2. Lập trình viên giàu kinh nghiệm đã không ứng tuyển
Nhiều lập trình viên kinh nghiệm dù rất quan tâm đến một công ty vẫn chẳng bao giờ gửi đơn ứng tuyển — đây là lý do phổ biến nhất khiến họ bỏ lỡ cơ hội công việc mới.
Các vòng coding challenge thực sự khó nhằn, mỗi công ty lại có quy trình phỏng vấn hơi khác nhau. Để ứng tuyển, bạn phải đầu tư đáng kể cho việc chuẩn bị, từ:
- Cập nhật lại CV/resume
- Ôn luyện lại data structures và algorithms để sẵn sàng cho coding challenge
- Chuẩn bị cho vòng phỏng vấn system design
- Tìm hiểu về công ty, sản phẩm để thể hiện sự quan tâm
- Dành hàng giờ làm assignment tại nhà (dù không phải công ty nào cũng yêu cầu, nhiều nơi cho lựa chọn giữa assignment và live coding)
- Nghĩ sẵn những câu chuyện ứng xử (dạng STAR) cho vòng phỏng vấn hành vi nhằm đánh giá bạn là đồng đội thế nào, có hợp “culture” không
Chính việc phải chuẩn bị kỹ lưỡng này thường khiến nhiều người cảm thấy choáng ngợp. “Mình chưa sẵn sàng đâu,” đó là suy nghĩ thường gặp, nhất là khi không còn thời gian nào để cày lại Leetcode giữa bộn bề công việc và cuộc sống cá nhân. Đâu phải ai cũng háo hức dành vài tiếng mỗi tối, suốt nhiều tuần, để ôn lại các kiến thức ngày xưa còn tươi mới trong đầu sinh viên IT mới ra trường.
Không riêng gì thiếu thời gian chuẩn bị, nỗi sợ thất bại cũng khiến nhiều lập trình viên kinh nghiệm ngại nộp đơn. Nhiều người nghĩ: “Chắc mình không đủ giỏi để vào Google đâu,” kể cả khi thực tế họ rất có năng lực.
Đôi khi, nỗi sợ bị đánh giá bởi một hội đồng toàn những người giàu kinh nghiệm cũng khiến người ta chùn bước. “Mình không có thời gian chuẩn bị kỹ, cũng không muốn trông lố bịch trước mặt mọi người,” họ nghĩ.
Thực tế, với nhiều lập trình viên kỳ cựu, họ thường đã ổn định, được công nhận tại công ty hiện tại và đã bước lên vị trí cao hơn. Nếu chẳng may trượt ngay vòng đầu tiên của một công ty lớn chỉ vì gặp bài toán lạ, đối mặt với interviewer khó tính, hoặc đơn giản là chưa đủ thời gian ôn tập — đó thực sự là điều khó chấp nhận về tâm lý.
Chuyện này xảy ra thường xuyên, kể cả với người được đồng nghiệp cũ hoặc quản lý giới thiệu, bảo chứng về năng lực.
Nhưng đó là “luật chơi”, nếu không vượt qua các vòng đầu (gặp recruiter, manager, coding challenge), bạn không vào được vòng onsite kéo dài 4-6 tiếng, code liên tục, làm system design và bài kiểm tra hành vi.
Chính cảm giác ngại bị đánh giá, cùng nỗi lo thất bại vì không phải không thực sự có năng lực, khiến không ít lập trình viên giàu kinh nghiệm quyết định... không nộp đơn từ đầu.
3. Các vòng phỏng vấn mang tính chủ quan
Thật đáng tiếc, thiên kiến cá nhân là điều không thể tránh khỏi trong quá trình tuyển dụng. Mình thật sự ngạc nhiên khi nhiều công ty, kể cả những “ông lớn”, lại chuẩn bị rất sơ sài cho các interviewer.
Thường thì interviewer chỉ lướt qua CV một chút rồi đã có sẵn ấn tượng ban đầu về ứng viên – dù muốn hay không. Thậm chí, dù được yêu cầu tuân theo bộ câu hỏi chuẩn, mỗi interviewer lại vẫn có quyền tự chọn mức độ khó cho câu hỏi – đôi khi họ chọn nhẹ nhàng, đôi khi lại quá “khó nhằn”. Vì vậy, việc bạn có qua được vòng này hay không đôi khi còn tùy vào sự may mắn.
Quan trọng hơn, phong cách chấm điểm của từng interviewer cũng rất khác nhau. Có người sẵn sàng gợi ý hoặc tạo không khí “dễ thở”, có người thì ngược lại, khó tính và sẵn sàng loại bạn chỉ vì một lỗi nhỏ do hồi hộp. Đôi lúc, những yếu tố hoàn toàn bên lề như một ngày tâm trạng không tốt, gặp trở ngại trong giao tiếp (chẳng hạn accent khó nghe), cũng có thể ảnh hưởng đến kết quả.
Mình từng chứng kiến tính “random” của hệ thống phỏng vấn: Có người bạn nhận được offer vị trí Senior hay Staff với tổng package trên 400.000 USD ở một số công ty lớn, nhưng lại bị loại ngay từ vòng đầu (hoặc vòng cuối) ở một “ông lớn” khác – chỉ vì gặp interviewer quá khó hoặc rơi trúng câu hỏi khó. Điều đáng nói là sau khi bị loại, đôi khi họ phải chờ đến 6 tháng, thậm chí cả năm mới có thể nộp đơn lại.
Liệu có phải họ bị đánh giá quá khắt khe? Có thể. Hoặc đơn giản chỉ là không hợp câu hỏi, ứng viên quá căng thẳng, hoặc bị ảnh hưởng bởi nhiều yếu tố chủ quan khác. Chỉ cần một chút thiếu may mắn, mọi nỗ lực cũng có thể kết thúc bằng một lời từ chối.
4. Vì sao mình vẫn khuyên lập trình viên có kinh nghiệm nên nộp hồ sơ
Chuyển việc gần như là cách nhanh nhất và thực tế nhất để tăng lương nhanh chóng. Thực tế, nhiều người ở một công ty lâu năm, dù có được tăng chức, vẫn thường bị trả thấp hơn so với những người mới vào cùng vị trí — bởi người mới dễ đàm phán được mức lương cao hơn nhờ có nhiều lựa chọn ngoài thị trường, hoặc đơn giản là mặt bằng lương đã tăng lên.
Có lần mình apply thử vào một vài công ty, nghĩ chắc dễ thôi — ai ngờ lại khó ngoài dự đoán. Ngược lại với một số công ty lớn mình nghĩ là khá khó, rồi cuối cùng lại được offer.
Tóm lại, chuyện đậu hay trượt đôi khi bạn không thể tự dự đoán được. Nhưng càng đi phỏng vấn nhiều, mình càng nhận ra bản thân tiến bộ hơn theo từng vòng. Có lẽ điều quan trọng nhất là cứ chủ động bước ra khỏi vùng an toàn.
Mình không khuyên bạn cứ liên tục nhảy việc hay rải CV, vì quá trình này thực sự căng thẳng và tốn sức. Tuy nhiên, nếu bạn là lập trình viên đã làm lâu ở một công ty và đang suy nghĩ đến chuyện chuyển việc vì bất kỳ lý do gì — mình thật sự khuyến khích bạn cứ mạnh dạn apply nhé
Nguồn: Medium