Có một thực tế mà nhiều lập trình viên không muốn đối mặt, đó là những giai đoạn thăng trầm của nghề lập trình. Kiếm được công việc lập trình như mong muốn đã khó, để phát triển đúng hướng càng khó hơn. Nhiều lập trình viên chưa sẵn sàng để đối diện sự thật khó khăn này. Bài viết này mang đến cho bạn một số thông tin cần thiết có thể có ích cho bạn trong việc chuẩn bị cũng như định hướng cho nghề lập trình viên của mình.
Trong một bài viết liên quan đến chủ đề này: ” Bí mật đen tối của Thung lũng Silicon: Sự Phân biệt tuổi tác“, TechCrunch đề cập đến một nghiên cứu cho thấy khoảng thời gian làm việc hiệu quả của một lập trình viên là có giới hạn. Với những lập trình viên trẻ họ có thể học hỏi rất nhanh các công nghệ mới, làm việc không biết mệt mỏi và lương lại thấp hơn rất nhiều so với những lập trình viên lớn tuổi. Điều này dẫn đến những câu hỏi:
- Tương lai của một lập trình viên sẽ như thế nào?
- Con đường sự nghiệp của một lập trình viên sẽ như thế nào?
- Lâp trình viên có thể lựa hướng phát triển như thế nào và đạt được điều gì với những lựa chọn đó?
Hầu như ai cũng biết là một lập trình viên có khả năng trở thành người quản lý (manager) hoặc nhà lãnh đạo (leader). Nhưng nhiều lập trình viên lại không hiểu được tính chất công việc của một người quản lý. Chắc chắn là mọi công việc đều cần có người quản lý, nhưng thế nào là một người quản lý đúng nghĩa? Họ cần có những tố chất gì? Nhà quản lý cấp cao có gì khác biệt so với người quản lý cấp trung?
Bài viết này sẽ chia sẻ các giai đoạn phát triển có thể đạt tới trong sự nghiệp của một lập trình viên. Họ có thể bắt đầu sự nghiệp với vai trò kỹ thuật viên lập trình sơ cấp và phát triển trở thành Giám đốc công nghệ (CTO: Chief Technology Officer).
Lưu ý: Không phải ai trở thành quản lý cấp cao nhất mới được gọi là thành công. Sự nghiệp của nhiều người có thể phát triển tới một mức độ nào đó và dừng lại cho đến khi nghỉ hưu và cũng được coi là đáng mơ ước với nhiều người. Một số khác lại bỏ qua vài giai đoạn trong nấc thang sự nghiệp của mình. Nhưng vai trò quản lý và lãnh đạo không phải phù hợp với tất cả mọi người và niềm hứng thú đối với nghề quản lý có thể thay đổi theo thời gian. Ở độ tuổi 20, bạn có thể không thích lao vào kỹ thuật, nhưng ở độ tuổi 40, bạn lại cảm thấy chán ghét việc phải ngồi lọ mọ viết code. Rất khó để nói trước điều gì. Tốt hơn hết bạn nên hiểu rõ về những lựa chọn của mình cũng như lường trước được kết quả.
Sơ đồ dưới đây thể hiện những cơ hội nghề nghiệp dành cho lập trình viên với mức lương trung bình trên thị trường. Tuy nhiên, lập trình viên ở một số ngành nhất định (ngân hàng, giao dịch, v.v.) có thể kiếm được gấp đôi hoặc gấp ba số tiền này. Vì vậy, sơ đồ này chỉ thể hiện được phần nào thực tế, không đúng cho tất cả các trường hợp. Lưu ý số liệu này là ở thị trường Mỹ và cũng không phải là mới nhất. Tuy nhiên nó được sử dụng để các bạn dễ hình dung
Lập trình viên sơ cấp (Junior Developer)
- 0-3 năm kinh nghiệm (sau khi tốt nghiệp đại học).
- Có thể viết các script đơn giản.
- Hiểu biết sơ bộ về toàn bộ vòng đời của ứng dụng.
- Hiểu sơ bộ về cơ sở dữ liệu và dịch vụ ứng dụng (queues, caching…)
- Không nắm hết được mọi ngóc ngách của các ứng dụng phức tạp.
Khi mới bắt đầu công việc lập trình, bạn có thể nản lòng và bực bội. Đôi khi bạn cảm thấy tự ti và không tin là mình có thể tham gia vào các dự án phức tạp. Hay vào một ngày nào đó, bạn lại băn khoăn vì sao mình chưa được thăng cấp lên Senior Developer trong khi cũng làm những công việc tương tự như họ.
Junior Developer thường thiếu kinh nghiệm. Cho dù họ rất thông minh và lanh lợi, họ cũng không biết hết được các code hoặc các tình huống hóc búa (edge case) như các lập trình viên có kinh nghiệm lâu năm. Trong ngôn ngữ lập trình, nắm vững về các software design pattern (mẫu thiết kế phần mềm) được xem như một dạng kinh nghiệm tích lũy lâu năm. Mặc dù bạn có thể đọc sách về các patterns này, nhưng cũng cần phải nghiệm qua nhiều lần viết code thất bại để có thể hiểu sâu sắc về giá trị của các software patterns này.
Lập trình viên lâu năm (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à dịch vụ ứng dụng (queues, caching, …).
- Có thể làm việc thông thạo trên các phần khác nhau của ứng dụng.
Một lập trình viên lâu năm là những người thực sự giỏi trong việc xây dựng toàn bộ ứng dụng quy mô. Trong phần lớn sự nghiệp lập trình viên, bạn có thể là một lập trình viên cao cấp. Trong thực tế nếu bạn ghét làm quản lý và bạn chỉ thích viết code, bạn có thể là một senior developer trong toàn bộ sự nghiệp. Bạn có thể thấy nhiều senior developer ở nhiều độ tuổi khác nhau, nhưng đây cũng là vị trí khó cạnh tranh khi bạn lớn tuổi hơn.
Vị trí này cũng có thể là một bước đệm để bạn tiến lên trong nấc thang sự nghiệp. Một khi đã hiểu tường tận về công nghệ để trở thành một senior developer, bạn đã có bí quyết để trở thành một CTO của một công ty khởi nghiệp. Việc trở thành người sáng lập hoặc CTO liên quan rất ít đến công việc lập trình nhưng đòi hỏi nhiều kỹ năng về quản lý con người. Tuy nhiên, kiến thức kỹ thuật chuyên sâu cũng rất cần thiết và giúp mọi việc suôn sẻ ở vị trí này.
Lead Developer hoặc 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
Nếu sau hơn 7 năm lập trình, nếu việc trở thành quản lý không phù hợp với bạn thì trở thành một architect là vị trí cao nhất trên nấc thang sự nghiệp của bạn. Architect đôi khi viết code, nhưng họ thường xuyên 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 kiến thức kỹ thuật của mình có đượ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à định hướng khi cần. 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ý cao hơn. 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.
Quản lý cấp trung (Mid-level Manager)
- 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ủa các lập trình viên và có quyền thuê hay sa thải.
- Báo cáo công việc với một Senior Leader
Quản lý thường là nấc thang tiếp theo trong sự nghiệp của các kỹ sư. Việc quản lý có những trọng điểm khác nhau. Nếu bạn là người thích giám sát tiến độ và chú trọng về chi tiết, thì việc trở thành một nhà quản lý dự án (Project Manager) là lựa chọn đúng đắn. Nếu bạn chú tâm về các tính năng và cải tiến sản phẩm, thì trở thành nhà quản lý sản phẩm (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 yêu cầu của Product Manager và Project Manager với các thành viên của nhóm lập trình. Vai trò này đòi hỏi kỹ năng mềm rất lớn cũng như khả 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 tình huống khó xử. Nếu bạn từng biết một ai đó đã trở thành Developer Manager của một nhóm 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. Đó là một công việc khó khăn, và thường bị mang tiếng là một kẻ vong ân bội nghĩa.
Nhưng cũng rất xứng đáng khi bạn có thể dẫn dắt nhóm thành công. Nếu muốn nâng cao kỹ năng lãnh đạo của mình để chuẩn bị cho vai trò quản lý, thì bạn hãy đọc cuốn sách của tác giả Phil Jackson “Eleven Rings: The Soul of Success” của Phil Jackson Senior Leader . Ở Việt Nam bạn có thể mua bản tiếng Anh trên Tiki nhưng không phải lúc nào cũng có hàng.
Quản lý cấp cao (Senior Leader)
- VP, CTO hoặc CEO
- Là sếp các quản lý cấp trung và tất nhiên, họ có quyền thuê hay sa thải những người dưới quyền.
- Báo cáo công việc với một Senior Leader khác hoặc với Ban giám đốc
Sự khác biệt rõ ràng giữa một nhà quản lý cấp trung (mid-level manager) và một lãnh đạo cấp cao (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 chung, 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à là người truyền cảm hứng, giúp đội ngũ của họ có niềm tin vào sứ mệnh (mission).
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. Các nhà quản lý cấp trung (Mid-Level Manager) vẫn có thể có thời gian để mày mò 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 (trừ khi bạn là Bill Gates, nhưng hầu như không ai là Bill Gates cả, một người xuất chúng). Ở cấp độ này bạn cần phải đọc cuốn sách của Phil Jackson, đọc và nghiền ngẫm thực sự.
Công việc của một Senior Leader là đảm bảo cho tất cả mọi người trong công ty cùng tiến theo một hướng, đảm bảo hướng đi đó dẫn đến đích đã định, 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 đó. Đây là một công việc rất khó khăn và đầy cam go nhưng cũng rất thú vị. Nếu bạn đang được cất nhắc lên vị trí này, thì hãy đọc cuốn sách “The Hard Thing About Hard Things” của Ben Horowitz. Bạn có thể mua cuốn này trên Tiki.
Chẳng ai mới sinh ra đã là Senior leasder. Họ phải tôi luyện mà thành. Phải trải nghiệm thật nhiều để hoàn thành tốt công việc đó. Hãy đọc blog của Ben Horowitz về Making Yourself a CEO để biết rõ hơn về điều này.
Lời kết
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à nhu cầu về lập trình viên hiện nay cao hơn so với bất kỳ giai đoạn nào trước đây, kể cả trên thế giới lẫn Việt Nam. Đây là một thời điểm tuyệt vời để theo đuổi nghề lập trình viên. Chẳng bao giờ là quá sớm để lên kế hoạch cho sự nghiệp của mình. Hy vọng bài viết này đã gợi ý và cung cấp những thông tin hữu ích để bạn có thể chuẩn bị cho tương lai phía trước.
Bài này được dịch và biên tập dựa theo bài gốc trên CentuaryLink
Bạn cũng có thể tham khảo thêm về lộ trình phát triển của developer trong bài viết “Engineering Ladders – A framework for Engineering Managers” của Jorge Fioranelli
Bạn có biết?
tham gia cộng đồng ITguru trên Linkedin, Facebook và các kênh mạng xã hội khác có thể giúp bạn nhanh chóng tìm được những chủ đề phát triển nghề nghiệp và cập nhật thông tin về việc làm IT mới nhất
Linkedin Page:
Facebook Group:
cơ hội việc làm IT : ITguru.vn