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
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.