Các bạn mới vào nghề IT chắc đã từng nghe qua “Junior Developer” và “Senior Developer”. Như vậy nó khác nhau như thế nào, công việc của họ là gì, những kỹ năng cần có, những chú ý trên hành trình để trở thành Senior Developer là gì? Hôm nay GrowUpWork hân hạnh được phỏng vấn anh Nguyễn Đình Luân có hơn 10 năm gắn bó và đam mê với ngành IT sẽ chia sẻ về chủ đề rất thú vị này.
Senior Developer Leader
Anh Nguyễn Đình Luân có hơn 10 năm kinh nghiệm phát triển Web. Anh đã từng làm việc tại công ty product cho Nhật Bản và công ty outsource đa quốc gia NashTech với vị trí Team Leader và Senior Developer. Hiện tại anh đảm nhận vai trò CTO và co-founder cho công ty startup của chính mình.
Chủ đề EXPERTS TALK:
"Senior Developer - Sự khác nhau giữa Senior Developer và Junior Developer".
Trước hết, theo góc độ của anh, mình không nên đánh giá kinh nghiệm dựa trên thời gian là bao nhiêu năm mà cần dựa trên kỹ năng đã đạt được thông qua tham gia số lượng dự án, loại dự án, số lượng công việc, độ khó hay thử thách trong công việc mà một nhà Developer đã làm.
Vì vậy, mới nói Senior Developer là người có nhiều kinh nghiệm xử lý các vấn đề xảy ra trong dự án, tất cả công đoạn từ nắm bắt yêu cầu cho đến giao hàng, đặc biệt là có kinh nghiệm giải quyết các vấn đề liên quan kỹ thuật nhằm đảm bảo đúng thời hạn và chất lượng. Có những trường hợp mất 5 năm nhưng vẫn chưa đạt trình độ Senior. Song, nếu cho một con số về thời gian thì anh thấy các bạn Developer mất ít nhất khoảng tầm 2 năm "chinh chiến" mới có thể đạt cấp độ Senior.
Senior Developer đương nhiên phải có trình độ kỹ thuật cao, ít nhất phải thông thạo 1,2 ngôn ngữ lập trình hoặc framework nào đó chẳng hạn: C#/ASP.NET MVC hoặc Java/Spring hoặc PHP/Laravel,... để đảm bảo rằng có thể làm việc độc lập và hoàn thành công việc được giao mà không cần sự hỗ trợ.
Theo anh để có thể đảm đương vị trí Senior các bạn cần phải có khả năng quản lý tốt ở cả cả 2 mặt. Trước hết hãy “quản lý” (làm chủ) bản thân tốt, bao gồm làm chủ thời gian làm việc và quản lý các công việc phát triển thuộc phân công cá nhân của mình.
Mặt khác, các Senior Developer còn quản lý tiến độ các công việc được giao cho các Junior Developer khi cùng làm việc trong một dự án.
Tức là Senior có nhiệm vụ và khả năng hướng dẫn những bạn ít kinh nghiệm (fresher/junior).
Bao gồm giao việc, quản lý tiến độ và hỗ trợ họ hoàn thành công việc được giao cũng như giúp họ nâng cao kiến thức và kỹ năng.
Cũng có chỗ giống và chỗ khác chứ!
Trước hết về các Junior Developer thì trong thời gian đầu các bạn chỉ fix bug, coding, unit test các tính năng đơn giản và đơn lẻ, không có góc nhìn bao quát cả dự án. Trong giai đoạn này, các Junior có thể làm việc độc lập, khi gặp vấn đề về kỹ thuật thì mới cần sự hỗ trợ từ Senior.
Còn các Senior Developer có chỗ giống Junior là vẫn phải tham gia vào công việc coding, unit test các thứ nhưng với cấp độ chức năng phức tạp hơn. Khác biệt nhất là có thể tham gia viết tài liệu thiết kế chi tiết, quản lý tiến độ tất cả các công việc của bản thân và phân công cho các Junior Developer trong nhóm của mình. Hơn nữa, các Senior Developer sẽ hướng dẫn và định hướng cho các Junior hoàn thành công việc và nâng cao kỹ năng chuyên môn của họ.
Mình cũng có thể nói Senior Dev là người có trách nhiệm cốt lõi trong một dự án, phải có tính cam kết về hạn định và chất lượng cho dự án. Còn Junior chỉ chịu trách nhiệm trên các công việc mình được giao, do thiếu kinh nghiệm nên khi gặp nhiều vấn đề thì có thể bị trễ deadline và chất lượng chưa tốt.
Theo anh thì sự chủ động và khả năng giao tiếp chính là chìa khóa quan trọng!
Có lần anh hướng dẫn một bạn Junior Developer, bạn ấy rất chủ động trong công việc, làm xong các công việc được giao sẽ tìm thêm công việc khác, tận dụng mọi thời gian để trau dồi kỹ năng phát triển. Và khi anh hỏi bạn ấy về một task hiện tại như thế nào, bạn ấy trả lời rất đầy đủ chi tiết, thậm chí kèm theo đường link và tài liệu liên quan.Chỉ trong vòng 1 năm bạn ấy đã được thăng tiến trở thành Senior.
Trong khi đó, có khá nhiều bạn giao tiếp kém, ít nói như vậy khi anh hỏi thì bạn ấy chỉ đáp từng câu một, đợi anh hỏi đến đâu trả lời đến đó, mất thời gian phải hỏi lại nhiều lần như vậy thì con đường thăng tiến sẽ chậm hơn.
Khả năng giao tiếp (Communication) ở đây anh muốn chia sẻ không phải là nói nhiều, nói trau chuốt, dễ nghe hay đầy sức thuyết phục mà chỉ cần bạn truyền đạt kịp thời, đầy đủ, rõ ràng và đúng thông tin mà đối phương đang cần mình cung cấp và giao tiếp phải mang tính 2 chiều.
Theo những gì mà anh đã từng trải qua cũng như quan sát các bạn mới bắt đầu phát triển phần mềm thì chúng ta thường vướng phải nhất đó là sự thụ động.
Khi các bạn phát triển mà không mong muốn bản thân có thể hiểu rõ dự án mà chỉ quan tâm đến task của mình, làm xong rồi thôi thì khó mà có thể đạt được cấp độ Senior Developer.
Ngoài ra còn có những cản trở khách quan có thể đó là từ môi trường làm việc của bạn, nơi có quá ít dự án và công việc không có gì mới mẻ để bạn thử sức và gia tăng kỹ năng.
Để có thể nâng cao kỹ năng của bản thân thì chính bạn phải chủ động dấn thân tìm kiếm cơ hội cho mình được thử thách nhiều loại kỹ thuật, phát triển càng nhiều dự án khác nhau càng tốt. Bên cạnh đó các bạn còn cần phải biết lắng nghe học hỏi từ những người đi trước và thậm chí các bạn đồng cấp xung quanh.
Nếu các công việc mà bạn đang làm đa phần chỉ là các công việc phát triển lặp lại và “maintain” (duy trì) các dự án cũ thì cũng sẽ làm tốc độ trở thành Senior Developer bị trì trệ. Với trở ngại mang tính khách quan như vậy, anh nghĩ các bạn cũng có thể cân nhắc lại về môi trường làm việc này để thay đổi.
Nếu các bạn mong muốn phát triển kỹ năng của bản thân nhanh chóng, anh thấy môi trường các công ty Outsource khá lý tưởng. Với môi trường này chỉ cần bạn chịu khó thì luôn có cơ hội để bạn nâng cao kỹ năng phát triển và làm việc của mình. Bởi các công ty này rất nhiều công việc, dự án đa dạng và đặc biệt có quy trình làm việc rõ ràng.
Tuy nhiên nếu bạn thích môi trường các công ty Product cũng không thành vấn đề chỉ là môi trường này sẽ đòi hỏi sự chủ động rất cao để tìm kiếm cơ hội cho mình vì cơ hội để phát triển những dự án khác nhau sẽ ít hơn trong môi trường Outsource.
Đối với những bạn mới đầu phát triển chỉ cần các bạn học hỏi xung quanh những task bạn đang làm và nghiên cứu phương pháp để phát triển phần mềm hiệu quả hơn là đã đủ yêu cầu. Còn học hỏi sao cho dễ hiểu nhất và đúng trọng tâm nhất thì các bạn nên lắng nghe từ những đàn anh trong team của mình, từ những lời khuyên của họ để tự mình nghiên cứu thêm là đủ.
Ngoài thời gian làm việc tại công ty nếu các bạn có định hướng kỹ thuật khác thì hãy tự nghiên cứu hoặc tự làm một sản phẩm cho mình cũng rất tốt!
Thỉnh thoảng có thể nhận dự án freelance , nó sẽ giúp các bạn nâng cao nhiều kỹ năng trong đó tư duy làm chủ, quản lý chi phí, tính chủ động để làm sao hài lòng khách hàng.
Tuy nhiên đây cũng là con dao hai lưỡi. Nếu bạn không sáng suốt sẽ bị chi phối trong phân bổ thời gian và ưu tiên việc làm chính và việc Freelance, khiến cho việc làm chính của bạn có thể bị ảnh hưởng tiêu cực, thậm chí là không hoàn thành. Trong khi công ty mà bạn làm việc mới là môi trường chính có thể phản ánh đúng thực lực của bạn, và trách nhiệm của bạn trong việc làm chính cao hơn!
Có một số bạn quá chú tâm vào việc tìm kiếm các dự án bên ngoài với mục đích kiếm tiền và nâng cao trình độ của mình mà chưa tìm hiểu ngay tại công ty mình đang làm việc, nhất là các bạn đang làm việc trong môi trường Outsource thì không hề thiếu những cơ hội để các bạn tích lũy kinh nghiệm, nâng cao trình độ. Nên anh cảm thấy các bạn cần cân nhắc và tìm hiểu về công ty chính của mình trước khi quyết định nhận các công việc freelance.
Có chứ! Khi giữ vị trí này anh cũng phải tiếp xúc và giao tiếp với khách hàng để trao đổi về yêu cầu dự án và các vấn đề liên quan cần được làm rõ! Khách hàng Việt Nam thì không có khó khăn gì nhưng khi gặp khách hàng nước ngoài thì sẽ gặp phải rào cản về ngoại ngữ và khác biệt trong văn hóa. Đôi khi anh cần phải thông qua BA (Business Analyst) để hỗ trợ phần giao tiếp với khách hàng. Do khác biệt về văn hóa và ngôn ngữ nên cái khó nằm ở chỗ làm sao giải thích các vấn đề về kỹ thuật để khách hàng hiểu được chính xác ý của mình.
Đối với ngoại ngữ và giao tiếp thì anh nghĩ chúng ta có thể tự rèn luyện và đã cải thiện được. Song kinh nghiệm trong lúc làm việc là bạn đừng ngại nói, đừng ngại hỏi thêm những điều mình chưa chắc chắn, đặc biệt là các yêu cầu của khách hàng.
Ngoại ngữ thì lớn nhì thôi còn khó khăn lớn và thử thách nhất với anh là nghiệp vụ chuyên môn!
*Chú thích: (Nghiệp vụ chuyên môn là kiến thức lĩnh vực hoạt động kinh doanh của khách hàng chẳng hạn về CRM, nghiệp vụ bảo hiểm, tài chính,... thế nên mỗi khách hàng, mỗi dự án phát triển phần mềm đều khác nhau rất nhiều. Nó đòi hỏi người phát triển phải nghiên cứu để hiểu về người dùng phần mềm của khách hàng và lĩnh vực đó.)
Khi gặp phải những lĩnh vực quá lạ lẫm với bản thân anh sẽ hỏi BA, để được giải đáp về lĩnh vực đó. Tuy BA không trực tiếp phát triển nhưng họ đã nghiên cứu kiến thức và nghiệp vụ trong lĩnh vực đó để Senior Developer tham khảo bất cứ lúc nào, chính vì thế BA hỗ trợ Senior Developer rất nhiều trong việc định hướng và thiết kế chức năng phần mềm như thế nào. Ngoài ra, anh cũng có thể trao đổi trực tiếp với khách hàng để có được phản hồi chính xác nhất.
Khi làm việc anh thường gặp phải những kỹ thuật mới cần nghiên cứu thì mới phát triển được, để cho đầy đủ và chính xác nhất anh vào luôn vào những trang Official, những trang chính thống của kỹ thuật đó. Ví dụ khi tìm hiểu về .NET thì mình nên ưu tiên tìm hiểu từ trang của Microsoft.
Những trang học online học lập trình như: Udemy, StackSkills,... gồm miễn phí và có phí cũng khá hay. Ngoài ra hiện nay cũng có nhiều trang tiếng Việt hoặc trên youtube cũng đa dạng và phong phú các bạn có thể tìm kiếm và học tập rất dễ dàng.
Bên cạnh đó, việc học hỏi thêm từ những đàn anh khác trong cộng đồng các Developer theo từng loại kỹ thuật cũng rất đáng cân nhắc.
Để là nhà phát triển có thể càng ngày càng nâng cao bản thân, anh nghĩ chỉ cần các bạn chịu khó, sẵn sàng trải qua nhiều thử thách từ nhiều dự án khác nhau thì bạn mới có thể level-up kỹ năng của mình cả về chuyên môn cũng như những soft skills.
Thêm nữa, khi làm việc cùng người hướng dẫn cũng như quản lý thì các bạn trước hết là hãy làm theo những gì được hướng dẫn, tránh vội vã hấp tấp. Đừng nên đặt cái tôi của mình quá cao, mà bất chấp ý kiến của người nhiều kinh nghiệm hơn, bảo vệ thái quá ý kiến của mình.
Bởi những người làm quản lý và hướng dẫn bạn có lý do đúng đắn để ra các phương án như vậy. Thà rằng làm theo ngay từ đầu còn hơn là phải mất rất nhiều thời gian để làm lại từ đầu khi cố chấp làm theo “cái tôi” rồi gặp phải sai lầm.
Ban biên tập chân thành cảm ơn anh đã dành thời gian chia sẻ kinh nghiệm quý báu đến các đọc giả của blog GrowUpWork, chúc anh sức khỏe và thành công!