Con đường trở thành fullstack developer - Phần 1

October 01, 2025

Xin chào mọi người! Chắc hẳn mọi người khi bước chân vào con đường fullstack developer cũng thắc mắc mình sẽ học những gì đúng không? Nhất là những bạn trái ngành có niềm đam mê về fullstack không biết bắt đầu từ đâu.

Ở bài viết này mình sẽ tổng hợp một số kiến thức giành cho các bạn để các bạn có thể bắt đầu hành trình trở thành fullstack.

Kiến thức thì có rất nhiều mình không thể viết hết được trong 1 bài, nên mình chỉ nêu những kiến thức theo mình thấy thực sự quan trọng khi bắt đầu học lập trình web. Ở góc độ của mình chắc chắn sẽ thấy thiếu xót nhiều thứ nên nếu như các bạn thấy còn kiến thức nào cần thiết thì có thể comment ở phía dưới để các bạn khác cùng tham khảo nhé!!

Bài này mình nói khá dài. Nhưng không sao, ở cuối bài viết mình sẽ tổng hợp lại cho mọi người!! Fullstack developer

1. Fullstack web là gì?

Trước khi đi vào chia sẻ những kiến thức cần thiết, mình sẽ chia sẻ trước về fullstack web là gì?

Theo các bạn fullstack web là gì?

Đây chắc là câu hỏi các bạn có thể được nghe nhiều rồi và nó đa phần đều có câu trả lời là bao gồm Frontend và Backend. Có nghĩa ta chúng ta code giao diện và code backend xử lí dữ liệu.

Câu trả lời trên rất đúng, nhưng theo mình vẫn còn thiếu. Trước khi mình nói thiếu phần gì chúng ta hãy đi qua ví dụ tí xíu nhé!

Chúng ta hay biết đến là Thầy/Cô giáo viên công việc của họ là dạy học phải không? Nhắc đến Thầy/Cô làm gì thì chúng ta đều biết là dạy học. Nhưng đôi lúc chúng ta quên rằng để dạy học họ còn phải làm những việc xung quanh để bổ trợ cho việc dạy học ví dụ như: Soạn giáo án nè, học bổ túc thêm kiến thức mới nè, hay thậm chí đi gác thi,...

Vậy thì fullstack cũng gần giống như vậy. Công việc của chúng ta đều là code, nhưng mà chúng ta không chỉ code Frontend và Backend mà chúng ta phải thực hiện thêm nhiều công việc khác như: xây dựng môi trường để code, deploy sản phẩm lên server, nghiên cứu học hỏi cải thiện sản phẩm,... đó chính là những công việc của fullstack. Thực ra những công việc xung quanh nó chỉ ở một mức độ nào đó thôi, không phải chuyên sâu như những kĩ sư chuyên môn về mảng đó.

Vậy các bạn đã biết fullstack là gì rồi đúng không? Bây giờ hãy bắt đầu vào hành trình trở thành fullstack nào!!

2. Bắt đầu học lập trình vỡ lòng

Khi bắt đầu vào con đường IT thì không phải chúng ta phóng vào cái vèo học những kiến thức về web trước đâu. Nếu như các bạn học ở trường cũng biết được là mới vào chúng ta đều học những môn lập trình cho những bài toán cơ bản để chúng ta có thể làm quen với lập trình.

Ở đây mình cũng khuyến khích các bạn cũng nên học như vậy. Mình có một số gợi ý về kiến thức ở phần này giành cho các bạn. Những kiến thức dưới đây là mình đã lượt bỏ bớt chỉ để lại những kiến thức bắt buộc và nền tảng cho phần frontend.

Editor/IDE tool

Trước khi bắt đầu vào code thì các bạn phải cài đặt những công cụ phục vụ cho việc code. Có rất nhiều công cụ như là: Sublime Text, VS code, Jetbrains (Webstorm, PHPstorm),...

Về Edior thì mình cũng khuyên mọi người nên chọn VS code vì nó vừa nhẹ, miễn phí và đầy đủ tính năng mặc định không cần cài thêm gì cả. Nếu như các bạn có email sinh viên thì có thể đăng kí sử dụng bộ công cụ của Jetbrains, nó sẽ xịn hơn khá nhiều so với những công cụ miễn phí, nhưng bù lại thì nó hơi nặng

Ngôn ngữ vỡ lòng

Thường đa phần ngôn ngữ vỡ lòng khi học lập trình phổ biến là C (C, C++). Chắc hẳn một số bạn khi bắt đầu vào trường học cũng bắt đầu với C để làm quen với lập trình, thì ở đây mình cũng gợi ý các bạn nên chọn C để bắt đầu làm quen với lập trình nhé.

