Bản quyền

Bên dưới, bạn sẽ tìm thấy được một danh sách hướng đi và các công nghệ để bạn có thể trở thành một Web Developer. Đây là một hướng đi được một giáo sư đại học áp dụng rất nhiều cho các học viên và hiện tại họ đều đã là các Legends về lập trình. Page này được viết dựa trên link: https://goo.gl/5oXztF. Vui lòng sử dụng nguồn ghi rõ! Page thực hiện bởi thành viên RHP Team.

Giới thiệu

Những thứ dưới đây thường sẽ là điều cần thiết cho mọi sự bắt đầu của bạn:

Git - Version Control
SSH
HTTP/HTTPS and APIs
Sử dụng cơ bản Terminal
Học cách nghiên cứu, tìm kiếm
Giải thuật và cấu trúc dữ liệu
Characters Encodings
Design Patterns
Github

Tạo một tài khoản, tìm hiểu những dự án mở có source ở trên đó. Bạn cũng có thể tải về lưu trữ local nếu muốn. Nó sẽ giúp bạn dễ tìm hiểu hơn ở mọi nơi nhất là ở việt nam.

Hướng đi cho Web Developer 2018

  1. Front-End
  2. Back-End
  3. DevOps

Bên trên là hướng đi bạn có thể chọn 1 trong 3 để học. Tất nhiên, bạn hoàn toàn có thể chọn cả ba nếu bạn thích và có khả năng. Hướng đi ưu tiên, Học Front-End, Học Back-End chuyển sang Học DevOps. Tất nhiên đó là hướng đi của môi người, quyền quyết định của bạn.

Front-End Roadmap

1

Học HTML

  • Học các kiến thức cơ bản và viết một cách ý nghĩa, ngữ nghĩa
  • Tập phân chia các phần trong trang web, và cấu trúc DOM
  • Làm ít nhất 5 trang web HTML, tập trung vào cấu trúc.
  • Đừng lo lắng về việc trang web có đẹp hay không ở cấp bậc này.
2

Học cơ bản CSS

  • Học các kiến thức cơ bản về CSS
  • Học cách sử dụng Grid và Flexbox
  • Học về Media Queries và Responsive cho Website
  • Thực hiện CSS cho các Website mà bạn làm ở cấp bậc đầu tiên.
3

Học cơ bản Javascript

  • Học các cú pháp và câu lệnh cơ bản Javascript
  • Vận dụng làm việc với DOM
  • Hiểu về concepts như: Hosting, event building, prototype,...
  • Học Ajax (XHR)
  • Học ES6, tính năng mới, viết các modular Javascript
  • Học Jquery (tùy chọn)
4

Thực hiện responsive cho các website ở bước 2, thêm một vài tương tác bằng Javascript cho website.

5

Tìm kiếm các project trên github và xem code chuẩn của họ.

  • Nâng cao UI, làm demo một vài trang có responsive và cải thiện khả năng thiết kế
  • Tìm kiếm mọi câu giải pháp ở trên google, stackoverflow, github,... mà bạn gặp phải.
  • Cấu trúc lại toàn bộ code, luyện tập nhiều hơn.

Bạn hoàn toàn có thể gửi câu hỏi cho họ ở trên github và bảo họ làm thế nào để cải thiện và dạt được trình độ gióng họ :)) Lời khuyên của mình đó là tìm kiếm các Repo của người nước ngoài, họ sẽ giúp bạn nhiệt tình hơn nhiều so với Dev trong nước.

Phần này là tùy chọn, Tôi thêm nó vào bởi vì, nó là cách tốt nhất để học và tìm hiểu, nếu bạn muốn đi đúng hướng hoặc không. Bạn sẽ cảm thấy vô cùng hứng thú khi tìm hiểu về nó, sẽ có rất nhiều người, nguồn, sách giúp bạn về phần này.

Đừng sợ về nó, git là thứ dễ dàng nhất để học trong chặng đường trở thành Web Developer. Bạn hoàn toàn có thể làm được nó ở mức basics với một ít gờ.

6

Gia tăng lượng kiến thức cho bản thân.

Có rất nhiều công việc phù hợp với bạn ở thời điểm này. Bạn cũng có thể bắt đầu với việc làm freelancer hoặc là tìm một công việc nếu bạn có thể. Tuy nhiên, bạn không nên dừng ở đây, vẫn còn một chặng đường dài nếu bạn muốn một sự nghiệp tốt hơn.

7

Package Managers

