Công việc của Senior Developer cần kỹ năng gì?
Đọ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
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, khiế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 đo 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ách 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ự nhiê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 làm vị trí của 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 🙂 Ngoài ra, anh cũng hay coi thử cách framework hoặc cấu trúc bố trí code của các project mã nguồn mở khác để học hỏi. Một thói quen nữa của anh là sau khi code, anh dành ít thời gian đọc lại code của mình, refactor lại code, hoặc tìm cách code khác hiệu quả, ít gây ra lỗi hơn.
Tìm hiểu về lĩnh vực mà project của mình đang làm càng nhiều càng tốt: điều này khá quan trọng khi làm việc ở các dự án hỗ trợ Kinh Doanh. Kiến thức về lĩnh vực đang làm việc sẽ giúp bạn hiểu rõ được yêu cầu của dự án, hướng giải quyết, cũng như dễ dàng hơn trong việc tiếp nhận thông tin từ phía khách hàng hoặc Business Analyst (BA). Hiểu đúng, nắm sản phẩm, thì công việc sẽ dễ dàng hơn rất nhiều.
Xem thêm để biết Business Analyst là gì?
Ví dụ như hồi trước anh làm về hệ thống bảo hiểm, anh sẽ phải chủ động đi học những kiến thức về bảo hiểm như một số chứng chỉ bảo hiểm như LOMA, Insurance 21… Dự án của anh ngày trước không có tài liệu ghi chép lại, nên khi làm thường bị động theo BA hướng dẫn. Nhờ anh tự tìm hiểu thêm những kiến thức, định nghĩa bảo hiểm nên khi đọc hướng dẫn của BA đã dễ hiểu và tốc độ hiểu cũng nhanh hơn, tăng tốc độ công việc. Càng nắm chắc và hiểu rõ được mọi vấn đề của project thì khả năng thăng tiến sẽ càng cao hơn.
Nên rèn kỹ năng giao tiếp và quản lý công việc: Senior Developer phải nói chuyện với khách hàng và trao đổi với Project Manager (PM) nên khả năng giao tiếp phải hơn các Developer khác. Cụ thể và quan trọng nhất là bạn phải từ chối hoặc thương lượng về thời gian, khối lượng công việc. Nhận hết việc sẽ khiến bạn và Developer dưới mình “quá tải”, cần biết nói không đúng lúc.
Tham khảo thêm công việc Project Manager là gì?
Khi là Senior thì bạn còn phải quản lý công việc của các Developer dưới quyền nên kỹ năng quản lý công việc cũng rất quan trọng. Cụ thể nhất là cần phải chia công việc hợp lý, giúp bản thân cũng như những đồng nghiệp làm chung không bị “quá tải”, nhờ đó giảm khả năng gây lỗi của mỗi thành viên trong nhóm. Thêm vào đó là việc làm đúng việc, đúng sức sẽ giúp cho cách thành viên trong nhóm tiến lên, cả nhóm sẽ ngày càng tiến bộ.
Anh có mắc sai lầm nào trong công việc không?
Sai lầm trong công việc thì anh cũng có không ít. Đơn cử như có một lần, nhóm anh phát triển một module mới, nhưng ở dạng demo. Cả module tại thời điểm đó chưa có môi trường phát triển riêng, nên được đặt chung trong môi trường phát triển của project chính của công ty. Tới một ngày, PM yêu cầu cần release một Package để có thể test và demo trên môi trường thật, anh đã không hỏi kĩ PM về môi trường phát triển của module đó, mà lại dùng chính Project kia release.
Sau khi release rồi thì module đó không thể gỡ bỏ khỏi project chính của công ty. Sai lầm này cũng khá nghiêm trọng, rất may là bên phía khách hàng không bất bẻ chuyện này, và sau đó anh cũng tìm được cách để vô hiệu hóa module đó trong các release sau.
Từ sai lầm này, anh rút ra kinh nghiệm là việc trao đổi thông tin là cực kì quan trọng, giữa các thành viên trong cùng một team, giữa team và khách hàng cần được rõ ràng. Nếu không hiểu gì thì nên hỏi ngay và xác nhận lại, luôn mạnh dạn đặt câu hỏi cũng như đưa ra những ý tưởng mới nếu có, mọi công việc sẽ trôi chảy và hiệu quả hơn.
Anh có những resources nào muốn chia sẻ với các bạn Junior?
- Clean Code: A Handbook of Agile Software Craftsmanship: cuốn sách kinh điển của ngành cực kỳ cần thiết cho ai mới vào nghề.
- Refactoring: Improving the Design of Existing Code: cuốn sách rất hay về refactoring, rất phù hợp cho những bạn đang lập trình hướng đối tượng.
- Working effectively with legacy code: tác giả Michael Feathers mang đến nhiều chiến lược từ A-Z để bạn xử lý hiệu quả những “code không sạch” (legacy code).
- Design Patterns: Elements of Reusable Object-Oriented Software: đây là cuốn kinh điển và đầy đủ nhất về các design pattern trong lập trình hướng đối tượng.
Cảm ơn anh Sơn về những chia sẻ thú vị. Chúc anh luôn thành công trong công việc.
BTV.Trần Thị Thu Huyền
Phòng Truyền Thông IMicroSoft Việt Nam
Hotline: 0916 878 224
Email: huyenttt@imicrosoft.edu.vn
Bạn đang muốn tìm kiếm 1 công việc với mức thu nhập cao.
✅ Hoặc là bạn đang muốn chuyển đổi công việc mà chưa biết theo học ngành nghề gì cho tốt.
✅ Giới thiệu với bạn Chương trình đào tạo nhân sự dài hạn trong 12 tháng với những điều đặc biệt mà chỉ có tại IMIC và đây cũng chính là sự lựa chọn phù hợp nhất dành cho bạn:
👉 Thứ nhất: Học viên được đào tạo bài bản kỹ năng, kiến thức chuyên môn lý thuyết, thực hành, thực chiến nhiều dự án và chia sẻ những kinh nghiệm thực tế từ Chuyên gia có nhiều năm kinh nghiệm dự án cũng như tâm huyết truyền nghề.
👉 Thứ hai: Được ký hợp đồng cam kết chất lượng đào tạo cũng như mức lương sau tốt nghiệp và đi làm tại các đối tác tuyển dụng của IMIC. Trả lại học phí nếu không đúng những gì đã ký kết.
👉 Thứ ba: Cam kết hỗ trợ giới thiệu công việc sang đối tác tuyển dụng trong vòng 10 năm liên tục.
👉 Thứ tư: Được hỗ trợ tài chính với mức lãi suất 0 đồng qua ngân hàng VIB Bank.
👉 Có 4 Chương trình đào tạo nhân sự dài hạn dành cho bạn lựa chọn theo học. Gồm có:
1) Data Scientist full-stack
2) Embedded System & IoT development full-stack
3) Game development full-stack
4) Web development full-stack
✅ Cảm ơn bạn đã dành thời gian lắng nghe những chia sẻ của mình. Và tuyệt vời hơn nữa nếu IMIC được góp phần vào sự thành công của bạn.
✅ Hãy liên hệ ngay với Phòng tư vấn tuyển sinh để được hỗ trợ về thủ tục nhập học.
✅ Chúc bạn luôn có nhiều sức khỏe và thành công!