Sự khác biệt giữa Junior, Mid Level và Senior developer

Sự khác biệt giữa Junior, Mid Level và Senior developer và những điều bạn cần phải làm để đạt được level tiếp theo
Sự khác biệt giữa Junior, Mid Level và Senior developer
Sự khác biệt giữa Junior, Mid Level và Senior developer

Sự khác biệt giữa Junior, Mid Level và Senior developer

Junior - Mid level - hay Senior developer - không nên - và cũng như không bao giờ được đánh giá qua số năm làm việc của họ. Một số junior developer thậm chí còn già hơn cả senior developer. 

Tất cả là do kỹ năng!

Điều này cũng không có nghĩa là một senior developer cần phải biết và nắm giữ kiến thức chuyên sâu trên mọi vấn đề, nhưng rõ ràng là họ có được nhiều skillset hơn một Junior hay Mid level nào khác.

Nhưng bạn có bao giờ nghĩ đến việc một senior developer khác biệt như thế nào với junior và mid level hay chưa? Có phải chỉ hơn thua nhau dựa trên kỹ năng lập trình của họ?

Xin thưa rằng - không phải!

 

Kiến thức

Rõ ràng là kiến thức của senior developer sẽ luôn tốt hơn junior và mid level.

  • Design patterns
  • Kiến trúc hệ thống
  • Automated testing
  • Cải thiện hiệu suất (performance)
  • Bảo mật ứng dụng (security)
  • ... và hầm bà lằng các thứ khác

==> và rõ ràng là các bạn junior đã biết được cách để dần thu hẹp khoảng cách giữa mình và level kế tiếp rồi đúng không ^_^

Trong ngành phát triển phần mềm, điều quan trọng là bạn cần biết các quy trình chuẩn để xây dựng nên một ứng dụng. Nhưng việc biết rõ các thứ này không thể biến bạn trở thành một senior developer được. Kiến thức là một cột mốc quan trọng - nhưng nó chỉ là một trong các yếu tố để phân biệt giữa junior - mid - và senior.

 

Kỹ thuật lập trình

"Code chỉ là viết cho máy hiểu mà thôi. Viết sao mà chả là viết, cứ chạy được là ổn rồi."

==> theo mình được biết thì khá là nhiều người vẫn nghĩ như vậy. 

Việc code chính xác là việc giao tiếp giữa người và máy tính, sau cùng code được biên dịch và chuyển sang các mã nhị phân.

Nhưng viết code bắt buộc phải có ý nghĩa để cho những người khác - thậm chí là chính bạn - có thể đọc hiểu dễ dàng trong tương lai.

Một team mới chưa bao giờ xem một dòng code nào trước đó của dự án có thể cần phải mở ra xem, bắt đầu làm việc với các tính năng mới hoặc fix bugs. Đây là nơi bắt đầu một sự khác biệt siêu to khổng lồ giữa junior và senior developer.

Tạm thời chúng ta có thể bỏ qua các mid level tại thời điểm này, bởi vì suy cho cùng, các mid level chủ yếu là "đã có kinh nghiệm". Kỹ năng của họ nằm giữa các đàn anh và đàn em, tất nhiên nó nghiêng hơn về phía senior, cho nên khó mà đem ra so sánh. Điều này chủ yếu liên quan đến kinh nghiệm, vì họ đã trải qua toàn bộ quy trình phát triển phần mềm ít nhất một lần. Họ cũng sẽ phạm phải rất nhiều sai lầm từ những thứ đơn giản nhất và học hỏi từ chúng.

 

Làm thế nào để đánh giá các junior developer?

Junior developer là những người thiếu kinh nghiệm. Một số vừa tốt nghiệp và đang bắt đầu công việc cắm mặt từ sáng đến tối ở công ti đầu tiên của họ. Suy nghĩ của họ đơn giản là "viết cho code nó chạy trước cái đã". Code chạy được và code chạy tốt với họ cơ bản là như nhau.

