Nội dung chính
- Công việc hằng ngày của một Full-Stack Developer là gì?
- Còn công việc mới của anh tại AlgoMerchant thì thế nào?
- Anh có gặp khó khăn gì khi chuyển sang làm Full-Stack trong môi trường “quốc tế” như vậy không?
- Theo anh, Full-Stack giúp nâng cấp sự nghiệp của Developer như thế nào?
- Những tố chất quan trọng để trở thành Full-Stack Developer là gì?
- Vậy để trở thành Full-Stack Developer, các Junior Developer phải bắt đầu như thế nào?
- Anh có từng mắc sai lầm gì trong công việc?
- Anh có lời khuyên nào cho các bạn trẻ muốn trở thành Full-Stack Developer?
- Những resource hữu ích mà anh đã từng tham khảo?
Full-Stack Developer là gì? Full-stack Developer là người phụ trách cả front-end (thiết kế UI, UX và flow) cho tới back-end (thiết kế database và viết các API cần thiết) của hệ thống. Họ là những người vừa có khả năng tư duy logic để phân tích và thiết kế cơ sở dữ liệu , vừa có thể ứng biến linh hoạt với CSS để tối ưu hóa cách hiển thị của trang web/ ứng dụng đi động.
Đọc bài phỏng vấn của ITviec với anh Phạm Huy Hoàng, một Full-Stack Developer đang làm việc tại AlgoMerchant – công ty start-up ở Singapore để biết:
- Công việc của một Full-Stack Developer là gì?
- Lợi ích của việc làm Full-Stack Developer là gì?
- Lời khuyên để bạn trở thành một Full-Stack Developer
Xem thêm việc làm Full Stack Developer trên ITviec
Tiểu sử: anh Phạm Huy Hoàng có thời gian làm việc tại FPT Software trước khi chuyển sang ASWIG Solutions với vị trí Developer ngôn ngữ C#.
Sau đó, anh theo học Thạc sĩ ngành Computer Science tại Đại học Lancaster (Vương Quốc Anh). Trong thời gian học, anh làm công việc Full-Stack Developer tại phòng IT của trường.
Sau khi tốt nghiệp vào tháng 8/2017, anh chuyển đến Singapore và làm việc cho Công ty AlgoMerchant cho đến nay.
Công việc hằng ngày của một Full-Stack Developer là gì?
Full-Stack Developer là người phụ trách cả Front-end lẫn Back-end của sản phẩm.
Nói chung, từ thiết kế giao diện đến Database đằng sau bạn đều phải chịu trách nhiệm cho đến khi sản phẩm vận hành trơn tru. Tuy nhiên, tùy theo mỗi công ty mà sẽ có một công việc cụ thể riêng.
Dự án anh làm cho Đại học Lancaster là một App dành cho sinh viên của trường tên là “I Love Lancaster”. App này sẽ tổng hợp toàn bộ tiện ích trong thời gian học tại trường cho sinh viên, chẳng hạn như xe buýt, thời khóa biểu… giúp các bạn học tập dễ dàng hơn.
Anh làm toàn bộ mọi việc từ nhận requirement của khách hàng là các phòng ban trong trường, thiết kế giao diện cho đến làm database đằng sau và mọi việc khác cho App chạy trơn tru.
Còn công việc mới của anh tại AlgoMerchant thì thế nào?
Tại AlgoMerchant, vị trí của anh là Senior Front-end Engineer, nhưng công việc vẫn mang tính Full-Stack như hồi xưa.
Công việc chính của anh là thảo luận với Product Manager để xác định requirement. Sau đó thảo luận với CTO để design kiến trúc cho dự án Auto Invest (Hệ thống tự động đặt lệnh mua/bán cổ phiếu dựa theo thuật toán).
Sau khi CTO review và duyệt thì anh sẽ đi từ front-end (design UX và flow) cho tới back-end (thiết kế database và viết các API cần thiết) của hệ thống.
Anh có gặp khó khăn gì khi chuyển sang làm Full-Stack trong môi trường “quốc tế” như vậy không?
Ban đầu khi mới làm tại đây, anh gặp khó khăn về khả năng giải thích. Ngày xưa ở Việt Nam giải thích bằng tiếng Việt đôi lúc khách hàng, đồng nghiệp còn không hiểu nên khi giải thích bằng Tiếng Anh lại càng khó hơn.
Thế là thay vì giải thích dài dòng, anh chia công việc ra làm và đưa khách hàng xem sau khi xong mỗi phần nhỏ. Lúc đó không cần giải thích nhiều người ta cũng hiểu mình muốn nói gì.
Chẳng hạn, anh làm trước một giao diện rồi đưa cho họ phản hồi sẽ dễ dàng hơn là chỉ nói miệng. Vả lại, mục đích giao tiếp là mình hiểu người đối diện muốn gì và ngược lại là tốt rồi, không nên nói quá nhiều.
Anh nghĩ đây là một kinh nghiệm rất hữu ích cho công việc full-time sau này vì không Developer nào không được việc cả. Vấn đề là mình có làm đúng như khách hàng muốn không và có giải thích được việc mình làm sẽ giúp ích được gì cho họ không.
Do đó, nếu dùng kĩ năng trên để giải quyết vấn đề này thì dù có bị rào cản ngôn ngữ, Developer cũng có cách vượt qua.
Theo anh, Full-Stack giúp nâng cấp sự nghiệp của Developer như thế nào?
Việc làm Full-Stack này rất thú vị và anh nghĩ các Developer nên phấn đấu đạt được vị trí này vì:
- Full Stack Developer dễ tìm được việc làm hơn do có skill set rộng.
Một Full-Stack Developer có thể chuyển sang làm Front-end Developer hoặc Back-end Developer hay làm về Database dễ dàng mà không tốn nhiều thời gian hay bị hụt kiến thức. Do đó, bạn không sợ bị thất nghiệp hay chán nghề.
Một điều nữa là các công ty Start-up và công ty nhỏ thường ưu tiên tuyển Full-Stack Developer hơn.
Ở giai đoạn đầu xây dựng sản phẩm, các công ty cần những Developer đa năng, có cái nhìn tổng thể về hệ thống. Khi sản phẩm bước vào giai đoạn hoàn thiện, phát triển thêm thì họ mới cần những người có kiến thức chuyên sâu.
- Lương cao hơn so với các Developer khác.
Phần lớn các mẩu tin tuyển dụng có chữ “Full-Stack Web Developer” thì mức lương thường cao hơn “Web Developer” thuần với cùng cấp độ.
Chủ Blog Codeaholicguy, cũng là bạn anh, khi chuyển từ vị trí Java Senior Developer sang làm Senior Full-Stack Developer bên KMS Technology thì lương tăng khoảng 30%.
Anh ấy cũng có chia sẻ về vấn đề này tại bài viết “Giá trị của một Fullstack Developer“. Tuy nhiên, dù có theo hướng Full-Stack hay theo hướng chuyên sâu một lĩnh vực đều có thể đạt mức lương IT cao cả.
- Dễ thăng tiến hơn
Bởi vì kiến thức Full-Stack giúp họ có cái nhìn tổng thể về hệ thống, rất cần thiết và được đánh giá cao nếu họ muốn phát triển lên thành Team Leader, Product Manager hay Software Architect.
Ngoài ra, do biết cả Front-end, Back-end, Design… nên họ trở thành cầu nối giữa các team với nhau, giúp giao tiếp giữa các team và các thành viên cùng team trở nên trôi chảy hơn. Điều này giúp Full-Stack Developer dễ trở thành key member trong team và dĩ nhiên dễ thăng tiến hơn.
Những tố chất quan trọng để trở thành Full-Stack Developer là gì?
Anh Hoàng tại trường Lancaster.
- Ham học hỏi
Lượng kiến thức để làm Full-Stack nhiều gấp đôi, gấp ba kiến thức để làm Front-end và Back-end vì phải chịu trách nhiệm, nắm hết mọi thứ từ đầu tới cuối. Do đó, cần phải không ngừng cập nhật kiến thức mới mỗi ngày.
- Có trách nhiệm
Full-Stack Developer là người “đứng mũi chịu sào” cho cả một sản phẩm. Khi anh mới vào làm cho trường được 1 tháng thì chỉ được làm phần Front-end, sửa những App đã có sẵn thôi nhưng từ lúc làm Full-Stack Developer, Product Manager đã giao cho anh một ý tưởng.
Từ ý tưởng đó phải lập kế hoạch làm App đó từ đầu tới cuối, từ việc phải đi nói chuyện với khách hàng để lấy requirement, thiết kế giao diện, nhận phản hồi và thực hiện cho đến lúc nó chạy được. Do đó, tinh thần trách nhiệm trong công việc là cực kì cần thiết.
- Năng động, giao tiếp tốt
Vì Full-Stack Developer phải cáng đáng nhiều việc, từng ngóc ngách của sản phẩm, làm việc với rất nhiều người gồm các Admin, khách hàng… nên nếu không giao tiếp tốt thì rất khó mà trụ được.
Nhiều người nghĩ rằng trong ngành lập trình chỉ cần tập trung phát triển khả năng Technical là đủ nhưng theo quan điểm của anh, điều đó chưa đủ để bạn trở thành một lập trình viên giỏi.
- Developer còn cần kĩ năng giao tiếp, trình bày vấn đề, kĩ năng thuyết phục người khác (khi muốn thuyết phục quản lý tăng lương chẳng hạn) để làm việc trơn tru với team và các team khác.
Những kĩ năng này cũng rất cần thiết để thăng tiến đến các vị trí quản lý (Team lead, PM…) nữa.
Vậy để trở thành Full-Stack Developer, các Junior Developer phải bắt đầu như thế nào?
Từ bất kì vị trí nào, bạn cũng có thể tiến lên làm Full-Stack Developer.
Nếu bạn là Front-end Developer thì có thể nghiên cứu thêm về Back-end và ngược lại. Sau đó nghiên cứu thêm về cơ sở hạ tầng, UI/UX.
Như anh ban đầu được tuyển vào phòng IT của trường là để làm Front-end. Tuy nhiên bên Back-end lại thiếu người nên anh tự đề cử mình đảm nhiệm luôn phần Back-end.
Sau đó, anh được cho đi giao tiếp với khách hàng, nhận requirement và từ đó làm Full-Stack Developer luôn.
Anh có từng mắc sai lầm gì trong công việc?
Anh Hoàng (ngoài cùng bên trái) và bạn bè tại phòng IT trường Lancaster.
Lúc mới vào làm tại phòng IT của trường, do chưa hiểu rõ hệ thống lắm nên anh hay làm sai một số quy trình, thậm chí là hay làm những việc mà Developer không được phép làm nữa. 🙁
Khi bị khiển trách thì anh mới giải thích là “Vì không ai cấm.” Sau đó, PM mới nói lại rằng “Không cấm nhưng không có nghĩa là được phép làm.”
Thật ra vấn đề ở đây là anh rất ngại hỏi người khác, nhất là lại với người nước ngoài nữa nên càng ngại.
Lúc làm việc tại FPT Software, anh cũng từng mắc sai lầm này.
Ở vị trí Junior Developer, có rất nhiều điều anh còn chưa biết mà lại rất ngại hỏi các đàn anh và cứ thích tự tìm hiểu.
Lý do một phần là vì ngại, một phần là vì cái tôi cá nhân, sợ hỏi nhiều sẽ bị đánh giá. Khi nhận được requirement, anh bắt tay vào code theo ý mình luôn, dẫn đến việc thành phẩm làm ra không đúng như yêu cầu.
Từ đó, anh rút ra kinh nghiệm là mình phải hỏi đồng nghiệp, sếp càng nhiều càng tốt.
Để tiết kiệm thời gian cho người được hỏi, bạn nên chuẩn bị sẵn những điều muốn hỏi và tự tìm hiểu trước khi hỏi.
Ngoài ra, khi nhận được requirement không nên bắt tay vào làm ngay, mà phải xác định rõ ràng vấn đề với BA, PM trước.
Mẹo nhỏ là có thể tranh thủ lúc team cùng đi ăn nhậu để hỏi những điều muốn hỏi. Lúc này, do không phải tập trung làm việc nên không ai cảm thấy phiền khi bị hỏi đâu. 🙂
Anh có lời khuyên nào cho các bạn trẻ muốn trở thành Full-Stack Developer?
- Full-Stack Developer là một công việc hay, thú vị nhưng không quá hay, quá thú vị như mọi người đồn đại và cũng đi kèm với nhiều áp lực , trách nhiệm. Do đó, bạn phải xác định là mình yêu thích, muốn làm thì mới theo được.
Vì nếu chỉ làm Front-end hay Back-end Developer thôi là đã phải cập nhật khối lượng kiến thức không nhỏ rồi, làm Full-Stack Developer còn phải nhân số đó lên 2, lên 3. Đừng vì ham lương cao mà chọn sai.
- Rèn tiếng Anh thật tốt.
Developer ở Việt Nam chưa giỏi Tiếng Anh lắm. Nếu muốn học tập nhiều về công nghệ mới thì học bằng tiếng Việt thôi chưa đủ, còn phải đọc tài liệu bằng tiếng Anh nữa.
Thật ra, tiếng Anh dành cho Developer không hề “nặng”. Bạn chỉ cần đọc hiểu các hướng dẫn với các từ chuyên ngành bằng tiếng Anh là đủ rồi!
Do đó, theo anh, cách tốt nhất để các bạn rèn luyện là chăm đọc hướng dẫn, tài liệu bằng tiếng Anh và ghi nhớ những từ chuyên ngành nhiều vào là được.
- Các bạn đừng nên làm ở công ty Outsourcing quá lâu.
Khi code cho Outsourcing, bạn sẽ nhận requirement rất rõ ràng và cứ code xong module là xong.
Khi bạn code cho công ty Product, bạn sẽ được thảo luận với nhóm để tìm ra requirement, bạn sẽ phải giao tiếp với rất nhiều người như Lead hoặc Product Manager. Nhờ đó, bạn sẽ rèn luyện được kỹ năng phân tích vấn đề và kỹ năng giao tiếp – vốn là những kỹ năng quan trọng để bạn bước lên những vị trí cao hơn.
Những resource hữu ích mà anh đã từng tham khảo?
- Về Front-end: Với các bạn mới nhập môn thì nên đọc Head First HTML & CSS, HTML5 & CSS3 for Dummies. Sau đó là Javascript for Dummies, Coding with JavaScript for Dummies.
Tiếp theo, các bạn có thể lên Codeacademy hoặc Freecodecamp để làm các Tutorial và bài tập.
Để chuyên sâu hơn về Front-end, các bạn có thể đọc JavaScript: The good part, Professional JavaScript for Web Developers.
- Về UI/UX: Biết code front-end là một chuyện, bạn vẫn phải học UI/UX để thiết kế làm ra dễ sử dụng. Hai cuốn sách về UX tuy cũ mà hay là Don’t Make me Think và User Interface Design for Programmers rất đáng để đọc.
Ngoài ra, bạn lên Medium để tham khảo các bài viết về UX.
- Về Back-end: vì có rất nhiều ngôn ngữ nên anh chỉ giới thiệu một số sách về kiến trúc hệ thống và tổ chức code gồm Clean Code, Refactoring: Improving the Design of Existing Code, Head First Design Pattern, Patterns of Enterprise Application Architecture.
Bạn nào chọn C# làm ngôn ngữ Back-end thì nên đọc C# In Depth và 2 khóa C# Design Strategies, C# Best Practices: Improving on the Basics trên pluralsight.
Cám ơn anh Hoàng về những chia sẻ bổ ích về chủ đề “Full-Stack Developer là gì?”. Chúc anh luôn thành công trong công việc và học tập.
Nếu bạn nghĩ những chia sẻ này có thể giúp ích cho bạn bè hoặc đồng nghiệp, đừng quên nhấn nút Share bên dưới nhé!
Và đừng quên tham khảo việc làm Full-stack Developer tại ITviec