Lập trình viên Fresher, Junior Senior là gì và cách phân biệt?

215

Chào anh em,

Chắc đây không phải lần đầu tiên mọi người được nghe 3 từ khóa là Fresher, Junior hay Senior đâu nhỉ. Đây là 3 từ rất quen thuộc trong được sử dụng trong nhiều ngành nghề, dùng để chỉ về cấp độ kinh nghiệm (Seniorly levels) của của nhân sự:

  • Fresher là các bạn đang học nghề.
  • Junior là các bạn mới vào nghề.
  • Senior là những bạn dày dặn kinh nghiệm.

Trong ngành IT nói riêng, các cấp độ cũng được chia ra như trên. Tuy nhiên, chi tiết thế nào thì … không ai biết. Tức là thế nào thì được coi là mới vào nghề, và làm bao nhiêu năm thì được coi là dày dặn kinh nghiệm thì không ai đưa ra được định nghĩa cả.

Mặc dù đã có rất nhiều các bài viết phân tích chi tiết thế nào là Fresher/Junior/Senior trên mạng (có cả những bài mình đồng tình, có cả những bài không đồng tình) nhưng mình xin phép được viết thêm một bài nữa để đưa ra ý kiến cá nhân về cái 3 cái khái niệm mập mờ này.

I. Một vài sự thật

Trước khi đi phân tích chi tiết, chúng ta cần đồng ý với nhau một số quan điểm sau:

  • Chưa có một nơi nào đưa ra khái niệm chức thế nào là Fresher/Junior/Senior trong ngành IT.
  • Chưa có một bài kiểm tra, hay chứng chỉ nào để công nhận một người là Fresher/Junior/Senior trong ngành IT.
  • Ngoài 03 cấp độ kể trên, thì còn 01 cấp nữa là Middle, nằm giữa Junior và Senior, chỉ những bạn ở mức độ “lành nghề”, thông thạo công việc. Nhưng cấp độ này ít được nhắc đến.
  • Fresher/Junior/Senior là khái niệm để đánh giá về độ dày dặn kinh nghiệm, chứ không phải là chức danh. Tức với chức danh ở công ty, bạn có thể là CTO (giám đốc công nghệ), nhưng xét về kinh nghiệm, bạn mới chỉ ở mức Junior.
  • Càng về sau, thì càng khó để nhận biết, tức là rất dễ để nhận biết một người là Fresher, nhưng để nhận biết một Senior thì khó hơn nhiều.
  • Các khái niệm Fresher/Junior/Senior giữa các công ty có thể khác nhau (thậm chí là khác nhau rất nhiều), vì thế bạn có thể là Senior ở công ty này, nhưng là Middle ở công ty khác và ngược lại.

Khi đi tìm Seniorly level, thì phạm vi ngành nghề rất quan trọng. Vì suy cho cùng ai cũng là Senior của cuộc đời mình, nhưng lại là Fresher trong lĩnh vực lạ lùng nào đó. Nên trong bài viết này mình chỉ giới hạn trong phạm vi mấy ngành development phổ biến như web development, mobile development, hoặc ngành nào đó tương tự thôi nhé.

II. Phương pháp phân tích

Thông thường, để nhận biết ai là Fresher/Junior/Senior thì ta thường dựa vào số năm kinh nghiệm của họ. Ví dụ làm dưới 06 tháng thì auto là Fresher, từ 06 tháng đến 02 năm thì là Junior, trên 04 năm thì là Senior…

Tuy nhiên, để đo mức độ dày dặn kinh nghiệm của một ai đó mà chỉ dựa vào số năm kinh nghiệm thì chưa đủ, mà còn phải đo trên nhiều khía cạnh khác. Cụ thể, chúng ta sẽ cùng phân tích dựa trên 4 khía cạnh sau:

  • Đặc điểm cơ bản: Các đặc điểm chung chung.
  • Sự quan tâm: Điều mà họ quan tâm nhiều nhất khi đang ở cấp độ tương ứng.
  • Thời gian thực chiến: Thời gian làm việc thực tế, đây là chỉ số kém chính xác nhất, mang tính tham khảo cao.
  • Công việc thường làm: Công việc mà họ thường làm khi ở cấp độ tương ứng.

