Con đường phát triển sự nghiệp của một developer ở Việt Nam (Part 2)

Chapter II: Chọn career path.

Phần 1 viết đã lâu, hôm nay tôi sẽ viết tiếp phần 2: Chọn công ty xong thì mình chọn hướng đi nào ? Có một sự thật đắng lòng mà nhiều lập trình viên không muốn phải đối mặt là sự nghiệp lập trình của họ sẽ tiến đến một ngưỡng nhất định và sau đó là một sự suy tàn không thể tránh khỏi. Cuối cùng sẽ rất khó khăn để bạn có thể tìm thấy và giữ được một công việc với tư cách là một lập trình viên. Đối với nhiều người, họ phát hiện ra sự thật này mà không chuẩn bị trước và thường bị sốc.

Tất cả mọi người đều biết rằng cuối cùng các lập trình viên có thể trở thành manager hoặc leader. Nhưng nhiều lập trình viên không hiểu được kỳ vọng và yêu cầu công việc của một nhà quản lý. Chắc chắn, tất cả chúng ta đều có những người quản lý, việc trở thành một người quản lý có ý nghĩa gì? Có những kỳ vọng gì? Và sự khác biệt giữa một mid-level manager và một senior leader là gì?

Trong bài viết này, tôi muốn kéo bức màn bí ẩn lên và chỉ cho bạn một con đường sự nghiệp tiềm năng từ sự khởi đầu trong lĩnh vực kỹ thuật cho đến đỉnh cao nhất là trở thành một CTO .

Dưới đây là một hình minh họa về các nấc thang nghề nghiệp dành cho một lập trình viên với mức lương trung bình. Lưu ý rằng có một số người kiếm được gấp đôi hoặc gấp ba số tiền ở hình trên, đó là những lập trình viên thuộc một ngành dọc nào đó như ngân hàng, chứng khoán, etc. Vì vậy những con số ở trên chỉ đại diện cho một phạm vi trung bình, không phải là đại diện cho tất cả.

1. Junior Developer

  • 0-3 năm kinh nghiệm (thường là người vừa bước chân ra khỏi giảng đường đại học)
  • Có thể viết các script đơn giản
  • Hiểu biết sơ bộ về toàn bộ một vòng đời application
  • Hiểu biết sơ bộ về cơ sở dữ liệu và các dịch vụ ứng dụng (queues, caching, etc.)
  • Không cảm thấy thoải mái trong bất cứ phần nào của một ứng dụng phức tạp
Khi bạn bắt đầu bước chân vào sự nghiệp lập trình, nó có thể đầy khó khăn và nản lòng. Có lúc bạn cảm thấy chiều sâu kiến thức của mình chưa đủ để đáp ứng cho công việc, không chắc chắn về việc làm thế nào mà người ta có thể viết ra những ứng dụng lớn và phức tạp đến như vậy. Và đôi khi, bạn lại tự hỏi tại sao mình vẫn chưa được thăng chức lên thành Senior Developer. Bạn nhìn vào các lập trình viên senior khác và nghĩ rằng về cơ bản thì bạn cũng đang làm công việc giống như họ.

Nhưng một dấu hiệu của lập trình viên junior chính là sự thiếu kinh nghiệm. Ngay cả các lập trình viên junior thông minh và học hỏi nhanh nhất cũng không được tiếp xúc với nhiều code hoặc các trường hợp hóc búa mà cần có sự khôn ngoan của một lập trình viên senior. Trong thuật ngữ lập trình, một hình thức của sự khôn ngoan được gọi là các software design pattern.

2. Senior Developer

  • 4-10+ năm kinh nghiệm
  • Có thể viết các ứng dụng phức tạp
  • Hiểu biết sâu sắc về toàn bộ vòng đời 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, etc.)
  • Làm việc thoải mái trên bất kỳ phần nào của một ứng dụng
Một senior developer là một vị trí cho những người thực sự giỏi trong việc xây dựng toàn bộ các ứng dụng ở quy mô lớn. Phần lớn sự nghiệp của một lập trình viên có thể với tư cách là một lập trình viên senior. Trong thực tế, nếu bạn ghét làm quản lý và bạn chỉ yêu thích việc viết code, thì bạn có thể là một lập trình viên senior trong suốt sự nghiệp của mình. Tôi đã từng thuê nhiều lập trình viên senior ở nhiều độ tuổi khác nhau, nhưng đây cũng là vai trò ngày càng khó để cạnh tranh một khi bạn trở nên lớn tuổi.

Vai trò này cũng có thể là một cách để nhảy đến một vị trí khác trong nấc thang sự nghiệp. Một 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 bí quyết kỹ thuật để trở thành một technical founder hoặc CTO của một startup. Việc trở thành một founder hoặc CTO tại một startup liên quan rất ít đến công việc lập trình nhưng lại phải có nhiều kỹ năng về con người. Tuy nhiên kiến ​​thức kỹ thuật có chiều sâu sau một chặng đường dài là rất cần thiết để làm tốt công việc ở những vai trò này.

3. Lead Developer / Software Architect

  • 7-10+ năm kinh nghiệm
  • Có các kỹ năng cơ bản giống như một lập trình viên senior
  • Lead Developer: là vai trò chuyển tiếp vào một chức vụ quản lý cấp trung (Mid-Level Manager)
  • Architect: là một vai trò kỹ thuật thuần túy
