Công việc của Senior Developer cần kỹ năng gì?
“Senior Developer là người có khả năng làm việc ở tất cả các giai đoạn của quy trình phát triển phần mềm: từ lên ý tưởng, liên lạc khách hàng, tới thiết kế, phát triển, và kiểm tra bảo trì phần mềm. Bản thân phải có khả năng quản lý project hoặc là module mình phụ trách, đủ khả năng để ...
“Senior Developer là người có khả năng làm việc ở tất cả các giai đoạn của quy trình phát triển phần mềm: từ lên ý tưởng, liên lạc khách hàng, tới thiết kế, phát triển, và kiểm tra bảo trì phần mềm. Bản thân phải có khả năng quản lý project hoặc là module mình phụ trách, đủ khả năng để hướng dẫn cũng như lên kế hoạch cho team.”
Đọc phỏng vấn này với anh Vũ Nam Sơn, Senior Developer của Prime Mover Global để biết được:
- Công việc của Senior Developer là gì
- Con đường của anh trở thành Senior Developer
- Lời khuyên của anh Sơn để trở thành một Senior Developer
Xem thêm các nhà tuyển dụng mong đợi gì ở Senior Developer tại ITviec.
Tiểu sử: Anh Sơn đã có gần 5 năm kinh nghiệm trong ngành IT. Trong khoảng hơn 2 năm đầu sau khi ra trường, anh là Developer của CSC Vietnam, chuyên về mảng Hệ thống Bảo hiểm.
Sau đó, anh là Salesforce Senior Developer cho Prime Mover Global, cũng là một công ty Outsourcing. Công việc chính của anh là phụ trách phát triển và bảo trì các phần mềm trên nền tảng Force.com.
Chào anh Sơn. Anh có thể giới thiệu về background của mình?
Anh tốt nghiệp trường Đại học Khoa học tự nhiên TPHCM năm 2012. Sau khi ra trường, anh làm việc tại một tập đoàn lớn là CSC Vietnam, chuyên về lập trình cho các project mảng Hệ Thống Bảo hiểm.
Sau 2 năm làm việc tại CSC, anh muốn thay đổi môi trường làm việc để làm mới bản thân cũng như thử sức với những cơ hội khác.
Khi đó, bên công ty Prime Mover Global đang cần một Developer cứng cáp và vì môi trường bên đây khá năng động, thoải mái nên anh chuyển sang đây.
Ở Prime Mover Global, anh tha hồ phát triển về kỹ năng kỹ thuật và cả kỹ năng mềm, cũng như có những thử thách hay ho hơn.
Qua hơn 2 năm làm việc nữa tại đây thì anh được thăng tiến lên thành Senior Developer.
Một Salesforce Developer là làm gì?
Salesforce là một bộ giải pháp phần mềm CRM tổng thể, cung cấp một loạt các ứng dụng CRM chuyên về bán hàng và dịch vụ khách hàng dành cho các doanh nghiệp vừa và nhỏ.
Ngôn ngữ chính để phát triển Salesforce là Apex, ngoài ra còn sử dụng Visualforce components và Javascript/HTML cho Front-end.
Salesforce Developer là người sẽ phát triển những ứng dụng hỗ trợ người dùng, giống như App của iOS/Android vậy.
Công việc của Senior Developer cụ thể là gì?
Công việc hiện tại của anh bao gồm:
- Liên lạc với khách hàng, nhận các feedback, issue từ khách hàng.
- Tiến hành phân tích, thảo luận, đưa ra solution và estimate về thời gian để báo với khách hàng.
- Sau đó anh sẽ chia nhỏ task ra và hướng dẫn thành viên trong team làm nếu cần, hoặc một số thay đổi lớn về hệ thống thì anh sẽ trực tiếp code.
- Sau khi issue được giải quyết thì anh sẽ review code, cũng như đưa ra các phương án test.
- Đôi khi có ít issue thì anh sẽ xem xét để cải thiện hiệu năng của hệ thống, cũng như chỉnh sửa lại những đoạn code chưa tốt để chương trình hoạt động tốt hơn và dễ bảo trì sau này hơn.
Tóm lại, Senior Developer là người có khả năng làm việc ở tất cả các giai đoạn của quy trình phát triển phần mềm: từ lên ý tưởng, liên lạc khách hàng, tới thiết kế, phát triển, và kiểm tra bảo trì phần mềm. Bản thân phải có khả năng quản lý project hoặc là module mình phụ trách, đủ khả năng để hướng dẫn cũng như lên kế hoạch cho team.
Chẳng hạn, bên phía khách hàng yêu cầu bên anh phát triển một tính năng mới là hiển thị các Fields còn thiếu và cập nhật các Fields đó bằng cách gọi API cung cấp.
Anh sẽ gặp khách hàng để họ trình bày requirement, rồi anh đưa ra estimate về thời gian cho khách hàng và vài design đơn giản về giao diện cho khách hàng lựa chọn.
Sau đó, cả Senior và Junior là người trực tiếp thực hiện công việc.
Anh chia story này làm 2 phần lớn là Front-end và Back-end, chia cho bạn Developer trong team làm Front-end cũng với bản design hoàn chỉnh, cả các hàm cần viết.
Còn anh sẽ làm phần Back-end, và viết test cases cho tính năng này.
Sau cùng là khi hoàn thành tính năng, anh sẽ viết tài liệu ngắn gọn về tính năng, cách cài đặt, flow đi đơn giản để gửi cho khách hàng review và feedback cho giai đoạn sau.
Anh Sơn tại văn phòng làm việc của Prime Mover Global
Anh đã học được những gì từ hai công việc của mình?
Khi anh bắt đầu đi làm tại CSC Vietnam, vì là một tập đoàn lớn nên anh có rất nhiều Junior và Senior làm chung và hỗ trợ nhau.
Với một Junior Developer mới vào team dự án lớn trong CSC Vietnam thì phải mất khoảng 2-4 tháng đầu chỉ làm những chính sửa đơn giản như sửa font chữ, chính tả trên màn hình…
Sau đó “cứng” hơn tí thì sửa vài đoạn code đơn giản, có Senior Developer hướng dẫn từng file/hàm.
Phải mất tầm gần 2 năm thì các bạn Developer mới có thể tự tin làm những task/issue khó hơn và tiến tới phát triển những tính năng nhỏ, còn những tính năng lớn toàn cỡ Technical Architect với Senior Developer làm thôi.
Có thể xem công việc của một Junior Developer là học build project -> fix UI -> học về kiến thức dự án -> fix lỗi tính toán nhỏ -> fix batchJob -> phát triển tính năng nhỏ trong khoảng 2 năm đầu.
Điểm mạnh của việc được làm việc trong một công ty có quy mô lớn là môi trường làm việc thường tốt hơn, được chăm chút hơn, cũng như dễ dàng học được những kĩ năng cũng như quy chuẩn về phát triển phần mềm.
Thêm vào đó là anh được gặp nhiều đồng nghiệp hơn ở môi trường công ty lớn, mở rộng được các mối quan hệ nghề nghiệp.
Tuy nhiên, vẫn có một vài hạn chế khi làm việc cho một công ty lớn.
Chẳng hạn, khi anh đi làm, anh chủ yếu làm việc với một hệ thống lớn, đã tương đối ổn định, nên việc tiếp cận các kiến thức mới, công nghệ mới bị giới hạn khá nhiều. Vì cũng có nhiều người hỗ trợ nên anh cũng không phải tự đề ra giải pháp và tự mình nghiên cứu.
Sau khi chuyển sang một công ty nhỏ hơn là Prime Mover Global thì quy mô team anh tại thời điểm anh vừa gia nhập chỉ có mỗi anh là Developer.
Mentor và Leader ban đầu của anh cũng nghỉ sau vài tuần. Trong thời gian đầu, anh phải làm việc một mình và làm tất cả công việc, từ liên lạc với khách hàng, phân tích, thiết kế và cũng như sửa lỗi phần mềm.
Đến nay thì anh phụ trách quản lý và train cho một bạn Junior Developer.
Tuy nhiên, chính vì vậy mà anh được tự do làm mọi thứ. Anh phải tự phải tìm tòi, nghiên cứu các công nghệ mới để áp dụng vào công việc.
Trong thời gian ngắn mà kĩ năng và kiến thức công nghệ tăng rất nhanh. Tất nhiên là làm việc cho công ty nhỏ thì môi trường làm việc không chuyên nghiệp bằng, ít phúc lợi ngoài lương hơn.
Những kỹ năng, kiến thức anh đã tích lũy trên con đường lên vị trí Senior Developer là gì?
Ở CSC Vietnam, anh học nhiều về kĩ năng đọc code rất rất xấu (code dự án của anh không phải do người viết, mà do một chương trình khác translate ra), debug và đọc log của system để fix lỗi trên production (môi trường của khách hàng).
Nói chung, về mặt công nghệ thì không có gì nhiều, nhưng về kĩ năng code, debug, đọc tài liệu kỹ thuật… thì rất nhiều. Điều này giúp anh code nhanh, ít bug hơn sau này.
Còn về mặt quy trình thì anh được trải nghiệm đủ các bước phát triển của phần mềm, ở đây là phát triển một tính năng mới, từ việc lên ý tưởng, tới thiết kế, coding, test và release tính năng đó ra.
Đặc biệt, anh được biết nhiều về Domain Knowledge qua các khóa đào tạo. Chẳng hạn anh làm chuyên về bảo hiểm thì anh được học về bảo hiểm và các chứng chỉ bảo hiểm…
Nhờ vậy, khi sang chuyển sang làm những dự án khác nhau thì anh cũng có ý thức là phải tìm hiểu hoặc vận dụng những Domain Knowledge giống như vậy.
Qua Prime Mover Global thì anh được anh Leader hướng dẫn hướng đi.
Khi có vấn đề, anh ấy tư vấn cho anh một giải pháp đơn giản, sau đó anh tự nghiên cứu và phát triển.
Khi nào bí thì tự Google tìm tòi, hết cách rồi mới hỏi lại anh. Nhờ việc tự mình tìm tòi về công nghệ để giải quyết vấn đề đó, anh học được cách chọn công cụ cũng như sử dụng nhiều công nghệ thích hợp cho project, kiến thức về công nghệ cũng phát triển nhanh hơn.
Sau hơn 2 năm tích lũy kiến thức về công nghệ, quy trình và đưa ra những giải pháp có hiệu quả trong project thì anh được lên vị trí Senior Developer.
Theo anh, một bạn Junior Developer phải làm gì để tiến lên Senior Developer?
- Hãy code thật nhiều và nên có side project: một điều rất hiển nhiên, code thường xuyên giúp bạn hiểu rõ hơn về ngôn ngữ mình đang làm việc, hiểu được những design pattern, các coding convention để áp dụng vào công việc. Code của bạn sẽ ngày càng ít “kinh” hơn, dễ đọc, dễ hiểu, dễ bảo trì hơn.
Chẳng hạn ngày xưa khi anh code thì thường code thẳng những tính năng mới vào những file đã có sẵn, mỗi file vài function. Tới lúc chạy thì rối rất nhiều.
Sau này, khi làm nhiều project với các đàn anh thì anh mới bỏ suy nghĩ dạng “mì ăn liền” này.
Anh phân rõ chức năng mọi file code ra, mỗi file chuyên về một vấn đề, công thêm refactor lại code cũ, tránh việc trùng code, code đi code lại nhiều lần một function cho những Object khác nhau.
Cái nào chung thì gộp lại, cái nào riêng mới tách ra. Code sẽ gọn hơn, dễ bảo trì hơn, ít lỗi hơn.
Nếu nói về code nhiều thì anh code tầm khoảng 10-12h/ngày là nhiều rồi, còn phải cân bằng cuộc sống nữa