Junior developer viết code theo sở thích của họ. Bạn có thể thấy họ viết inherit hoặc abstract class tràn lan hoặc quá phức tạp. Họ đang cố thể hiện họ "giỏi ngôn ngữ lập trình nào đó như thế nào".

Điều này hoàn toàn sai.

Các junior tập trung vào phía "code cho máy hiểu" một cách cực kỳ "cơ bắp".

 

Senior developer thì sao?

Khi bạn nhìn vào code của senior dev, bạn có thể cần phải tìm hiểu các phần code còn lại đâu hết rồi. Họ viết mã đơn giản, dễ hiểu, thậm chí đôi lúc hơi ngốc nghếch. Đây là một phẩm chất mà một developer cần phải có - tuân thủ quy tắc KISS: keep it simple, stupid.

Senior dev nghĩ về những dòng code của họ khác với junior. Code được viết của họ cần phải có khả năng dễ dàng bảo trì và mở rộng sau này. Đây là một lối suy nghĩ hoàn toàn khác với các junior dev.

Senior nghĩ tới các đàn em thân thương sau này của họ khi phải làm việc với mớ code mà mình viết ra, trong khi junior chỉ quan tâm máy tính nó hiểu là được rồi - i dont care.

 

Không chỉ là code

Bên cạnh kỹ năng viết code trâu bò, cơ bắp, còn có thêm một số yếu tố khác có thể cho bạn phân biệt ai là ai giữa xã hội này (ý mình là thằng dev này với thằng dev kia ahaha).

Cơ bản thì các junior thường được giao những tasks đơn giản hoặc độ ảnh hưởng tương đối thấp. Họ không thiết kế bất cứ kiến trúc nào. 

Mid level cũng không thiết kế giải pháp, họ chỉ tập trung vào các tasks đc giao. Sự khác biệt là mid level được giao tasks thường xuyên hơn trong khi ít bị giám sát hơn. 

Các senior có thể một mình thiết kế và xây dựng ứng dụng. Nhưng nó không có nghĩa là họ không gặp bất cứ trở ngại nào trong quá trình thực hiện. Các developer có hàng tá vấn đề cần phải research hằng ngày và điều đó ít khi thay đổi, cho dù bạn ở bất cứ level nào.

Sự khác biệt ở đây là cách mà senior đặt câu hỏi cũng như xử lí chúng, họ cũng biết cách theo dõi và tìm ra câu trả lời chính xác. Nhưng điều này cũng không mang ý nghĩa senior không cần sự trợ giúp nào từ các developer khác. Đôi khi cách xử lí đúng đắn nhất là yêu cầu sự giúp đỡ từ một ai đó chuyên sâu về lĩnh vực đó.

Mid level cũng biết cách đặt câu hỏi cũng như hướng xử lí chính xác, trừ khi các tasks đó phức tạp hay đòi hỏi kiến thức chuyên sâu.

Bạn không nên mong đợi junior đưa ra các câu hỏi "đúng đắn" ngay khi bắt đầu. Họ thiếu kinh nghiệm, và cần sự hướng dẫn từ các đàn anh. Họ cần được cung cấp nhiều thời gian hơn, và cả sự dẫn dắt, định hướng từ các developer khác.

 

Cách đạt được cấp độ tiếp theo

Ai trong chúng ta cũng đều muốn được cải thiện và phát triển bản thân, nhất là trong cái lĩnh vực IT đầy sóng gió này. Nhưng làm thế nào để đạt được điều đó?

 

Từ junior lên mid

Vì junior đa số đều thiếu kinh nghiệm, nên điêu quan trọng là bạn cần cố gắng theo đuổi, học hỏi quá trình xây dựng ứng dụng từ đầu đến cuối. Điều này sẽ làm đản sinh ra vô số con bugs siêu to khổng lồ, nhưng bên cạnh đó bạn sẽ học được rất nhiều thứ và tránh lặp lại các lỗi đó vào những lần kế tiếp.