Chúng ta có NPM và Yarn. Học được một cái là bạn tự nhiên học được cái còn lại. Package Manager giúp bạn thêm các thư viện mở rộng hay plugins vào trong dự án. Vì vậy, bạn sẽ chảng phải bao giờ lo lắng về việc copy các thư viện hay plugin ở đâu cả, kể cả việc update,... Hầu hết mọi thứ là giống nhau, chỉ có một số là khác, bạn cần biết để chủ động.

8

Cài đặt một số thư viện mở rộng vào ứng dụng của bạn.

Tiếp tục và cài đặt một số thư việc mở rộng vào trong trang web mà bạn làm ở các bước trước. Ví dụ, cài đặt một số plugins: "toast plugin" khi người dùng click vào một nút nào đó thì hiện thị một message lên cho người dùng. Thậm chí, tạo một form đăng nhập, đăng ký và thực hiện việc hiển thị validation bằng các plugin hỗ trợ cho việc đó, bạn có thể lên search một vài cái. Học cách cài đặt một plugin ở nhiều phiên bản, vì phiên bản mới chưa chắc đã hoàn thiện và bạn muốn dùng version trước.

Tìm hiểu về version là gì, bạn phải tìm hiểu về nó để sau này có lượng kiến thức cần thiết.

9

CSS Preprocessors

Sass
Post CSS
Less
Stylus

Preprocessors giúp bạn thêm các function lên trên đầu CSS và giúp bạn những điều mà CSS không thể làm. Bạn sẽ có cái nhìn tổng quan hơn về CSS và nhớ là vận dụng nó nhé cả nhà.

Tôi sẽ khuyên bạn nên học Sass trước, Post CSS có thể được đặt ở trên top của Sass, đó là lí do bạn nên học Sass trước.

10

CSS Framework

Boostrap
Materialize CSS
Bulma

Bạn thật sự không cần học nó, nhưng nó tốt cho bạn, rút ngắn thời gian của bạn.

11

Kiến trúc CSS

BEM
OOCSS
SMACSS
SUITCSS
Atomic

Có rất nhiều cách để cấu trúc lại CSS của bạn một cách tốt hơn và cũng như bảo trì tố thơn.

Ít nhất là bạn nên tìm hiểu được việc chúng khác nhau như thế nào. Tôi chọn cho mình việc tìm hiểu về BEM.

12

Build Tools

Nó sẽ giúp bạn trong khi xây dựng cũng như phát triển sản phẩm của bạn.

Webpack
Rollup
Parcel

Tôi khuyên bạn nên ưu tiên học Webpack, bạn không cần rollup ở thời điểm hiện tại mà vẫn làm mọi thứ được với Webpack, nếu thích bạn có thể trở lại rollup sau.

ESLint
JSLint
JSHint
JSCS
NPM Scripts
Gulp

Thực ra ở hiện tại bạn hoàn toàn chỉ cần NPM Scripts. Tuy nhiên, nếu bạn muốn chọn một thứ khác thì tôi gợi ý cho bạn đó là Gulp, bạn có thể xem xem bạn được hưởng lợi gì từ nó nếu sử dụng để phát triển.

13

Tạo ra một vài thứ có thể là thư viện

Đến bước này gần như bạn đã đi được gần xong đoạn đường rồi. Bây giờ bạn hãy vận dụng hết tất cả những gì mình đã học để tạo một thư viện. Bạn có thể dùng Sass và Javascript để tạo ra thư viện giống Bootstrap chẳng hạn. Hoặc sư dụng Webpack để chuyển đổi Sass sang CSS và sử dụng babel tương thích code ES6. Một khi xong bạn hãy release nó trên Github và npm.

14

Chọn 1 Framework

React.js
Vue.js
Angular

Nếu bạn nghe ai đó là chọn React.js hay Vue.js hay Angular thì bạn cứ hãy bỏ ngoài tai, chọn framework nào cũng đều có chỗ đứng cho bạn cả. Đấy là chưa kể sau này bạn phải làm cả 3 thì sao? Nhưng trước tiên hãy chọn cho mình một Framework mà bạn thấy là hợp và thích. Đừng mua các khóa học dựa vào quảng cáo, so sánh và tỉnh táo khi chọn lựa.

15

Tu luyện

Bây giờ bạn đã biết mọi thứ cần thiết để tạo ra một ứng dụng Javascript hiện đại. Tiếp tục, thực hiện một vài ứng dụng bằng Framework mà bạn đã học ở bên trên (ít nhất 3, khác nhau). Bạn chỉ cần thực hiện một vài ý tưởng trong hàng trăm nghìn ý tưởng ngoài kia, kể cả là ý tưởng cũ, ít nhất là bạn học cách sử dụng nó.

