Lộ trình phát triển cho lập trình viên (Career Path for Developers)
Bạn đang là Dev và chưa rõ định hướng phát triển cho tương lai như thế nào ? Con đường sự nghiệp, lộ trình phát triển cho lập trình viên sẽ ra sao? Hướng đi nào sẽ phù hợp với bạn trên con đường sự nghiệp lập trình. Trong bài viết này mình sẽ chia sẻ lộ trình phát triển mà 1 lập trình viên có thể đạt được.
Lưu ý tất cả lộ trình, định hướng phát triển, tiêu chí đánh giá mình chia sẻ dưới đây đều dựa trên Career Path của công ty mình đang làm việc. Các công ty khác có thể sẽ có những định hướng, lộ trình, tiêu chí đánh giá khác.
Lộ trình phát triển cho Dev – nhánh chính
Fresher/Junior
- Fresher Developer thường là sinh viên mới ra trường hoặc năm cuối Đại học có thể đi làm full time.
- Fresher nắm vững các kiến thức chuyên môn nhưng chưa có cơ hội được thực hành, thực chiến trong các dự án. Thông thường Fresher có kinh nghiệm làm việc từ 0 – 6 tháng.
- Junior Developer là những bạn đã có kinh nghiệm làm việc thực tế từ 6 tháng đến 1.5 năm. Các bạn Junior thường có thể tự mình control được các tính năng không quá phức tạp, tuy nhiên thường các Junior chỉ quan tâm code sao cho đúng yêu cầu, vẫn cần sự giám sát, review của những người có kinh nghiệm hơn.
- Ở mức Junior bạn sẽ học hỏi được rất nhiều thứ từ những người có kinh nghiệm, ngoài ra trong giai đoạn này bạn nên giành nhiều thời gian học những thói quen tốt cho dev để phát triển nhanh chóng.
Middle
- Middle Developer thường là những bạn đã có 1.5 đến 3 năm kinh nghiệm (Cũng khá khó đánh giá dựa trên số năm kinh nghiệm). Các bạn Middle thường sẽ care được gần hết tất cả các tính năng có trong hệ thống (trừ những hệ thống quá phức tạp, đặc biêt, có đặc thù riêng).
- Thường ở mức Middle ngoài việc code đúng thì bạn cần quan tâm code sao cho dễ đọc, dễ hiểu, giải pháp tối ưu. Ngoài ra bạn sẽ cần review code cho Fresher/Junior, hỗ trợ các bạn đó hoàn thành công việc.
Thường khi làm Middle, bạn sẽ có 2 hướng tiếp theo để có thể theo đuổi là theo hướng Kỹ thuật (Technical) hoặc theo hướng quản lý (Manager). Lúc này bạn cần suy nghĩ xem mình thực sự thích cái nào, mình có điểm mạnh ở mảng nào để đưa ra quyết định.
Theo hướng Technical
Project Tech Lead (PTL)
Đây là vị trí Tech Lead trong dự án, tập trung xử lý các vấn đề kỹ thuật trong dự án.
Vai trò, nhiệm vụ
Giai đoạn nhận thông tin dự án
- Phân tích yêu cầu sơ bộ
- Tính khả thi, dự định công nghệ nên dùng
- Kết hợp với bên Pre-Sale(bộ phận) để đưa ra định lượng công việc cần làm (estimate)
Giai đoạn bắt đầu dự án
- Phân tích yêu cầu
- Tham gia thiết kế:
- Activity Diagram, Sequence Diagram
- Database
- API Design
- Logging
- Cache
- Code Architecture
- ….
- Thống nhất các quy trình engineering(coding rules, git …)
- Setup môi trường (kết hợp với INFRA, build local)
Giai đoạn tham gia dự án
- Tham gia thiết kế
- Coding
- Review
- Solve problem
- Giải quyết vấn đề
- Report cho khách hàng
- Quản lý risk, issue về kỹ thuật
- Trao đổi thống nhất với khách hàng về phần tech (có thể trao đổi qua comtor, BrSE) (*)
- Thực hiện và kiểm soát quy trình engineering trong dự án
- Deploy và release dự án
Giai đoạn kết thúc dự án
- Report
- Bài học về kỹ thuật
- Các vấn đề chưa được xử lý
- Tổng hợp bài học để làm knowhow cho các dự án khác
Năng lực yêu cầu
- Coding 2 năm+, clean code, thiết kế tổ chức tốt
- Đảm bảo các vấn đề về security
- Giải quyết vấn đề
- Thiết kế
- Key 1 dự án size từ 2 dev trở lên
Senior
- Senior Developer thường là những bạn đã có từ trên 5 năm kinh nghiệm trở lên, nhìn chung cũng khó đánh giá dựa trên số năm kinh nghiệm. Khi bạn là senior thì bạn có thể làm được mọi vấn đề kỹ thuật của dự án. Ngoài ra sẽ có rất nhiều công việc bạn cần thực hiện trong suốt quá trình làm dự án như:
- Tìm hiểu, lựa chọn công nghệ sử dụng trong dự án.
- Tạo code base, xây dự kiến trúc code.
- Trao đổi về solution với khách hàng, đưa ra hướng giải pháp tốt nhất.
- Thiết kế UI/UX, sequeue diagram, activity diagram.
- Review code, đảm bảo chất lượng code.
- Automation test, unit test.
- DevOps.
- Security.
- Training cho dev mới, nâng cao năng lực dev.
- Xây dựng các quy trình chung cho dev.
- Xử lý mọi vấn đề khó về kỹ thuật trong dự án.
Technical Leader
Techlead cho 1 bộ phận hoặc 1 team gồm nhiều dự án. Ở vị trí này sẽ chịu trách nhiệm về phần kỹ thuật và phát triển năng lực cho bộ phận hoặc 1 team. Thường Technical Leader sẽ là 1 Senior Dev đã làm được 1-2 năm và có nhu cầu làm tech lead bộ phận.
Vai trò, nhiệm vụ
- Tổ chức đội nhóm TL bộ phận:
- Xây dựng cơ chế nắm bắt thông tin liên quan kỹ thuật ở các dự án
- Hỗ trợ các PTL xử lý vấn đề
- Hỗ trợ các PTL tổng hợp các vấn đề
- Quản lý các vấn đề các dự án, chia sẻ cho bộ phận
- Quản lý các issue và phân người phụ trách xử lý
- Tham gia hỗ trợ các bạn dev xử lý các issue khó
- Tổng hợp các issue cần thiết để làm know-how, có thể tái sử dụng
- Xây dựng các chương trình đào tạo nâng cao năng lực
- Kết hợp cùng bộ phận tổ chức các lớp học training
- Build các bạn PTL
- Tham gia phỏng vấn
- Seminar/workshop
- Hỗ trợ các dự án triển khai quy trình engineering cho dự án
- Báo cáo triển khai quy trình
- Hỗ trợ các TL bộ phận đi audit các dự án
- Tổng hợp, báo cáo
- Tham gia xây dựng thiết kế hệ thống
- Trực tiếp xử lý các vấn đề khó
- Follow, hỗ trợ cho dự án đến lúc release
Năng lực yêu cầu
- Coding 4 năm+, clean code, thiết kế tổ chức tốt
- Nắm vững Design pattern, Architecture
- Nắm vững Docker, CI/CD
- Từng làm project tech lead cho 2 dự án +
- Đảm bảo các vấn đề về security
- Giải quyết vấn đề
- Thiết kế
Software Architect (SA)
- Hiện tại thì mình chưa tìm hiểu tới mức này nên chưa có nhiều thông tin, nhưng thông thường lên tới vị trí SA bạn sẽ cần khoảng 10 đến 20 năm kinh nghiệm trong nghề. Các software architech chủ yếu sẽ follow và lên giải pháp, thiết kế cho những bài toán lớn ở công ty, thường thiên về cấu trúc, design patterns,…
CTO
- Đây có thể nói là nấc thang cao nhất trong sự nghiệp lập trình của bạn theo hướng kỹ thuật, ở vị trí CTO (Chief Technical Officer) bạn sẽ là người chịu trách nhiệm cho toàn bộ các vấn đề kỹ thuật của công ty.
- Quyết định xem công ty sẽ sử dụng những công nghệ, kỹ thuật gì, ngôn ngữ gì, quy trình như thế nào.
- Liên tục cập nhật các công nghệ mới, các công cụ để tăng hiệu suất làm việc của dev.
- Đào tạo, training kĩ thuật cho đội ngũ Tech Lead, Dev ở công ty.
Theo hướng Manager
Team Leader
- Quản lý được team dev tầm 2-3 bạn fresher/Junior. Lên kế hoạch, follow công việc của các bạn.
- Đóng vai trò là key member chính dự án, đầu mối liên lạc giữa dev và các vị trí khác như : PM, QC, Comtor.
- Ở vị trí team leader bạn cũng cần nắm được tâm tư nguyện vọng của các bạn trong team, từ đó có các phương án gắn kết member, teamwork hiệu quả.
- Team Leader cần học thêm các kỹ năng ngoài code như : viết báo cáo, giao tiếp, quản lý tiến độ, estimate.
Sub Project Manager (Sub PM)
- Thường khi đã làm Team Leader 1 thời gian, nếu bạn có định hướng trở thành Project Manager (PM) thì bạn sẽ cần làm ở vị trí Sub Project Manager (Sub PM) trước. Ở công ty mình thì trước khi làm Sub PM, các bạn phải trải qua 1 khóa học tên là PM Intro để nắm được lý thuyết và các công việc của PM.
- Ở vị trí này bạn sẽ được PM training và hướng dẫn thực hiện 1 số công việc của PM. Dưới sự review, giám sát của PM, bạn sẽ hỗ trợ PM quản lý team dự án tầm 5-7 người.
- Bạn sẽ đảm nhận các công việc do PM giao phó.
Project Manager
Sau khi đã đảm nhận vị trí Sub PM 1 thời gian, Trưởng bộ phận sẽ đánh giá và sắp xếp bạn làm Project Manager – Quản lý dự án.
Về PM là gì rồi các kỹ năng PM cần có, lộ trình để trở thành PM, bạn xem thêm trong bài viết này của mình để rõ hơn nhé!
Manager/Director
Phần này mình chưa tìm hiểu rõ nên mình xin phép bổ sung sau, đại khái là bạn sẽ lên vị trí Giám đốc sản xuất cho công ty.
Theo hướng Freelancer
- Nếu bạn làm trên công ty theo giờ hành chính rồi cảm thấy thích làm tự do về thời gian và địa điểm thì có thể nghĩ tới hướng làm freelance. Đây có lẽ cũng là mơ ước của nhiều dev nhưng không phải ai cũng làm được.
- Bạn cần phải suy nghĩ thật kỹ, có kế hoạch rõ ràng cho việc chuyển sang làm tại nhà, tự kiếm các công việc từ khách hàng về làm. Bạn chấp nhận thu nhập hàng tháng sẽ bấp bênh.
- Khi làm freelancer thì bạn phải tự mình control công việc, tự mình giao tiếp với khách hàng, tự mình thương lượng, đàm phán, ra quyết định, đại khái là phải tự mình làm mọi việc từ đầu đến cuối để có thể bàn giao tới tay khách hàng.
Các hướng phát triển khác – rẽ nhánh
Ngoài các lộ trình phát triển cho lập trình viên theo nhánh chính ở trên thì hoàn toàn bạn có thể chuyển sang các vị trí khác trong ngành IT nếu bạn cảm thấy phù hợp, dưới đây là 1 số hướng đi khác giành cho anh em.
Bridge System Engineer (BrSE)
- BrSE (Kỹ sư cầu nối) thường được gọi với cái tên thân thương “Bờ rít ét i” là người kết nối giữa team phát triển với khách hàng, thông thường ở công ty mình thì sẽ là đầu mối chính giữa team Việt Nam và khách hàng bên Nhật.
- Để làm BrSE thì bạn cần phải giỏi tiếng Nhật, ngoài ra sẽ cần nắm được 1 số kỹ năng của 1 developer, business analyst, tester và PM.
- Nếu bạn muốn theo con đường này thì nên chăm chỉ học ngoại ngữ đi nhé!
DevOps
- Vị trí này thì mình cũng chưa nắm hết được chi tiết công việc của 1 DevOps, tuy nhiên theo mình hiểu thì DevOps sẽ tập trung vào việc automated deploy, tạo, thiết kế và xây dựng server.
- Dev nào muốn chuyển sang DevOps thì cần học thêm nhiều về System, Server, CI/CD, Script,…
Scrum Master
- Trong các dự án sử dụng Agile Scrum thì sẽ có 1 vị trí là Scrum Master, hiểu đơn giản là Scrum Master sẽ giúp các thành viên trong team dự án hiểu và tuân thủ các quy tắc, giá trị của Scrum.
- Thông thường cách chuyển lên vị trí Scrum Master nhanh nhất là từ PM chuyển sang vì khi bạn đã làm PM rồi thì bạn cũng sẽ phải hiểu được các công việc của Scrum Master.
- Hiện tại ở công ty mình thì ông PM sẽ kiêm nhiệm luôn vị trí Scrum Master này, các công ty khác có thể sẽ có role rõ ràng hơn.
Business Analyst (BA)
- Vị trí BA sẽ làm nhiệm vụ phân tích yêu cầu và tạo tài liệu yêu cầu cho dự án.
- BA cũng sẽ là người đề xuất những ý tưởng, giải pháp tốt nhất về mặt business cho khách hàng.
- Để làm BA thì bạn cần học 1 khóa học về BA cũng như bạn cần liên tục cập nhật các business để có thể phân tích tốt yêu cầu và làm tài liệu chính xác.
Data Analyst
- Đây có thể nói là 1 hướng đi khá hot trong thời gian gần đây, Data Analyst là người đi phân tích tất cả những dữ liệu dự án có, đặc biệt là trên database để cung cấp cho khách hàng, team phát triển những biểu đồ, hình vẽ, số liệu nhằm phát triển business, thống kê. Từ đó đưa ra được những hướng phát triển sản phẩm, kế hoạch trong tương lai.
- Việc phân tích dữ liệu đúng có thể giúp sản phẩm phát triển theo đúng hướng, giảm thiểu được chi phí không cần thiết và liên tục cải thiện sản phẩm phù hợp với người dùng.
Tổng kết
Trên đây là lộ trình phát triển cho lập trình viên mà mình tổng hợp được theo career path của công ty. Hy vọng với những thông tin trên, các bạn dev có thể chọn cho mình 1 hướng đi đúng trên con đường sự nghiệp developer của mình. Cảm ơn các bạn đã xem hết bài viết của mình!