Sự khác biệt giữa Junior và Senior Developer

Thật ra, mình được nghe câu hỏi “Senior Developer thì khác gì Junior Developer” cũng nhiều lần lắm rồi. Hôm nay mình mới có thời gian ngồi suy ngẫm, đúc kết lại để viết một bài đàng hoàng để giải thích về vấn đề này.

Đây là một bài viết khá hay, đáng đọc. Dù bạn có đang là junior – sinh viên mới ra trường, hoặc đang là senior lương chục củ, bài viết này cũng sẽ có ích cho bạn.

 

Note: Thật ra, cộng đồng developer thế giới lẫn Việt Nam đều có rất nhiều tranh cãi về chuyện phân chia title như thế nào, chưa có một chuẩn nào cụ thể, rõ ràng cả!

Do vậy, bài viết này là góc nhìn cá nhân của mình, chứ không phải là chuẩn hay tuyệt đối gì đó. Bạn có thể đồng tình hoặc phản đối nhé, mọi tranh luận đều được đón nhận.

Kinh nghiệm

Thông thường, các bạn HR và công ty thường đánh giá developer dựa theo số năm kinh nghiệm.

Các bạn mới ra trường, chưa có kinh nghiệm thường có vị trí là junior. Những người đi làm từ 4-5 năm trở lên thì … tạm coi là senior (Do đó các mẫu tuyển dụng senior đều đòi hỏi 3-4 năm kinh nghiệm trở lên cả).

Cách phân chia này cũng có một phần đúng. Làm việc lâu hơn, bạn sẽ tiếp xúc được nhiều công nghệ hơn, nắm rõ về qui trình làm việc hơn, công ty cũng ít tốn thời gian đào tạo hơn.

Tuy vậy, đôi khi số năm kinh nghiệm là không đủ để đánh giá trình độ developer. Kinh nghiệm 5-6 năm nhưng quanh đi quẩn lại chỉ là bảo trì một vài dự án nhỏ nhỏ, làm những task lặt vặt thì kĩ năng cũng không hơn junior là bao!

Mẩu tuyển dụng senior nào cũng đòi 3-4 năm kinh nghiệm trở lên

Do vậy, senior còn phải biết nhiều hơn, giỏi kĩ năng technical hơn. Những kĩ năng technical này là gì, các bạn xem phần dưới sẽ rõ.

Khả năng technical

1. Về mặt công nghệ

Junior là những người chưa biết gì về công nghệ, hoặc chỉ tìm hiểu sơ sơ chứ chưa dùng nó trong thực tế bao giờ.

Senior phải có kinh nghiệm làm việc với công nghệ/ngôn ngữ qua nhiều dự án thực tế, đồng thời hiểu sâu, hiểu rộng về những ưu, nhược điểm của công nghệ đó.

Do vậy, có thể bạn là senior của một công nghệ này, nhưng là … junior của một công nghệ khác khi chuyển qua. Tuy vậy, nhờ có kĩ năng tự học, có kiến thức nền tốt, senior có thể dễ dàng làm quen và nắm vững công nghệ mới.

2. Khả năng viết code

Junior chỉ cần viết code cho chạy được, hoàn thành đúng chức năng đề ra là ok.

Senior biết rằng code biết ra phải tinh gọn, dễ bảo trì. Senior sẽ viết code clean và đơn giản tới mức có thể, sử dụng design pattern khi cần thiết và giải quyết được vấn đề. (Chứ không phải tương 1 đống design pattern vào code là thành senior nhé).

Ngoài ra, để tăng tính dễ bảo trì của code, senior còn phải chịu khó viết comment, viết documentsetup unit test cho code mình viết ra.

Clean Code – Một trong những cuốn sách bạn nên đọc trên con đường trở thành senior developer

3. Khả năng quản lý công việc

Junior thường được giao cho việc fix bug, code những task nhỏ. Việc này giúp cho junior tìm hiểu thêm về hệ thống, làm quen dần với code base.

Senior thường được giao làm những module lớn hơn. Không chỉ nhận gì làm nấy, senior còn phải biết chia module thành những task nhỏ hơn, đưa ra estimation, giao việc (hoặc đùn đẩy việc) cho người khác nếu cần.

4. Khả năng sửa lỗi, giải quyết vấn đề

Khi gặp khó khăn, junior sẽ phải mất nhiều thời gian để tìm hiểu xem lỗi ở đâu, làm sao giải quyết, sau đó mới bắt đầu fix bug.

Senior thì ngược lại, nhờ kinh nghiệm và kiến thức về hệ thống, họ có thế dự đoán được những nguyên nhân gây ra lỗi. Do vậy, senior có thể tìm ra vấn đề và giải quyết vấn đề nhanh chóng.

Ngoài ra, khi gặp một vấn đề, senior thường suy nghĩ nhiều hơn, đưa ra nhiều giải pháp cho vấn đề, sau đó lựa chọn cái tối ưu nhất..

Ví dụ mỏng (Xem cuộc trò chuyện dưới):

  • Khi code một chức năng chạy hơi chậm, junior sẽ nghĩ là do ngôn ngữ bị chậm
  • Senior sẽ không đoán mò do ngôn ngữ mà sẽ test xem đó là lỗi của ORM, của database, của framework hay lỗi của… chính code mình viết ra

Điều cuối cùng tạo nên sự khác biệt giữa senior và junior là ở thái độ và trách nhiệm.

Thái độ và trách nhiệm

Trong công việc, phần lớn thời gian của junior sẽ được dành cho việc … học. Junior chính là người học. Junior học công nghệ, học về cấu trúc hiện tại của dự án, học cách làm theo qui trình, học cách viết code cho đúng dắn từ senior.

Trong khi đó, senior là người dạy, là người lựa chọn công nghệ, đặt ra qui trình và cải tiến qui trình cho phù hợp. Senior biết những best practice (unit test, automation test, code review, CI/CD) và biết khi nào cần áp dụng chúng.

Bên cạnh những trách nhiệm trên, senior còn phải mentor cho các junior hoặc các thành viên mới gia nhập team, review code khi cần thiết.

Ngoài ra, senior phải có tầm nhìn hệ thống, để có thể tham gia và việc thiết kế hoặc plan architecture của phần mềm cho phù hợp.

Senior sẽ phải dành thời gian review code cho junior và đồng nghiệp

Tất nhiên là trách nhiệm nhiều hơn thì senior lương cũng cao hơn junior rồi, thường là cao hơn từ 3-5 lần nhé!

Kết

Có một điểm giống nhau giữa senior và junior là phải luôn luôn tìm hiểu cái mới. Dù bạn có là senior, nếu không chịu cập nhật kiến thức cũ, những thứ bạn biết sẽ nhanh chóng lỗi thời. không còn tác dụng nữa.

Do vậy, senior cũng nên giữ mindset của một junior. Luôn tự cố gắng học hỏi, tiếp thu những cái hay cái mới trong môi trường làm việc xung quanh mình.

Nhắc lại là bài viết này chỉ là suy nghĩ của cá nhân mình! Có khi nhiều bác senior, bác CTO đi làm lâu hơn, kinh nghiệm nhiều hơn lại có cách nghĩ khác thì sao!

Trong phạm vi bài viết, chắc sẽ có một số những thiếu sót mà mình quên đề cập đến. Bạn nghĩ sự khác biệt giữa junior và senior là gì? Hãy chia sẻ cách nhìn của bạn bằng cách thảo luận trong mục comment nhé.

 

Nguồn tham khảo:

2 thoughts on “Sự khác biệt giữa Junior và Senior Developer”

Leave a comment