Bài viết này chia sẻ với anh em lộ trình và tài liệu tham khảo khi học PHP theo các Level. Dưới đây là định nghĩa theo từng Level của mình, với một số anh em có thể sẽ khác.
Lưu ý quan trọng là mọi tài liệu sẽ đều là tiếng Anh và có thể có phí (học phí). Tuỳ vào trình độ, nhu cầu mà anh em lựa chọn cho phù hợp với bản thân.
Tham khảo: Mảng và các hàm xử lý mảng trong PHP
1. Level: Junior
Đây là trình độ gần như bắt đầu, bạn không biết PHP là gì, hay PHP làm được gì. Thậm chí bạn còn chưa từng Code một dòng nào trong đời. Vậy thì những tài liệu dưới đây là dành cho bạn.
- Murach’s PHP and MySQL, 2nd Edition, đây là cuốn sách nên đọc vì nó khá đầy đủ và bao gồm luôn cả MySQL cùng nhiều ví dụ cho người mới học. Đây là cuốn FPT Poly dịch thành giáo trình cho sinh viên của trường.
- PHP 7 Zend Certification Study Guide, đây là cuốn sách dùng để ôn thi chứng chỉ Zend, được viết theo Format của đề thi theo từng Category chứ không phải dạng viết từ cơ bản tới nâng cao. Dù bạn có thi ZCE hay không thì nó cũng là một tài liệu tham khảo tốt.
- PHP Cookbook, 3rd Edition, một cuốn sách dạng mỳ ăn liền hướng dẫn rất nhiều ví dụ khi sử dụng PHP.
- Hướng dẫn từ W3School: https://www.w3schools.com/php/default.asp. Đây có lẽ là hướng dẫn PHP được đọc nhiều nhất, vì nó đơn giản, từ ngữ thuộc loại dễ hiểu nhất, có ví dụ chạy trên Web luôn.
- Hướng dẫn từ Tutorialpoint: https://www.tutorialspoint.com/php/, đây là trang tổng hợp hướng dẫn rất lớn của Ấn Độ có rất nhiều công nghệ. TUT ở đây mình thấy Copy và tóm lược trong sách nhiều, tuy nhiên nếu bạn cần đọc nhanh để làm một số thứ với PHP thì nó là một nguồn tham khảo tốt.
- Khoá học PHP từ Lynda.com cho bạn nào thích xem Video và nghe tiếng Anh.
- https://www.lynda.com/learning-paths/Web/php-developer, khoá học PHP từ cơ bản tới chuyên sâu.
- https://www.lynda.com/learning-paths/Web/get-ahead-in-php-7-features-and-frameworks, khoá học về PHP 7.
- Trang web: https://www.php-fig.org/, đây là trang nói về Coding Standard trong PHP. Hiện tại nó được cộng đồng công nhận, và đa số các Framework hay thư viện đều sử dụng những chuẩn này. Có lẽ khi bạn tham khảo được toàn bộ nội dung trên, thì bạn đã có một cái nhìn tổng quan về PHP rồi. Lúc này trình độ của bạn cỡ một Junior.
2. Level: Senior
Ở trình độ này thì ngoài việc sử dụng thành thạo PHP ra, bạn cần phải biết thêm rất nhiều thứ như Design Pattern, Software Design, Refactoring… Vậy thì nên đọc gì bây giờ?
- Object-Oriented Analysis and Design with Applications 3rd, sách kinh điển về Hướng đối tượng. Bạn có thể bỏ qua nhưng tôi khuyến khích bạn đọc nó nếu muốn đi xa hơn với Thiết kế phần mềm hướng đối tượng.
- Clean Code: A Handbook of Agile Software Craftsmanship, học để làm sao viết được mã sạch. Sách này có thể dùng khi bạn là Junior, tuy nhiên nếu là Senior thì phải tinh thông món này.
- Agile Software Development: Principles, Patterns, and Practices: sách dành cho nhà phát triển mong muốn áp dụng Agile Mindset vào làm phần mềm. Cùng tác giả với cuốn Clean Code. Sách cũng nói tới nhiều phương pháp phổ biến như thiết kế SOLID, Test Driven, Refactoring…
- Modern PHP: New Features and Good Practices: sách hơi Outdate so với hiện tại, nhưng cũng khá hữu ích và cho bạn cái nhìn tổng quan về các công cụ phát triển đi cùng PHP trong các dự án.
- PHP Objects, Patterns, and Practice 6th: Bạn có thể đọc Design Pattern của Gang of Four nhưng không nên bỏ qua cuốn này. Sách khá Update theo sự phát triển của hiện tại.
- Refactoring: Improving the Design of Existing Code: Martin Fowler, đây là sách kinh điển về Refactoring, nó chỉ ra tại sao bạn phải Refactor code, khi nào thì Refactor và những Smell code hay gặp phải cũng như cách xử lý chúng. Nếu là một Senior thì hẳn bạn sẽ phải biết điều này, nếu là Junior bạn cũng có thể tham khảo cuốn này và áp dụng được luôn các ví dụ của nó.
- Trang web: https://sourcemaking.com, tổng hợp gắn gọn và ví dụ cụ thể (bằng nhiều ngôn ngữ trong đó có PHP) về Design Pattern, Refactoring. Nếu cuốn Design Pattern khó nhằn thì bạn có thể được Head First Design Pattern và tham khảo thêm trang web này.
- Trang web: https://phptherightway.com/, đây là Web của tác giả cuốn Modern PHP nhưng được cộng đồng Update thường xuyên.
- Một số sách liên quan tới Database: Database System Concepts – cuốn sách giáo khoa khá nổi tiếng. NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence – cùng tác giác với Refactoring, một Guru về Software Design, cuốn này viết tổng quan về NoSQL. High Performance MySQL, 3rd Edition – sách về tối ưu hiệu năng cho MySQL.
- Khoá học MySQL trên Pluralsight: https://www.pluralsight.com/paths/mysql, đây là khoá từ cơ bản tới nâng cao. Junior có thể kham khảo, còn Senior thì đặc biệt phải rất rõ phần liên quan tới Optimize Query và Performance.
- Redis in Action: Tôi giới thiệu cuốn sách này vì Redis là một Caching Server được sử dụng rất phổ biến với PHP. Rất nhiều hệ thống lớn hiện nay sử dụng Redis, theo cập nhật của tôi thì có Stackoverflow, Instagram, Zing Me…
Ngoài kỹ thuật ra thì Senior sẽ phải quan tâm tới nhiều vấn đề khác như Quy trình, quản lý dự án, giao tiếp, đào tạo… tuy nhiên trong khuôn khổ bài viết này tôi chỉ liệt kê những khía cạnh về Technical.
3. Level: Solution Architect
Theo tôi thấy, để trở thành một Senior đã thực sự khó nhằn rồi, tuy nhiên với việc PHP được áp dụng rất nhiều vào trong các hệ thống lớn và phức tạp. Nếu bạn muốn gắn bó với PHP và trở thành một Expert Engineer thì hẳn là bạn sẽ phải can qua trình độ này.
- Infrastructure là một thứ rất quan trọng khi làm Solution, vì thế hãy học Docker thông qua khoá sau https://www.pluralsight.com/paths/managing-containers-with-docker, vì Docker là một công cụ rất mạnh để Deploy hệ thống không chỉ PHP. Ngoài Docker bạn phải biết những thứ mới hơn nữa như Ansible, Teraform, Kubernetes… Trong khi làm dự án có thể bạn không phải trực tiếp làm những thứ này, hoặc sử dụng các dịch vụ Cloud như AWS hoặc Azure nhưng nên biết nếu bạn sử dụng Private Cloud hoặc tự Build Server.
- Sách về CI/CD: Continuous Delivery by Jez Humble và Continuous Integration by Steve Matyas. Bạn sẽ hiểu được cách triển khai hệ thống liên tục như thế nào. Hiện tại có rất nhiều cách triển khai khác, nhưng về cơ bản đều Base trên ý tưởng của CI/CD. Nếu bạn là người quan tâm tới vấn đề này thì nên tham khảo thêm các trang Web như https://www.infoq.com/ hay https://dzone.com/
- Sách Patterns of Enterprise Application Architecture: sách kinh điển về Pattern hệ thống. Đọc xong bạn sẽ hiểu ORM thực chất như thế nào, và có những Pattern nào phổ biến, ưu nhược điểm ra sao. Bạn cũng sẽ biết Transtraction Script và Domain Model khác nhau thế nào, ưu điểm ra sao. Các Pattern cũng được phân chia theo nhóm để bạn tiện theo dõi.
- Sách Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions, đúng như tên, sách viết về cách thiết kế và triển khai hệ thống dự trên Messaging và một số phương pháp khác. Đây là một cách triển khai hệ thống phân tán (Distributed System) khá phổ biến hiện nay. Bạn sẽ hiểu cách hoạt động của các Message Broker phổ biến như RabbitMQ, ZeroMQ hay MS Enterprise Service Bus.
- Sách Domain-Driven Design: Tackling Complexity in the Heart of Software, đây là một Buzz Word trong thời gian dài. Nó gần như là một phương pháp luận về thiết kế phần mềm mới. Sách khá khó nhằn, tôi đã phải Drop nửa chừng để đọc bản rút gọn trước. Nếu bạn quan tâm tới Domain Driven Design thì nên đọc thêm cuốn Implementing Domain-Driven Design.
- Update công nghệ mới với cuốn Clean Architecture: A Craftsman’s Guide to Software Structure và Building Microservices: Designing Fine-Grained Systems. Nếu áp dụng Microservice thì Domain Drive Design là một phương pháp luật rất tốt.
- Domain-Driven Design in PHP, một cuốn sách áp dụng thực chiến DDD vào PHP. Chỉ đọc nếu bạn đã thực sự hiểu về DDD, hồi trước tôi có đọc qua như một số thứ không hiểu vì nỡ Drop cuốn DDD ở trên.
Trên đây chỉ là các tài liệu giúp bạn tham khảo khi bạn gặp vấn đề trong công việc hay muốn tham khảo xem các anh Pro thì đọc cách gì hoặc làm sao để Pro hơn. Tôi tin là trong sự nghiệp PHP Developer của bạn, hẳn sẽ có lúc gặp những vấn đề trên. Lần sau tôi sẽ viết về đề tài quản lý dự án, vì dạo này tôi đang chuyển sang làm quản lý dự án khá nhiều. Có nhiều thứ hay ho mà tôi nghĩ có thể chia sẻ cho anh em.