Khi code, hãy cố gắng giữ nó đơn giản. Hãy nghĩ đến những người tiếp theo sẽ phải làm việc với dòng code đó. Bạn cũng cần phải tìm hiểu cách debug - điều cực kỳ quan trọng ở bất kỳ ngôn ngữ lập trình nào.

Bạn cũng cần follow up các best practices, cũng như tìm hiểu về kiến trúc, hiệu suất, bảo mât... Bổ sung kiến thức là cách tốt nhất để đạt đến mid level.

 

Từ mid lên senior

Đây là một bước đột phá khó khăn. Rất nhiều developer dừng lại sự nghiệp của họ ở đây, và không bao giờ lên được level tiếp theo. Các senior biết được cái gì nên giữ, cái gì nên cất, cái gì nên phát triển và cái gì nên đạp đổ ^_^ Đây là bài học khó có thể học được qua bằng những sai lầm trong quá khứ.

Nếu muốn lên level cao hơn, bạn có thể sẽ cần thiết phải xông pha vào những nhiệm vụ khó khăn mà mọi người né tránh. Bạn nên biết nhiều, biết rộng hơn là mỗi việc hoàn thành công việc.

Senior cũng là người chịu trách nhiệm giúp đỡ các junior cũng như developer khác. Bạn luôn là người dự phòng cho các tasks của những developer khác khi họ không thể giải quyết ^_^

Bạn cũng không cần ngạc nhiên khi senior có thể làm chủ được lĩnh vực của họ. Có rất nhiều kỹ năng quan trọng hơn là mỗi việc vục đầu vào code. Bạn nên tìm hiểu tất cả các công nghệ và ứng dụng trong công ti nơi bạn làm việc. Đừng ngại khó khăn.

 

Kết luận

Sự khác biệt giữa các level không thông qua số năm kinh nghiệm. Kiến thức, kỹ năng tuy quan trọng, nhưng quan trọng nhất lại là thái độ.

Ai cũng có thể code cho máy tính hiểu được. Nhưng chỉ có lập trình viên xuất sắc có thể viết code cho con người hiểu được.

Comments

Bài viết nổi bật

PHP là ngôn ngữ được sử dụng rộng rãi nhất trên thế giới trong lập trình web. Nó cũng bị ghét nhất. Nhưng tại sao nhiều developer lại ghét nó đến vậy? Hôm nay chúng ta hãy cùng tìm hiểu lý do xem chúng có thuyết phục không nhé ^_^
Dạo gần đây đi đâu cũng nghe nói về microservices, người người nhà nhà rục rịch chuyển dịch hệ thống sang microservices. Trước khi đưa ra sự so sánh, mình sẽ khái quát một chút về Monolith Application và MicroServices một chút cho các bạn chưa biết nắm rõ hơn nhé.
Lúc trước mình hay sử dụng cách này trên laptop phụ của mình, giờ mua license luôn rồi. Hôm nay mình xin chia sẻ cho bạn nào cần nhé.
JWT Tokens là một cách thức lưu trữ thông tin xác thực hiệu quả, nhưng làm cách nào để chúng ta có thể giúp chúng an toàn hơn? Có 2 cách thường dùng để lưu trữ JWT Tokens là LocalStorage và Cookies. Bây giờ chúng ta sẽ bắt đầu "mổ xẻ" các ưu - nhược điểm của mỗi loại nhé.
Có khá nhiều bạn đã yêu cầu mình một bài viết về Repository Design Pattern. Vậy mục đích của nó là gì? Nó có thực sự cần thiết cho ứng dụng của bạn hay không? Những điểm mạnh, điểm yếu của nó là gì? Chúng ta cùng đi sâu tìm hiểu qua bài viết này nhé.

Mục lục

Related posts

