Trong thời đại công nghệ ngày nay, vai trò của Full Stack Developer ngày càng trở nên quan trọng và được đánh giá cao trong lĩnh vực phát triển phần mềm. Nhưng Fullstack là gì, công việc của họ là làm gì, hãy cùng tìm hiểu kỹ hơn ở bài viết này. ## Fullstack là gì? Full Stack là một thuật ngữ tiếng Anh, được ghép từ hai từ "full" (toàn bộ) và "stack" (nhóm). Full Stack hay Full Stack Developer là người chuyên sâu về cả phần Frontend và Backend của một ứng dụng web hoặc phần mềm. Điều này có nghĩa là họ khả năng phát triển cả frontend (giao diện người dùng) và backend (xử lý logic phía máy chủ) của một ứng dụng web hoặc phần mềm. Cụ thể: - Phần Frontend là phần người dùng nhìn thấy và tương tác trực tiếp, bao gồm giao diện người dùng (UI) và trải nghiệm người dùng (UX). - Phần Backend là phần nằm sau màn hình, xử lý các yêu cầu của người dùng và cung cấp dữ liệu cho Frontend. Sự đa nhiệm của Full Stack Developer giúp họ có cái nhìn toàn diện và hiểu biết sâu rộng về toàn bộ quá trình phát triển ứng dụng. ## Full stack developer làm những gì? Một Full-Stack Web Developer là người có thể làm việc trên cả front-end và back-end của một ứng dụng. Front-end nói chung là phần mà người dùng có thể thấy được và tương tác được, còn back-end 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ủ, vv. Tuy nhiên thì một full stack developer xử lý frontend sẽ không thể bằng một chuyên gia front-end được, điều này cũng tương tự với backend. Họ sẽ có sự hiểu biết rộng về nhiều thành phần khác nhau, và cách tương tác giữa chúng trong quá trình phát triển, và kết hợp chúng lại với nhau thành một sản phẩm hoàn chỉnh. Là 1 Full-Stack Web Developer, không nhất thiết bạn phải làm tốt mọi công việc được giao từ front-end đến back-end, nhưng điều đó có nghĩa là bạn có thể làm việc trên cả hai front-end và back-end và hiểu điều gì đang xảy ra khi xây dựng một ứng dụng. Nếu bạn muốn trở thành một Full-Stack Web Developer hay có dự định bắt đầu công việc Full-Stack Web Developer thì dưới đây là list tham khảo những điều dân IT nên học. ### 1. HTML/CSS Hầu như mọi chương trình dạy online hay offline về Full-Stack Web Developer, đều dạy cho bạn bắt đầu với HTML và CSS bởi vì chúng là những nền tảng của web. HTML cho phép bạn thêm nội dung vào một trang web và CSS cho phép bạn tạo phong cách riêng cho nội dung của bạn. ### 2. JavaScript Ngôn ngữ JavaScript đang ngày càng trở nên phổ biến hơn qua các năm. Các libraries, framework và tool mới liên tục được phát hành. Dựa trên khảo sát của Stack Overflow Developer, JavaScript là ngôn ngữ phổ biến nhất trong cả Full-Stack, Front-end, and Back-end. ### 3. Back-End Language Một khi bạn cảm thấy mình nắm bắt tốt về HTML / CSS và JavaScript, bạn sẽ muốn chuyển sang ngôn ngữ back-end sẽ xử lý những thứ như hoạt động của cơ sở dữ liệu, xác thực người dùng và logic ứng dụng. Tất cả các chương trình đào tạo trực tuyến và bootcamps thường tập trung vào một ngôn ngữ back-end cụ thể, trong khi thực tế không có vấn đề gì khi bạn học nhiều hơn 1 ngôn ngữ miễn là bạn hiểu những gì đang xảy ra và bạn hiểu được bản chất ngôn ngữ mà bạn học. Bạn sẽ nhận được những phản ứng khác nhau khi hỏi ai đó ngôn ngữ back-end nào là tốt nhất để học.Vì vậy dưới đây tôi đã liệt kê một vài kết hợp phổ biến. Một lưu ý quan trọng: dù cho bạn quyết định học ngôn ngữ gì, thì điều quan trọng là phải gắn bó với nó và học hỏi mọi thứ về nó trong khả năng của bạn - Node.js: Đây là một lựa chọn tuyệt vời bởi vì Node.js chính nó chỉ là một environment JavaScript có nghĩa là bạn không cần phải học một ngôn ngữ mới. Đây là một lý do tại sao nhiều chương trình online và bootcamps chọn dạy Node.js . Framework phổ biến nhất mà bạn có thể tìm hiểu để trợ giúp bạn trong việc phát triển các ứng dụng web là Express. - Php: không phải bàn cãi nhiều, Php vẫn đang được lập trình viên ở Việt Nam cũng như các công ty IT tại VN sử dụng nhiều trong các production lớn. Nổi tiếng nhất và dễ học nhất là Laravel. - Ruby: Một số framework phổ biến để phát triển trong Ruby là Rails và Sinatra. Rất nhiều chương trình dạy Ruby như là một ngôn ngữ back-end đầu tiên. - Python: Một số framework phổ biến để phát triển trong Python là Django và Flask. - Java: Ngôn ngữ Java không còn được dạy nhiều trong thời gian gần đây khi đào tạo Full-Stack Web Development nhưng một số công ty lại sử dụng Java như một phần của họ và nó vẫn là một ngôn ngữ lập trình rất cần thiết. ### 4. Databases & Web Storage Khi học để xây dựng các ứng dụng web, trong một số trường hợp có thể bạn sẽ muốn lưu trữ dữ liệu một nơi nào đó và sẽ sử dụng nó sau này. Bạn cần nắm vững các topic sau đây liên quan đến cơ sở dữ liệu và lưu trữ. - Hiểu được các lợi ích của dữ liệu quan hệ, ví dụ: MySQL. - Tìm hiểu về cơ sở dữ liệu NoSQL, ví dụ: MongoDB. - Hiểu được điều gì là tốt hơn trong những tình huống nhất định. - Biết cách kết nối cơ sở dữ liệu với ngôn ngữ back-end mà bạn đã chọn (ví dụ: Node.js + MongoDB). - Hiểu được lợi ích của các kho dữ liệu trong bộ nhớ như Redis hoặc memcached. - Bộ lưu trữ web để lưu trữ sessions, cookie và cached data trong trình duyệt. - Cơ sở dữ liệu nhân rộng, ACID, và ORM (tất cả tùy chọn). ### 5. HTTP & REST ![1_3jazyUwurr2zfp5uEIi2Dg.png](/api/v1/media/206d94e133629ed8f7611839c79c60f0b1f0ead7f26fc363f950276fb35189a4.png) HTTP là một giao thức ứng dụng phi văn bản trên Internet – nó cho phép client giao tiếp với servers (ví dụ: mã JavaScript của bạn có thể yêu cầu AJAX cho một số mã back-end bạn đã chạy trên một máy chủ sẽ xảy ra thông qua HTTP). ### 6. Cấu trúc ứng dụng web ![1_wWDnYaaeAIsYVmNACstddg.png](/api/v1/media/6079ad60ee662bb7aa015e917bcead9561e132744f5ac0ebbdba309a869aa562.png) Một khi bạn nghĩ rằng bạn mình đã nắm bắt về HTML / CSS, JavaScript, lập trình back-end, cơ sở dữ liệu, và HTTP / REST, tiếp theo sẽ là phần khó khăn hơn. Tại thời điểm này nếu bạn muốn tạo ra một ứng dụng web phức tạp, bạn cần phải biết cách cấu trúc code của bạn, cách tách các tệp tin, vị trí lưu trữ các tệp tin lớn, cách sắp xếp dữ liệu trong cơ sở dữ liệu của bạn, nơi thực hiện một số nhiệm vụ tính toán (client-side vs server-side) và nhiều thứ khác nữa. Có những best practices mà bạn có thể đọc online, nhưng cách tốt nhất để thực sự học về cấu trúc ứng dụng là tự làm một ứng dụng lớn có chứa một số bộ phận chuyển động – hoặc thậm chí tốt hơn là làm việc với một nhóm và cùng phát triển 1 ứng dụng lớn/ phức tạp. ### 7. Git ![1_NomW1pXBFlKFFwZuTXVSTA.png](/api/v1/media/67125436c33245f30766274328314e1311ca512a9c0e45dbc4c9b2a34164a99d.png) Git là một hệ thống kiểm soát phiên bản cho phép các developer làm việc trên một nhóm để theo dõi tất cả các thay đổi đang được thực hiện trên codebase. Điều quan trọng là cần cso một vài hiểu biết cơ bản liên quan đến Git để bạn hiểu cách nhận ra code mới nhất mà bạn đã bỏ lỡ, cập nhật các phần của code, sửa lỗi và thay đổi code của người khác mà không vi phạm điều gì. Bạn chắc chắn nên học ý nghĩa đằng sau Git và “chơi” với nó nhiều hơn. ### 8. Thuật toán cơ bản và cấu trúc dữ liệu ![1_YewAB-IJnGpBr3LtvZPiRg.png](/api/v1/media/17f7141635a56c181caf446a42d8af26544d0ee20784a4b74daf738b94929476.png) Topic này tập trung vào 2 quan điểm phân cực trong giới lập trình. Có một số developer cho rằng không nên tập trung nhiều vào các chủ đề khoa học máy tính như tree traversal, sorting, phân tích thuật toán, thao tác ma trận, etc vv trong phát triển web. Trong khi bên cạnh những công ty yêu cầu ứng viên có bằng khoa học máy tính hoặc tương đương, thì cung có rất nhiều công ty sẽ chọn tuyển dụng những người không có bằng cấp kỹ thuật này nếu họ có thể chứng minh rằng họ biết cách phát triển các ứng dụng và thể hiện sự hiểu biết về các vấn đề cần giải quyết. Tuy nhiên để trở thành một senior fullstack developer, chúng ta cần ít nhất là nắm các thuật toán cơ bản và cấu trúc dữ liệu, việc là sẽ giảm thiểu code rác hay tăng performance hệ thống. Vì vậy, đây là một số điều bạn chắc chắn nên học: ## Học gì để trở thành Fullstack Developer Tham khảo ngay Lộ trình đào tạo Java fullstack Thực chiến: Khóa học: [tại đây](https://academy.youngmonkeys.org/classes) Học viên sẽ được đào tạo và làm fullstack, nghĩa là từ backend đến front-end để hoàn thành được dự án theo yêu cầu của khách hàng, và cụ thể sẽ được học: - Ngôn ngữ lập trình backend: Java. - Các thư viện hoặc framework backend: EzyFox, EzyPlatform, Thymeleaf cũng tương đồng với Spring Boot nhưng có nhiều cả tiến hơn. - Các công nghệ backend: HTTP và Websocket và socket realtime. - Các thư viện hoặc framework hoặc editor front-end: JQuery, ReactJS, Bootstrap, GrapeJS, TinyMCE. - Về thiết kế thì em sẽ được học: Design Patterns, kiến trúc phần mềm, kiến trúc hệ thống. - Về kỹ thuật lập trình bạn sẽ được học: Clean code. - Số buổi: 144 buổi - gần 12 tháng - Thời gian: 3b/tuần, 3h/buổi - Có GV trực tiếp hướng dẫn - Nếu dự án HV làm ra, chất lượng tốt, khách hàng đồng ý nghiệm thu và thanh toán thì hv sẽ có lương - Học phí: đang ưu đãi còn 30tr. Hv có thể đóng trước 1 triệu học thử trong 1 tuần. Tư vấn: Ms Mẫn - 0963023185 (zalo) Bài viết có tham khảo 1 số nội dung từ [TopDev](https://topdev.vn/blog/full-stack-developer-la-gi/)