Chia sẻ kiến thức lập trình, kĩ năng mềm từ góc nhìn của một Engineer

Phỏng vấn dạo kĩ sư phần mềm 2023

Sau cái bài chia sẻ kinh nghiệm đi phỏng vấn mình viết đầu tiên trên trang này đó là Câu chuyện phỏng vấn online mùa Covid rơi vào đợt tầm 2021, quãng thời gian dịch covid cũng đang khá là gay gắt, sau đó độ tầm giữa năm 2022 mình cũng có đi phỏng vấn dạo tiếp nhưng quên không ghi chép lại gì, hơn nữa đợt đó tình hình tuyển dụng cũng đang còn sôi động nên là mình có lịch phỏng vấn liên tục, và cũng pass liên tục nên không có thời gian viết lách gì cả.

Còn năm nay thì do ảnh hưởng kinh tế thế giới, nhiều công ty công nghệ trên thế giới layoff nhiều, điển hình là những công ty FAANG (Facebook, Amazon, Apple, Netflix, Google), và nhiều công ty khác nữa họ liên tục có những thông báo layoff đội ngũ kĩ sư phần mềm để tái cơ cấu lại đội ngũ và cân bằng tài chính.

Ở Việt Nam thì tình hình cũng không khá khẩm hơn là bao, một số cũng ty cũng bắt đầu có những chính sách cắt giảm nhân sự, thiết lập lại Headcount , Layoff một số phòng ban hoạt động không hiệu quả, hoặc khi hết hạn hợp đồng thì không còn gia hạn đối với các thành viên mới vào hoặc Fresher.

trên một diễn đàn nọ người ta bàn tán khá xôn xao từ đầu năm 2023

Tạm gác lại chuyện tình hình thị trường tuyển dụng ảm đạm thì mình sẽ đi vào nội dung chính, đó là mình mới đi phỏng vấn kĩ sư phần mềm ở một vài công ty, cảm xúc vui buồn lẫn lộn đều có và hoàn toàn là chia sẻ, đánh giá từ quan điểm cá nhân của bản thân mình.

Công ty A – Ngày phỏng vấn 16/03/2023

Đây là công ty đầu tiên của năm 2023 mà mình phỏng vấn, mặc dù không phải là theo kế hoạch cho lắm (thường thì sẽ là tháng 7, tháng 8 hằng năm) nhưng mà đây là công ty do sếp ở công ty cũ mình refer nên mình đồng ý phỏng vấn.

Công ty này được thành lập bởi sếp của hai ngân hàng khá to, có một số core product cho ngân hàng, tài chính, ngoài ra còn làm thêm một số dự án outsource cho các đối tác là ngân hàng khác.

Lúc đến công ty này thì mình thấy văn phòng hơi bé, đang ngồi ké khu vực của ngân hàng nên khá ít phòng và chưa được riêng tư lắm, tương lai có chuyển chỗ mới hay không thì mình cũng không chắc, nghe ngóng mọi người ở đó thì bảo là sắp chuyển sang văn phòng mới.

Buổi trao đổi có mình, 1 anh CTO và một bạn HR ngồi nghe với ghi chép gì gì đó. Cũng như format của rất nhiều buổi phỏng vấn khác thì đều là giới thiệu bản thân, quá trình công tác rồi sau đó đi vào hỏi một số câu hỏi chi tiết hơn.

Anh CTO hỏi kĩ về trách nhiệm công việc cũng như những dự án mình làm ở Công ty hiện tại, tương tác giữa các service trong hệ thống, security của sản phẩm.

Sau đấy thì quay sang hỏi về flow nghiệp vụ thanh toán hóa đơn trên ví điện tử, luồng từ đầu tới cuối ra sao, luồng xử lý, bản thân implement những khâu nào.

Tiếp đó thì hỏi mình từng xây dựng hệ thống tải cao nào chưa? mình bảo đã từng xây dựng rồi, lượng partner tích hợp vào hệ thống tuy không nhiều nhưng traffic của đối tác đi vào thì khá là lớn. Xong rồi hỏi kĩ mình về nghiệp vụ rồi là cách thức triển khai, cách xử lý khi gặp các vấn đề trong thời gian triển khai thực tế.

Sau đó thì hỏi sang kiến trúc microservices ở những công ty mình từng làm, sau khi mình trả lời xong thì cả anh ấy với mình đều chung quan điểm là kiến trúc ở công ty hiện tại của mình là khá chuẩn chỉnh và đầy đủ.