Một API cho phép giao tiếp hai chiều giữa các ứng dụng phần mềm thông qua các requests. Một Webhook là một API nhẹ, hỗ trợ chia sẻ dữ liệu một chiều được kích hoạt bởi các events.
Trở thành một software developer hiệu suất cao không phải là điều dễ dàng. Điều này đòi hỏi bạn phải có kỹ năng và kiến thức về lập trình, cũng như cách tiếp cận và giải quyết các vấn đề phức tạp. Tuy nhiên, nếu bạn có chút kiên nhẫn và sự nỗ lực, bạn hoàn toàn có thể trở thành một developer tài năng và thành công.
Thông tin được định nghĩa dưới dạng dữ liệu, kiến thức về thông tin, và trí tuệ về tri thức.
Dạo này mình làm việc với mấy bạn trên github, thấy hay xài mấy từ viết tắt mà mình không hiểu lắm. Thôi thì tổng hợp lại một list các từ viết tắt hay dùng trong github luôn cho ai cần :D
Dạo gần đây đi đâu cũng nghe nói về microservices, người người nhà nhà rục rịch chuyển dịch hệ thống sang microservices. Trước khi đưa ra sự so sánh, mình sẽ khái quát một chút về Monolith Application và MicroServices một chút cho các bạn chưa biết nắm rõ hơn nhé.
Lúc trước mình hay sử dụng cách này trên laptop phụ của mình, giờ mua license luôn rồi. Hôm nay mình xin chia sẻ cho bạn nào cần nhé.
Là developer, chúng ta luôn tìm cách để tiết kiệm thời gian cho các dự án của mình. Đó là lý do tại sao các thư viện được tạo ra để giảm bớt các khó khăn khi triển khai những thứ lặp đi lặp lại. Với các frontend framework như React, việc chia sẻ chức năng chung cho các dự án khác nhau trở nên dễ dàng hơn bao giờ hết.
IRAC (Issue - Rule - Analysis - Conclusion) là một phương pháp phổ biến và quen thuộc với sinh viên luật và dân luật nói chung. Cá nhân mình thấy phương pháp này khá hay và hoàn toàn có thể áp dụng vào bất cứ công việc hoặc ngành nghề nào.
Như đã được thông báo vào năm 2018, React Native đã và đang được đội ngũ phát triển của Facebook nỗ lực tái kiến trúc nhằm giúp nền tảng này trở nên mạnh mẽ hơn và giải quyết một số vấn đề phổ biến mà các nhà phát triển đã gặp phải trong vài năm qua.
Kỹ năng lập trình không phải là thứ quan trọng nhất. Ở bất cứ ngành nghề nào, giao tiếp giữa người với người luôn luôn được đánh giá cao.
Đặt tên biến không hề dễ. Sau đây là vài mẹo để bạn khiến nó trở nên tốt hơn.
Button là một trong những yếu tố quan trọng trong thiết kế UI/UX. Button được thiết kế tốt sẽ thể hiện sự liên kết về mặt thẩm mỹ và tính nhất quán với chủ đề của app và web.

Tin mới nhất