>> Đọc thêm: Kinh nghiệm làm việc được tính như thế nào?

III. Thế nào là …

3.1 Thế nào là Fresher Developer

Đặc điểm cơ bản

Fresher Developer là những bạn có kiến thức chuyên mới dừng ở mức độ lý thuyết, có thể có thực hành nhưng không nhiều (như các bài tập trên trường). Có thể từng tham gia vào một dự án thực tế nào đó, nhưng chỉ để quan sát là chủ yếu, ít khi được code và code đó ít khi được đưa lên production. Nếu code được đưa lên production, thì sẽ được review, giám sát chặt chẽ bởi những người có kinh nghiệm.

Sự quan tâm

Một vài điều mà Fresher thường quan tâm:

  • Liệu mình có nên học ngôn ngữ lập trình này.
  • Liệu mình có phù hợp với ngành nghề này.

Thời gian “thực chiến”

Dưới 06 tháng hoặc không có.

Công việc thường làm

  • Fix bug nhỏ.
  • Thay đổi cấu hình dự án theo chỉ dẫn, thay đổi thông báo.

Nói chung, các công việc của Fresher thường mang tính làm quen với ngôn ngữ lập trình, làm quen với công cụ là chủ yếu.

3.2 Thế nào là Junior Developer

Đặc điểm cơ bản

Junior Developer là những bạn trên mức Fresher, đã có thể code được các tính năng nhỏ, tuy nhiên vẫn chịu sự giám sát chặt chẽ của những người có kinh nghiệm.

Thế nào là tính năng nhỏ thì còn tùy vào từng team, từng công ty, hoặc đôi khi là bạn tự cho rằng nó nhỏ thì nó nhỏ.

Trong giai đoạn này, khi làm việc bạn sẽ cảm thấy bản thân tiếp thu được rất nhiều kinh nghiệm từ những người đi trước, và càng tiếp thu lại càng cảm thấy “mình ngu”.

Junior Developer thường là những bạn có tinh thần làm việc rất tốt, nhưng đôi khi lại không biết phải làm thế nào.

Sự quan tâm

Điều mà các bạn Junior Developer quan tâm nhiều nhất đó là chạy code sao cho chạy đúng yêu cầu.

Thời gian thực chiến

Từ 06 tháng đến 1.5 năm kinh nghiệm.

Công việc thường làm

Công việc mà các bạn Junior Developer thường làm là các tính năng nhỏ, phổ biến (như đăng nhập, đăng ký) hoặc có ít rủi ro với hệ thống, ví dụ như:

  • Cắt giao diện.
  • Làm trang quản lý thêm, sửa, xóa, liệt kê.
  • Đăng ký, đăng nhập.

3.3 Thế nào là Middle Developer

Đặc điểm cơ bản

Middle Developer là những bạn trên mức Junior. Ở mức độ này, thường thì bạn có khả năng để quẩy khoảng 80% tính năng có trên hệ thống (đương nhiên là một hệ thống không quá đặc biệt, đặc thù), và ít chịu sự giám sát hơn (ít thôi chứ không phải là không có).

Đừng thấy con số 80% mà sợ nhé, bởi một hệ thống thì 80% là các tính năng bình thường và dễ, chỉ có 20% là tính năng phức tạp.

>> Đọc thêm: Ăn “bề bề” và cách phát triển phần mềm theo nguyên lý 80/20

Sự quan tâm

Ở mức độ này, bạn thường quan tâm tới mấy vấn đề sau:

  • Code sao cho dễ đọc, đơn giản, người khác nhìn vào dễ hiểu.
  • Độ ưu tiên giữa các tính năng, cái nào làm trước, làm sau, cái nào có thể lược bớt đi hoặc ra mắt sau.
  • Bạn sẽ phát triển bản thân theo hướng nào? Theo hướng công nghệ, hay hướng quản lý con người.

Thời gian thực chiến

Khá khó nói, nhưng thường là trên 1.5 năm.

Công việc thường làm

  • Review code của Junior, hỗ trợ Junior hoàn thành công việc.
  • Dựng code base cho dự án mới.
  • Hoàn thiện các tính năng có độ phức tạp trung bình.

