Lộ trình trở thành PHP web developer

162

Hello các bạn,

Trong bài viết này mình sẽ chia sẻ với các bạn lộ trình để trở thành PHP web developer. Thực ra mình không rõ nên coi nội dung dưới đây là lộ trình, là kỹ năng, hay kiến thức nữa, nhưng đại loại nếu bạn muốn trở thành PHP web developer thì nội dung dưới đây sẽ có ích với bạn.

I. PHP web developer là gì

Tìm hiểu qua một chút về “cái đích” mà chúng ta sẽ hướng đến, thì PHP web developer là tên một nghề liên quan đến công việc lập trình web. Trong đó PHP là tên ngôn ngữ lập trình, web developer tạm dịch là “Người phát triển web”, vậy PHP web developer thì hiểu là “Người phát triển web sử dụng ngôn ngữ lập trình PHP” (Ngoài PHP thì còn nhiều ngôn ngữ khác cũng làm được web).

Ok, dễ hiểu đúng không. Nhưng thực ra, cái tên “PHP web developer” thì là cách gọi vắn tắt của “PHP/JavaSctipt/HTML/CSS/bla bla,… web developer“, nghĩa là để trở thành PHP web developer thì bạn cần phải học rất nhiều thứ, và PHP chỉ là một trong số chúng.

Giới thiệu thêm

Để tạo ra một trang web, bạn sẽ cần các kiến thức:
– Kiến thức về HTML/CSS/JavaScript: Dùng để tạo giao diện trang web.
– Kiến thức về ngôn ngữ lập trình: Dùng để xử lý các tính năng có trên trang web (hiểu nôm na là vậy), và PHP là một ngôn ngữ lập trình.
– Kiến thức về cơ sở dữ liệu: Là nơi lưu trữ dữ liệu cho trang web. PHP thường kết hợp MySQL – một loại cơ sở dữ liệu.
– Kiến thức về webserver: Là máy chủ để chạy web, Apache và Nginx là 2 loại web server phổ biến.

Bạn thấy không, có phải mỗi PHP đ*o đâu, cả mớ kiến thức đấy chứ. Mà đấy mới chỉ là “phần nổi của tảng băng” thôi đó, phần chìm mình sẽ liệt kê chi tiết trong bài viết, mà nói trước là mình cũng không thể liệt kê hết được vì nó quá nhiều.

II. Quy ước

Các kiến thức được chia thành 3 level: Hiểu, Biết sử dụng, Sử dụng thành thạo. Trong đó:

  • Hiểu: Đã từng tiếp xúc với kiến thức đó, hiểu ý nghĩa và vai trò, đã từng làm một số ví dụ đơn giản. Mức này rất dễ đạt được.

Tôi Hiểu PHP, vì tôi biết nó phù hợp với các dự án web, tôi cũng từng làm một dự án nhỏ về website tin tức sử dụng PHP để hiểu hơn về nó.

  • Biết sử dụng: Bao gồm Hiểu và đã từng áp dụng kiến thức đó trong một dự án cụ thể, dự án được áp dụng phải đủ lớn, đủ nghiêm túc, không phải là các pet project.
    Lưu ý: Một số từ khác trong bài viết như Biết thiết kế, Biết tối ưu, Biết vận dụng, Biết làm cũng tương đồng với Biết sử dụng.

Tôi biết sử dụng PHP, vì tôi từng sử dụng nó trong một dự thực tế. Tuy đây chỉ là dự án cá nhân, nhưng tôi hoàn thiện nó với thái độ nghiêm túc, cố gắng hoàn thiện ở mức cao nhất có thể. Trong quá trình hoàn thành dự án, tôi vẫn học được thêm nhiều kiến thức mới.

  • Sử dụng thành thạo: Bao gồm Biết sử dụng và lặp đi lặp lại trong một vài dự án, trong quá trình lặp lại không (hoặc ít) học được thêm kinh nghiệm mới.

Tôi sử dụng thành thạo PHP, vì tôi từng tham gia vào nhiều dự án thực tế sử dụng PHP, trong quá trình đó, tôi không (hoặc ít) học được thêm kiến thức mới về PHP.

Nếu so với tháp Bloom trong bài viết Kinh nghiệm làm việc được tính như thế nào, thì:

  • Level Hiểu trong bài viết này tương ứng với level Hiểu của tháp Bloom.
  • Level Biết sử dụng tương ứng với level Vận dụng của tháp Bloom.
  • Level Sử dụng thành thạo tương ứng từ Level Phân tích trở lên của tháp Bloom.

III. Lộ trình

Lưu ý:
– Lộ trình dưới đây chưa được kiểm chứng, mà chỉ được đúc kết từ kinh nghiệm cá nhân của mình.
– Lộ trình dưới đây đã được mình tối ưu (không quá ngắn cũng không quá dài), đảm bảo phù hợp với nhu cầu tuyển dụng hiện tại.
– Lộ trình dưới đây sẽ được cập nhật thường xuyên.