Triển khai Saga Pattern trong microservices với NodeJS và Choreography-Based Saga
Mô hình Saga đưa ra một giải pháp có cấu trúc để giải quyết thách thức này. Nó cung cấp một phương pháp có hệ thống để quản lý transaction qua nhiều microservices. Điều này giải quyết những phức tạp của các transaction phân tán và hoàn toàn tương thích với các nguyên tắc của kiến trúc microservices, được đặc trưng bởi sự kết nối lỏng lẻo và khả năng triển khai độc lập của các service.
Một API cho phép giao tiếp hai chiều giữa các ứng dụng phần mềm thông qua các requests. Một Webhook là một API nhẹ, hỗ trợ chia sẻ dữ liệu một chiều được kích hoạt bởi các events.
Một trong những câu hỏi được đặt thường xuyên nhất về TypeScript là liệu chúng ta nên sử dụng interface hay type. Câu trả lời cho câu hỏi này, giống như nhiều câu hỏi lập trình khác, là nó phụ thuộc vào tình hình cụ thể. Trong một số trường hợp, một cái có lợi thế rõ rệt hơn cái kia, nhưng trong nhiều trường hợp, chúng có thể thay thế cho nhau.
Trong phần này, chúng ta sẽ tìm hiểu một số khái niệm cơ bản nhất về AWS là gì và một số lợi ích khi sử dụng AWS.
Trở thành một software developer hiệu suất cao không phải là điều dễ dàng. Điều này đòi hỏi bạn phải có kỹ năng và kiến thức về lập trình, cũng như cách tiếp cận và giải quyết các vấn đề phức tạp. Tuy nhiên, nếu bạn có chút kiên nhẫn và sự nỗ lực, bạn hoàn toàn có thể trở thành một developer tài năng và thành công.
Đây là các types cơ bản nhưng cũng phổ biến nhất trong Typescript. Một số types khác phức tạp hơn cũng được xây dựng dựa trên những types cơ bản này.
Trong thế giới lập trình, trách nhiệm lớn nhất của chúng ta không phải chỉ làm cho code chạy được, mà còn phải đảm bảo rằng các đoạn code mà chúng ta viết có thể dễ dàng kiểm tra và bảo trì trong một khoảng thời gian dài.
Thông tin được định nghĩa dưới dạng dữ liệu, kiến thức về thông tin, và trí tuệ về tri thức.
Phân trang - một thành phần không thể thiếu trong các ứng dụng có lượng dữ liệu lớn. Tuy nhiên, bạn hiểu được bao nhiêu về nó?
Javascript là một thành phần không thể thiếu đối với frontend developers. Tuy nhiên, ngay từ lúc ra đời, nó đã tồn tại khá nhiều vấn đề cần khắc phục. Đó là lý do tại sao từ 2015 (ES6) tới 2021 (ES12) ra đời nhằm giúp Javascript trở nên tốt hơn.
Dạo này mình làm việc với mấy bạn trên github, thấy hay xài mấy từ viết tắt mà mình không hiểu lắm. Thôi thì tổng hợp lại một list các từ viết tắt hay dùng trong github luôn cho ai cần :D
Trở thành một software developer hiệu suất cao không phải là điều dễ dàng. Điều này đòi hỏi bạn phải có kỹ năng và kiến thức về lập trình, cũng như cách tiếp cận và giải quyết các vấn đề phức tạp. Tuy nhiên, nếu bạn có chút kiên nhẫn và sự nỗ lực, bạn hoàn toàn có thể trở thành một developer tài năng và thành công.
Dạo này mình làm việc với mấy bạn trên github, thấy hay xài mấy từ viết tắt mà mình không hiểu lắm. Thôi thì tổng hợp lại một list các từ viết tắt hay dùng trong github luôn cho ai cần :D
Dạo gần đây đi đâu cũng nghe nói về microservices, người người nhà nhà rục rịch chuyển dịch hệ thống sang microservices. Trước khi đưa ra sự so sánh, mình sẽ khái quát một chút về Monolith Application và MicroServices một chút cho các bạn chưa biết nắm rõ hơn nhé.
Lúc trước mình hay sử dụng cách này trên laptop phụ của mình, giờ mua license luôn rồi. Hôm nay mình xin chia sẻ cho bạn nào cần nhé.
Là developer, chúng ta luôn tìm cách để tiết kiệm thời gian cho các dự án của mình. Đó là lý do tại sao các thư viện được tạo ra để giảm bớt các khó khăn khi triển khai những thứ lặp đi lặp lại. Với các frontend framework như React, việc chia sẻ chức năng chung cho các dự án khác nhau trở nên dễ dàng hơn bao giờ hết.