Từ Coder đến Developer: Đường đua Marathon trong sự nghiệp lập trình viên

Đăng bởi Android Vietnam | 27-04-2022

“It’s not only your job. It’s your style”.

Hãy nhớ lại lúc bạn là sinh viên Công nghệ thông tin, bạn có bao giờ kỳ vọng về một mức lương khởi điểm ngàn đô như truyền thông vẫn ca ngợi, kỳ vọng về một tương lai màu hồng mà bố mẹ vẫn tự hào. Để rồi khi những ồn ào đã lắng xuống, thì những câu hỏi lại vang lên: Ở tuổi hai mươi ba, bạn đã làm được gì rồi và đang định làm gì vậy? Cũng đừng lo nếu bạn đang cảm thấy chông chênh, đừng lo. Mức lương khởi điểm nghìn đô báo chí đưa tin là có thật, cơ hội thăng tiến tốt cũng có, cuộc sống khi sống với đam mê cũng có. Điều bạn cần để đạt được những gì bạn kỳ vọng đó là, sự chuẩn bị tốt về cả kiến thức lẫn kỹ năng.

Lộ trình từ Coder – Developer gồm có các Level: Intern → Fresher → Junior → Middle/Senior → Project Manager / Tech Lead → Tech Lead → CTO/CEO (tùy theo quy mô các công ty mà có sự điều chỉnh phù hợp). Ở NCC, chúng tôi thiết kế con đường sự nghiệp và review kết quả công việc thường xuyên, đảm bảo lộ trình thăng tiến của mỗi nhân viên. Chúng tôi tin rằng “Hành trình vạn dặm bắt đầu từ một bước chân”, ngay từ khi còn là Intern, mỗi bạn đều được thiết kế một lộ trình phù hợp, nhận được sự quan tâm và dưới sự quan sát của Senior Developer để tiến bộ từng ngày. Và trong bài viết này, Amobear sẽ cung cấp cho bạn kiến thức về lộ trình thăng tiến trên đường đua marathon sự nghiệp, hãy định vị mình đang ở đâu trong bản đồ này để tiếp tục cố gắng.

🎯 𝐋𝐄𝐕𝐄𝐋: 𝐅𝐑𝐄𝐒𝐇𝐄𝐑

Vị trí này phù hợp với các bạn sinh viên đã đi thực tập. Số năm kinh nghiệm của Fresher thường vào khoảng 3 tháng – 8 tháng. Mức lương thì tùy vào khả năng của bạn dao động từ 300-500$.

Do chưa có kinh nghiệm thực tế nhiều nên khi phỏng vấn fresher, công ty thường chỉ xét khả năng suy nghĩ logic, khả năng lập trình, tiềm năng lập trình của bạn. Công việc của 1 fresher thường là tìm hiểu project hiện tại, code các module nhỏ, đơn giản, fix bugs, có thể có sự trợ giúp/review của senior. Ở giai đoạn Fresher, các bạn hãy cố gắng tranh thủ học code, học cách thức làm việc, học hỏi kinh nghiệm của các bác senior đi trước.

🎯 𝐋𝐄𝐕𝐄𝐋: 𝐉𝐔𝐍𝐈𝐎𝐑 𝐃𝐄𝐕𝐄𝐋𝐎𝐏𝐄𝐑

Junior Developer thường đòi hỏi trên 8 tháng kinh nghiệm, là người trải qua giai đoạn intern và fresher, đã có kinh nghiệm trong việc lập trình ứng dụng trên thực tế. Hiểu biết sơ bộ về toàn bộ một vòng đời ứng dụng, sử dụng ngôn ngữ lập trình hay framework. Hiểu biết về cơ sở dữ liệu, lưu trữ và xuất dữ liệu. Lúc này có thể viết các chức năng cho ứng dụng, tuy nhiên code sẽ có rác nhiều do chưa có kinh nghiệm tối ưu dẫn để việc chồng chéo trong việc truy xuất dữ liệu. Lúc này đôi khi code dở sẽ dẫn đến tốn resource server rất nhiều.

Điểm yếu của junior đương nhiên chính là kinh nghiệm chưa nhiều, ngay cả nhưng bạn thông minh và học hỏi nhanh cũng chưa được tiếp xúc đến các chức năng hay code cũng như vấn đề hóc búa. Cho nên để giải quyết các vấn đề trên bạn cần tiếp tục kiên trì học hỏi, tự xây dựng cho mình một sản phẩm tương tự để có thể giải quyết các vấn đề cơ bản một cách gọn gàng, khi ấy leader của bạn sẽ thấy bạn đủ vững để truyền kinh nghiệm và giao cho bạn cách giải quyết vấn đề khó hơn. Vượt qua được cấp “do” (fresher), nhân viên sẽ dần đi lên mức “deliver”, tức là nhận một nhiệm vụ, mà khi thực hiện sẽ cần vượt qua khó khăn không xác định trước. Trong tình huống như vậy, sếp chỉ có thể đưa ra một số hướng dẫn, còn lại bản thân bạn phải xoay sở để vượt qua (get things done). Bạn sẽ cần mắc sai lầm (là điều mà những nhân viên cấp “do” rất sợ, do hậu quả của kiểu tư duy học trò), học từ đó và tiến bộ.

