CodeGym /Các khóa học /JAVA 25 SELF /Con đường của lập trình viên

Con đường của lập trình viên

JAVA 25 SELF
Mức độ , Bài học
Có sẵn

1. Nấc thang sự nghiệp

Lập trình viên cũng có các cấp bậc tùy theo trình độ. Trước đây từng dùng các khái niệm như “coder”, “programmer” và “hacker”, nhưng giờ mọi người đã chuyển sang gọi bằng tiếng Anh theo ngành IT của Mỹ.

Dành cho developer có 6 cấp bậc chính:

  • Intern Software Engineer
  • Junior Software Engineer
  • Middle Software Engineer
  • Senior Software Engineer
  • TechLead
  • Principal Software Engineer

Tùy quốc gia và thậm chí tùy công ty mà một số tiêu chí có thể khác nhau, nhưng đại ý như sau:

  • 🌱 Intern Software Engineer — là thực tập sinh. Họ đang trong quá trình học lập trình, không có kinh nghiệm thương mại cũng như kinh nghiệm tham gia các dự án lớn. Thường làm việc dưới sự giám sát của đồng nghiệp giàu kinh nghiệm hơn. Nhiệm vụ chính tại nơi làm việc — tìm hiểu codebase và các nền tảng phát triển phần mềm, thực hiện các tác vụ mã hóa đơn giản và tham gia kiểm thử.
  • 🐣 Junior Software Engineer — đã là lập trình viên, nhưng chưa có kinh nghiệm thương mại đáng kể hoặc có kinh nghiệm dưới một năm. Làm việc dưới sự hướng dẫn của developer giàu kinh nghiệm hơn, triển khai các phần của dự án và tham gia quy trình code review. Giai đoạn này tập trung vào đào sâu kỹ năng kỹ thuật và hiểu biết về nhiệm vụ dự án.
  • 🦾 Middle Software Engineer (hay đơn giản là Software Engineer): có nhiều tự chủ hơn trong quyết định kỹ thuật, chịu trách nhiệm các phần quan trọng của dự án, bắt đầu mentor cho đồng nghiệp ít kinh nghiệm hơn và tham gia tích cực vào thảo luận kiến trúc. Thường có 2–5 năm kinh nghiệm thực hành.
  • 🧑‍🔬 Senior Software Engineer: chịu trách nhiệm thiết kế và hiện thực hóa các hệ thống phức tạp, đảm nhận mentoring và dẫn dắt trong team, tham gia hoạch định chiến lược dự án và thường đại diện cho team khi làm việc với khách hàng và các bên liên quan khác. Thường có 5–10 năm kinh nghiệm.
  • 🧠 TechLead: chịu trách nhiệm về kết quả kỹ thuật cuối cùng của dự án, dẫn dắt quá trình phát triển, giải quyết các bài toán khó nhất, đảm bảo tuân thủ tiêu chuẩn kỹ thuật và phối hợp hoạt động của các developer.
  • 🏆 Principal Software Engineer: làm việc ở cấp kỹ thuật cao nhất, thường tham gia định hình chiến lược kỹ thuật của công ty, phát triển giải pháp đổi mới và thiết lập tiêu chuẩn kỹ thuật, là mentor chính cho các technical leader và là chuyên gia chủ chốt trong các vấn đề kỹ thuật phức tạp.

Điều thú vị. Ở các công ty lớn có thể có thêm các vai trò và bậc phụ. Ví dụ, ở Google có các vai trò sau:

  • Staff Software Engineer (L6): có ảnh hưởng đáng kể đến đường lối kỹ thuật của bộ phận mình.
  • Senior Staff Software Engineer (L7): làm việc với các dự án quy mô lớn và phức tạp, xác định định hướng chiến lược phát triển công nghệ trong công ty.

2. Sản phẩm kiểu Lego

Ngày xưa (năm 1975) Niklaus Wirth, người tạo ra ngôn ngữ Pascal, đã viết cuốn sách “Algorithms + Data Structures = Programs”. Kể từ đó rất nhiều thứ đã thay đổi. Sản phẩm phần mềm hiện đại không còn như 10 năm trước, và càng không giống 20 năm trước. Còn năm 1975 thì khỏi phải nói — đã 50 năm trôi qua ⏳

