Xin chào mọi người!!
Chắc hẳn mọi người đã đọc phần 1 của "Con đường trở thành fullstack developer" rồi phải không? Do kiến thức khá là dài nên mình tách ra làm 2 phần. Thì phần 2 này mình sẽ tập trung vào kiến thức Backend và những phần liên quan đến fullstack.
Cũng giống như phần trước, ở cuối bài viết này mình sẽ tổng hợp lại thành 1 hình ảnh để các bạn có thể tham khảo!!
1. Bắt đầu học fullstack
Nếu như các bạn chỉ muốn học Backend thôi, không muốn học bắt đầu từ Frontend thì có thể tham khảo những nội dung sau đây
- Web và cách hoạt động của web
- Lập trình vỡ lòng
- HTML/CSS
- API và RESTful API
- Git/Github
- Cấu dữ dữ liệu và thuật toán
Những kiến thức này các bạn có thể tham khảo phần 1 tại đây: Con đường trở thành fullstack developer phần 1.
Rồi bây giờ mình sẽ đi vào chi tiết các kiến thức nhé!!
Chọn ngôn ngữ cho Backend
Không giống Frontend, Backend có rất nhiều ngôn ngữ để chúng ta có thể lựa chọn như là Javascript, Java, PHP, Python,... Quá trời nhiều nhỉ, vậy chọn như thế nào cho đúng?
Theo mình nếu như bạn đã học Frontend trước rồi thì bạn có thể sử dụng Javascript để làm ngôn ngữ Backend luôn vì các bạn đã quen rồi. Còn nếu như các bạn muốn sử dụng ngôn ngữ khác để thử thách thì có thể chọn Java, ngôn ngữ này các bạn đã chọn học ở phần lập trình vỡ lòng rồi nên khi bắt đầu code Backend thì sẽ không bị bỡ ngỡ.
Còn các bạn muốn thử thách một ngôn ngữ hoàn toàn mới thì các bạn có thể chọn bất kì ngôn ngữ nào khác cũng được ví dụ như: Python, PHP,...
Và mình cũng khuyên các bạn cũng nên có project cho phần này nhé, bạn có thể tiếp tục phát triển tiếp project ở phần Frontend hoặc là xây dựng một project khác chẳng hạn như là project liên quan đến API: CRUD sản phẩm,... thường thì mình thấy đa phần mọi người hay bắt đầu bằng một project API đơn giản.
Chọn cơ sở dữ liệu (Database)
Tiếp theo thì sẽ đến phần chọn cơ sở dữ liệu để học. Đây là một phần không thể thiếu đối với Backend cũng như là web của chúng ta.
Trước khi chúng ta học thì phải nên tìm hiểu cơ sở dữ liệu trước, vì khi tìm hiểu xong thì lúc đó chúng ta sẽ có kiến thức một tí xíu về nó để lựa chọn cơ sở dữ liệu cho hợp lí.
Cơ sở dữ liệu có rất nhiều nhưng thường sẽ chia làm 2 loại chính đó là SQL và NoSQL. Đối với mình thì mình khuyên các bạn nên ưu tiên các cơ sở dữ liệu dễ học và nên học SQL trước, vì nó rất phổ biến và làm nền tảng tốt cho chúng ta sau này. SQL có nhiều tính nghiêm ngặt, NoSQL ít nghiêm ngặt hơn nên khi học SQL xong mình học thêm NoSQL sẽ dễ dàng hơn. Nó giống việc các bạn đang làm ở công ty có quy định nghiêm ngặt nhưng sau đó đổi qua công ty có quy định thoải mái hơn thì các bạn sẽ dễ thở hơn đúng không? Các diễn đàn lập trình cũng chia sẻ là nên học SQL trước sau đó chuyển qua NoSQL.
OOP
Ở phần frontend thì mình hầu như không nhắc về phần này, lí do là frontend thì mình ít khi áp dụng OOP. Nhưng phần Backend thì chúng ta sẽ áp dụng hầu như là thường xuyên về OOP trong đó. Đa phần các ngôn ngữ backend đều có thể viết hướng đối tượng nhiều ví dụ như PHP, Java,... Ngoài ra ở backend không chỉ là áp dụng OOP không mà còn một số nguyên lí khác lấy nền tảng từ OOP như là SOLID, DDD,...
Thường thì đa phần các bạn sẽ ít để ý tới OOP hoặc không biết về nó, nhưng mà chúng ta cần phải nắm vững OOP để có thể làm việc với Backend một cách mượt mà.
Package management
Cũng giống như javascript ở frontend, thì các ngôn ngữ backend đều có package management. Nhưng tùy theo ngôn ngữ thì sẽ có các package management khác nhau ví dụ như:
- Javascript/Node.js: npm, yarn, pnpm.
- Java: Maven, Gradle,...
- PHP: Composer
Vì nó đi theo từng ngôn ngữ nên chúng ta cũng cần phải nắm vững chúng để có thể tối ưu project của mình.
Framework/Library
Chúng ta cũng cần phải biết ít nhất một framework để có thể học hỏi cách code và cách thiết kế của framework đó. Ở đây không phải chúng ta học được cách sử dụng rồi thôi, mà hãy xem thử cách họ code tạo ra nhó như thế nào ví dụ như: Tại sao cú pháp của nó ngắn hơn mình, tại sao mình code có vài dòng là chạy được rồi,... Qua cách tìm hiểu đó, kiến thức của mình sẽ được nâng lên rất nhiều.
Một số công ty cũng sẽ có yêu cầu khi tuyển dụng là phải biết ít nhất một framework, vì đa phần các công ty đều xây dựng project trên framework hoặc là dựa vào nền tảng để xây dựng nên project của họ.
Web security
Ở phần Backend này chúng ta vẫn có một vài kiến thức security dành cho Backend ví dụ như: SQL injection,... Do đó chúng ta cũng cần phải có kiến thức về phần security, không phải chuyên sâu nhưng mà ở mức cơ bản thôi để có thể bảo vệ backend của mình tạo ra.
Networking
Không phải networking chỉ dành riêng cho IT network hoặc là DevOps, mà chúng ta cũng cần phải biết về một ít networking để có thể xử lí một số tình huống chẳng hạn như là deploy lên server, cài domain cho web của mình,... Mình gợi ý một số kiến thức như sau:
- IP là gì
- DNS là gì
- SSL/TLS là gì
- Web server
- ...
Các phần bổ trợ
Ở đây cũng ta vẫn sẽ có các phần bổ trợ tương tự như frontend: Docker, Linux, các nguyên lí,... Các bạn có thể xem lại ở phần 1: Con đường trở thành fullstack developer phần 1.
2. Tổng kết
Như vậy thì mình đã hoàn thành xong series "Con đường trở thành fullstack". Đây là những kiến thức tối thiểu nhất để các bạn có thể trở thành 1 fullstack developer.
Các bạn có thể thấy có rất nhiều kiến thức đúng không? Đừng lo lắng, chúng ta hãy học từng bước và làm từng bước thì lúc đó sẽ thấy rằng không có gì đáng sợ cả!!!
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é!!!