Anh ấy có hỏi mình một vài cách xử lý tình huống khi gặp lỗi mà không log, cách truy tìm nguyên nhân, cách tracing nguồn gốc vấn đề. Xong rồi hỏi mình nếu build hệ thống theo kiến trúc có sẵn chỉ bao gồm 2 phần work-flow và gRPC tương tác với nhau và chỉ implement thì cần bao lâu sẽ xong?

Nghe xong câu này mình thấy khá mông lung, mông lung không phải vì nó khó mà bởi vì đơn giản nó còn tùy thuộc vào nhiều thứ nữa: scope dự án, bao nhiêu module, bao nhiêu tính năng, rồi là chất lượng sản phẩm, rồi về mặt performance, scale khi tải cao.

Mình thấy một bài toán cần có rất nhiều dữ kiện thì mới có thể đánh giá và khi đã rõ những thứ cần làm thì lúc đó mới có thể estimate một cách chính xác nhất được. Một bài toán mơ hồ thì chỉ nhận lại được những câu trả lời mơ hồ và lúc đó lại khổ mấy ông Engineer mà thôi.

Vì mình phỏng vấn Technical Lead nên là anh ấy hỏi mình từng lead team chưa, mình bảo từng lead team rồi nhưng team size không đông lắm, nhưng mà chuyên môn của member thì đều thuộc dạng chắc và sâu ở một mảng nhất định như: Backend, Frontend, Mobile,…

Sau đó thì mình có hỏi một số câu hỏi về cấu trúc phòng ban của công ty, rồi là các team hiện tại đang chia như nào, tương tác làm việc ra sao, trách nhiệm của mỗi bộ phận, rồi là quy trình khi làm dự án, có tuân theo mô hình nào không.

Buổi trao đổi với anh CTO mình thấy rất thoải mái và hợp nói chuyện, mình thấy thường nói chuyện với các anh lớn thì người ta tập trung vào những thứ mình đã làm được, những thứ mình đề cập trong CV từ đó khai thác ra câu hỏi và tìm ra lợi thế của ứng viên, chứ chẳng ai lại đi search google rồi tìm câu hỏi rồi bắt bẻ từng câu từng chữ như một vài công ty (mình không tiện nói tên).

Chỉ có một điều nhỏ mình chưa hài lòng lắm đó là: CV của mình viết khá chi tiết và đầy đủ, từ trách nhiệm công việc tại các công ty, những kĩ năng sở hữu, cộng thêm những dự án tham gia và mô tả dự án cực kì chi tiết và dễ hiểu nhưng mà anh ấy vẫn giở qua giở lại giống kiểu chưa hề đọc tí nào. Nhưng mà mình cũng không nghĩ ngợi gì nhiều cho lắm, buổi nói chuyện đã diễn ra suôn sẻ nên là mình cũng phiên phiến đi thôi.

Công ty B – Ngày phỏng vấn 28/03/2023

Đây là một công ty làm việc trong lĩnh vực FinTech, sản phẩm của họ là một con ví điện tử cũng khá là xịn xò, hệ sinh thái rộng cộng thêm UDA và Merchant cũng vào dạng top ở Việt Nam.

Buổi phỏng vấn thì có mình, 1 anh Trưởng trung tâm kĩ thuật(mình gọi tắt là anh H) và bạn HR ngồi nghe, ghi ghi chép chép.

Anh H hỏi xoay quanh những dự án mình đã làm, sự đóng góp chính trong từng dự án, xong rồi bảo mình chia sẻ kiến trúc Microservices ở công ty hiện tại, để xem mình hiểu và implement được đến đâu.

Sau đó thì anh H đào sâu thêm một vài khía cạnh mà mình chia sẻ về Architecture ở trên, rồi hai anh em tiếp tục debate với nhau, cũng khá là dữ dội, xong rồi hỏi sang một vài câu thuần Tech: tuần tự message trong Kafka, một vài câu CI/CD, rồi công việc chính hằng ngày của mình là làm những gì.

Phần trao đổi chính là đã nói hết ở trước rồi nên khúc cuối một số câu hỏi thuần tech thì mình không thấy có vấn đề gì lắm, chủ yếu của buổi trao đổi là về tư duy giải quyết vấn đề, mindset làm product,…

