Full-stack Developer là người phụ trách cả hai mảng Front-end (FE) và Back-end (BE). FE nói chung là phần mà người dùng có thể thấy được và tương tác được, còn BE là phần ứng dụng xử lý logic, tương tác cơ sở dữ liệu, chứng thực người dùng, cấu hình máy chủ,… 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 di động.
Trong buổi ArchersTalk ngày 15/02/2022 vừa qua, chúng ta đã có cơ hội gặp gỡ anh Kha Nguyen – Chapter Lead của Chapter NoPy tại Kyanon Digital, anh Khoa Vu – Senior Angular Developer, hiện đang tìm hiểu và phát triển con đường lập trình Back-end tại Kyanon Digital, và Cat Chau – thành viên của Chapter NoPy, hiện đang tìm hiểu về ReactJS tại Kyanon Digital để được nghe các anh chia sẻ về:
- Điều gì khiến cho các diễn giả của chúng ta muốn trở thành Full-stack Developer?
- Có khó khăn hay thuận lợi gì khi chuyển từ BE sang FE và ngược lại?
- Hành trình học thêm FE hoặc BE gồm mấy giai đoạn, và những giai đoạn đó là gì?
- Có thay đổi gì về mindset khi chuyển giao giữa FE và BE không?
- Lợi ích của việc biết cả FE và BE thay vì chỉ biết 1 trong 2?
- Bạn có lời khuyên gì cho những bạn trẻ khác khi muốn trở thành Full-stack Developer?
Ngoài ra, các bạn tham gia cũng đóng góp một số ý kiến cho chủ đề này. Cùng tìm hiểu nhé.
1. Điều gì khiến cho các diễn giả của chúng ta muốn trở thành Full-stack Developer?
Khoa Vu: “Khi mình chỉ có kiến thức về FE cũng giống như mình chỉ biết về phần nổi, những gì mà người dùng có thể thấy được và tương tác. Ngược lại, nếu như mình chỉ biết về BE, mình cũng chỉ nắm được cách thức xử lý cũng như lưu trữ dữ liệu người dùng, sau đó trả lại những dữ liệu đó cho team FE hiển thị ra. Nếu bạn là một Full-stack Developer, bạn có thể làm việc với cả hai phía FE và BE, bạn sẽ hiểu rõ hệ thống hơn, có khả năng nhìn thấy các vấn đề performance từ hai phía cũng như đưa ra các giải pháp để tối ưu hóa công việc.
Yếu tố thúc đẩy mình trở thành một Full-stack Developer đó là sau khi làm qua nhiều dự án chỉ với vai trò là FE Developer, công việc đòi hỏi mình phải có nhiều kiến thức về BE nên mình đã quyết định dành thời gian để research và chọn thêm cho mình một ngôn ngữ để làm việc và học thêm về BE.”
Cat Chau: “Động lực thúc đẩy mình muốn trở thành một Full-stack Developer một phần là vì yếu tố công việc. Thứ hai là mình cũng mong muốn phát triển bản thân hơn. Mình bổ sung thêm một yếu tố thực tiễn, đó là về mức lương và cơ hội làm việc. Nếu mình chỉ làm BE, nhà tuyển dụng sẽ chỉ đánh giá mình là một Junior Back-end Developer và cơ hội làm việc của mình cũng sẽ không nhiều bằng khi làm Full-stack. Khi trở thành Full-stack Developer, mình sẽ được nhà tuyển dụng đánh giá cao hơn.”
2. Có khó khăn hay thuận lợi gì khi chuyển từ BE sang FE (hoặc ngược lại)?
Cat Chau: “Vấn đề đầu tiên có lẽ là về ngôn ngữ. Như các bạn đã biết, khi học BE, đa số mình code data và sử dụng các ngôn ngữ BE. Khi chuyển sang làm FE, mình cũng phải học thêm ngôn ngữ FE mới như JavaScript, các ngôn ngữ hiển thị như HTML, CSS… những ngôn ngữ này có tính đặc thù hơn nên để học được nó cũng khá khó.”
Khoa Vu: “Do anh chuyển từ FE sang BE, khó khăn mà anh thấy là ở phía BE là có nhiều tech stack, đa dạng ngôn ngữ, công nghệ, mình cần định hướng được mình cần học những gì, những gì mình buộc phải biết và những gì mình nên biết. Cũng có nhiều điều mới liên quan đến server, database, cơ chế xác thực, cách optimize performance. Ngoài ra một BE Developer cũng cần tìm hiểu thêm những kiến thức của DevOps.”
3. Hành trình học thêm FE hoặc BE gồm mấy giai đoạn, và những giai đoạn đó là gì?
Khoa Vu: “Ban đầu, mình cần quyết định được ngôn ngữ FE hay BE mình sẽ học. Khi đã chọn được ngôn ngữ đó rồi, mình sẽ học đến các framework. Tiếp đó, mình sẽ học đến database và tìm hiểu thêm các công nghệ liên quan.”
Cat Chau: “Giai đoạn đầu khi chuyển từ BE sang FE cũng là giai đoạn khó khăn nhất. Mình lựa chọn đi theo con đường Full-stack vì yêu cầu công việc nên cũng đã có lựa chọn về ngôn ngữ cần phải học. Đầu tiên mình cũng học về ngôn ngữ trước. Lúc đó mình chỉ biết một chút về HTML và CSS, sau đó mới học về component. Sau khi mình đã học và biết về ngôn ngữ, framework đó như thế nào rồi, giai đoạn tiếp theo là giai đoạn tìm hiểu. Mình sẽ tìm hiểu những vấn đề technical ở trong ngôn ngữ đó và vẫn đang trong giai đoạn tìm hiểu.”
Kha Nguyen: “Mọi người cũng thấy rằng đi theo con đường Full-stack sẽ tốn khá nhiều công sức. Thực sự để chuyển từ FE sang BE và ngược lại thì cũng có nhiều mindset mình cần thay đổi và thích nghi. Trên thị trường có rất nhiều bạn tự nhận mình là Full-stack Developer, nhưng thật ra ít có ai mạnh ở cả hai mảng. Đa số mọi người sẽ chuyên về một mảng FE hoặc BE, dù làm mảng nào đi nữa thì các bạn cũng cần phải có một core foundation rõ ràng, logic và biết được những điểm chính yếu của FE, BE là gì. Hiện tại, thị trường đang có nhu cầu cao về mảng DevOps, Full-stack, đặc biệt là dự án của các công ty startup, nước ngoài. Mình cũng sẽ cố gắng giúp đỡ, chỉ cần các bạn muốn học. Theo mình, không có gì quý bằng có người chia sẻ kinh nghiệm và có dự án để làm.
Thứ nhất, các bạn nên xác định mục tiêu rõ ràng chứ không nên đi theo trend. Khi mình học một thứ hoàn toàn lạ thì tất nhiên sẽ phải mất rất nhiều thời gian và công sức. Thứ hai, các bạn vẫn phải làm công việc chính của mình ở công ty. Công ty rất thoải mái cho bạn học nhưng các bạn vẫn phải đảm bảo hoàn thành task hàng ngày của mình. Có nhiều bạn cho rằng việc học thêm như vậy là quá sức so với bạn hoặc bạn nghĩ việc học thêm sẽ tốn thời gian nghỉ ngơi vào buổi tối và cuối tuần. Nếu bạn có tư tưởng như vậy thì mình khuyên là đừng nên học. Vì nếu bạn muốn đạt được một điều gì đó vượt trội hơn người khác thì bạn phải hy sinh một điều gì đó. Khi đã thực sự quyết tâm học, bạn nên học một cách nghiêm túc để tránh mất thời gian và công sức. Trong quá trình học sẽ luôn có những người high level feedback và support các bạn.”
4. Có thay đổi gì về mindset khi chuyển giao giữa FE và BE không?
Dung Nguyen: “Khi chuyển qua FE thì mình có suy nghĩ nhiều hơn về hành vi người dùng trong nhiều độ tuổi khác nhau. Còn về BE thì mình chú trọng đến code nhiều hơn.”
Cat Chau: “Khi mình học cả hai mảng FE và BE, mindset về việc xây dựng API của mình sẽ tốt hơn. Sau khi học thêm về FE, mình biết là cần phải xây dựng API một cách rõ ràng. Khi FE cần những field nào thì BE trả ra đúng những field đó. Và mình sẽ kiểm soát được việc sẽ truyền những gì vào API. Đó là mindset của mình thay đổi trong khi code. Còn về phía khách hàng, khi làm FE mình cũng sẽ biết thêm về logic của flow đó như thế nào.”
Khoa Vu: “Anh thì đã có kinh nghiệm làm FE nên khi chuyển sang BE, anh nhận ra có một số việc mình có thể làm như giảm tải những flow, action không cần thiết trên giao diện để tăng UX (trải nghiệm người dùng). Như vậy sẽ giúp hệ thống của mình hoạt động tốt hơn.”
5. Lợi ích của việc biết cả FE và BE thay vì chỉ biết 1 trong 2?
Khoa Vu: “Khi bạn nhận requirement từ khách hàng cần handle cả 2 phía FE và BE, nhưng nếu bạn chỉ biết kỹ năng của mảng FE thì vẫn cần một BE Developer khác cùng tham gia dự án. Trong trường hợp bạn BE chưa thể cung cấp các API hay thông tin liên quan sẽ khiến công việc của bạn FE bị pending. Chứng tỏ, FE hoặc BE sẽ bị phụ thuộc vào người còn lại. Nếu như là một Full-stack Developer, bạn có thể xử lý được công việc mà không phụ thuộc vào người khác.”
Dung Nguyen: “Khi anh biết cả về FE lẫn BE thì có thể biết được giới hạn của từng phần. Khi biết giới hạn của nó như thế nào thì mình có thể điều chỉnh, tiết chế giúp sản phẩm tốt hơn.”
6. Bạn có lời khuyên gì cho những bạn trẻ khác khi muốn trở thành Full-stack Developer?
Cat Chau: “Bạn cần phải xác định là mình yêu thích, muốn làm Full-stack Developer thì mới theo được.”
Khoa Vu: “Nếu bạn thích ngôn ngữ lập trình của BE và cũng có xuất thân là một BE Developer, mình khuyên bạn nên làm công nghệ đó một vài năm để nắm được những kiến thức cũng như tích lũy được nhiều kinh nghiệm ở mảng đó trước khi chuyển sang FE. Ngoài ra, bạn cũng nên đọc thêm những document, blog, tham gia những buổi sharing về technical để có thể tham khảo, học hỏi thêm kinh nghiệm từ những người đi trước.”
Ý kiến từ các bạn tham gia buổi ArchersTalk
Sang Nguyen: “Anh có xuất thân từ BE và cũng có lúc anh muốn trở thành một Full-stack Developer. Lý do thì cũng giống những gì mọi người đã chia sẻ. Đôi khi mình trao đổi với team BE, có những điều mình giải thích nhưng họ không hiểu và ngược lại, dẫn đến công việc bị trì hoãn. Hy vọng mọi người sẽ có thêm kiến thức về cả FE và BE để làm việc tốt hơn. Bạn có thể không cần hoàn toàn trở thành một Full-stack Developer, nhưng nếu mình biết thêm các kiến thức của hai bên thì việc trao đổi thông tin sẽ hiệu quả hơn. Khi mình biết được phong cách làm việc của hai team, mình cũng sẽ hiểu được những tính năng và giá trị thực sự của sản phẩm mình tạo ra. Đặc biệt là khi biết nhiều kiến thức thì cơ hội sẽ đến với mình nhiều hơn.”
Dung Nguyen: “Theo anh thấy khi muốn trở thành Full-stack Developer, hầu như các bạn chỉ nói tới FE và BE mà không đề cập tới Designer. Nếu mình không cập nhật phần design thường xuyên thì mỗi năm sẽ có một trend khác nhau tùy theo định hướng người dùng. Design cũng có rất nhiều nhánh, có thể là graphic design, web design, custom illustrations design,… Ví dụ, khi làm một sản phẩm cho những người làm nghệ thuật, mình không thể thiết kế một trang web như một trang e-commerce hoặc ngược lại. Khi anh làm Full-stack, anh cũng sẽ đóng góp ý kiến cùng với team Design. Có nghĩa là hai bên cùng thảo luận về cách thực hiện để có thể hoàn thiện sản phẩm hơn. Vì có những phần design tuy rất đẹp nhưng không hữu ích.”
Phần Q&A
- Nếu là một Full-stack Developer, bạn nghĩ mình sẽ mang lại lợi ích gì lớn hơn cho dự án/team/tổ chức so với những bạn chỉ làm về 1 mảng FE hoặc BE?
Dung Nguyen: “Do biết cả Front-end, Back-end, Design… nên bạn có thể 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.”
- Nếu FE và BE làm việc chung trong một progress, team FE đó có cần hiểu về technology của team BE đang làm không?
Khoa Vu: “Nếu có kiến thức về công việc mà team BE đang làm, bạn có thể đóng góp ý kiến để đẩy nhanh tiến độ công việc. Nhưng mình không nghĩ điều này bắt buộc cần phải biết.”
- Có bao giờ team FE gặp trường hợp bị block issues với team BE không? Trong trường hợp đó thì rủi ro team BE có thể sẽ bị trễ, không đạt được milestone của sprint đó có cao không?
Khoa Vu: “Đây cũng là câu trả lời cho câu hỏi “Lợi ích khi biết cả 2 mảng so với chỉ biết 1 mảng”, nếu bạn có kiến thức về cả FE lẫn BE sẽ giúp công việc thuận tiện hơn rất nhiều.”
Dung Nguyen: “Theo anh nghĩ, mình cũng không thể giải quyết được vấn đề triệt để mà chỉ có thể nhận biết được vấn đề nhanh hơn, tiết kiệm được thời gian xác định vấn đề.”
Qua buổi ArchersTalk này, các bạn tham gia đã có thêm cho mình khá nhiều kiến thức hữu ích cho con đường phát triển sự nghiệp của mình nếu có mong muốn trở thành một Full-stack Developer trong tương lai. Cảm ơn các diễn giả đã chia sẻ những thông tin bổ ích cũng như kinh nghiệm cá nhân đến mọi người, góp phần phát triển văn hóa chia sẻ kiến thức tại Kyanon Digital.
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é!
—————————-
ArchersTalk là chuỗi sự kiện chia sẻ kiến thức liên quan đến lĩnh vực công nghệ và lập trình của Kyanon Digital, nơi các thành viên Kyanon Digital (Archers) sẽ chia sẻ những kiến thức thực tiễn trong quá trình làm việc cũng như những kinh nghiệm đúc kết được để giúp các bạn còn lại trong team, trong nội bộ công ty hoặc các bạn bên ngoài công ty có quan tâm sẽ có những góc nhìn và tư duy mới hơn để ứng dụng vào công việc hiện tại của mình.