Nhưng theo mình, còn 1 ngôn ngữ nữa khá là hay các bạn cũng nên tìm hiểu đó là Java. Tại sao lại là Java? Java theo mình nó có những điểm sau:

  • Sẽ dễ học hơn là C, nó sẽ không có nhiều khái niệm khó nên bạn sẽ dễ nắm hơn.
  • OOP của Java sẽ dễ cho người mới nắm bắt, khi lập trình web cũng sẽ làm việc với OOP (hướng đối tượng)
  • Fullstack có học đến Javascript, khi chuyển từ Java sang Javascript sẽ dễ hơn vì cú pháp tương tự nhau
  • Nếu như ở phần backend bạn chọn Java làm ngôn ngữ chính thì chúng ta đã có lợi thế học từ lúc ban đầu

Cấu trúc dữ liệu và thuật toán

Rồi bây giờ đến phần cầu trúc dữ liệu và thuật toán. Chắc hẳn nhiều bạn cũng thắc mắc là "Ơ làm web mà cũng cần biết cái này nữa hả?". Đúng rồi, chúng ta vẫn cần thuật toán nhé, nhưng mà không cần nhiều thuật toán đâu, chỉ cần một số ít thôi. Đa số những thuật toán đó các bạn cũng đã được giải ở lập trình vỡ lòng rồi. Mình thử ví dụ nhé.

Bạn đang đứng trước một công viên rộng lớn, có tổng cộng 5000 cây xanh, nhiệm vụ của bạn tìm 1 cây có đánh số là 999. Vậy bạn sẽ tìm như thế nào? Chúng ta có nhiều cách như là: đi đếm từng cây, đi hỏi, xem bản đồ,... Đó chính là 1 thuật toán trong thực tế. Khi làm với web cũng vậy. Chúng ta sẽ thao tác với dữ liệu nên nếu chúng ta không có thuật toán tối ưu thì web của chúng ta sẽ chậm và khách hàng sẽ bỏ sản phẩm của mình.

Ở đây mình sẽ chia sẻ một vài thuật toán mà chúng ta có thể sử dụng trong web và chúng ta cần nên nắm kĩ về nó.

  • Thuật toán tìm kiếm: Tìm kiếm nhị phân, tìm kiếm tuyến tính
  • Thuật toán sắp xếp: Sắp xếp nổi bọt, quick Sort,...
  • Hash table
  • Big(O)
  • ... Còn rất nhiều nữa.

Nhưng có 2 điều mình muốn gửi đến các bạn khi học các thuật toán đó là:

  • Bài toán đó giải quyết vấn đề gì?
  • "Nó" hoạt động như thế nào?

Bởi vì thuật toán có rất nhiều, nên chúng ta sẽ phải nắm được khi nào nên sử dụng để không thôi bị phản tác dụng.

3. Bắt đầu con đường fullstack - Frontend

Fullstack developer

Bây giờ mình sẽ chia sẻ phần chính đó là những skills của Web, ở phần này mình sẽ tập trung trước vào frontend nhé.

Trước khi bắt đầu mình có ý này muốn chia sẻ đến các bạn là khi chúng ta học nên làm project, và chúng ta sẽ sử dụng 1 project đó xuyên suốt quá trình học của chúng ta luôn. Như vậy chúng ta đỡ mất thời gian làm lại từ đầu và quan trọng hơn là nó giúp mình xem lại là mình đã tiến bộ như thế nào.

Web là gì?

Việc đầu tiên trước khi học web là chúng ta phải biết web là gì trước đã và cách hoạt động của nó. Nếu không biết thì đến lúc code thì nó cũng hơi khó khăn do chúng ta không biết được cách hoạt động và kiểm tra lỗi (debug) khi mà chúng ta code.

Thường thì sẽ có một số kiến thức như sau:

  • Web là gì?
  • Cách hoạt động của website?
  • Các giao thức cơ bản: http, https,...
  • Web server là gì?
  • Client là gì?

Còn rất nhiều nữa, nhưng theo mình những gạch đầu dòng ở trên là khá quan trọng khi bạn bắt đầu học web.

Markup language - HTML/CSS

Đây là môn vỡ lòng của tất cả những ai học frontend, chắc chắn các bạn phải học và nắm chắc 2 phần này. Vậy chúng ta học gì ở đây?

Chúng ta sẽ bắt đầu học HTML và CSS cơ bản thông qua việc làm project nho nhỏ. Nguồn học thì có rất nhiều như là: freecodecamp, w3school, youtube,... hoặc các nền tảng trả phí như udemy,... Mình khuyên các bạn nên chọn khóa học nào có hướng dẫn project để chúng ta có thể làm theo. Khởi đầu chúng ta có thể làm theo giống 1-1, sau khi nắm vững thì mình có thể tùy biến theo ý tưởng của bản thân.