Mình có hỏi một vài câu về dự án công ty đang triển khai, tình hình đội ngũ, team phát triển theo mô hình và quy trình làm việc ra sao, rồi là nếu mình vào team thì phạm vi trách nhiệm như thế nào thì cũng được anh H chia sẻ khá là cởi mở, anh H có đề xuất nếu mình join team thì có thể triển khai kiến trúc mà mình đã chia sẻ từ đầu buổi.

Cuối buổi bạn HR có hỏi một vài câu liên quan mức lương hiện tại, mức lương expect các thứ, mình bảo là mình không muốn chia sẻ mức lương hiện tại vì nó bảo mật, còn mức lương expect thì mình muốn trao đổi sau buổi phỏng vấn nếu hai bên có cơ hội hợp tác với nhau.

Theo quan điểm cá nhân thì mình thấy trả lời như vậy là hợp lý, còn sau khi trả lời như vậy rồi mà HR nào vẫn cố muốn hỏi mức lương expect hay là mức lương hiện tại thì quan điểm của mình thì vẫn là không chia sẻ trong buổi phỏng vấn, vậy thôi.

Mình cảm nhận buổi phỏng vấn diễn ra khá thoải mái, buổi nói chuyện suôn sẻ và khá là cùng tần số với nhau, chắc bởi vì anh phỏng vấn mình rất biết cách lắng nghe tích cực.

Công ty C – Ngày phỏng vấn 06/04/2023

Công ty này là một tập đoàn lớn trong lĩnh vực ngân hàng, thuộc hàng top các ngân hàng tại Việt Nam, tuy nhiên thì trải nghiệm phỏng vấn của mình tại đây không được vui cho lắm.

Lúc đến phỏng vấn mình thấy có tận 4 anh trong phòng đợi sẵn, với 1 anh HR nữa, 4 người kia mình không hề biết tên và họ cũng không hề giới thiệu tên hay gì cả.

Không biết tên nên là mình sẽ đánh thứ tự người phỏng vấn từ trái qua phải

Sau khi mình giới thiệu sơ bộ về bản thân, quá trình công tác rồi là những thứ đã làm thì có anh B lên tiếng hỏi là mình có biết xây dựng dự án từ đầu đến cuối không? sau khi nghe xong câu này thì mình chắc chắn là anh B chưa hề đọc CV của mình.

Mình có bảo là nếu anh đã từng đọc CV của em thì anh có thể thấy, đa số các dự án em tham gia thì em đều xây dựng từ đầu, từ nghiên cứu tính khả thi, design SAD, design DB, implement code logic, deploy, turning performance... cho tới những công đoạn về sau của sản phẩm: fixbug, tối ưu trải nghiệm người dùng, hỗ trợ vận hành.

Tiếp tục, anh B hỏi mình có biết tối ưu sql không, khi phải join nhiều bảng để lấy được dữ liệu thì làm thế nào, mình bảo là nên chỉ join tối đa không quá 3 bảng, nếu trên 3 bảng thì handle lại bằng code logic hoặc xem lại cách design database.

Rồi là khi nào thì nên đánh index và đánh index như thế nào, khi nào thì không đạt được Index, oke phần này mình thấy không có vấn đề gì lắm.

Việc đánh index cũng cần phải có kĩ thuật, vì sẽ có nhiều trường hợp đánh index xong rồi viết query nhưng Index không được sử dụng, nên việc biết các kĩ thuật và cách viết sql chuẩn là rất cần thiết:

  • Nên đánh index trên những trường có độ phân biệt cao, độ phân biệt càng unique càng tốt, không nên đánh vào những trường kiểu như là giới tính nhé (vì độ phân biệt rất thấp)
  • Thay vì đánh quá nhiều index riêng lẻ thì nên tạo một cụm index gồm những field cần thiết
  • Đảm bảo những trường khi join bảng được đánh index
  • Đảm bảo những trường trong điều kiện where được sử dụng index, tuy nhiên chỗ này cũng cần cân nhắc lại với ý đầu tiên (không phải trường nào cũng đánh index)
  • Sử dụng Explain để xem kế hoạch thực thi câu sql, index được sử dụng, rồi là type của kết quả trả về: nó có nhiều type, mỗi type thể hiện một mức độ tối ưu khác nhau, từ đó sẽ có phương án thích hợp để điều chỉnh câu sql.