Học cách làm thế nào để đo lường tốc độ và cải thiện, tối ưu hóa ứng dụng của bạn. Ví dụ: Thời gian tương tác, thời gian load trang, lighthouse Score,...

16

Testing ứng dụng của bạn

Jest
Mocha
Protractor
Karma
Enzyme

Có rất rất nhiều ứng dụng khác nhau để dành cho các mục đích khác nhau. Những công cụ liệt kê bên trên không phải là tất cả nó chỉ là đang theo hướng cho Developer và được đánh giá nhiều người theo mà thôi. Tôi khuyên bạn trước khi học chúng, hãy tìm hiểu về các loại testing, và sử dụng thứ phù hợp cho nhu cầu của bạn.

Đây là link giúp bạn có cái nhìn tổng quản hơn về testing: https://goo.gl/D77a4K.
17

Progessive WebApps

Học về cách làm việc của Service thế nào và thực hiện progess web app như thế nào?

Học cách làm thế nào để đo lường tốc độ và cải thiện, tối ưu hóa ứng dụng của bạn. Ví dụ: Thời gian tương tác, thời gian load trang, lighthouse Score,...

18

Static Type Checkers

TypeScript
Flow

Nó thật sự không cần thiết nhưng nó giúp bạn trở nên mạnh hơn trong giới lập trình, việc làm chủ nó cũng chỉ mất vài giờ, nó dễ để bạn chọn lựa và học một thứ.

18

Server Side Rendering

Học về cách Server Rendering thế nào trong Framework mà bạn chọn đã học ở trên.React.js (Next.js và After.js), Angular (Universal), Vue.js (Nuxt.js)

19

Tất cả những thứ mà không được đề cập ở trên

Canvas, HTML -5APIs, SVG, Sourcemaps, Functional Programing, TC3q,....

Back-End Roadmap

1

Chọn 1 ngôn ngữ

Có rất nhiều sự lựa chọn. Nếu là người mới bắt đầu, bạn mới du nhập vào backend, tôi khuyên bạn nên chọn một scripting language để học. Nó nhanh và dễ, có thể kể đến như Node.js hoặc PHP. Nếu bạn đã có kinh nghiệm hoặc biết một trong hai ngôn ngữ kia đủ rồi thì không nên sang scripting language khác mà hãy tập trung vào Golang, Rust hoặc Clojure, nó sẽ giúp bạn có những quan điểm mới. Bên dưới lần lượt là danh sách các ngôn ngữ dược chia lần lượt từ trái qua phải là: Scripting Lanuages, Functional Languages, Other Options.

Python
Ruby
PHP
Node.js (TypeScript: Optional)
Elixir
Scala
Erlang
Clojure
Haskell
Java
.NET
Golang
Rust
2

Luyện tập những gì bạn đã được học

Luyện tập và thực hiện một số dòng lệnh với dứng dụng mà sử dụng ngôn ngữ bạn chọn. Ví dụ như: Bạn phải biết được ít nhất 'ls' là list=danh sách folder. Câu lệnh để fetches và saves reddit posts /r/programming. Hay câu lệnh để cáu trúc thành dạng JSON. hãy cố gắng biết những thứ đó nó k mất nhiều tgian cho bạn học, nhưng nó lại tiết kiệm nhiều tgian cho b làm.

3

Học quản lý Package

Package Managers là gì thì bạn có thể xem phần giải thích ở trên phần Front-End. Tôi đã ghi rất rõ. Bạn phải học cách sử dụng nó như thế nào? Ví dụ với PHP thì ta có composer, Node.js thì có NPM và yarn, Python có pip, Ruby có gems, và còn nhiều ngôn ngữ khác.

4

Tiếp tục luyện tập

Mỗi một ngôn ngữ có những cái riêng của nó và bạn phải luyện tập hết sức với mọi thứ trong đó. Ví dụ: PHP có PHP-FIG và PSRs, với Node.js có nhiều các driven khác trên diễn đàn,... Bạn cũng nên đọc và luyện tập về bảo mật. Đọc OWASP guidelines và hiểu các lỗi bảo mật khác nhau và lời khuyên cho chúng trong ngôn ngữ mà bạn chọn.

5

Làm một vài package, thư viện và cho mọi người sử dụng

Bây giờ hãy tiếp tục và tạo một package và đưa cho những người khác sử dụng. Chắc chắn rằng nó theo sát thứ mà bạn đang học. Du ngoạn các diễn đàn và đóng góp và một vài dự án mã nguồn mở. Tìm kiếm một vài dự án trên github và pull về.

Vài cái mà tôi hay thực hiện đó là, lên github tải mấy cái dự án của họ về rồi ngồi moi lỗi của hệ thống đó ra để giải quyết, hay thêm các function mới vào hệ thống nhằm nâng cao hệ thống. Tất nhiên, qua từng project bạn mới có thể như vậy, nhưng nó sẽ giúp bạn nâng cao tay code của bạn rất nhanh.

6

Học về Testing

Có một số loại testing khác nhau, nhưng ở thời điểm hiện học về việc viết Unit như thế nào và Integration tests trong ngôn ngữ bạn chọn thế nào? Hiểu sự kahsc nhau giữa các cấu trúc test như mocks, stubs,... Tất nhiên việc lựa chọn phải dựa vào ngôn ngữ bạn chọn. Hãy doạ quanh Google, bạn sẽ thấy rất nhiều sự lựa chọn phù hợp cho bạn. Cho PHP có thể kể đến PHPUnit, PHPSpec, Codeception. Cho Node.js có thể kể đến Mocha, Chai, Sinon, Mockery, Ava, Jasmine. Tôi sẽ không lan man ở đây, việc lời khuyên cho bạn ở đây là đi dạo quanh google tìm hiểu chúng và chọn cho mình lựa chọn thích hợp

7

Viết Tests cho các bước và luyện tập

Tiếp tục và thực hiện unit tests cho các công việc mà bạn làm ở bước trước đó.

Học cách tính toán tỉ lệ, thời gian, khả năng test,...

8

Học cơ sở dữ liệu quan hệ

Có một số lựa chọn ở đây, Tuy nhiên, nếu bạn học một, những thứ khác bạn cũng sẽ rất nhanh nắm đk nó mà thôi. Hãy chọn MySQL ở hiện tại nhưng hay học và tìm ra sự kahsc nhau giữa các loại kể cả usecase của chúng.

Oracle
MySQL
MariaDB
PostgreSQL
MSSQL
9

Thời gian tu luyện

Tạo một ứng dụng đơn giản bằng cách vận dụng tất cả những gì đã học. Nó có thể là đăng ký, đăng nhập hay CRUD. Tạo một blog chẳng hạn. Mọi có thể đăng ký và hiển thị thông tin cá nhận, sau đó thêm, sửa, xoá, cập nhật bài viết và trang hiển thị bài viết.

Chắc chắn phải thực hiện theo các bước: tests, theo ngôn ngữ đang viết. Database cũng là một phần chú ý, thêm một indexes, sử dụng đúng Storage Engines và chắc chắn rằng phân tích cơ sở dữ liệu trước khi sử dụng chúng.

10

Học một Framework

Phụ thuộc vào từng dự án và ngôn ngữ mà bạn chọn trước đó, bạn có thể cần hoặc không cần một framework. Có một số lựa chọn cho bạn ở đây. PHP có Laravel, Symfony và Slim hoặc Lumen cho micro-frameworks. Node.js có Express.js, Hopi.js. Golang thì tốt hơn hết là code mà không cần framework. Bạn có thể hoàn toàn lên tìm, bên trên chỉ là lựa chọn nổi bật mà tôi đưa ra, nó không phải tất cả.

11

Tu luyện tiếp

Thực hiện các ứng dụng ở bước 9 mà bạn đã xây dựng trước đó bằng Framework.

12

Học một cơ sở dữ liệu không quan hệ

Đầu tiên, hiểu chúng là gì, chúng khác nhau với cơ sở dữ liệu quan hệ thế nào và tại sao chúng ta cần dùng nó. Có một số lựa chọn cho bạn, tôi sẽ khuyên bạn học MongoDB

MongoDB
RethinkDB
Cassandra
Couchbase
13

Caching

Memcached
Redis

Học cách triển khai một ứng dụng với cấp độ caching sử dụng hai cái bên trên. Khi bạn học xong rồi hãy quay lại triển khai ứng dụng đã làm ở bước 11.

14

Tạo RESTful APIs

Hiểu về REST và học cách tạo ra RESTful APIs và chắc chắn rằng bạn đọc qua về REST từ tổ chức poper của Roy Fielding.

15

Authentication Authorization Methodologies

Hiểu về sự khác nhau của chúng và triển khai chúng như thế nào

OAuth
Basic Authentication
Token Authentication
JWT
OpenID
16

Message Brokers

RabbitMQ
Kafka

Tìm hiểu xem Message Brokers là gì? Chắc chắn ở Việt Nam cái này mới cho những bạn dưới 1 năm. Tất nhiên không phải tất cả. Có nhiều lựa chọn nhưng tôi chọn hai cái là RabiitMQ và Kafka. Bạn nên học RabbitMQ bây giờ nếu bạn muốn chọn 1 trong 2.

17

Học một Search Engine

ElasticSearch
Solr
Sphinx

Việc một ứng dúng phát triển, đơn giản hoá queries trong database là khó và bạn sẽ phải nhờ đến search engine. Có rất nhiều lựa chọn, trên là những lựa chọn mà tôi đã chọn ra phù hợp ở thời điểm hiện tại.

18

Học sử dụng Docker

19

Hiểu biết về Web Servers

Apache
Nginx
Caddy
MS IIS

Có một số lựa chọn ở đây, tìm hiểu sự khác nhau, hiểu chúng hoạt động thế nào và hạn chế của chúng.

20

Học cách sử dụng Web Sockets thế nào

21

Học GrapQL

Nó không phải yêu cầu, cứ thoải mái tìm hiểu nó, giải thích tại sao được gọi là "new REST"

22

Tìm hiểu Graph Database

Một lần nữa nhắc lại nó không cần theiest nhưng bạn nên có một chút kiến thức về nó.

23

Tất cả mọi thứ mà chưa được đề cập ở trên

Profiling, Static Analysis, DDD, SOAP, ...

DevOps Roadmap

1

Học một ngôn ngữ lập trình

Không cần phải làm chủ ngôn ngữ bạn chọn, chủ yếu là có được kiến thức về ngôn ngữ đó.

Python
Ruby
Node.js
Go
Rust
C / C++
2

Hiểu sự khác nhau về các khái niệm hệ điều hành

Các khái niệm tôi sẽ để tiếng anh để các bạn có thể dễ tìm thông tin hơn trên Google.

Process Management
Threads and Concurrency
Sockets
I/O Management
Virtualization
Memory/Storage
File Systems
3

Học về việc quản lý Servers

Lấy quyền quản trị một vài hệ điều hành. Đặc biệt là với Linux. Chọn Unbuntu nếu bạn chưa có nhiều trải nghiệm với Linux.

Operating System
Linux
Unix
Windows

Học cách sử dụng Terminal

Học Bash Scripting

Vim/Nano/PowerShell/Emacs

Biên dịch ứng dụng từ Source (gcc, thực hiện và sử dụng công cụ liên quan)

Tối ưu hoá hệ thống (nmon, lostat, sar, vmstat)

Khác (strace, dtrace, systemtapuname, df, history)
Công cụ thao tác văn bản (awk, sed, grep, sort, uniq, cat, cut, echo, fmt, tr, nl, egrep, fgrep, wc)
Giám sát quá trình (ps, top, htop, atop, lsof)
Mạng (nmap, tcpdump, ping, mtr, traceroute airmon, airodump, dig, iptables)
4

Mạng và bảo mật

Bên dưới là phần mà bạn nhất thiết phải tìm hiểu ở phần này.

Mạng
DNS
OSI Model
Bảo mật
HTTP
HTTPS
FTP
SSL / TLS
5

Nó là gì và cài đặt như thế nào?

Bên dưới là phần mà bạn nên tìm hiểu ở phần này.

Reverse Proxy
Forward Proxy
Firewall
Caching Server
Load Balancer
Firewall
Web Server
IIS
Apache
Nginx
Tomcat
Caddy
6

Học cơ sở hạ tậng của code

Bên dưới là phần mà bạn nên tìm hiểu ở phần này.

Quản lí
Docker
rkt
LXC
Tuỳ biến quản lí
Ansible
Salt
Chef
Puppet
Nguồn lực cơ sở hạ tâng
Terracform
Cloud Formation
7

Học một vài công cụ về CI/CD

Bên dưới là phần mà bạn nên tìm hiểu ở phần này.

Jenkins
Travis CI
Teamcity
Drone
Circle CI
8

Hoạt động cơ sở hạ tầng và phần mềm điều khiển

Bên dưới là phần mà bạn nên tìm hiểu ở phần này.

Điều khiển cơ sở hạ tầng
Nagios
Icingo
Datadog
Zabblx
Monit
ứng dụng điều khiển
New Relic
AppDynamics
Quản lí hiển thị
ELK Stack
Graylog
Splunk
Papertrail
9

Dịch vụ đám mấy

Bên dưới là phần mà bạn nên tìm hiểu ở phần này.

AWS
Google Cloud
Azure
Dgital Ocean
Heroku