Sau khi nắm được kiến thức cơ bản của HTML/CSS thì chúng ta có thể học thêm các kiến thức như: SCSS/SASS, CSS moudule,... Sau đó nên lựa chọn 1 thư viện CSS để chúng ta sử dụng thử như là: Boostrap, MUI,... . Mục đích để chúng ta biết cách họ làm như thế nào và sẽ có nhiều dự án sử dụng thư viện nên là chúng ta cần phải biết một vài thư viện để nâng cao kiến thức cho bản thân.

Javascript/Typescript

Sau khi học xong HTML/CSS, chúng ta sẽ bắt đầu học ngôn ngữ lập trình đầu tiên của web đó chính là Javascript. Javascript thì sẽ có khá nhiều thứ để học, vậy chúng ta học như thế nào để đỡ bị ngộp. Theo mình thì nên học như sau:

  • Học cú pháp cơ bản của Javascript: Khai báo biến, kiểu dữ liệu, hàm,...
  • Cú pháp ES module
  • Kết hợp Javascript và HTML: Xử lí sự kiện, xử lí DOM,...
  • Tìm hiểu về Typescript và một số cú pháp cơ bản lí do là dạo gần đây typescript ngày càng phổ biến, có một số thư viện viết tài liệu bằng cách khai báo type dạng typescipt nên là chúng ta cần phải biết để có thể biết cách sử dụng thư viện

Và cũng giống như HTML/CSS. Chúng ta cũng sẽ lựa chọn 1 thư viện tìm hiểu và học để nâng cao kiến thức cho bản thân.

Đến đây thì project của chúng ta có vẻ có khá nhiều file rồi và nó khá là rối nên các bạn có thể tìm hiểu thêm về folder structure để sắp xếp cấu trúc project của mình một cách hợp lí nha

API

Chắc chắn là khi học Javasript thì không tránh khỏi việc chúng ta học đến phần sử dụng những hàm Javascript để call API. Vì vậy chúng ta nên biết sơ lược về API và cách sử dụng chúng như thế nào. Thường thì ở phần này sẽ có một số nội dung như là

  • API là gì?
  • RESTful API
  • Cách sử dụng API

Ngoài ra có một số trang web cung cấp API miễn phí để chúng ta có thể thực hành mà không cần xây dựng API ngay như là: https://dummyjson.com/ , https://jsonplaceholder.typicode.com/ ,..

Library/Framework

Ở đây trước khi tìm hiểu về libray/framework thì chúng ta nên tìm hiểu về package management (npm, yarn, pnpm,..). Hầu hết đa phần các library/framework bây giờ đều được cài đặt thông qua package management và các project cũng thế, nó được xây dựng, quản lí bằng package management nên chúng ta cần phải biết về phần này

Về framework hoặc library thì có khá nhiều, nhưng đại khái sẽ có các library/framework lớn giúp chúng ta xây dựng project nhanh hơn như là: Reactjs, Vuejs, Angular,... chúng ta nên chọn 1 cái để tập trung học và phát triển tiếp project của mình, khi đi phỏng vấn thì nhà tuyển dụng cũng yêu cầu mình biết ít nhất 1 lirabry/framework. Ở đây mình khuyên các bạn nên học React do nó khá dễ cho những ai mới bắt đầu học web. Sau khi nắm vững được 1 framework hay là libray thì chúng ta có thể chuyển sang một cái khác lúc đó cũng chưa muộn

Ngoài ra ở phần này thì các bạn đã biết sử dụng package management nên có thể kết hợp nhiều thư viện nhỏ khác để hỗ trợ cho project như là styled-component, MUI, React router, Axios....

Để có thể xây dựng thêm kiến thức cho bản thân, mình cũng khuyên các bạn nên tham khảo những project khác để mình có thực hiện tái cấu trúc lại dự án của mình, việc học hỏi từ những project khác nó giúp chúng ta tiến bộ nhanh lắm.

Unit test

Công việc test không chỉ giành cho QA, tester,... mà nó còn giành cho developer nữa. Với unit test, thay vì chúng ta test trên giao diện của sản phẩm thì chúng ta sẽ thực hiện test code của mình viết ra để đảm bảo code của mình code ra hoạt động đúng. Ngoài ra nó cũng được xem là 1 cái specification code của mình.

