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

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

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

1. Lộ trình sự nghiệp

Các lập trình viên cũng có các cấp độ dựa trên trình độ. Ngày xưa, người ta dùng các thuật ngữ như «coder», «programmer» và «hacker», nhưng giờ tất cả đều chuyển sang tên tiếng Anh theo ngành IT Mỹ.

Đối với nhà phát triển, có 6 cấp độ chính:

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

Ở các quốc gia khác nhau và thậm chí từng công ty, các tham số có thể khác nhau, nhưng ý chính như sau:

  • 🌱 Intern Software Engineer — là thực tập sinh. Họ đang trong quá trình học lập trình, chưa có kinh nghiệm thương mại, cũng chưa tham gia các dự án lớn. Thường làm việc dưới sự giám sát của các đồng nghiệp có kinh nghiệm hơn. Nhiệm vụ chính của họ là học mã nguồn và các nguyên tắc phát triển phần mềm, thực hiện các nhiệm vụ lập trình đơn giản và tham gia kiểm thử.
  • 🐣 Junior Software Engineer — đã là lập trình viên, nhưng chưa có nhiều kinh nghiệm thương mại hoặc dưới 1 năm kinh nghiệm. Làm việc dưới sự hướng dẫn của các nhà phát triển có kinh nghiệm hơn, thực hiện các phần của dự án và tham gia vòng code-review. Giai đoạn này tập trung vào nâng cao kỹ năng kỹ thuật và hiểu rõ các nhiệm vụ của dự án.
  • 🦾 Middle Software Engineer (hoặc đơn giản là Software Engineer): có nhiều tự chủ hơn trong việc đưa ra 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 hướng dẫn các đồng nghiệp ít kinh nghiệm hơn và tích cực tham gia thảo luận về kiến trúc. Thường có từ 2–5 năm kinh nghiệm thực tế.
  • 🧑‍🔬 Senior Software Engineer: chịu trách nhiệm thiết kế và triển khai các hệ thống phức tạp, hướng dẫn và mentor trong nhóm, tham gia lập kế hoạch chiến lược cho dự án và thường đại diện nhóm trong giao tiếp với khách hàng và các bên liên quan. Thường có từ 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 nhiệm vụ phức tạp nhất, đảm bảo tiêu chuẩn kỹ thuật và điều phối hoạt động của các nhà phát triển.
  • 🏆 Principal Software Engineer: làm việc ở cấp độ kỹ thuật cao nhất, thường tham gia xây dựng chiến lược kỹ thuật của công ty, phát triển các giải pháp sáng tạo và thiết lập các tiêu chuẩn kỹ thuật, là mentor chính cho các technical lead và là chuyên gia chủ chốt trong các vấn đề kỹ thuật phức tạp.

Điều này thú vị. Các công ty lớn có thể có các vai trò và phân nhóm phụ khác. Ví dụ, ở Google có các vai trò như:

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

2. Sản phẩm Lego

Ngày xưa (năm 1975), Niklaus Wirth, người sáng lập ngôn ngữ Pascal, đã viết cuốn sách «Algorithms + Data Structures = Programs». Từ đó đến nay, nhiều thứ đã thay đổi. Sản phẩm phần mềm hiện đại không còn giống như 10 năm trước, và chắc chắn không giống như 20 năm trước. Nói về năm 1975 thì không cần bàn nữa — đã trôi qua 50 năm rồi ⏳

Hiện tại, lập trình viên không còn viết chương trình thủ công nữa. Thay vào đó, họ chủ yếu ghép các phần đã có (thư viện) và viết mã để các phần này tương tác với nhau🧩. Các sản phẩm phần mềm hiện đại có thể gồm hàng chục, 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 của họ, phần lớn còn lại chạy trên các máy chủ trong data center.

Nhiều phần mềm như web server hoặc database đã được viết sẵn rồi. Chỉ cần cấu hình đúng cách để chúng hoạt động như mong muốn. Tuy nhiên, theo thời gian, quá trình cấu hình có thể trở nên phức tạp đến mức gần như là phát triển phần mềm mới luôn rồi 🤦‍♂️

Các lập trình viên liên tục tự đấu tranh với chính mình. Thay vì viết lại mã giống nhau trong nhiều chương trình, họ viết thư viện có thể cấu hình (tùy chỉnh) theo nhu cầu của mình, rồi dùng chung trong nhiều dự án khác nhau.

Trong 20 năm qua, đã có hàng triệu thư viện, framework và repository mở được tạo ra. Và giờ, việc viết toàn bộ mã từ đầu đã trở thành điều không nên làm. Thay vào đó, người ta ghép các giải pháp đã được kiểm chứng, chất lượng cao từ thư viện, framework, package và module 🧱

Nhưng cách này cũng dần trở nên lỗi thời. Xu hướng trong 10 năm gần đây là chuyển sang đám mây, các data center lớn cung cấp mọi thứ mà các chương trình cần. Muốn database? Có hàng trăm lựa chọn. Muốn một web server đặc biệt? Cũng có luôn! Mọi thứ đều sẵn sàng, chỉ cần trả tiền là xong.

3. «Tôi là kỹ sư» © Elon Musk

img

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

Công việc trở nên thú vị hơn nhiều. Giờ đây, bạn có thể nhanh gấp 10 lần để thêm chức năng mới vào sản phẩm. 30 năm trước, nếu cần một web server, bạn phải tự 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 portal đám mây Azure hoặc AWS và bật dịch vụ cần thiết 🌐

Đây cũng là một trong những lý do khiến ngôn ngữ C# phổ biến. Nó phù hợp không chỉ để viết các giải pháp lớn, mà còn để "dán ghép" các thành phần khác nhau — qua .NET có thể tích hợp gần như với mọi thứ, từ database, microservices, REST API, message queues đến cloud services.

Vì vậy, nghề nghiệp C#/.NET developer đã chuyển thành Fullstack .NET Software Engineer. Nhà phát triển hiện đại cần hiểu cách hoạt động của database (SQL Server, PostgreSQL, MongoDB, v.v.) để xây dựng tương tác hợp lý. Cần biết frontend như HTML, CSS, JavaScript/TypeScript, Blazor để cấu hình trao đổi với backend viết bằng C#. Và tất nhiên, không thể thiếu Docker — đã trở thành tiêu chuẩn ngành rồi 🐳

Phát triển phần mềm hiện nay khác xa 20 năm trước nhiều. Lập trình viên chỉ viết code khoảng 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 qua các cuộc họp. Những lập trình viên độc lập giờ đã là ngoại lệ hiếm hoi rồi.

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