Sau hơn 7 năm lập trình, nếu bạn thấy mình không phù hợp với công việc quản lý, thì trở thành một architect là một cấp bậc cao nhất còn lại trên các nấc thang sự nghiệp kỹ thuật. Các architect đôi khi viết code, nhưng họ thường thiết kế các hệ thống phức tạp mà sẽ được thực hiện bởi các nhóm lập trình viên senior và junior. Công việc của một architect là sử dụng những kiến thức kỹ thuật của mình thu được sau nhiều năm kinh nghiệm (nghiêng về lập trình patterns và anti-patterns) để tạo ra cấu trúc cho một dự án phần mềm thành công. Khi có một yêu cầu mới, một software architect cần phải biết những cách hợp lý để xây dựng và mở rộng tất cả các loại ứng dụng khác nhau.

Một lead developer là một lập trình viên senior mà những lập trình viên junior và senior khác tìm đến để được hướng dẫn và chỉ đạo. Mặc dù các lead developer thường không đảm nhiệm công việc tuyển dụng và sa thải các lập trình viên, nhưng họ làm rất nhiều công việc tương tự như các nhà quản lý. Họ phối hợp những công việc cần phải được thực hiện và là người ra quyết định về các vấn đề thực được thưc thi trong khi viết code.

4. Mid-Level Manager (Quản lý cấp trung)

  • Chức danh này thường bao gồm các từ như Manager hoặc Director (Developer Manager, Product Manager hoặc Project Manager)
  • Là sếp (có thể thuê/sa thải) của các lập trình viên
  • Báo cáo công việc tới một Senior Leader
Quản lý thường là nấc thang tiếp theo trong sự nghiệp dành cho các kỹ sư. Có những trọng tâm khác nhau trong việc quản lý. Nếu bạn là người yêu thích theo dõi luồng công việc và có mối ám ảnh về những chi tiết, thì việc trở thành một project manager là lựa chọn đúng đắn. Nếu bạn bị ám ảnh về các tính năng và cải tiến sản phẩm, thì trở thành một product manager là rất phù hợp.

Tuy nhiên hầu hết những vị trí quản lý mà một lập trình viên trở thành thường là developer manager. Vai trò điển hình của developer manager là để dàn xếp các nhu cầu của product manager và project manager với các thành viên của nhóm phát triển. Vai trò này đòi hỏi kỹ năng mềm rất lớn, tài năng để dàn xếp các xung đột. Công việc của developer manager không chỉ là để tuyển dụng, mà có thể là sa thải các lập trình viên khi cần thiết. Điều này có nghĩa là rất khó để có thể kết bạn với họ. Việc trở thành bạn bè đặt bạn vào vị trí khó xử. Nếu bạn từng biết một ai đó đã trở thành developer manager của một team mà anh ta đã từng là một thành viên, thì bạn sẽ thấy rằng họ dường như thay đổi hẳn tính cách chỉ sau một đêm. Đây là lý do tại sao. Đó là một công việc khó khăn, và thường bị mang tiếng là một kẻ hai mặt.

5. Senior Leader (Quản lý cấp cao)

  • VP, CTO hoặc CEO
  • Là sếp (có thể thuê/sa thải) các quản lý cấp trung
  • Báo cáo công việc tới một Senior Leader khác hoặc tới BOD
Sự khác biệt rõ ràng giữa một mid-level manager và một senior leader đó là các senior leader phụ trách các mid-level manager. Tuy nhiên, các manager thường không cần phải quản lý. Họ cần phải được dẫn dắt. Các mid-level manager cần biết định hướng cấp cao mà họ cần phải đi theo, chứ không phải là chỉ hướng đi chi tiết.

Công việc của một senior leader là đưa ra những quyết định cấp cao và truyền cảm hứng cho lực lượng lao động của họ đi cùng với những quyết định đó, và tin vào sứ mệnh đó.

Bạn càng leo lên các nấc thang sự nghiệp cao hơn, thì bạn càng ít tiếp xúc với công việc lập trình. Ở phía trên, tất cả công việc là về con người. Các mid-level manager vẫn có thể có thời gian để vọc vậy với công nghệ, nhưng các Senior Leader 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. Nếu bạn viết code, thì đó thường chỉ là các dự án cá nhân.

Công việc của một senior leader là đảm bảo cho tất cả mọi người trong toàn bộ công ty cùng tiến theo một hướng, đảm bảo hướng đi đó dẫn đến miền đất hứa, và đảm bảo rằng mọi người đều biết lý do tại sao họ lại đang đi theo hướng đó. Đó là một công việc rất khó khăn. Công việc này đầy nguy hiểm, đau khổ và cạm bẫy. Các senior leader chẳng phải được sinh ra một cách tự nhiên. Họ phải tôi luyện mà thành. Phải thực hành thật nhiều và thật tốt công việc đó.

6. Kết luận

Cơ hội cho các lập trình viên ngày nay là rất phong phú và dồi dào. Và lập trình viên hiện nay đang có nhu cầu cao hơn so với bất kỳ giai đoạn nào trong lịch sử. Đây là một thời điểm tuyệt vời để trở thành một lập trình viên. Nhưng nó sẽ chẳng bao giờ là quá sớm để lên kế hoạch cho sự nghiệp của mình. Tôi hy vọng bài viết này đã cho bạn một số hướng dẫn và những tài liệu để bạn có thể chuẩn bị cho tương lai phía trước.

phần tiếp theo, tôi sẽ viết chi tiết về các nhánh của công việc developer cũng như các ngành nghề liên quan trong IT industry.

Comments