Giới thiệu
Hiện tại, lập trình đang là ngành khá HOT trong xã hội. Tuy nhiên, hầu hết thì các bạn còn khá mơ hồ về những vị trị (chức danh) trong ngành này. Bản thân mình cũng từng đi qua rất nhiều các vị trí trong ngành từ Developer, Tester, Team Leader, Technical Leader, Project Manager. Cũng đã từng làm ở những tập đoàn lớn của Thụy Điển như Volvo, Unilever và từng có thời gian bôn ba làm Freelancer Fulltime.
Chính vì thế mình cũng muốn chia sẻ góc nhìn của mình về các vị trí và những kiến thức nên tích lũy ở mỗi vị trí đó.
Vậy tại sao nên hiểu rõ về con đường sự nghiệp?
- Để định hình con đường phát triển của bản thân trong tương lai.
- Có vị trí trong xã hội và nâng cao mức thu nhập.
- Biết được giá trị của mình.
Các con đường phát triển sự nghiệp
Theo góc nhìn của mình thì có 3 hướng đi chính của một developer đó là
- Fulltime Developer: Hầu hết thời gian sẽ làm việc cho một công ty và nhận lương từ công ty đó.
- Freelancer Developer: "Lính đánh thuê" trong thời đại toàn cầu hóa. Hoàn toàn tự do, không thuộc quyền quản lý của một đơn vị hay tổ chức nào.
- Developer Entrepreneur: Tự phát triển riêng sản phẩm, trực tiếp kinh doanh và phân phối sản phẩm đó đến người dùng.
Đối với hướng Fulltime Developer, các chức vụ sẽ được miêu tả từ thấp lên cao nhé
I. Fulltime Developer
1. Level 1: Fresher/Junior Developer
- 0-2 năm kinh nghiệm (thường là sinh viên đang đi thực tập/vừa mới ra trường).
- Có kiến thức cơ bản về lập trình phần mềm. Hiểu sơ bộ về cơ sở dữ liệu, vòng đời ứng dụng, các dịch vụ ứng dụng.
- Có thể viết các script cơ bản.
Nên tích lũy:
- Chon và tìm hiểu sâu vào một ngôn ngữ.
- Đi chuyên sâu hơn về cơ sở dữ liệu, vòng đời ứng dụng, nâng cao khả năng tư duy logic, thuật toán...
- Chọn môi trường, dự án và leader tốt để đi theo học hỏi, tích lũy kinh nghiệm.
Đăc biệt nên tích lũy:
- Khả năng làm tài liệu (screen design, API design...).
- Mindset về việc đảm bảo chất lượng (viết script test, coverage source code).
2. Level 2: Developer
- 2-5 năm kinh nghiệm.
- Đã tham gia một số dự án, biết được một/vài công nghệ.
- Đã code được một số module phức tạp hơn.
Nên tích lũy:
- Tìm hiểu sâu hơn vào một ngôn ngữ. Nâng cao khả năng research để giải quyết vấn đề.
- Tích lũy kiến thức/kinh nghiệm làm việc, trau dồi các kĩ năng mềm để tạo tiền đề cho bước phát triển tiếp theo.
- Tìm hiểu về các nhánh nghề nghiệp, cũng như sự khác biệt giữa công ty product và outsourcing để lựa chọn môi trường phù hợp
- Xây dựng network và thương hiệu cá nhân (bằng cách viết blog, tham gia tech group, event, vv..)
- Đầu tư thời gian học thêm các chứng chỉ về công nghệ và ngoại ngữ. Công ty cũng khuyến khích ace VTIer học các chứng chỉ
Đăc biệt nên tích lũy:
- Khả năng làm tài liệu (screen design, API design...).
- Mindset về việc đảm bảo chất lượng (viết script test, coverage source code).
Ở level 1 và 2 thì mình luôn nhấn mạnh về việc đặc biệt nên tích lũy về khả năng làm tài liệu và mindset để đảm bảo chất lượng. Vì nếu 1 developer không tự nâng cao 2 khả năng trên thì mãi mãi bạn developer đó chỉ có thể đơn thuần là 1 coder, 1 cái máy code mà thôi.
Việc làm tài liệu design giúp các bạn nâng cao tư duy logic và suy nghĩ kỹ lưỡng về mặt giải pháp cho các vấn đề cần xử lý.
Còn mindset đảm bảo chất lượng trước hết có thể coi như đạo đức nghề nghiệp của một developer. và sau đó là giá trị mà nó đem lại cho bạn về việc từng bước nâng cao skill của bản thân mình. Thông qua việc tự detect được các bug trong chương trình của mình, bạn sẽ dần hiểu sâu hơn về những thứ mình sử dụng, và cũng nâng cao khả năng detect issue của chương trình nói chung. Và hãy tin mình, nâng cao khả năng detect vấn đề, giải quyết vấn đề, cũng sẽ giúp bạn rất nhiều trong việc tư duy và tối ưu dần các giải pháp khi các bạn đưa ra.
Tài liệu dự án thì có rất nhiều loại. Tuy nhiên, ở đây mình chỉ đề cập đến hai loại tài liệu mà các bạn developer cần chú ý là:
Khi đã ở level này thì các bạn có thể lựa chọn cho bản thân con đường sự nghiệp trong tương lai. Tùy theo năng lực và khả năng thì một developer có thể lựa chọn theo con đường Technical hoặc Management.
Technical Path
3a. Level 3: Senior Developer
- Trên 5 năm kinh nghiệm (có thể hơn hoặc kém, vì số năm kinh nghiệm không đóng vai trò quyết định bạn có phải là Senior Developer hay không).
- Có khả năng làm tại liệu chi tiết và chỉnh chu ở mức low level design. Hỗ trợ được technical leader làm các tài liệu high level design ở một mức nào đó.
- Nắm vững và hiểu biết sâu sắc một vài công nghệ, có khả năng tìm hiểu công nghệ mới.
- Có khả năng xây dựng những ứng dụng phức tạp ở quy mô lớn.
- Hiểu biết sâu sắc về toàn bộ vòng đời của ứng dụng, cơ sở dữ liệu, các dịch vụ ứng dụng.v.v…
- Nắm vững, hiểu sâu nhiều công nghệ.
- Có thể hướng dẫn một vài junior developer.
Nên tích lũy:
- Học hỏi thêm các công nghệ mới.
- Bổ sung khả năng làm tài liệu ở mức high/low level design.
- Nâng cao khả năng hướng dẫn cho các member mới.
4a. Level 4: Technical Leader
- Có khả năng research hiệu quả.
- Có hiểu biết sâu rộng về công nghệ, về lập trình.
- Có khả năng thiết kế hệ thống ở mức high level.
- Là nhân tố quyết định chọn sử dụng công nghệ nào, thiết kế hệ thống ra sao. Đưa ra được những solution tối ưu cho từng bài toán của dự án
- Bao quát, chịu trách nhiệm chính về kỹ thuật và tính mở rộng của dự án.
Nên tích lũy:
- Mặc dù Technical Leader là một vị trí thuần về tech. Tuy nhiên, nên nâng cao kỹ năng mềm (khả năng giải thích, team work và leadership).
5a. Level 5: SA-Software Architecture
- Ít nhất 10-15 năm kinh nghiệm.
- Khả năng tối ưu solution, security và khả năng mở rộng của dự án.
- Hiểu sâu sắc một vài công nghệ. Khả năng research tốt.
- Đảm bảo dự án follow tính thống nhất theo thiết kế hệ thống ban đầu.
- Đưa ra giải pháp, thiết kế các hệ thống phức tạp (nghiêng về lập trình patterns và anti-patterns) mà từ đó, nhóm lập trình Junior, Senior Developer sẽ hiện thực hóa.
Ở Việt Nam thì khái niệm về Senior Developer hoặc SA đang bị hiểu sai khá nhiều. Rất nhiều bạn chỉ dựa trên số năm kinh nghiệm để apply những vị trí này. Tuy nhiên, kiến thức thì rất hời hợt. Không hiểu sâu về những công nghệ đã làm. Hoặc những yếu tố bắt buộc để lên được level này là khả năng làm tài liệu và mindset về chất lượng rất yếu.
6a. Level 6: CTO - Chief Technical Officer
- Quyết định về phương hướng kĩ thuật của công ty (sử dụng nền tảng, kĩ thuật).
- Tìm hiểu các xu hướng công nghệ mới, các công cụ mới để áp dụng vào công việc, giúp tăng hiệu quả.
- Hướng dẫn và đào tạo kỹ thuật/công nghệ mới cho đội ngũ kỹ thuật của công ty.
Management Path
3.b. Level 3: Team Leader
Team Leader có thể coi là là một vị trí trung gian trước khi theo con đường quản lý chuyên nghiệp. Đối với những dự án vừa và nhỏ thì vị trí team leader nhiều khi không quá phân tách rõ ràng với vị trí technical leader.
- Có khả năng sẽ quản lý một team nhỏ (2-5 thành viên).
- Có khả năng hướng dẫn và đào tạo các thành viên khác trong team.
- Có khả năng estimation, bóc tách các task cho member trong team.
Nên tích lũy:
- Kỹ năng quản lý công việc, thời gian, tiến độ.
- Nâng cao khả năng báo cáo, viết report tới cấp trên.
4b. Level 4: Project Manager
- Là người chịu trách nhiệm cao nhất trong dự án.
- Chịu trách nhiệm quản lý dự án bao gồm: Lập kế hoạch, giám sát & kiểm soát, giải quyết vấn đề, giao tiếp giữa các thành viên, báo cáo cho khách hàng và các bên liên quan.
- Phân công nhiệm vụ cho thành viên trong dự án, hướng dẫn thành viên thực hiện theo quy trình và kế hoạch đã đề ra.
- Kết nối các thành viên trong dự án để đạt được các mục tiêu chung cho sự thành công của dự án.
- Hiểu rõ về các mô hình phát triển phần mềm, lựa chọn mô hình phù hợp cho từng dự án.
- Hiểu sâu về các quy trình của công ty, có khả năng hướng dẫn các member trong dự án.
Nên tích lũy:
- Kỹ năng lãnh đạo, tạo động lực cho member.
- Kỹ năng quản lý dự án.
- Kỹ năng quản lý con người.
- Kỹ năng giao tiếp và báo cáo.
5b. Level 5: Manager/ Division Leader
- Là người có khả năng định hướng và lãnh đạo cho một đơn vị.
- Có khả năng cao về các vấn đề nhân sự (tuyển dụng, quản lý, đào tạo, sa thải, dẫn dắt và truyền cảm hứng cho đơn vị mà mình quản lý)
- Có khả năng đàm phán, giải quyết xung đột và ra các quyết định.
6b. Level 6: Director(CDO, COO, CEO)
- Là người đưa ra tầm nhìn chiến lược, chính sách cho công ty.
- Có khả năng lãnh đạo để toàn bộ công ty cùng tiến về một mục tiêu.
Other Path
Trong thời kỳ mở cửa hội nhập thì Việt Nam đang nhận được rất nhiều nguồn vốn đầu tư từ nước ngoài, vì thế có rất nhiều dự án mà team ở Việt Nam làm việc với các đối tác nước ngoài. Tuy nhiên, khoảng cách về ngôn ngữ có thể là rào cản.
BrSE-Bridge System Engineer
- Có nền tảng kỹ thuật tốt.
- Khả năng hiểu yêu cầu và mong muốn của khách hàng. Làm rõ yêu cầu, phân tích và đưa các giải pháp cho khách hàng (khi cần thiết).
- Có khả năng trình bày rõ ràng, có cái nhìn tổng thể về dự án.
- Kết nối Offshore với khách hàng, đảm bảo hai bên hiểu nhau và việc hợp tác được suôn sẻ, thuận lợi.
- Truyền đạt yêu cầu của khách hàng tới Offshore. Hỗ trợ Offshore hiểu đúng và làm đúng theo yêu cầu của khách hàng.
- Là người review sản phẩm cuối cùng trước khi sản phẩm được bản giao cho khách hàng.
Nên tích lũy:
- Cần sự điềm tĩnh. Rèn luyện khả năng đàm phán, nắm bắt được yêu cầu khách hàng và transfer rõ ràng về cho Offshore.
- Nâng cao trình độ ngoại ngữ.
- Có tính trách nhiệm cao, chịu khó học hỏi, nhẫn nại.
- Khả năng làm việc độc lập tốt.
BA-Bussiness Analysis
- Tìm hiểu, phân tích yêu cầu của khách hàng, tài liệu hóa yêu cầu từ phía khách hàng và chuyển giao thông tin cho phía Offshore
- Quản lý sự thay đổi của các yêu cầu, phân tích sự thay đổi của yêu cầu lên tổng thể dự án. Hệ thống hóa sự thay đổi của yêu cầu trong tài liệu.
- Có khả năng tư vấn và đề xuất giải pháp cho khách hàng khi cần thiết.
Nên tích lũy:
- Kỹ năng giao tiếp và ngoại ngữ.
- Kỹ năng tài liệu hóa các yêu cầu của khách hàng.
- Kỹ năng transfer tài liệu rõ ràng cho team Offshore.
- Nâng cao nền tảng về kỹ thuật.
II. Freelancer Developer
Ở đây mình chỉ đề cập đến hướng làm Freelancer Fulltime nhé, còn có những hướng khác là vừa làm Fulltime developer và làm Freelancer Partime vào thời gian rảnh hoặc buổi tối thì mình không đề cập nhiều vào hướng đi này.
Trong thời buổi mà việc tìm người thì cũng không ít developer chọn con đường freelance thay vì đi làm full time. Bản thân mình cũng đã làm freelancer full time một khoảng thời gian.
Làm freelancer thì các bạn developer được thoải mái lựa chọn dự án, công nghệ,tự do về thời gian và địa điểm làm việc. Tuy nhiên, muốn làm freelancer chuyên nghiệp thì bản thân bạn developer đó phải:
- Có kinh nghiệm sâu về công nghệ và ngôn ngữ.
- Kỹ năng giao tiếp và ngoại ngữ ổn.
- Kỹ năng thương lượng và đàm phán tốt. Ngoài ra, phải nâng cao khả năng quản lý công việc và bản thân.
III. Developer Entrepreneur
Nếu các bạn developer muốn thành các bussiness man thì có thể lựa chọn hướng đi này. Tự phát triển sản phẩm, business cho chính bản thân. Chủ động kinh doanh và hưởng doanh thu từ sản phẩm.
Tuy nhiên, hướng đi này không phải chỉ là toàn là mầu hồng yêu thương. Để thành công được thì các bạn developer cần rất nhiều kiến thức về thị trường, phát triển sản phẩm, marketing, các mối quan hệ, tiền bạc và...Có cả sự may mắn!!!
-----------------------------------------------All roads lead to Rome !!!-----------------------------------------------
Hy vọng những chia sẻ của mình trong bài viết này sẽ giúp các bạn developer có cái nhìn rõ ràng hơn về các hướng đi và vị trí trong ngành lập trình. Không có con đường sự nghiệp nào hoàn toàn bằng phẳng và cơ hội thì luôn dành cho tất cả mọi người. Nếu chọn lối rẽ không phù hợp, bạn luôn có thể dừng lại để chuyển sang một hướng mới. Tuy nhiên, chọn đúng và đi đúng hướng ngay từ đầu sẽ giúp bạn tiết kiệm nhiều thời gian, công sức, và có thể nhanh chóng gặt hái nhiều thành tựu hơn.
Leave a Reply