🎯 𝐋𝐄𝐕𝐄𝐋: 𝐌𝐈𝐃𝐃𝐋𝐄/𝐒𝐄𝐍𝐈𝐎𝐑 𝐃𝐄𝐕𝐄𝐋𝐎𝐏𝐄𝐑

Middle/Senior sẽ cần từ 3-8+ năm kinh nghiệm, có thể xử lý các vấn đề phức tạp, viết ứng dụng lớn. Có khả năng thiết kế các cấu trúc cơ sở dữ liệu lớn, các tính năng phức tạp của ứng dụng. Hiểu biết sâu sắc về cơ sở dữ liệu và các dịch vụ ứng dụng (queues, caching, v.v…)

Lập trình viên ở level middle/senior là những người thực sự quan trọng trong việc xây dựng toàn bộ các ứng dụng ở quy mô lớn. Lên đến level này, bạn sẽ đứng trước hai hướng đi của sự nghiệp. Một là khi bạn hiểu công nghệ đủ để trở thành một lập trình viên senior, thì bạn có thể đã có những kinh nghiệm kỹ thuật đủ sâu để trở thành một technical leader hoặc CTO (Giám đốc công nghệ) của một startup, tuy nhiên lúc này bạn phải học hỏi thêm về quản lý con người, quản lý một quy trình phát triển phần mềm… Ngược lại bạn sẽ tiếp tục đào sâu kiến ​​thức kỹ thuật, đam mê giải quyết những vấn đề về hệ thống lớn, chịu tải cao, nói chung là bạn không thích dây dưa vào việc quản lý con người.

🎯 𝐋𝐄𝐕𝐄𝐋: 𝐏𝐑𝐎𝐉𝐄𝐂𝐓 𝐌𝐀𝐍𝐀𝐆𝐄𝐑 (𝐏𝐌)

Chức danh này thường là Product Manager hoặc Project Manager. Là người quyết định rất lớn đến những chức năng cần phải có của một sản phẩm thông qua nghiên cứu, khảo sát và đo đạc. Developer chỉ cần giao tiếp tốt với team, đảm bảo giao code đúng hạn và đảm bảo chất lượng của code. Project Manager chịu trách nhiệm toàn bộ dự án, bao gồm sự hài lòng của khách hàng, chất lượng của dự án. Bên cạnh quản lý con người, Project Manager còn cần kỹ năng giao tiếp. Khi dự án gặp vấn đề, em phải biết cách nói để khách hàng hiểu khó khăn và đồng lòng với cách giải quyết mình đưa ra. Sau hàng năm trời còng lưng ra code bạn đã cảm thấy vị trí của mình trở nên nhàm chán và công việc quá nặng nề. Trong khi bạn bị việc rượt đuổi thì PM của bạn suốt ngày đi vòng quanh hối thúc. Bạn cảm thấy stress và bất công, bạn nghĩ nếu PM là “người đi hối” thì bạn cũng làm được. “Phải trở thành PM ngày bây giờ mới được!”

🎯 𝐋𝐄𝐕𝐄𝐋: 𝐓𝐄𝐂𝐇 𝐋𝐄𝐀𝐃

Tech Lead cần có 5-10+ năm kinh nghiệm lập trình, bao gồm kỹ năng của một senior. Hiểu đủ sâu và rộng về các công nghệ, chọn cho team dev một hay nhiều tech stack để giải quyết vấn đề trong hệ thống lớn. Đến level này, bạn sẽ có rất nhiều quyết định quan trọng để mọi lập trình viên trong team đi theo, nào là chọn ngôn ngữ gì, chọn tools gì, thiết kế hệ thống ra sao, theo chuẩn quy trình làm phần mềm nào. Lúc này có đôi khi bạn sẽ code những định nghĩa, những quy luật đặt biến chẳng hạn, tuy nhiên công việc chính thường là thiết kế hệ thống và đảm bảo hệ thống có thể scale lớn, có thể kết hợp nhiều tech stack để vận hành đáp ứng nhu cầu.

🎯 𝐋𝐄𝐕𝐄𝐋: 𝐂𝐓𝐎/𝐂𝐄𝐎

Đây là cấp chiến lược, xác định đường hướng, triết lý của công ty, nên làm gì và không làm gì, nên dừng việc gì và bắt đầu việc gì. Chiến lược đơn giản là lựa chọn. Những người cấp này có khả năng nhìn xa. Đến lúc này bạn sẽ trở thành một người truyền cảm hứng, dẫn dắt các leader và team đi theo một vision nào đó. Bạn ở nấc thang sự nghiệp đỉnh cao này, thì bạn càng ít tiếp xúc với công việc lập trình. Điều quan trọng nhất lúc này là về con người. Các nhà quản lý cấp trung (mid-level manager) vẫn có thể có thời gian để vọc vạch với công nghệ, nhưng các quản lý cấp cao phải dành tất cả thời gian của họ để tập trung vào vấn đề con người: truyền cảm hứng, tạo động lực, lãnh đạo, và ra chiến lược.