Sự khác biệt giữa senior developer và developer with seniority
Bài viết được sự cho phép của tác giả Tùng Nguyễn
* Trong bài viết này có vài từ viết bằng tiếng Việt đọc hơi kỳ cục với tôi cũng kh6ng biết dịch thế nào cho đúng. Nên lâu lâu sẽ chèn tiếng Anh vào. Mong bạn đọc thông cảm!
Để mở đầu thì chúng ta nên hiểu rằng bất kỳ developer nào cũng đều có các kỹ năng khác nhau, bất kể họ đã làm bao nhiêu năm, đã làm qua bao nhiêu project hay tốt nghiệp từ trường đại học nào. Đó là lý do tại sao rất khó phân biệt giữa 1 senior developer và 1 developer with seniority (thâm niên). Thế điều gì làm cho 1 developer tốt hơn những người khác? Và làm thế nào để lọc ra được real senior developer giữa 1 đại dương những developer với average-skilled?
Số năm kinh nghiệm chưa đủ để nói lên được 1 developer thành công, làm việc hiệu quả hoặc họ xứng đáng được gọi là senior developer. Trong suốt bao năm làm việc tôi đã được làm với rất nhiều developer có thâm niên nhưng thật sự chưa làm việc hiệu quả cho lắm.
Trong quá trình làm việc với rất nhiều real senior developer, tôi đúc kết được rằng họ có rất nhiều điểm chung. Tôi sẽ liệt kê dưới đây những phẩm chất để chúng ta có thể phân biệt giữa 1 real senior developer và 1 develop chỉ có thâm niên.
Programming Principles (transl. Nguyên tắc lập trình [?])
Sự ổn định, security, performance, goal-oriented, functional programming và kỹ thuật trình bày code gọn gàng, sạch sẽ dễ cho chúng ta và chúng bạn đọc hiểu sau này là những nguyên tắc lập trình mà 1 senior developer bắt buộc phải có.
Cái mà rât nhiều junior developer quên rằng lập trình cũng là 1 loại ngôn ngữ, tương tự như tiếng Anh, tiếng Việt, tiếng Pháp,… Tùy thuộc vào mỗi loại ngôn ngữ đều có nguyên tắc, ngữ pháp, câu cú, trình bày khác nhau. Đều này cũng có nghĩa trương tự trong lập trình và các nguyên tắc lập trình giúp chúng ta viết code như thế nào cho đúng và đẹp.
Ai cũng có thể học code, cũng giống như ai cũng có thể học để viết văn. Tuy nhiên, không phải ai đặt bút xuống cũng viết được như truyện Harry Potter của J. K. Rowling. Cũng giống như cách mà chúng ta phân biệt giữa code của senior và junior developer viết ra.
Ability to Write the Code (transl. Khả năng tự viết code [?])
Tôi tin rằng bất kể developer nào khi bắt đầu đều có xu hướng tìm câu trả lời cho bài toán của họ trên StackoverFlow, copy / paste code và magic happen. Nhưng cách họ sử dụng chúng có thể khác biệt giữa new-junior và low-mid developer.
Nhưng với senior developer, họ có khả năng tự giải quyết vấn đề của mình mà không cần tìm kiếm nhiều trên Google. Họ làm việc nhanh chóng và hiệu quả, biết rõ mình đang làm gì và hiểu được expected results in every moves. Họ có thể thấy được những sai sót hoặc ít nhất là dự đoán được lỗi có thể xảy ra, dựa vào kinh nghiệm và cải thiện code của mình.
Khi 1 senior develop nhìn thấy lỗ hổng trong kiến thức của mình, họ luôn có xu hướng tìm hiểu sâu hơn. Họ có thể deeper understand từng dòng code được viết ra. Chương trình nào qua tay senior developer đều trở nên rất khác biệt.
Learn learn learn (transl. Học Học nữa Học mãi)
1 điểm chung nữa tôi nhận thấy ở các real senior developer là học luôn luôn tìm tòi, học những cái mới. Họ có xu hướng update công nghệ, các library, tìm hiểu sâu và kỹ càng hơn về ngôn ngữ yêu thích của mình gần như hằng ngày. Khi hiểu được công nghệ mới, những cái hay họ đều bàn luận về nó rất nhiệt tình và sẵn sàng chia sẻ kiến thức đó với đồng nghiệp của mình.
Đều mà 1 vài developer chỉ có thâm niên bỏ qua, và nghĩ rằng họ chỉ cần làm cho chạy là được, công nghệ cũ cũng được, viết cực xíu cũng được miễn chạy là được, “sau này có sai thì sửa”, biết nhiêu đó được rồi.
Tham khảo việc làm Senior developer hấp dẫn trên TopDev
Thinking Objectively (tranl. Suy nghĩ khách quan [?])
Junior và Mid-level develop thường có xu hướng thể hiện cá tính, sở thích trong khi viết code dựa trên kinh nghiệm cá nhân của mình hơn là tham khảo best practices. Sở thích cá nhân, styles, namings và lối suy nghĩ của họ có thể được đánh giá, phân tích, đưa gợi ý và hướng dẫn bởi senior developer – người có kinh nghiệm và cái nhìn rộng hơn trong việc nhìn nhận các vấn đề.
Để có thể đưa ra quyết định 1 cách khách quan hơn, developer cần phải có “wide range of experiences”. Không có cách viết nào là đúng trong lập trình, chỉ có cách viết code hiệu quả hơn dựa trên mỗi vấn đề, tình huống khác nhau và senior developer hiểu rõ điều đó. Chắc chắc lỗi luôn luôn tồn tại và senior developer luôn luôn cải thiện chất lượng trong sản phẩm của mình. Và luôn là chỗ dựa và hình mẫu vững chắc cho các junior noi theo.
Cân bằng giữa Good và Working
Hầu hết các developer thường chỉ tập trung vào liệu chức năng mình viết có chạy hay không? Nhưng senior developer luôn tập trung vào việc làm cho nó tốt hơn, chạy nhanh hơn và secure hơn. Senior developer có thể cân bằng 1 cách hiệu quả giữa “working product with quality of product” và sẵn sàng delivery đúng deadline hoặc yêu cần thêm thời gian nếu thật sự cần thiết.
Khả năng trình bày và hướng dẫn người khác
1 senior developer tuyệt vời có sự đam mê mãnh liệt cho lập trình, sẽ là nguồn cảm hứng cho junior và mid-level developer noi theo. Họ luôn muống giúp đỡ, hướng dẫn và cho lời khuyên để cố gắng đào tạo thế hệ expert developer tiếp theo.
Để có thể hướng dẫn, đào tạo người khác chắc chắn cần có kinh nghiệm và kỹ năng tốt, nắm rõ hiểu sâu. Kinh nghiệm được ghi trong CVs có thể đến từ các project đã làm, số năm bạn đã code và bao nhiêu công ty đã làm qua nhưng khả năng teaching chỉ có thể có ở những developer thật sự có nhiều kinh nghiệm, kiến thức và hiểu rõ công việc mà họ đang làm.
Lời kết
Trở thành senior developer không phân biệt bạn bao nhiêu tuổi, background của bạn như thế nào, hoặc bạn đã đi làm được bao lâu. Tôi biết những đồng nghiệp rất giỏi với tuổi đời còn khá trẻ, họ có đủ phẩm chất để xứng đáng gọi là senior developer, những cũng có những anh chị chỉ có duy nhất thâm niên. Senior developer thật sự là một true problem solvers và good teacher.
Bài viết gốc được đăng tải tại omatsuri.blog, biết thêm về tác giả tại LinkedIn
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- F Framework nào tốt nhất cho dự án của bạn? – Checklist chi tiết
- K Kinh nghiệm xử lý responsive table hiệu quả
- S Stackoverflow là gì? Bí kíp tận dụng Stack Overflow hiệu quả
- 7 7 kinh nghiệm hữu ích khi làm việc với GIT trong dự án
- B Bài tập Python từ cơ bản đến nâng cao (có lời giải)
- B Bảo mật API là gì? Một số nguyên tắc và kỹ thuật cần biết
- H Hướng dẫn cài đặt và tự học lập trình Python cơ bản từ A-Z
- C Chinh Phục Phân Tích Dữ Liệu Với Pandas Trong Python: Hướng Dẫn Từng Bước
- D Display CSS là gì? Cách khai báo và sử dụng thuộc tính display trong CSS