[Training] Lập trình viên phát triển sự nghiệp như thế nào?
Bài đăng này đã không được cập nhật trong 3 năm
Đầu năm chắc hẳn mỗi người trong chúng ta đều có những dự định riêng cho mình. Một bản kế hoạch cho năm mới giúp bạn đề ra mục tiêu, kế hoạch, tầm nhìn… của mình cho một năm “đủ đầy” hơn.
Vậy bạn nghĩ thế nào về câu hỏi "Bạn nhìn thấy bản thân mình ở đâu sau 5 năm nữa?". Câu hỏi này có sự liên quan trực tiếp tới con đường sự nghiệp tương lai dành cho một nhà phát triển phần mềm. Và hầu hết mọi người đều đã chuẩn bị sẵn cho mình những kế hoạch học hỏi những công nghệ mới, những dự án đang được ấp ủ. Nhưng liệu bạn vẫn sẽ ngồi trước màn hình máy tính để lập trình khi mà bạn ở tuổi 40? Khi bạn ở độ tuổi 50? Đâu là thành quả sự nghiệp tốt nhất có thể dành cho một lập trình viên, mẫu người nào mà bạn đang khao khát trở thành?
8 CẤP ĐỘ CỦA MỘT LẬP TRÌNH VIÊN
1. Lập trình viên bất tử
Đây là cấp độ cao nhất. Những đoạn code của bạn sẽ trường tồn và vượt lên trên cả cái chết của bạn. Bạn là một phần của các ghi chép lâu dài về lịch sử của ngành điện toán. Những lập trình viên khác sẽ nghiên cứu về công việc và bút tích của bạn. Bạn có thể đã giành một giải thưởng Turing Award, hoặc đã viết ra những công trình nghiên cứu có sức ảnh hưởng lớn, hoặc đã phát minh ra một hoặc nhiều phần của nền tảng công nghệ mà đã tạo ra ảnh hưởng tới các khóa học lập trình như chúng ta đã biết. Bạn không chỉ có một trang wikipedia giới thiệu về mình — mà toàn bộ các trang web đều nghiên cứu về cuộc đời và sự nghiệp của bạn.
Rất ít lập trình viên đã đạt được cấp độ này trong cuộc đời của họ.
Một số lập trình viên đạt cấp độ này như: Dijkstra, Knuth, Kay
2. Lập trình viên thành công
Những lập trình viên này vừa nổi tiếng và cũng tạo nên những doanh nghiệp tầm cỡ — có lẽ thậm chí họ đã tạo ra toàn bộ ngành công nghiệp — xung quanh những dòng code của họ. Những lập trình viên này đã mang lại cho họ sự tự do thực sự: tự do để quyết định công việc mà họ muốn làm. Và chia sẻ sự tự do đó cùng với những đồng nghiệp của họ.
Đây là cấp độ mà hầu hết các lập trình viên đều khao khát vươn tới. Để đạt được cấp độ này thì thường phụ thuộc nhiều vào các kỹ năng kinh doanh hơn là lập trình.
Một số lập trình viên đạt cấp độ này như: Bill Gates, Carmack, DHH
3. Lập trình viên nổi tiếng
Đây cũng là một cấp độ tốt để vươn tới, nhưng bạn cũng nên có một công việc hàng ngày.
Bạn nổi tiếng trong cộng đồng lập trình viên. Nhưng việc trở nên nổi tiếng đó thì không đồng nghĩa với việc bạn có thể thu được nhiều tiền cho riêng mình. Nổi danh thì tốt, nhưng thành công thì còn tốt hơn. Bạn có thể làm việc cho một công ty công nghệ lớn và nổi tiếng trên thế giới, hay một công ty nhỏ nhưng có sức ảnh hưởng, hoặc bạn là một phần của một nhóm khởi nghiệp khiêm tốn nào đó. Nhưng dù sao đi nữa, những lập trình viên khác cũng đã nghe danh về bạn, và bạn đang có một sức ảnh hưởng tích cực lên cộng đồng.
4. Lập trình viên giỏi
Bạn có một sự nghiệp thành công với tư cách là một nhà phát triển phần mềm. Các kỹ năng của bạn luôn đáp ứng được yêu cầu và bạn chẳng bao giờ phải chờ lâu hoặc khó nhọc để kiếm một công việc tuyệt vời nào đó. Các đồng nghiệp của bạn rất nể phục bạn. Mỗi công ty mà bạn làm việc cho họ thì luôn tăng trưởng và thịnh vượng hơn theo một cách nào đó bởi sự hiện diện của bạn.
Nhưng mà bạn sẽ đi đâu từ vị trí này?
5. Lập trình viên trung bình
Tại cấp độ này thì bạn là một lập trình viên đủ tốt để nhận ra rằng mình không là một lập trình viên vĩ đại. Và bạn có thể sẽ chẳng bao giờ đạt được như vậy.
Tài năng thường có rất ít việc phải làm cùng với thành công. Bạn có thể rất thành công nếu bạn có một công việc kinh doanh và các kỹ năng mềm khác. Nếu bạn là một lập trình viên trung bình nhưng biết cách kiếm sống với nó thì bạn đã là một tài năng rồi, chứ không nhất thiết phải giỏi ở khả năng lập trình.
Đừng đánh giá thấp giá trị bản thân mình. Đôi khi bạn chưa nhận ra là mình cũng có nhiều khả năng đặc biệt. Không có điều gì sai trái với việc thiếu hụt tài năng cả. Hãy can đảm lên. Hãy nhận ra cái mà bạn giỏi nhất và theo đuổi nó. Thật năng nổ vào.
6. Lập trình viên nghiệp dư
Một lập trình viên nghiệp dư yêu thích việc viết code, và điều đó chỉ ra rằng: họ có thể là một sinh viên hoặc một thực tập sinh đầy triển vọng, hoặc có thể họ đang đóng góp công sức vào một số dự án mã nguồn mở, hoặc đang thích thú xây dựng các ứng dụng và các trang web với mục đích “chỉ cho vui” trong thời gian rảnh rỗi. Những ý tưởng và đoạn code của họ cho thấy sự nhiệt tình và đầy triển vọng.
Trở thành một lập trình viên nghiệp dư là một điều tốt; từ cấp độ này họ có thể nhanh chóng phát triển lên trở thành một lập trình viên giỏi.
7. Lập trình viên vô danh
Những lập trình viên này thường được gán cho một cái biệt danh là Joe Coder. Họ có đủ trình độ (thường là vậy) nhưng không có gì gọi là nổi bật. Họ có thể làm việc cho một tổ chức lớn và nặc danh như Posiba chẳng hạn. Đó chỉ là một công việc, không phải là toàn bộ cuộc đời họ. Và cũng không có điều gì sai trái với điều đó cả.
8. Lập trình viên tồi
Những người mà vì một lý do nào đó dòng đời xô đẩy mà “rớt vào” vai trò lập trình viên và không hề có bất kỳ một khả năng hoặc kỹ năng nào cả. Mọi thứ họ chạm tay vào đều tạo ra những đau khổ cho những lập trình viên đồng nghiệp, vì phải đi hốt rác cho họ — và cũng có thể làm đau khổ là cho những Lập Trình Viên Tồi khác, những người mà thiếu hụt thậm chí những kỹ năng cơ bản nhất cần có để nói rằng họ đang làm việc cùng với những Lập Trình Viên Tồi khác.
Điều này thì, có lẽ, là điểm dễ nhận thấy của tất cả các Lập Trình Viên Tồi. Những người không hề có bất kỳ một khả năng viết code nào cả — nhưng dù sao đi nữa họ lại đang làm công việc này.
Những cấp độ này thì không hoàn toàn nghiêm túc lắm. Không phải mọi lập trình viên đều khao khát tới những mục đích giống nhau trong sự nghiệp của họ. Nhưng nó cũng chỉ ra những điều mà một lập trình viên cần cân nhắc có thể hoàn thành trong 10 năm, 20 năm, hoặc 30 năm — thậm chí là cả cuộc đời họ. Những lập trình viên nổi tiếng nào mà bạn cảm thấy nể phục nhất? Họ đã đạt được thành tựu gì mà khiến bạn cảm thấy ngưỡng mộ?
21+ CON ĐƯỜNG SỰ NGHIỆP CHO DEVELOPER
Dưới đây là tổng hợp 21+ con đường sự nghiệp (career path) trong ngành IT, mà ITviec đưa ra giúp chúng ta:
- Chọn định hướng nghề nghiệp phù hợp để phát huy tối đa khả năng.
- Biết cách để rèn luyện những kĩ năng, tố chất cần thiết cho từng vị trí công việc.
- Học hỏi từ kinh nghiệm xương máu của chính những “người trong cuộc”.
Những nhánh nghề chính
Từ góc nhìn khái quát, con đường sự nghiệp của software developer có thể chia làm 3 hướng chính: Fulltime developer, Freelancer, và Entrepreneur.
Mỗi hướng đi này lại chia làm nhiều ngã rẽ nhỏ tùy theo kĩ năng chuyên sâu, hoặc tính chất/phạm vi công việc.
Có thể định nghĩa ngắn gọn:
- Fulltime Developer: làm việc toàn thời gian cho một công ty/tổ chức và nhận lương từ đơn vị này. Hầu hết họ đều muốn chọn công ty phù hợp để gắn bó lâu dài và được thăng tiến. Đôi khi, họ có thể nhảy việc, đổi công ty để được tăng lương, thăng chức. Và một ngày nào đó, họ sẽ nghỉ hưu.
Đây là con đường sự nghiệp phổ biến nhất và gần như là mặc định cho mọi developer.
- Freelance Developer: “lính đánh thuê”, làm việc tự do, không thuộc quyền quản lý của một công ty/tổ chức nào.
Một số trang web giúp Freelancer tìm và kết nối với khách hàng: Freelancer, Upwork.
- Developer Entrepreneur: phát triển sản phẩm cho chính mình, trực tiếp kinh doanh/phân phối sản phẩm đó đến người dùng.
Ví dụ: tự phát triển app rồi bán trên Google Store, viết blog, làm tutorial.v.v…
1. Con đường sự nghiệp của Fulltime Developer
Khởi điểm chung Level 1: Fresher/Junior Developer
- 0-1 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.v.v…
- Có thể viết các script cơ bản.
Level 2: Developer
- 1-3 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.
Ngã rẽ nghề nghiệp: chọn theo hướng Management (quản lý) hay Technical (kĩ thuật)?
Hướng Management
Level 3: Team Leader
Level 4: Project Manager
Level 5: Manager/Director
Hướng Technical
Level 3: Senior Developer
Level 4: Technical Lead
Level 5: Software Architect
Level 6: CTO
2. Con đường sự nghiệp của Freelance Developer
Không phải ngồi văn phòng vò võ 8-10 tiếng/ngày, được tự do lựa chọn “sếp” (cũng chính là khách hàng), tự do về thời gian và địa điểm làm việc.v.v… Đó là ước mơ của không ít Developer.
Tuy nhiên, tự do không dành cho tất cả mọi người.
Không phải ai cũng phù hợp để làm “freelancer toàn thời gian”. Để theo đuổi con đường “lính đánh thuê chuyên nghiệp” này, bạn cần phải thật vững về chuyên môn, đồng thời có khả năng giao tiếp, thương lượng, và quản lý công việc tốt.
Đồng thời, bạn cũng cần rất nghiêm khắc với bản thân nữa, để có thể “tự quản lý” chính mình.
3. Con đường sự nghiệp của Developer Entrepreneur
Tự phát triển sản phẩm cho chính mình. Tự kinh doanh sản phẩm do mình làm ra. Cả một bầu trời tự do! (Thậm chí còn tự do hơn cả Freelance Developer – những người thực ra vẫn chịu sự quản lý/giám sát của khách hàng!)
Tuy nhiên, đây không phải con đường bằng phẳng dễ dàng chút nào. Để thành công, bạn sẽ cần thêm rất nhiều kiến thức về thị trường, phát triển sản phẩm, marketing, sự nhạy bén, quyết liệt và cả sự may mắn nữa!
Và ôm đồm cùng lúc từ A đến Z tất cả mọi việc là rất khó, nên khả năng cao là bạn nên thuê người để hỗ trợ, hoặc thành lập doanh nghiệp.
Phát triển theo kỹ năng
1. Web Developer
Có lẽ đây là nhánh nghề phổ biến nhất hiện nay của các lập trình viên.
Là Web Developer, dĩ nhiên nhiệm vụ chính của bạn sẽ là làm các ứng dụng web. Đồng thời, bạn có thể chọn đi chuyên sâu về front-end, back-end, hoặc làm full-stack để kiêm nhiệm cả hai.
2. Mobile Developer
“Go mobile” đã, đang, và sẽ tiếp tục là một xu thế mạnh mẽ trong ngành lập trình. Cùng với đó, cơ hội nghề nghiệp cho Mobile Developer cũng nở rộ.
Nhiệm vụ chính của họ là phát triển các ứng dụng cho điện thoại, máy tính bảng, hoặc thậm chí cả các ứng dụng có thể dùng cho tivi hoặc wearable devices.
3. Game Developer
Trong ngành lập trình, nếu có nhánh nghề nào mộng mơ, “nghệ sĩ” nhất, thì có lẽ là Game Developer.
Bằng những hiểu biết về kĩ thuật của mình, Game Developer hiện thực hóa ý tưởng/thiết kế của designer thành một sản phẩm cụ thể, hoàn chỉnh. Và rất nhiều khi, đó là một fantasy world sống động với đầy đủ mọi tốt xấu, vui buồn như chính cuộc đời thực.
Developer muốn theo nghề làm game thì ngoài khả năng lập trình sẽ cần:
- Kĩ năng phân tích, giải quyết vấn đề một cách logic. Kĩ năng tự học và hợp tác với mọi người.
- Sự cởi mở, open-mind, chấp nhập sự khác biệt.
- Và dĩ nhiên, niềm đam mê với game.
4. Automation Developer/Tester
Nhiệm vụ chính của Automation Developer/Tester dĩ nhiên là phát triển… automated tool. Tùy từng dự án và công ty mà họ có thể chuyên sâu về phát triển tool, framework, library hoặc viết script dựa trên một công cụ automated test nào đó.
Developer muốn theo hướng này cần:
- Hiểu nguyên lý nhận dạng test object, nguyên lý lập trình, cũng như phải thành thạo ít nhất một ngôn ngữ lập trình.
- Ngoài ra, nên tìm hiểu sâu về software design pattern, và chịu khó liên tục cập nhật kiến thức chuyên môn mới.
5. Embedded Developer
Hmm… Embeded Engineer nghe có vẻ không được “thời thượng” lắm nhỉ?
Nhưng thực ra, đây lại là một nhánh nghề rất “cool ngầu”!
Hiện nay, hầu hết mọi máy móc đều có microchip và thiết bị cảm biến, tương tác với thế giới thật trong thời gian thật. Embedded Engineer chính là người viết nên những “bộ não” thông minh để điều khiển từ lò vi ba, máy giặt cho đến robot hút bụi, ô tô, tàu lửa, máy bay.v.v…
Developer muốn theo hướng Embedded thì cần hiểu cách công nghệ và ngoại cảnh tương tác với phần mềm. Đồng thời, họ phải có tinh thần của một hardware engineer cộng với kĩ năng của software engineer.
Những nhánh nghề “lân cận”
6. Business Analyst
Business Analyst làm nhiệm vụ “cầu nối”, lấy yêu cầu của khách hàng chuyển về cho team nội bộ thực hiện. Họ cũng là người tư vấn, đề xuất giải pháp cho khách hàng. Và, không phải vấn đề nào cũng được giải quyết bằng giải pháp phần mềm.
Developer muốn chọn Business Analyst làm con đường sự nghiệp thì cần có kĩ năng giao tiếp tốt, tiếng Anh khá, đầu óc cởi mở, suy nghĩ logic. Ngoài ra, bạn cần học:
- Một số công cụ hỗ trợ cho BA: Office, Visual, Jira, Confluence.
- Các khóa học nghiệp vụ BA: CCBA, CBAP.
7. Data Analyst
Data Analyst là người đại diện cho tiếng nói của dữ liệu. Họ thực hiện các phân tích sâu (deep dive analytics) để cung cấp insights cho những quyết định cũng như kế hoạch của ban lãnh đạo doanh nghiệp.
Developer muốn chuyển hướng trở thành Data Analyst cần có:
- Kĩ năng code cơ bản và sử dụng các công cụ phân tích dữ liệu.
- Kĩ năng sử dụng các công cụ visualize để chuyển hóa dữ liệu thành graphics.
- Kĩ năng chuyển hóa dữ liệu thành actionable insight.
- Am hiểu business, cũng như cấu trúc dữ liệu và hệ thống dữ liệu của công ty.
8. Data Scientist
Data Scientist chia làm 2 nhóm chính: A-Thinker (gần với Data Analyst) và B-Builder (mạnh hơn về software engineering). Nhiệm vụ của nhánh B thường là xây dựng các sản phẩm data/mô hình dữ liệu.
Developer muốn trở thành Data Scientist nhánh B cần kiên nhẫn, giao tiếp tốt, thích tìm hiểu và thử cái mới. Đồng thời, cần nắm vững:
- Machine learning, Database, Visualization.
- Kĩ năng lập trình.
9. Bridge System Engineer
Bridge System Engineer (kỹ sư cầu nối – BrSE) là người làm nhiệm vụ kết nối “team nhà” 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. Họ cần tinh nhuệ để vừa độc lập tác chiến, vừa phối hợp tốt với đồng đội.
Bridge System Engineer (BrSE) = Developer + Business Analyst + Tester + Project Manager (PM)
Developer muốn chọn con đường sự nghiệp Bridge System Engineer thì cần điềm tĩnh, có tính trách nhiệm cao, chịu khó học hỏi, nhẫn nại. Đồng thời, bạn cần code “cứng”, giao tiếp tốt, và ngoại ngữ giỏi.
10. DevOps Engineer
DevOps Engineer là một vị trí nảy sinh từ thực tế công việc, có thể tạm coi là Sysadmin “kiểu mới”. Nhiệm vụ của họ thường là phát triển các công cụ tự động để automated deploy sản phẩm.
Developer muốn chuyển hướng sang DevOps Engineer thì cần phải hiểu rõ văn hóa/mindset DevOps, đồng thời phải:
- Có kinh nghiệm với system và IT operations, quản lý dữ liệu.
- Nắm vững các tiến trình (CI/CD) và công cụ tự động hóa.
- Có khả năng sử dụng nhiều công nghệ và mã nguồn mở, coding/scripting.
11. QA/QC
Cả QA và QC đều thuộc lĩnh vực Quản lý chất lượng, nhưng tính chất và mô tả công việc có những điểm khác biệt.
QA (viết tắt của Quality Assurance) là người chịu trách nhiệm đảm bảo chất lượng sản phẩm thông qua việc đưa ra quy trình làm việc giữa các bên liên quan.
Nhiệm vụ chính:
- Đưa ra quy trình phát triển, tài liệu/biểu mẫu/hướng dẫn.
- Kiểm tra, giám sát việc thực thi quy trình.
- Điều chỉnh, thay đổi quy trình cho phù hợp.
- QC (viết tắt của chữ Quality Control) là người chịu trách nhiệm thực hiện công việc kiểm tra chất lượng phần mềm. Có 2 vị trí QC thông thường là manual QC (không đòi hỏi kỹ năng lập trình) và automation QC (đòi hỏi kỹ năng lập trình).
Nhiệm vụ chính:
- Tìm hiểu hệ thống, phân tích tài liệu mô tả về hệ thống, thiết kế test cases, thực hiện việc test phần mềm.
- Phối hợp với nhóm lập trình trong việc fix bug.
- Developer nếu ham thích tìm tòi để phát hiện ra lỗi, đề xuất những cải tiến để có sản phẩm tốt hơn cho người dùng – thì có thể cân nhắc hướng QA QC.
12. Product Manager/Owner
Product Manager được coi là mini-CEO, chịu trách nhiệm về sự thành công xuyên suốt vòng đời của sản phẩm. Nhiệm vụ chính:
- Quyết định hướng đi của sản phẩm, cũng như những tính năng nào nên/không nên làm.
- Dẫn dắt đội ngũ thiết kế, kĩ thuật .v.v…, nhằm đảm bảo sản phẩm được phát triển với chất lượng tốt nhất, làm hài lòng người sử dụng sản phẩm và đạt mục tiêu kinh doanh.
Developer muốn trở thành Product Manager cần:
- Am hiểu về người dùng và thị trường, UI/UX.
- Có khả năng lãnh đạo, xây dựng team, ra quyết định, khả năng giao tiếp và truyền cảm hứng.
13. IT Trainer
Nhiệm vụ chính:
- Tham gia vào training cho Interns, Freshers về ngôn ngữ lập trình/nền tảng theo nội dung training của Công ty
- Tham gia vào quản lý nhóm học viên, xây dựng và cập nhật nội dung training
- Tham gia vào các dự án phần mềm với những doanh nghiệp hàng đầu Nhật Bản hoặc các dự án nội bộ trong Công ty
- Tiếp cận và được đào tạo theo mô hình phát triển dự án Agile, Scrum
Kết luận
Con đường sự nghiệp muôn lối, chọn lối đi nào sẽ giúp bạn nhanh chóng thành công? Đó là câu hỏi lớn cho tất cả mọi người, dù là cậu sinh viên IT sắp ra trường hay anh dev kì cựu. Đó là lý do tại sao tôi lại đặt câu hỏi để nhìn thấy mình đứng ở đâu sau 5 năm nữa. Tôi muốn biết điều gì thúc đẩy bạn bước ra khỏi giường vào mỗi buổi sáng. Những người thành công nhất là những ai biết cách chia sẻ đam mê của mình để hoàn thiện nó hơn nữa.
Chính vì thế, đừng lo lắng khi phải giải thích những giá trị của bản thân mình và cách mà nó định hình tương lai. Câu hỏi “5 năm tới” sẽ là cơ hội để bạn xác định con đường mà mình sẽ đi và cũng là cách để bạn thể hiện sự cam kết với chính bản thân mình về những việc làm trong tương lai.
Tham khảo
All rights reserved