Trong một bài viết về “5 cấp độ của một lập trình viên” chúng ta đã đề cập đến Senior Developer. Trong bài viết này chúng ta hãy cùng xem một developer khi nào có thể xem là một senior. Có phải cứ phải làm ở vai trò này 4-5 năm thì được gọi là nhà phát triển cấp cao hay còn có yếu tố nào khác? Trong thực tế bạn có thể gặp rất nhiều người tự nhận mình là senior developer, thật sự họ không phải vậy
Kinh nghiệm là yếu tố bắt buộc để có thể được xem là một senior developer. Nhưng chỉ riêng kinh nghiệm không khiến bạn trở thành nhà phát triển cấp cao. Thực tế đây là một định nghĩa không đơn giản và không có câu trả lời rõ ràng. Nhưng trước hết bạn cần đồng ý rằng:
Không có ranh giới rõ ràng giữa junior developer và senior developer
Rõ ràng là như vậy. Không giống khi bạn được thăng chức, có quyết định, có thời gian bắt đầu ở vị trí mới, chuyển từ một nhà phát triển trẻ lên thành một senior developer không rõ ràng như thế.
Trong thực tế, các công ty khác nhau có các định nghĩa khác nhau về lập trình viên cao cấp khi tuyển dụng. Một số công ty cho rằng sau năm năm một nhà phát triển sẽ trở thành một người có thâm niên. Một số khác lại ghi rõ trong các tin tuyển dụng là cần từ tám đến mười năm để đạt được điều này.
Chúng ta hãy nhớ lại khi đi học bạn cần nhiều năm để đi từ một học sinh tiểu học lên cấp ba rồi đại học, và cần bao nhiêu năm bạn có thể biết được ngay. Trong lĩnh vực lập trình, để đi từ junior đến senior chắc chắn bạn cũng cần thời gian không ít. Tuy nhiên, chúng ta không thể đưa ra khoảng thời gian chính xác trong đó một nhà phát triển chuyển thành một nhà phát triển cấp cao. Chúng ta cùng xét những yếu tố khác ngoài yếu tố thời gian:
Các yếu tố làm nên một senior developer
Hầu hết các nhà phát triển cấp cao đều có một số điểm chung. Các điểm chung đó là gì?
Lập trình viên cấp cao nhìn xa hơn việc chỉ lập trình
Hầu hết các lập trình viên non kinh nghiệm không thể nói hoặc dự đoán nhiều về một dự án khi bắt đầu tham gia. Đơn giản là các junior chỉ làm theo đúng những gì họ được giao phó và cố gắng để hoàn thành nó. Có rất ít câu hỏi tại sao trong đầu họ. Nhưng các senior developer thì ngược lại. Họ có thể nhìn ra nhiều vấn đề khi họ bắt đầu tham gia vào dự án. Họ sẽ có thể nói nó khó đến mức nào, cần lưu ý hay giải quyết những vấn đề gì, hoặc công nghệ nào sẽ phù hợp cho một dự án như vậy, v.v.
Hay nói một cách khác, các senior developer có thể nhìn thấy tương lai, lường trước các vấn đề và hành động trước khi chúng xảy ra làm ảnh hưởng đến dự án, chương trình của mình.
Đưa ra quyết định quan trọng
Đưa ra các quyết định quan trọng khi bắt đầu hoặc trong quá trình dự án là một yếu tố quan trọng của một senior developer. Các lập trình viên cao cấp biết mình có thế làm gì và nên làm gì để giải quyết các bài toán được đưa ra, phù hợp với các yêu cầu của công ty, khách hàng, nhu cầu kinh doanh. Không có công ty nào trả lương cao cho một nhà phát triển cấp cao chỉ để lập trình như một cái máy. Các nhà phát triển cấp cao hiểu biết về những vấn đề khác ngoài kỹ thuật, hiểu về nhu cầu kinh doanh và giúp các công ty hay khách hàng phát triển các nhu cầu đó.
Kinh nghiệm, tất nhiên bạn cần phải có kinh nghiệm
Hãy lấy một ví dụ thế này. Một lập trình viên non kinh nghiệm đã chọn Firebase làm hệ thống backend cho một ứng dụng. Tuy nhiên, một senior developer hiểu rằng Firebase không phù hợp với dự án đó và đã đưa ra những phản biện một cách thuyết phục. Đó chính là sự khác nhau giữa một developer có kinh nghiệm và còn non trẻ. Các lập trình viên cấp cao biết công nghệ nào phù hợp với dự án nào. Những hiểu biết đó từ đâu ra? có phải từ trường đại học? Hoàn toàn không. Nó chỉ có khi bạn đã làm việc qua nhiều dự án, hiểu được ưu và khuyết của những giải pháp kỹ thuật. Chúng ta không nói rằng chỉ riêng kinh nghiệm đã khiến bạn trở thành nhà phát triển cấp cao, nhưng điều đó là cần thiết.
Kỹ năng lãnh đạo và giao tiếp
Có kỹ năng lãnh đạo không có nghĩa là bạn lên làm sếp to, hay ở vị trí quản lý bất kỳ nào đấy. Khi một lập trình viên có thể cố vấn và hướng dẫn các lập trình viên non trẻ, lập trình này đã bắt đầu quá trình trở thành một senior developer. Và đó là lúc cần đến kỹ năng lãnh đạo.
Kỹ năng giao tiếp cũng là một yếu tố cần thiết. Phát triển phần mềm là một quá trình hợp tác. Các nhà phát triển cấp cao biết cách để hướng mọi người vào mục tiêu chung. Và kỹ năng giao tiếp sẽ phát huy tác dụng của nó. Một người kém khả năng giao tiếp dễ gặp thất bại trong công việc cho dù đó là một người rất xuất sắc. Trong thực tế các lập trình viên thường xem nhẹ việc này và vì vậy không chú tâm để phát triển kỹ năng này.
Senior developer biết những gì họ không biết
Nghe có vẻ rối? Nhưng bạn hãy hiểu là không ai biết hết mọi thứ. Các lập trình viên non kinh nghiệm không biết nhiều thứ. Nhưng những nhà phát triển cấp cao cũng không biết tất cả mọi thứ. Các junior developer không biết những gì họ không biết. Senior developer có thể nói cho bạn biết họ không biết điều gì. Đó là sự khác biệt lớn giữa nhà phát triển cấp dưới và cấp cao.
Chính vì các senior developer biết những gì họ không biết và điều đó giúp họ hoàn thành tốt các nhiệm vụ của mình. Họ biết mình cần phải cải thiện điều gì, biết tận dụng những điểm mạnh nhất của mình. Ngược lại các lập trình viên ít kinh nghiệm không biết điểm yếu của chính họ.
Biểu đồ về hiệu ứng Dunning-Kruger dưới đây biểu diễn mức độ tự tin và kiến thức có được của Senior developer so với Junior developer. Khi đã có những kiến thức nhất định cộng với kinh nghiệm đã trải qua, senior developer biết mình đâu, biết mình biết gì và không biết gì, khả năng làm được gì..
Có kiến thức sâu chứ không phải nhiều
Bạn có đồng ý điều này không? Học ba hay năm ngôn ngữ lập trình không giúp cho bạn trở thành một senior developer. Hay nói cách khác, hiểu biết sâu sắc về một công nghệ mới là chìa khóa. Là một lập trình viên cấp cao, bạn phải nắm thật vững về công nghệ bạn đang sử dụng. Ngoài việc áp dụng vào công việc một cách hiệu quả bạn còn có thể hướng dẫn những người đi sau.
Kết luận
Bạn có thể yêu cầu công ty in lên tấm danh thiếp, hoặc để dưới chữ ký trong email “Nguyễn Văn A, Senior developer”. Nhưng những thứ đó không thể biến bạn thành một nhà phát triển cao cấp như đúng bản chất của nó. Các công ty có thể để chức danh để làm hài lòng nhân viên nhưng họ sẽ không tôn trọng và trả lương cao cho những danh hiệu hay chức danh đó. Họ chi trả cho những ai có thực chất. Bạn hãy xem lại mình đã có những yếu tố để khẳng định mình là một senior developer hay chưa? Hay còn cả một chặng đường dài phía trước dù đã vào nghệ không ít thời gian.
Nếu bạn có những kinh nghiệm để trở thành senior developer, hoặc có câu chuyện của riêng mình hãy để lại trong phần bình luận bên dưới nhé.
Bạn có biết?
tham gia cộng đồng ITguru trên Linkedin, Facebook và các kênh mạng xã hội khác có thể giúp bạn nhanh chóng tìm được những chủ đề phát triển nghề nghiệp và cập nhật thông tin về việc làm IT mới nhất
Linkedin Page:
Facebook Group:
cơ hội việc làm IT : ITguru.vn