Bỏ qua

Định hướng tự học Fullstack

Hiện tại lộ trình này mình viết cho cá nhân mình dùng nên nó vẫn chưa được hoàn chỉnh. Mình cũng sẽ chỉnh sửa và cải thiện trong quá trình học luôn.

Fullstack là cái gì?

Practically all web applications have (at least) two "layers": the browser, being closer to the end-user, is the top layer, and the server the bottom one. There is often also a database layer below the server. We can therefore think of the architecture of a web application as a stack of layers.

Often, we also talk about the frontend and the backend. The browser is the frontend, and the JavaScript that runs on the browser is the frontend code. The server on the other hand is the backend.

In the context of this course, full-stack web development means that we focus on all parts of the application: the frontend, the backend, and the database. Sometimes the software on the server and its operating system are seen as parts of the stack, but we won't go into those.

Chọn lộ trình khác

Nếu bạn muốn học những lộ trình khác thì có thể thử:

Bạn hoàn toàn có thể sử dụng những hướng dẫn Fullstack trên để hỗ trợ quá trình học của mình.

Lộ trình học

Lộ trình sẽ được chia ra làm 26 tuần. Cách học cơ bản của lộ trình là trong mỗi tuần sẽ có những phần kiến thức mà bạn cần (mình nghĩ là cần) học. Bạn hoàn toàn có thể bỏ qua những phần bạn đã học từ trước hoặc muốn học sau (Khi dự án bạn muốn xây dựng cần đến phần kiến thức đó). Lộ trình này được xây dựng dựa trên lộ trình Fullstack của Repo này.

Về phần dự án hàng tuần, thử nghĩ xem bạn muốn làm ứng dụng gì. Bạn có thể đọc Hướng dẫn xây dựng dự án cơ bản để học cách bắt đầu lên ý tưởng.

Mỗi tuần bạn nên thử làm ít nhất một dự án (một ứng dụng đơn giản để áp dụng các nội dung bạn đã học trong tuần, gì cũng được). Mình sẽ để một danh sách gợi ý bên dưới.

Định hướng cho chương trình học

Chương trình học của mình sẽ yêu cầu mọi người đào sâu về Backend hơn Frontend và không đi vào một lựa chọn cụ thể nào. Với Frontend bạn cũng sẽ tự chọn thứ bạn muốn học.

  • Ví dụ: Ở mục Frontend, bạn muốn học Vue.js thì tự tìm các nội dung "cơ bản" mà bạn cần học.
  • Ở Backend cũng không bắt bạn đi theo một lựa chọn cụ thể nào cả

Bọn mình sẽ tập trung vào hiểu cốt lõi của cả một ứng dụng. Ở Backend thì có những khái niệm như HTTP GET/POST hay Database, còn Frontend thì có HTML/CSS/JS (Còn lại Framework do bạn chọn).

Lập trình Web phát triển quá nhanh, hết frontend framework này đến cái khác, công cụ này đến công cụ khác và bạn sẽ rất dễ để bắt gặp các câu hỏi như "Mình nên học cái gì?". Bạn cần phải tự tìm thông tin thêm về thứ bạn muốn chọn.

Chương trình này không dạy bạn hết về Fullstack và bạn vẫn sẽ còn phải học rất nhiều để nâng cao khả năng của bản thân.

Tuần 1: HTML, CSS, Layout (Flexbox, Grid)

Bạn sẽ học

HTML/CSS cơ bản và responsive design. Đồng thời, học cách thiết lập và sử dụng cơ bản các công cụ hỗ trợ cho quá trình lập trình như: VS Code, Chrome DevTools, Postman (cho API testing, bạn chưa cần dùng đến cái này trong quá trình học ban đầu).

Nguồn tài nguyên học

Nếu bạn muốn xem video thì xem Khóa HTML/CSS cơ bản của F8 - Tiếng Việt. Hoặc có thể học cả HTML FoundationsCSS Foundations của TheOdinProject. Bạn cũng sẽ được học thêm về: Flexbox, Grid (Layout).

Đọc thêm các nội dung khác liên quan đến HTML/CSS:

  • Giới thiệu về DOM - Tìm hiểu về DOM (Document Object Model). Sẽ có một chút phần code của JavaScript, bạn có thể bỏ qua và chỉ cần tập trung vào hiểu DOM là gì.
  • Guide to Writing Semantic HTML - Cách viết semantic HTML (Semantic HTML refers to the use of HTML markup to convey the meaning of the content on a web page, rather than just its appearance)
  • Don't click here

