Như thế nào thì gọi là kỹ sư phần mềm giỏi?

Hôm nay mình muốn trình bày quan điểm cá nhân về việc như nào thì gọi là kỹ sư giỏi.

Đây là những điều mình rút ra được trong quá trình đi làm, qua những trải nghiệm khi làm kỹ sư & manager, qua những kỹ sư giỏi mà mình biết. Nó có thể không đúng hoàn toàn nhưng cũng phần nào phản ánh được thị trường lao động hiện tại. Những ví dụ mình đưa ra hơi thiên về mobile một tí nhưng thực ra cũng áp dụng được cho nhiều lĩnh vực phần mềm khác (backend, full-stack, data engineer, …).

Sau đây là những yếu tố mà mình nghĩ sẽ làm nên một kỹ sư giỏi:

1/ Khả năng tự học:

Kỹ sư giỏi có kiến thức nền vững chắc nên học công nghệ mới rất nhanh. Hôm nay có thể chưa biết, nhưng ngày mai hoặc tuần sau là đã nắm rõ cách làm rồi. Họ luôn tìm tòi những cái mới để học.

Kỹ sư giỏi có thể đọc và hiểu code dự án rất nhanh. Khi được giao cho một tác vụ, họ biết phải phải viết code ở file nào, dùng những kỹ thuật có sẵn nào, thay vì lúc nào cũng viết lại cái mới (sáng chế lại cái bánh xe).

2/ Kỹ năng giải quyết vấn đề:

Kỹ sư giỏi có thể giải quyết được vấn đề khó.

Vấn đề khó là vấn đề có nhiều ẩn số, nhiều điều chưa chắn chắn, không có một đáp án cụ thể, cần phải nghiên cứu và thử nghiệm nhiều hướng tiếp cận. Ví dụ: tìm cách cải thiện tốc độ compile của dự án, cách sửa những test không ổn định, cách tìm những chỗ rò rỉ bộ nhớ, …

Vấn đề dễ là những cái nhìn vào ai cũng biết làm, chỉ là khối lượng công việc nó nhiều thôi. Ví dụ: code giao diện, code network khi đã có api contract đầy đủ, …

Kỹ sư giỏi có thể thiết kế được giải pháp từ đầu đến cuối, từ việc xác định api contract với backend tới việc làm sao để tương thích ngược với các phiên bản cũ, rồi làm sao QA test cho hiệu quả, làm sao thoả mãn được yêu cầu release của bên Product Manager … Họ biết cân nhắc những đánh đổi (tradeoff) về nhiều mặt và cho nhiều team.

3/ Năng suất làm việc:

Năng suất được đánh giá qua khối lượng và chất lượng code.

Trong cùng một khoảng thời gian, kỹ sư giỏi làm được rất nhiều tính năng, hoặc làm xong một tính năng rất lớn. Ngoài ra, còn giúp sửa bug đó đây.

Kỹ sư giỏi code gọn gàng ngăn nắp, có unit/UI test đầy đủ, những chỗ khó hiểu đều có comment, những hàm public đều có ghi documentation, khi QA test thì rất ít bug, khi release thì tính năng chạy mượt mà, không có vấn đều gì nghiêm trọng.

4/ Kỹ năng giao tiếp:

Kỹ sư giỏi biết trình bày một vấn đề kỹ thuật cho team hiểu, cho những người không chuyên kỹ thuật cũng hiểu.

Khi họ cần gì ở người khác, họ biết nói sao cho người đó chịu hợp tác.

Khi nhiều người đặt câu hỏi, họ biết trả lời sao cho hợp lý tuỳ vào người hỏi là ai.

Khi muốn đề xuất một ý tưởng mới, họ biết cách thuyết phục người khác.

Khi tranh luận, họ tôn trọng người kia và nói chuyện lý lẽ, thay vì xúc phạm nhau.

Trong các buổi họp, họ biết mục tiêu của buổi họp là gì và cố gắng lái cuộc nói chuyện theo hướng đó.

5/ Tầm ảnh hưởng:

Kỹ sư giỏi không những chỉ làm bổn phận của mình mà còn giúp đỡ nhiều người khác nữa.

Họ kèm cặp những kỹ sư mới vào.

Họ code review rất tích cực và đưa ra những góp ý có ích.

Họ là người đưa ra nhiều ý tưởng để cải thiện dự án, thuyết phục mọi người, biến ý tưởng thành hiện thực, đem lại kết quả tốt cho cả team.

Họ chia sẻ kiến thức với mọi người trong team thông qua các buổi thuyết trình hoặc các buổi họp.

Họ chia sẻ kiến thức với cả công ty thông qua các buổi tech talk.

Họ đại diện công ty đi thuyết trình ở các buổi hội thảo lớn.

Họ viết blog để chia sẻ kiến thức cho cả cộng đồng lập trình.

Họ là tấm gương mà nhiều kỹ sư trong team muốn noi theo. Họ là chất xúc tác giúp tăng năng suất cho cả team.

Tóm lại

Kỹ sư giỏi là người tạo ra giá trị rất lớn cho dự án, cho đồng nghiệp trong team, cho công ty, và thậm chí là cho cả một cộng đồng kỹ sư.

Họ là nhân tố kích thích mọi thứ phát triển.

Họ là những người sẽ thay đổi thế giới.

Mình muốn được như họ :)

Đăng ký theo dõi blog

Nếu bạn cảm thấy blog mình có ích thì hãy đăng ký theo dõi để nhận email thông báo khi có bài viết mới nhé.

Các bài liên quan

Kỹ sư phần mềm thì cần những kỹ năng tiếng Anh nào?

Con đường sự nghiệp của một kỹ sư phần mềm