Tiếp tới anh C hỏi là mức lương hiện tại của mình là bao nhiêu, và mức lương expect là bao nhiêu, đoạn này mình thấy hơi sai sai rồi này, vì đang phỏng vấn chuyên môn mà ai lại đi hỏi câu này làm gì ta, cảm thấy cũng hơi khó hiểu, nguyên văn đoạn phỏng vấn mình mô tả như bên dưới:

*anh C: Em có thể chia sẻ mức lương hiện tại của em và mức lương em mong muốn được không?

*tui: mức lương hiện tại thì em không chia sẻ được, còn mức lương mong muốn thì em nghĩ sẽ trao đổi lại với nhân sự sau buổi phỏng vấn, nếu hai bên có cơ hội hợp tác với nhau.

*anh C: bên anh muốn biết mức lương em expect, em định vị được em ở vị trí thế nào để bên anh đưa câu hỏi cho phù hợp, không muốn phải đưa câu hỏi dễ quá, hoặc khó quá mất thời gian.

*tui: ở công ty hiện tại thì em là Senior Backend, và em cũng có trao đổi với anh nhân sự là em apply vào vị trí Senior Backend hoặc Tech Lead bên mình, thế nên anh có câu hỏi gì thì anh cứ hỏi, em sẽ trả lời.

*anh C: Ok thế em vẫn chốt là em không chia sẻ mức lương em expect phải không nhỉ?

*tui: vâng a

Tới khúc này mình vẫn cứng rắn giữ vững quan điểm, mình không có lý do gì để chia sẻ hai cái vấn đề nhạy cảm đấy cả, với cả là ở góc độ cá nhân mình thấy người phỏng vấn không nên dựa vào cái đó để mà đưa ra câu hỏi, khá là không hay.

Sau đó thì anh C cũng không hỏi gì về những dự án mình đã làm cả, chỉ hỏi mình đã làm với microservices nhiều chưa rồi bảo là anh có một bài toán thế này:có một cơ sở dữ liệu lưu trữ 1M email, xây dựng hệ thống gửi tin nhắn đến những cái email đó, gửi xong thì thôi.

Ok, sau khi mình lấy thêm những input còn thiếu thì xin thêm require chi tiết về cách gửi rồi mới tới khúc design, design xong về thiết kế, cách implement, công nghệ sử dụng, rồi là cách tối ưu khi scale lên, rồi là cách tối ưu để đạt được performance cao thì anh C này tập trung hỏi từng khúc từng khúc một.

Mình cũng kiên nhẫn trả lời từng khúc một vậy thôi, tranh cãi cũng khá là gay gắt. Lúc sau thì từ cách hỏi của anh C này mà mình nhận ra là anh ấy đưa thiếu đề bài, sau đó thì mình có bảo lại là thay vì hứng tất cả các yêu cầu rồi write DB trực tiếp thì cứ để đẩy request vào queue thôi, sau đấy thì xử lý async việc ghi xuống DB và đồng thời có thể đồng bộ lên một con search engine nào đó phục vụ cho việc search sau này. Lúc đấy thì tranh cãi mới dừng và anh này thừa nhận như thế là hợp lý.

Rồi đến lượt mình hỏi một vài câu liên quan đến dự án, đội nhóm, cách thức làm việc hiện tại của bên công ty này, nói chung anh C cũng trả lời kiểu qua loa đại khái, mình cũng biết tạm thế, không quan tâm nhiều làm gì.

Sau đấy thì anh HR có hỏi mình là lý do chính khiến mình đi phỏng vấn là gì, thì mình có bảo việc đi phỏng vấn dạo là tốt, vừa đi dạo thị trường tuyển dụng, vừa để đánh giá lại bản thân đang ở mức nào, còn thiếu sót gì, cần cập nhật thêm những kĩ năng nào để còn điều chỉnh quá trình tự học của bản thân lên, như thế theo quan điểm cá nhân của mình thì điều đó rất tốt.

Tới khúc này thì anh HR hỏi thêm một vài câu mà mình cảm thấy không được tôn trọng cho lắm, hỏi mấy câu hỏi kiểu em tìm kiếm điều gì ở một công ty, rồi là như tuổi của em thì có thể bay nhảy khắp nơi nhưng đến một độ tuổi nhất định như anh thì không còn muốn nhảy nhót đi đâu nữa, rồi hỏi đánh giá công ty hiện tại được mấy điểm, tới khúc này thì mình đang phân tích từng ý một và chưa trả lời xong thì anh này đã bắt bẻ từng câu từng chữ và sau đó thì bảo là: thôi được rồi, anh hiểu rồi, em còn câu hỏi gì không?