Sau đó bạn cũng có thể lựa chọn sử dụng CSS Framework để giúp việc trang trí Website của bạn được đơn giản hơn nhiều, dưới đây là một số CSS Framework được gợi ý:

Tuần 2: JavaScript cơ bản

Bạn sẽ học

JavaScript cơ bản

  • Các nội dung cơ bản như: variables (biến), loops (vòng lặp), functions (hàm), và arrays (chuỗi).
  • Tìm hiểu về các chức năng ES6 như let, const, và arrow functions.
  • DOM manipulation

Nguồn tài nguyên học

Học từ đầu trong 30 ngày thông qua khóa 30-Days-Of-JavaScript. Sau đó bạn có thể đọc thêm: 33 Concepts Every JavaScript Developer Should Know (Nếu bạn mới học hoàn toàn thì có thể những kiến thức này sẽ khiến bạn thấy ngợp, bạn sẽ còn học lâu dài nên chỉ đọc tham khảo qua cũng được). Nếu bạn thích học thêm thì học khóa JavaScript nâng cao của F8.

Làm bài tập luyện tập

Có thể lên một số trang như Exercism để luyện tập lập trình. Có thể thử đọc Tổng hợp bài tập JavaScript có code mẫu

Luyện tập DOM Manipulation thông qua Bài tập về DOM

Tuần 3: Backend (Phần 1)

Thường mình thấy trong các khóa học hoặc chương trình khác thì mọi người thường hay cho học Frontend trước. Chương trình này sẽ lựa chọn Backend để khởi đầu trước. Lý do là Backend cung cấp các kiến thức cốt lõi như cơ sở dữ liệu, hệ thống, thuật toán, mạng .v.v.. – những yếu tố quan trọng giúp bạn hiểu cách một ứng dụng web hoạt động từ bên trong.

Trích từ một bình luận của một vozer khác trên Thread Fullstack của tôi (Thanks bác, lộ trình này sẽ học Backend trước rồi mới học Frontend):

mình nghĩ nên bắt đầu từ BE trước, nắm vững các kiến thức cơ bản về DB, OOP, thuật toán, mạng, Linux,... rồi học liên quan đến setup, build web trên server qua Docker, VPS,... sau đấy mới move dần qua FE. Bắt đầu từ SSR để làm quen với HTML, CSS, JS sau đó chuyển qua CSR làm quen với các lib, framework như React, Vue, Angular

Vậy thì bạn cần học gì về Backend?

Bạn sẽ học

Nguồn tài nguyên học

Đọc thêm

  • Commit Messages - Học cách viết Commit Message mỗi khi thực hiện commit trong Git.
  • Problem Solving - Giải quyết vấn đề trong lập trình.
  • Understanding Errors - Hiểu về lỗi trong lập trình (Bài viết này tập trung vào JS, nhưng đọc để hiểu về tư duy về lỗi lập trình khá hay)
  • Clean Code - Phần lớn thời gian lập trình được dành để đọc Code. Hướng dẫn viết Code dễ đọc.

Tuần 4: Backend (Phần 2)

Bạn sẽ học

Lựa chọn định hướng

Đọc thêm

Tuần 5: NoSQL Databases (MongoDB)

Bạn sẽ học

Nguồn tài nguyên học

Tuần 6: SQL cơ bản

Bạn sẽ học

  • 📖 Học cú pháp SQL từ SQLBolt.
  • 📖 Thực hiện CRUD operations với MySQL/PostgreSQL.

Nguồn tài nguyên học

Tuần 7: ORMs (Sequelize/Mongoose)

Bạn sẽ học

Nguồn tài nguyên học

Tuần 8: Lựa chọn Framework Frontend

Bạn sẽ học

  • Tìm hiểu về các Framework phổ biến: React, Vue.js, Svelte, Angular.
  • Đánh giá ưu và nhược điểm của từng Framework.
  • Xác định mục tiêu cá nhânnhu cầu thị trường để chọn Framework phù hợp.

Nguồn tài nguyên học

Đọc thêm:

Ở đây mình chọn React để thêm tài nguyên vì cơ bản ai cũng học =))

Tuần 9: Học Framework đã chọn (Tiếp tục)

Sau khi đã đọc và trải nghiệm đôi chút, đồng thời đưa ra quyết định lựa chọn Framework mà mình muốn học, đồng thời đã học cơ bản về nó rồi thì bắt đầu tuần thứ 9!

Bạn sẽ học

  • Cài đặt môi trường phát triển cho Framework.
  • Cấu trúc dự áncác khái niệm cơ bản: components, state management, routing, v.v.
  • Xây dựng các ứng dụng nhỏ để thực hành.

