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
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
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
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
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
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
Post a Comment