Sau khi phỏng vấn xong công ty này thì mình cảm thấy thực sự không được tôn trọng cho lắm, nhân sự không thực sự biết lắng nghe mà chỉ kiểu thích trên cơ người khác, một cảm giác rất là không vui, nhưng đành chịu thôi chứ biết sao giờ, gặp phải những điều tiêu cực thì mình lại đi tìm kiếm những điều khác làm mình tích cực hơn thôi. Cũng không thể trách người ta được, trách mình nhìn sai công ty để đi phỏng vấn thôi mà.

Sau khi phỏng vấn xong công ty C thì mình thấy chỉ lóe lên một vài điểm sáng là những câu hỏi về kĩ thuật thôi còn lại thì khá là nhiều điểm trừ như bên dưới:

  • người phỏng vấn không hề hỏi bất kì 1 câu nào về những dự án đã làm, cũng như những kinh nghiệm trong quá khứ được đề cập trong CV.
  • người phỏng vấn không hề đọc trước CV của ứng viên, nếu không đọc thì lấy CV ứng viên để làm gì ta?
  • người phỏng vấn không thực sự biết lắng nghe tích cực, mình thấy họ chỉ biết lắng nghe được cấp độ 1 mà thôi.
  • người phỏng vấn không tôn trọng ứng viên, và đây là lần đầu tiên mình gặp kiểu như thế, trước giờ mình phỏng vấn thì gặp toàn người khá là nice, có lẽ đây là trải nghiệm đầu tiên.

Kết luận

Nói chung quan điểm của mình về việc đi phỏng vấn dạo khá đơn giản:

  • Đi phỏng vấn giúp nâng cao kĩ năng đàm phán, trao đổi với nhà tuyển dụng, hơn nữa có thêm góc nhìn để sau này có phỏng vấn lại người khác thì có thể đặt bản thân vào vị trí của ứng viên mà đưa câu hỏi cho phù hợp.
  • Phỏng vấn dạo giúp mình ôn lại những kiến thức còn thiếu sót, đồng thời biết thêm được những Tech Stack khác ở những công ty khác nhau và họ dùng Tech Stack đó cho những Use Case nào.
  • Có thêm trải nghiệm, gia tăng cơ hội nhận được những offer tốt, những vị trí/vai trò hợp lý.

Hơn nữa, theo mình thì bản chất của việc đi phỏng vấn là cả hai bên có thể tìm được những người đồng nghiệp tốt của nhau:

  • Đối với ứng viên thì là tìm được môi trường ổn, đồng nghiệp tốt, sếp giỏi, có lộ trình thăng tiến rõ ràng.
  • Còn đối với nhà tuyển dụng thì tìm được người giỏi, ứng viên tiềm năng, đồng nghiệp tốt để cùng về gánh vác đưa công ty đi lên.

Về tình hình hiện tại thì thị trường tuyển dụng công nghệ thông tin cũng khá ảm đạm, nhiều công ty điều chỉnh lại headcount của các phòng ban, cũng như là không còn kế hoạch tuyển dụng mới.

Song song với đó thì bản thân mình thấy ai có năng lực và muốn chuyển việc thì vẫn cứ chuyển, ai lựa chọn tiếp tục ở lại thì vẫn ở lại cống hiến, Job thì vẫn có đều đều chỉ là ít hơn hẳn so với 1 2 năm trước đây thôi.

Ở thời điểm này thì việc quan trọng nhất cho tất cả các bạn từ Fresher cho tới Senior thì đều là tiếp tục nâng cao kĩ năng chuyên môn, kinh nghiệm làm việc, kĩ năng mềm và chờ đợi cơ hội mới để bung lụa thôi, không có gì đáng phải lo ngại cả.

Xem thêm một số bài viết nổi bật:

2 Comments

  1. Quang

    Cảm ơn anh đã chia sẻ

  2. Lãm

    Bài viết hay quá ạ, cám ơn anh đã chia sẻ.

© 2024 Cafeincode

Theme by Anders NorenUp ↑