Nếu mọi người chưa biết bắt đầu từ đâu thì mình gợi ý các bạn có thể bắt đầu viết unit test với Javascript thuần bằng thư viện Jest, Mocha,... Sau khi đã nắm được cơ chế rồi thì mọi người có thể viết với React sử dụng thư viện React testing library.

Git/Github

Có thể một số bạn thắc mắc là chúng ta sẽ lưu trữ source code như thế nào ví dụ như muốn copy từ máy này qua máy kia, nghĩ đến đây thì phương án USB là phương án đầu tiên nhỉ, hoặc là các dịch vụ drive như là Google drive, Onde drive,...

Ngoài các cách truyền thống đó, chúng ta sẽ sẽ sử dụng Git/Github để lưu trữ và quản lí source code của mình, thì ở đây mình gợi ý các bạn sử dụng Git/Github để lưu trữ source code của mình. Và hầu hết những project khi các bạn tìm kiếm trên internet hoặc project của công ty đều được lưu trữ ở trên Git/Github. Vì vậy chúng ta cần phải học phần này để biết cách lấy project trên internet về.

Ở đây mình khuyên các bạn sử dụng Github lí do đa phần các project hoặc thư viện đều được lưu trữ trên Github. Sau khi nắm vững kiến thức thì các bạn có thể chuyển qua Gitlab cũng không sao cả.

Tools

Ngoài code ra chúng ta phải biết thêm 1 số tools để phục vụ công việc code của mình nó dễ dàng và tiện lợi hơn.

  • Build tools: Webpack, ViteJS, Dev tool, React devtool,...
  • AI tools: Chat GPT, Copilot, Cursor, Claude Code,...

Mặc dù AI phát triển giúp chúng ta có thể học mọi thứ một cách dễ dàng hoặc là code trong phút mốt nhưng mình không nên lạm dụng AI nhiều, kiến thức nền tảng vẫn là quan trọng nó có thể giúp chúng ta phân tích kết quả từ AI.

Các phần bổ trợ

Những phần ở đây sẽ không bắt buộc đối với những người học fullstack vỡ lòng, như nếu các bạn biết được thì cũng là một lợi thế cho bản thân.

Docker

Bây giờ đa số mọi người hoặc là các công ty đều sử dụng Docker hoặc các dịch vụ cloud. Chúng ta cũng nên biết Docker để có thể setup môi trường dev cho bản thân, cài project của công ty hoặc sử dụng các dịch vụ cloud. Phần này thì mình không để ở phần chính vì không có nó các bạn cũng thực hành được. Nhưng mình khuyên sau khi các bạn hoàn thành các phần ở trên thì nên tìm hiểu đến phần này nhé.

Clean code

Code không phải là mình viết code rồi xong, để đó chạy được thì thôi, nhưng mình phải biết viết thế nào mà sau này đọc lại dễ hiểu, trình bày code rõ ràng, người khác đọc vô cũng nắm được code của mình bởi vì dự án thì không phải 1 mình bản thân mình code mà chúng ta sẽ làm với nhiều người khác nữa (Giống như vỡ sạch chữ đẹp vậy đó)

Nguyên lí

Về phần nguyên lí thì chúng ta nên biết một số nguyên lí, nó giúp chúng ta viết code đẹp hơn, hỗ trợ phần clean code phía trên

  • KISS YAGNI & DRY
  • SOLID
  • OOP

Linux

Chúng ta làm dev thì sẽ đụng đến server để chúng ta có thể deploy sản phẩm của mình lên,... Nhưng để sử dụng server chúng ta cần phải biết một số lệnh Linux để tương tác với server. Ngoài ra khi sử dụng Git thì chúng ta cũng có sử dụng một số command của Linux, nên muốn sử dụng git chuyên sâu hơn tí xíu thì chúng ta cũng cần phải biết một số lệnh Linux

Tổng kết

Vậy tổng kết lại chúng ta có gì ở đây?

Để cho dễ theo dõi thì ở đây mình vẽ lại bằng một tấm hình như sau, mình xin phép viết bằng tiếng Anh lí do tiếng Việt bị lỗi font!

Cám ơn mọi người đã đọc bài viết khá dài của mình. Nếu như mọi người có thêm kinh nghiệm nào hoặc chia sẻ góp ý thì comment bên dưới nhé!!!

Frontend skill


Profile picture

Mình tên là Hiếu , là một "Đì ve lợp pơ" full-stack hiện đang sinh sống tại miền Tây sông nước và làm việc full remote. Đây là blog cá nhân của mình chia sẻ lại những kinh nghiệm trong lúc đi làm mong nó sẽ hữu ích cho các bạn làm hành trang trên con đường trờ thành "Đì ve lớp pơ".

© 2025, Copyright Đặng Trung Hiếu | Built with Gatsby