Với các bạn có theo hướng quản lý con người, ở mức độ này đã có thể làm leader của một team nhỏ khoảng 2 – 3 người. Với các bạn phát triển theo hướng công nghệ, thì có thể hoàn thành chỉn chu một dự án đơn giản.

3.4 Thế nào là Senior Developer

Đặc điểm cơ bản

Senior là những người dày dặn kinh nghiệm, ở mức độ này, kinh nghiệm của bạn sẽ trải dài trên nhiều lĩnh vực, thậm chí bạn từng là Middle (hoặc cấp cao hơn) ở nhiều vị trí công việc với tập kỹ năng khác nhau. Xét riêng lĩnh vực làm phần mềm, một Senior Developer có thể đủ khả năng để làm phần lớn các công việc sau:

  • Làm việc với khách hàng.
  • Phân tích nghiệp vụ.
  • Thiết kế UI/UX.
  • Trực tiếp code, review code, đảm bảo chất lượng code, xây dựng kiến trúc code.
  • Automation test.
  • DevOps.
  • Security.
  • Xây dựng quy trình làm việc.

Có một khoảng cách rất lớn giữa Senior và Middle Developer, bạn có thể chỉ dừng lại ở Middle mãi mãi mà không thể (hoặc không có nhu cầu) trở thành Senior.

Sự quan tâm

Là một Senior, bạn sẽ thường quan tâm tới các vấn đề sau:

  • Code sao cho tối ưu với tình hình hiện tại (công ty đang nghèo, thì code sao cho ăn ít tài nguyên server thôi, code thối tý cũng được).
  • Sản phẩm làm sao để cân bằng nhất giữa các yếu tố: thời gian ra mắt, tính năng, chất lượng code, và doanh thu,…
  • Con đường phát triển của sản phẩm: là sản phẩm tạm thời hay lâu dài, xong sản phẩm này rồi thì làm tiếp sản phẩm nào, chúng bổ sung gì cho nhau,…
  • Quan tâm tới các bài toán khác của công ty, không chỉ bài toán kỹ thuật của sản phẩm.

Thời gian thực chiến

Rất khó nói, thường trên 04 năm.

Công việc thường làm

Công việc của một Senior rất đa dạng, nhưng nói chung nó là các việc khó, và cần am hiểu nhiều loại kiến thức, không chỉ kiến thức công nghệ, mà còn về cả sản phẩm, con người, phương pháp làm việc,… Ví dụ như:

  • Quản lý dự án (con người, thời gian,…)
  • Lựa chọn giải pháp công nghệ cho các bài toán khó.
  • Xây dựng quy trình làm việc.
  • Hỗ trợ Middle, Junior, Fresher hoàn thành công việc.

IV. Biết mấy cái levels này để làm gì?

Nếu đọc nghiêm túc, thì đọc đến đây chắc các bạn sẽ tự review lại bản, sau đó kết luận mình đang ở level nào. Thế nhưng sau khi biết rồi thì … để làm gì? Biết cho vui à? No no, đây là một vài lợi ích khi bạn phân biệt được các level:

  • Biết đường phấn đấu: Giống như chơi LOL vậy, biết mình đang ở rank thấp thì sẽ cố gắng để leo lên rank cao.
  • Biết cách deal lương: Khi đến mùa review tăng lương, hoặc phỏng vấn vào làm ở công ty, bạn sẽ biết mình là ai mà deal lương cho phù hợp.
  • Biết cách tổ chức team dự án: Giả sử team dự án cần có ít nhất 01 Senior, 02 Middle và 03 Junior, thì mình sẽ biết cách chọn người sao cho hợp lý.
Bộ sưu tập áo thun cho dân IT, đủ các ngôn ngữ lập trình và hệ điều hành.
Click vào ảnh để xem.
QC Được tài trợ

V. Lời kết

Bài viết này vừa tổng hợp dựa trên kinh nghiệm cá nhân của mình, và cũng tham khảo một số nguồn khác, nhưng cho cùng, nó vẫn là ý kiến cá nhân. Rất mong nhận được sự đóng góp của anh em dưới phần bình luận.

Chào tạm biệt.