Nguồn tài nguyên học

Tuần 10: TypeScript cơ bản

Bạn sẽ học

Nguồn tài nguyên học

Tuần 11: Next.js cơ bản

Phần này đang sửa... (vì mình đang học)

Bạn sẽ học

Nguồn tài nguyên học

Tuần 12: Monorepos và Turborepo

Bạn sẽ học

  • Học monorepos và tìm hiểu cách sắp xếp nhiều dự án khác nhau (?).
  • Sử dụng Turborepo để tối ưu performance.

Nguồn tài nguyên học

Tuần 13: Websockets & RTC cơ bản

Bạn sẽ học

Nguồn tài nguyên học

Tuần 14: Testing cơ bản

Bạn sẽ học

Nguồn tài nguyên học

Tuần 15: Authentication & JWT

Bạn sẽ học

Nguồn tài nguyên học

Tuần 16: Tối ưu cơ sở dữ liệu

Bạn sẽ học

  • Tìm hiểu về kĩ thuật tối ưu cơ sở dữ liệu (database optimization techniques). Ví dụ như indexing, query optimization .etc.

Nguồn tài nguyên học

Tuần 17: Khái niệm Backend nâng cao

Bạn sẽ học

Cập nhật dự án của bạn

Nguồn tài nguyên học

Tuần 18: Ref, Populate, và API Design

Đang trong quá trình thêm

Tuần 19: Các chức năng Frontend nâng cao

Bạn sẽ học

  • Học dynamic form handling, animations, và accessibility features trong React.
  • Tìm hiểu về Framer Motion cho animations.

Tuần 20: Project Planning

Bạn sẽ học

  • Lên kế hoạch cho một capstone project (Dự án tốt nghiệp)
  • Định nghĩa các tính năng, Tạo high-level (HLD) và low-level designs (LLD)

Ghi chú

Đây sẽ là một dự án (tương đối) lớn. Trước khi bắt tay vào làm dự án này, bạn nên hoàn thành một số các dự án cỡ nhỏ và vừa. Bạn có thể xem Những DỰ ÁN CÁ NHÂN nên làm khi TỰ HỌC lập trình của ông Dev để tìm hiểu thêm.

Nếu bạn vẫn chưa biết bắt đầu từ đâu để phát triển một ứng dụng nhỏ, hãy đọc Hướng dẫn lên kế hoạch cho một dự án lập trình

Tuần 21: Capstone Backend Development

Sau khoảng một tuần lập kế hoạch và học thêm một số các khái niệm liên quan đến HLD và LLD, bây giờ sẽ là lúc bắt đầu.

Bạn sẽ làm

  • Xây dựng phần Backend cho dự án tốt nghiệp của bạn.
  • Implement CRUD APIs, authentication, và error handling.

Tuần 22: Capstone Frontend Development

Bạn sẽ làm

  • Xây dựng Frontend cho dự án tốt nghiệp của bạn.
  • Có thể sử dụng React/Next.js với Tailwind CSS.

Tuần 23: Real-Time Features trong Capstone

Bạn sẽ học

  • Thêm những tính năng real-time sử dụng Websockets hoặc RTC.
  • Implement live chat hoặc real-time notifications

Tuần 24: Testing và Deployment

Bạn sẽ học

  • Test ứng dụng
  • Deploy lên một nền tảng cloud (e.g., Vercel, Heroku)

Nguồn tài nguyên học

Tuần 25: Linting và Performance Optimization

Bạn sẽ học

  • Thiết lập các công cụ Linting (e.g., ESLint, Prettier).
  • Tối ưu performance cho cả Backend và Frontend.
  • Học về caching strategies

Đọc thêm

Tuần 26: Final Enhancements & Portfolio

Thêm thắt chỉnh sửa đôi chút cho dự án tốt nghiệp

Đặc biệt chút

  • Thêm dự án vào trang Portfolio của bản thân.
  • Chuẩn bị đi phỏng vấn với dự án đó, và một resume nữa.
  • Tạo một portfolio cá nhân sử dụng Next.js.
  • Showcase tất cả 10 dự án trong portfolio của bạn.

Sau khi hoàn thành

Sau khi bạn hoàn thành xong 26 tuần này, sẽ còn rất nhiều thứ nữa bạn (cần) nên học để có thể cải thiện hơn nữa sản phẩm của bạn. Dưới đây là một số gợi ý (Chưa được cập nhật hết):

Danh sách dự án gợi ý