Sự khác nhau giữa Junior và Senior là gì? Có phải chỉ cần vài năm kinh nghiệm là một Developer có thể có chức danh Senior Developer?
Chúng ta đang làm việc trong một ngành công nghiệp lạ kỳ. Nhu cầu Developer thì tăng cao mà cung thì lại thấp. Vấn đề này đã tồn tại nhiều năm liền và qua mỗi năm thì lại càng tệ hại hơn. Chúng ta có một thời gian khát tài năng nhằm lấp đầy nhu cầu, nhưng ngành công nghiệp của chúng ta lại hơi non trẻ.
Sự thật chúng ta đang ở trong thời đại mà cụm từ “Senior Developer” có nghĩa là một người đã code hơn 3 năm.
Thật sự, giới hạn một người trong 3 năm là một cách đơn giản hóa quá mức về hành vi, kiến thức và kinh nghiệm phát triển nghề nghiệp, nhưng bản chất của Developer thì vẫn vậy.
Nếu chúng ta cứ phân loại Developer theo cách này, thì sau đó không cần tốn thời gian bàn cãi gì nữa về ngành hết. Một người có 10 năm kinh nghiệm thì rất khác người mà đã trải qua thời gian giống vậy tới 10 lần.
Junior Developer là làm gì?
Là một Developer, chúng ta đang sống trong một thế giới với các hệ thống và biến số phức tạp. Sẽ là một thử thách cực lớn cho bạn chỉ để làm tốt các task đã được mô tả rõ ràng khi bạn không có quá nhiều kinh nghiệm với các tool, hoặc là codebase bạn đang làm.
Những Junior Developer cần rất nhiều định hướng, giám sát và mentor để có những kỹ năng này, nếu không họ sẽ “bơi” mãi ở một nơi trong thời gian rất , rất dài (Gần đây tôi phải chăm sóc một bạn Developer đã code gần một thập kỷ rồi mà tôi vẫn thấy bạn đó là một Junior).
Một Junior Developer thì phải tập trung code, không phải là tập trung “phát triển phần mềm”, và họ cũng không cần hiểu gì về sự khác nhau này.
Khi một lập trình viên nói rằng họ “thích code chứ không thích quan tâm đến người dùng”, tôi cho rằng tôi đang nói chuyện với một Junior Developer.
Developer đúng nghĩa là gì?
Sau cấp Junior Developer là cấp Developer. Đây là người bắt đầu thấy những kiểu sai lầm (thường là sai lầm của họ), và nhận ra rằng chuyện bỏ những task thông thường để xây dựng một tính năng có thể hoạt động được rất cần nhiều nỗ lực hơn nữa, cũng sẽ không hoàn toàn bất ngờ khi nghe ai đó bảo cần phải thay đổi gì đó ngay lần đầu tiên.
Một Developer sẽ đi tìm kiếm câu trả lời làm sao để xây dựng mọi thứ “Theo Đúng Hướng”, và tìm kiếm qua việc thử nghiệm, sách vở và thảo luận với những lập trình viên khác.
Ở cấp độ này thì người này đã phải học về thuyết xây dựng phần mềm hơn là thuyết viết code (mà bạn đã học ở trường rồi!). Hệ thống được xây dựng bởi những Developer chưa có kinh nghiệm nhiều thì thường hỏng hết cả nhưng lại với lý do khác hoàn toàn với những Junior.
Một Developer giỏi sẽ hiểu cách sử dụng code để giải quyết vấn đề là phương tiện đi đến một kết quả cuối cùng, chứ không phải code vì yêu thích nữa. Tuy nhiên, họ vẫn yêu thích những thiết kế trong “lâu đài” của riêng mình, và vẫn còn tìm kiếm “Con đường đúng đắn” để xây dựng phần mềm.
Một Developer giỏi không cần phải bị giám sát quá nhiều. Họ được tin tưởng khi đưa ra những vấn về code design, và đóng vai trò quan trọng trong những cuộc thảo luận về thiết kế. Họ cũng là những “con trâu việc” của Developement team. Tuy nhiên, họ cũng cần được các cấp cao hơn giám sát và mentor nữa.
Senior Developer là ai?
“Một Senior Developer sẽ hiểu rằng nghề này tìm ra giải pháp cho các vấn đề, chứ không chỉ là viết code.”
Một Senior Developer thì luôn quen thuộc với thất bại của riêng mình. Họ viết code có lúc theo và không theo các design, và thường cả hai đều thất bại.
Họ luôn nghĩ về những thứ họ làm, đánh giá sự thành công và thất bại khi tiếp cận vấn đề với sự chân thành và có suy nghĩ thấu đáo.
Một Senior Developer nghĩ về “ngữ cảnh” hơn là áp dụng lý thuyết. Họ hiểu rằng không có con đường “đúng” nào để xây dựng phần mềm và cách duy nhất để xây dựng một phần mềm tuyệt vời là ứng dụng lý thuyết vào phù hợp với nhu cầu của khách hàng, codebase, team, công cụ và tổ chức.
Một Senior Developer sẽ hiểu công việc này cần có giải pháp cho vấn đề chứ không chỉ là viết code. Vì vậy, một Senior Developer sẽ luôn nghĩ về những công việc họ làm mang lại giá trị bao nhiêu cho team và khách hàng so với những nỗ lực họ đặt vào.
Trong khi một Developer sẽ cày mãi qua những công việc buồn tẻ, thì một Senior Developer sẽ dừng lại và đặt câu hỏi cái gì đang có vấn đề để khiến những công việc buồn tẻ đó hết buồn tẻ. Họ sẽ đánh giá chi phí của việc sửa những vấn đề cốt lõi, sẽ sửa chúng trực tiếp hay sửa cuối cùng.
Một Senior Developer hiểu rằng bạn không thể tự làm bất cứ điều gì, và nhiệm vụ đầu tiên của họ là giúp đỡ team trở nên tốt hơn, và họ cũng luôn phấn đấu để cải thiện chính bản thân mình.
Một Senior Developer sẽ hiểu rằng leadership không phải là về quyền lực mà là về “trao quyền”. Không phải là hướng dẫn, mà là phục vụ.
Một Senior Developer là người duy nhất có khả năng chọn công nghệ và platform đúng cho dự án, nên nếu không có một người như vậy từ ngày đầu thì bạn sẽ gặp khó khăn đấy.
Tổng kết:
Theo itviec