Lập trình viên hiện đại không còn viết mọi thứ thủ công. Họ chủ yếu lắp ghép từ các phần có sẵn (thư viện) và viết mã giúp các phần này tương tác với nhau 🧩. Sản phẩm phần mềm ngày nay có thể gồm hàng chục, thậm chí hàng trăm chương trình. Một số chạy trên máy tính của người dùng, trên thiết bị di động; phần lớn — chạy trên máy chủ trong các trung tâm dữ liệu.

Nhiều chương trình như máy chủ web hay cơ sở dữ liệu đã được viết sẵn. Chỉ cần cấu hình đúng để chúng hoạt động như mong muốn. Dù theo thời gian, quá trình cấu hình có thể trở nên phức tạp đến mức thực chất biến thành phát triển sản phẩm 🤦‍♂️

Lập trình viên luôn “đấu tranh” với chính mình. Thay vì lặp lại những đoạn mã giống nhau trong các chương trình khác nhau, họ viết các thư viện có thể cấu hình theo nhu cầu, rồi tái sử dụng chúng ở mọi nơi cần thiết.

Trong 20 năm qua, các lập trình viên đã viết rất nhiều thư viện, framework và kho mã nguồn mở. Thực sự có hàng triệu. Và giờ đây, viết toàn bộ mã từ con số 0 bị coi là không hay. Thay vào đó, hãy ghép ứng dụng từ các giải pháp chất lượng và đã được kiểm chứng — thư viện, framework, package và module 🧱

Nhưng cả cách tiếp cận này cũng đang dần lỗi thời. Xu hướng 10 năm gần đây — chuyển lên đám mây, các trung tâm dữ liệu lớn cung cấp cho ứng dụng của bạn mọi thứ cần thiết. Muốn có cơ sở dữ liệu? Có hàng trăm lựa chọn. Muốn một máy chủ web hiếm và độc đáo — cũng có! Muốn gì được nấy, miễn là chi trả.

3. “Tôi là kỹ sư” © Elon Musk

img

Không còn cần tự viết những thứ phức tạp và nhàm chán nữa. Nếu bạn cần một chức năng nào đó — đã có sẵn thư viện và framework cho việc đó. Nhiệm vụ của bạn: a) biết chúng tồn tại, b) tìm phương án phù hợp (thường có vài lựa chọn tương tự với chất lượng và sắc thái khác nhau), c) hiểu cách tích hợp vào dự án của mình 🎓

Nhờ vậy công việc chỉ thú vị hơn. Giờ bạn có thể bổ sung chức năng mới vào sản phẩm nhanh hơn gấp 10 lần. 30 năm trước, nếu cần máy chủ web, bạn sẽ viết từ đầu. 20 năm trước — mua, cài đặt và cấu hình. Còn bây giờ — chỉ cần vào cổng đám mây Azure hoặc AWS và bật dịch vụ cần dùng 🌐

Đó, nhân tiện, là một trong những lý do ngôn ngữ Java phổ biến. Nó không chỉ rất phù hợp để phát triển các giải pháp doanh nghiệp lớn, mà còn để “ghép nối” các thành phần khác nhau — thông qua hệ sinh thái JVM phong phú có tích hợp với hầu như mọi thứ: cơ sở dữ liệu, microservice, REST API, hệ thống nhắn tin, dịch vụ đám mây, nền tảng phân tích.

Vì thế, nghề Java Software Engineer cũng đã lâu chuyển thành Fullstack Java Developer. Developer hiện đại cần hiểu cách cơ sở dữ liệu hoạt động (PostgreSQL, MySQL/MariaDB, MongoDB, v.v.) để xây dựng tương tác một cách hợp lý. Cần nắm cách vận hành của frontend (HTML, CSS, JavaScript/TypeScript, React, Angular) để cấu hình trao đổi với phần backend bằng Java (Spring Boot, Micronaut, Quarkus). Và dĩ nhiên, bây giờ không có Docker thì coi như không đi đâu được — đó đã là tiêu chuẩn ngành 🐳.

Phát triển phần mềm hiện đại nói chung khác rất nhiều so với 20 năm trước. Lập trình viên không còn viết mã quá 50% thời gian — phần còn lại dành cho đọc tài liệu, học công nghệ mới, thiết kế và làm việc nhóm trong các buổi họp. Lập trình viên làm một mình giờ đã là ngoại lệ hiếm hoi.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION