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.
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:
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
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.
Học HTML
Học cơ bản CSS
Học cơ bản Javascript
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.
Tìm kiếm các project trên github và xem code chuẩn của họ.
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.
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.
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.
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.
CSS Preprocessors
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.
CSS Framework
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.
Kiến trúc CSS
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.
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.
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.
Chọn 1 Framework
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.
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,...
Testing ứng dụng của bạn
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.
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,...
Static Type Checkers
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ứ.
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)
Tất cả những thứ mà không được đề cập ở trên
Canvas, HTML -5APIs, SVG, Sourcemaps, Functional Programing, TC3q,....
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.
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.
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.
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.
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.
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
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,...
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.
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.
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ả.
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.
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
Caching
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.
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.
Authentication Authorization Methodologies
Hiểu về sự khác nhau của chúng và triển khai chúng như thế nào
Message Brokers
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.
Học một Search Engine
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.
Học sử dụng Docker
Hiểu biết về Web Servers
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.
Học cách sử dụng Web Sockets thế nào
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"
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ó.
Tất cả mọi thứ mà chưa được đề cập ở trên
Profiling, Static Analysis, DDD, SOAP, ...
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ữ đó.
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.
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.
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.
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.
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.
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.
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.
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.