Level 1: Nhập môn lập trình

Đây là kiến thức cơ bản nhất mà bất kỳ lập trình viên nào cũng phải biết, chứ không riêng web developer:

  • Biết sử dụng ít nhất một ngôn ngữ lập trình.
  • Biết sử dụng một số giải thuật cơ bản: sắp xếp nhanh (quick sort), sắp xếp nổi bọt, tìm kiếm nhị phân, tìm kiếm tuần tự.
  • Biết sử dụng một số cấu trúc dữ liệu cơ bản: stack, queue, linked list.
  • Biết sử dụng lập trình hướng đối tượng.
  • Hiểu một số quy trình phát triển phần mềm: quy trình thác nước, agile/scrum.

Level 2: Nhập môn lập trình web

Đây là các kiến thức mà bất kỳ web developer nào cũng phải biết:

  • Biết sử dụng HTML, CSS, JavaScript.
  • Biết sử dụng một số thư viện web cơ bản: jQuery, bootstrap.
  • Biết sử dụng PHP.
  • Biết sử dụng ít nhất một database quan hệ, gợi ý bạn nên học MySQL.
  • Biết thiết kế database quan hệ (chuẩn 3NF, phi chuẩn, index trong database).
  • Biết chuyển giao diện từ file thiết kế sang giao diện web (biết cắt html).
  • Biết sử dụng mô hình MVC trong lập trình web.
  • Biết sử dụng một số design pattern phổ biến: singleton, factory.
  • Hiểu về cách hoạt động của trang web: backend, frontend, client side, server side, request, response, header.
  • Sử dụng thành thạo coding convention trong PSR.
  • Biết sử dụng CLI.
  • Biết sử dụng một số tool trên CLI: npm, composer.
  • Biết sử dụng Restful API.
  • Hiểu về UI, UX.
  • Biết sử dụng GIT.
  • Biết sử dụng wordpress.
  • Biết sử dụng ít nhất một PHP framework, gợi ý bạn nên học Laravel.
  • Hiểu về một số lỗi bảo mật: xss, csrf, sql injection.
  • Hiểu về SEO.
  • Hiểu về SOLID.

Đang cập nhật thêm…

Level 3: Lập trình web chuyên sâu

Đạt tới “cảnh giới” này, bạn có thể lựa chọn 1 trong 3 hướng phát triển dưới đây:

2.1 Frontend developer

Frontend developer là những người làm về mặt giao diện, trải nghiệm, tương tác của trang web. Bất kể menu, màu chữ, font chữ, các modal bật lên, đóng lại,… tóm lại là những thứ mà người dùng có thể nhìn thấy đều được coi là frontend và đều là công việc của frontend developer.

  • Sử dụng thành thạo HTML, CSS và JS.
  • Sử dụng thành thạo ít nhất một frontend framework: reactjs, angular, vuejs.
  • Sử dụng thành thạo ít nhất một css preprocessor như scss, PostCSS.
  • Sử dụng thành thạo ít nhất một tool build frontend, gợi ý bạn nên chọn webpack.
  • Biết tối ưu SEO.
  • Biết thiết kế UI/UX.
  • Sử dụng thành thạo css BEM rules.

Đang cập nhật thêm…

2.2 Backend developer

Nếu frontend được thể hiện ngoài giao diện – cái mà người sử dụng có thể dễ dàng nhìn thấy và cảm nhận, thì backend lại là “trái tim” nằm phía sau, âm thầm xử lý các tác vụ mà người dùng thực hiện.

Frontend có thể dễ dàng vẽ lên một cái nút “Đăng nhập”, nhưng bấm vào cái nút đó là hàng loại các thao tác tìm kiếm, kiểm tra, xác minh được thực hiện phía backend.

  • Sử dụng thành thạo PHP
  • Sử dụng thành thạo ít nhất một database, gợi ý bạn nên học MySQL.
  • Sử dụng thành thạo ít nhất một framework, gợi ý bạn nên chọn Laravel.
  • Sử dụng thành thạo lập trình hướng đối tượng.
  • Biết sử dụng Linux.
  • Biết sử dụng ELK stack.
  • Biết sử dụng docker.

Đang cập nhật thêm…

3.3 Full stack developer

Về cơ bản, Fullstack developer là người có thể làm được hết (hoặc phần lớn) các công việc của cả Frontend developer và Backend developer.

Đang cập nhật thêm…

IV. Tổng kết

Lộ trình trên vẫn chưa đầy đủ, mình sẽ vẫn còn cập nhật thêm. Mà nếu bạn muốn đóng góp gì cho mình, thì để lại ý kiến ở phần bình luận nhé. Xin cảm ơn.

Tái bút: Các bài viết trên blog phambinh.net cũng chỉ xoay quanh các vấn đề nằm trong lộ trình trên, đọc các bài viết trên phambinh.net thường xuyên cũng là một cách để các bạn hoàn thiện lộ trình. ahihi.