Book recommendation from Nam .NET
Cre: Nam .NET (youtube: hoc lap trinh cung Nam)
📕 OOP và phân tích thiết kế:
- Clean Architecture, Robert Martin: Cuốn sách này mang lại cho bạn một tập kiến thức chi tiết về mọi khía cạnh liên quan đến OOP, tuy tiêu đề mang tên là Clean Architecture nhưng phần nói về nó tương đối ngắn, chỉ đâu đó khoảng 10 trang, và thực tế là nếu đã hiểu rõ OOP và các khái niệm liên quan thì chỉ cần chừng đó là bạn đủ hiểu về Clean Architecture rồi.
- Object-Oriented Analysis and Design with Applications, Grady Booch, Ivar Jacobson, and James Rumbaugh. Nếu biết tác giả của cuốn sách này chính là những người tạo ra UML, có lẽ bạn sẽ chẳng nghi ngờ gì về tính chính xác của nội dung cuốn sách, OOAD là phương pháp mà mình tin rằng cho tới bây giờ vẫn còn giữ nguyên giá trị.
- Domain-Driven Design, Eric Evans: Cuốn này còn được gọi là “The blue book”, được viết bởi chính tác giả của DDD, tuy nhiên vì DDD vốn là một chủ đề phức tạp, đòi hỏi bạn đã có kinh nghiệm nên lời khuyên là chỉ nên đọc khi bạn thực sự muốn tìm hiểu, nếu không sẽ không thấm được.
- Patterns of Enterprise Application Architecture, (Martin Fowler và nhiều tác giả khác): Hãy đọc cuốn này nếu bạn quan tâm đến việc xây dựng các ứng dụng lớn, nhiều người dùng, nó không chỉ có các design pattern mà còn cho bạn thấy nhiều vấn đề bạn sẽ gặp phải.
- System Design Interview, Alex Xu: Thú thật là mình cũng chỉ đọc sơ qua thôi, vì nhiều kiến thức trong đây thì mình đã biết rồi, nhưng nếu bạn là người mới với system design thì nên đọc.
📕 Kiến trúc máy tính và hệ điều hành:
- Introduction to Computing Systems: From Bits & Gates to C/C++ & Beyond, Yale N. Patt (Author) và Sanjay Patel: mình đã từng nhắc đến cuốn này trước đây, nó chứa đầy đủ thông tin về kiến trúc máy tính, và cả mô tả về máy ảo Little Computer 3. Khi nói về LC3, chỉ cần dùng từ The book là người ta biết đang nói về cuốn này.
- Operating System Concepts, Abraham Silberschatz, Peter Baer Galvin và Greg Gagne: gọi là concept nhưng các tác giả nói rất kỹ về các khái niệm liên quan đến hệ điều hành, bao gồm cả các chủ đề mới như máy ảo hay các hệ thống phân tán.
- Operating Systems Design and Implementation, Andrew S. Tanenbaum, Albert S. Woodhull: Giáo sư Andrew S. Tanenbaum là tác giả của Minix, hệ điều hành tạo ra cảm hứng cho Linus Torvalds viết ra Linux, và bộ sách này có thể gọi là must-read đối với những người học về hệ điều hành.
- Linux Kernel Development, Robert Love: tác giả là người có hiểu biết sâu sắc về Linux, đã tham gia vào xây dựng scheduler và virtual memory cho Linux, cũng như tham gia vào xây dựng những phiên bản đầu tiên của Android. Tuy nội dung hơi cũ nhưng vẫn nên đọc với ai quan tâm đến Linux kernel.
- Windows Internals (nhiều tác giả): một trong những tác giả của bộ sách là Mark E. Russinovich, mình biết anh này từ khi anh ấy lập nên trang Sysinternals, với nhiều công cụ hữu hiệu cho Windows, mình rất thích đọc các bài viết của anh vì mang lại rất nhiều kiến thức. Anh này hiện đang là CTO của Azure, mình cũng vẫn hay xem anh ấy qua các video về WASM.
📕 Thuật toán:
- Algorithms, Robert Sedgewick và Kevin Wayne: đây là bộ sách gối đầu giường của mình khi còn là sinh viên, mình đọc và tham khảo rất nhiều khi học, các thuật toán trong đây cũng là những bài tập mình làm khi luyện code. Có thể nói đây là cuốn sách mình khuyến khích các bạn nên đọc, bất kể bạn đang học ngôn ngữ hay nền tảng gì, sách này có bản dịch tiếng Việt.
📕 Networking, TCP/IP và HTTP:
- TCP/IP Illustrated, W. Richard Stevens (3 tập): Bộ sách về TCP/IP phải nói là đỉnh của đỉnh, mình từng có bản giấy của bộ này nhưng nay không biết thất lạc đâu rồi :(.
- https://openid.net/: Trang web của OpenID Foundation, mình hầu như chỉ đọc tài liệu về OpenId connect ở đây.
- Các RFC, HTTP 1/2/3, OAuth2 và các chuẩn về web: RFC là các quy ước, đặc tả mà các nhà phát triển hay sản xuất công nghiệp tuân theo để đảm bảo tính đồng bộ và tương thích, vì vậy đọc các RFC cũng đồng nghĩa với việc bạn đang đọc các tài liệu mà các chuyên gia trên thế giới đọc để tạo ra các sản phẩm bạn đang dùng. Ban đầu chưa quen sẽ hơi khó tiếp thu, nhưng một khi đã quen rồi bạn sẽ … nghiện 😅.
- Trang learning của Cloud Flare (https://www.cloudflare.com/learning/): Cloud Flare thì quá nổi tiếng rồi, và trang learning của họ cũng rất đầy đủ và cập nhật, được viết theo phong cách đơn giản để có thể hiểu được ngay cả với người mới.
- https://web.dev/: Phải đọc với người làm web, không chỉ chứa các bài học về HTML, CSS và JS, nó còn giúp bạn hiểu các vấn đề liên quan đến tối ưu web, là điều kiện đủ khi tham gia các dự án thực tế.
📕 Database:
- Database Internals, Alex Petrov: cuốn sách nói về những gì xảy ra đằng sau các hệ cơ sở dữ liệu, đọc để có nền tảng tốt trong việc xây dựng, thiết kế và tối ưu các DB lớn.
- Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems, Martin Kleppmann: Nếu bạn kể bạn yêu thích xây dựng, tối ưu các CSDL lớn mà lại không biết cuốn này thì tui sẽ nghi ngờ câu chuyện của bạn.
📕 Ngôn ngữ lập trình/Framework:
- Compilers: Principles, Techniques, and Tools, (Alfred Aho và Jeffrey Ullman): bộ sách kinh điển cho người quan tâm đến cách các ngôn ngữ lập trình, trình biên dịch hoạt động, có bản dịch tiếng Việt. Nó cũng hay được gọi là bộ sách con rồng (vì trên bìa có hình con rồng).
- CLR via C#, Jeffrey Richter: cuốn này hơi cũ nhưng cũng mang lại nhiều kiến thức về nền tảng .NET, hiện nay kho docs của .NET cũng khá ổn rồi nên đọc trên đó cũng được.
- Java - The Complete Reference: đây là bộ sách về Java, chủ yếu là Java Core, mình cũng học Java từ phiên bản đầu tiên của cuốn này.