Những cuốn sách kinh điển nên đọc về chất lượng phần mềm
Dưới đây là những cuốn sách tôi đã đọc và cho rằng đáng để giới thiệu.
Tuy nhiên, các sách này đều thiên về lý thuyết, chỉ có thể giúp bạn hình thành tiêu chuẩn và ý thức viết code tốt. Nếu muốn viết code chất lượng cao hơn và tạo ra phần mềm chất lượng cao hơn, bạn vẫn nên đọc nhiều source code tốt và học hỏi các thực tiễn code tốt.
Code sạch

Sách bắt buộc phải đọc! Không cần nói nhiều. Đây là viên ngọc quý trong lĩnh vực sách lập trình.
Cuốn sách của Martin Fowler, một tác giả hàng đầu thế giới và tầm cỡ quốc bảo, có thể nói là một trong những cuốn kinh điển nhất trong lĩnh vực phát triển phần mềm. Hiện đã có phiên bản thứ hai.
Đây là cuốn sách đáng để bạn đọc nhiều lần.

《Clean Code》 là một tác phẩm kinh điển của Uncle Bob, rất khuyến khích các bạn đọc cuốn này.
Uncle Bob đã cô đọng cách hiểu của mình về code sạch trong cuốn sách này, quả thực là một món quà lớn dành cho những người đi sau.

《Effective Java 》 là một cuốn sách tầm cỡ quốc bảo trong lĩnh vực Java, cực kỳ kinh điển. Lập trình viên Java nhất định phải đọc!
Cuốn sách chủ yếu giới thiệu nhiều quy tắc kinh nghiệm có giá trị thực tiễn trong lập trình Java. Các quy tắc này bao quát giải pháp cho phần lớn vấn đề mà đa số developer phải đối mặt mỗi ngày. Bài viết này có thể giúp bạn một cách thiết thực viết ra code rõ ràng, vững chắc và hiệu quả hơn. Mỗi quy tắc trong sách đều xuất hiện dưới dạng một bài viết ngắn, độc lập và được giải thích thêm bằng code ví dụ.

Thật ra, ban đầu tôi không muốn giới thiệu 《Code Complete》 bản 2 cho mọi người. Nhưng vì điểm đánh giá trên Douban cao như vậy, tôi vẫn đưa cuốn sách này ra nói qua!
Đây cũng là một cuốn sách rất kinh điển, bản 2 đã viết lại bản 1.
Tôi chỉ đọc lướt qua nội dung toàn sách, cảm thấy nội dung nhìn chung khá thiếu thực tế và tác dụng với phần lớn lập trình viên thực ra không lớn. Nếu muốn thực sự nâng cao chất lượng code của mình, tôi cho rằng 《Clean Code》 và 《The Art of Readable Code》 đều tốt hơn 《Code Complete》.
Tuy nhiên, điều quan trọng nhất vẫn là đọc nhiều source code tốt và học hỏi các thực tiễn code tốt.

Ý nghĩa mà 《The Art of Readable Code》 muốn truyền tải khá giống 《Clean Code》, bạn chỉ cần xem mục lục của hai cuốn là có thể nhận ra.

Theo tôi, nếu đã đọc 《Clean Code》 thì không cần đọc thêm cuốn này. Tất nhiên, nếu có thời gian và năng lượng, bạn cũng có thể đọc lướt một lượt.
Ngoài ra, tôi cũng muốn giới thiệu một repository có tên write-readable-code. Tác giả repository này chia sẻ miễn phí một loạt video dựa trên cuốn 《The Art of Readable Code》. Loạt video này sẽ hướng dẫn bạn tối ưu code bằng ngôn ngữ Java.
Hiệu quả học trong thực tiễn chắc chắn sẽ tốt hơn! Khuyến khích các bạn tranh thủ học ngay!

Tác phong nghề nghiệp của lập trình viên

《The Clean Coder》 là một tác phẩm kinh điển khác của Uncle Bob.
《Clean Code》 và 《The Clean Coder》 đều được dịch tại Trung Quốc thành 《Code sạch》, tôi cho rằng cách dịch này chưa đủ tinh tế.
Ngoài ra, nội dung của hai cuốn cũng khác nhau rất nhiều. 《Clean Code》 giải thích cách nâng cao chất lượng code từ góc độ code. Còn 《The Clean Coder》 được viết từ góc độ trở thành một developer xuất sắc hơn, chẳng hạn như dạy bạn làm thế nào để chuyên nghiệp hơn trong lĩnh vực của mình, cách nói không, cách quản lý thời gian, cách xử lý áp lực, v.v.
Clean Architecture

Bạn không nhìn nhầm đâu, 《Clean Architecture》 lại là một tác phẩm kinh điển của Uncle Bob.
Tôi cực kỳ khuyến khích cuốn sách này! Sau khi đọc kỹ, tôi đảm bảo bạn sẽ có nhận thức sâu hơn về bản chất của programming, bản chất của programming language, software design và architecture design.
Nhiều sách và chuyên mục trong nước đã tham khảo cuốn 《Clean Architecture》. Không hề phóng đại khi nói rằng 《Clean Architecture》 là một trong những cuốn sách kinh điển nhất trong lĩnh vực architecture.
Đúng như tác giả nói:
Nếu nghiên cứu sâu bản chất của computer programming, chúng ta sẽ phát hiện rằng trong 50 năm qua, computer programming về cơ bản không có thay đổi lớn nào. Programming language chỉ tiến bộ một chút, chất lượng của các tool được nâng cao đáng kể, nhưng cấu trúc cơ bản của computer program không có thay đổi gì.
Mặc dù chúng ta đã có programming language mới, framework mới và programming paradigm mới, nhưng các quy tắc của software architecture vẫn giống như thời điểm Alan Turing viết dòng machine code đầu tiên vào năm 1946.
Cuốn sách này nhằm trình bày những quy tắc bất biến đó của software architecture.
Quản lý project

Cuốn sách này chủ yếu mô tả quy luật cơ bản của software development: Một công việc cần 10 ngày mới hoàn thành thì không thể để 10 người hoàn thành trong 1 ngày!
Ấn tượng đầu tiên khi nhìn tên sách là nó không giống sách kỹ thuật. Nhưng chính một tựa sách tưởng như không liên quan đến programming như vậy lại trở thành một tác phẩm kinh điển được truyền tụng lâu dài trong lĩnh vực programming.
Cuốn sách này có ý nghĩa sâu sắc đối với việc chuẩn hóa quá trình phát triển phần mềm hiện đại, đặc biệt là phần mềm phức tạp.
《Domain-Driven Design: Tackling Complexity in the Heart of Software》

Tác phẩm kinh điển về Domain-Driven Design này luôn được nhiều người giới thiệu, nhưng tôi vẫn chưa đọc.
Khác
- 《The Future of Code》: Tác giả cuốn sách là Yukihiro Matsumoto, cha đẻ của Ruby. Đây là một cuốn sách khá lâu đời (xuất bản năm 2013), nhưng vẫn rất đáng đọc. Nội dung sách chủ yếu giới thiệu bản chất của programming/programming language. Cá nhân tôi khá thích văn phong của Yukihiro Matsumoto, và quả thực bạn cũng có thể thu được nhiều điều từ các bài viết của ông.
- 《Head First Design Patterns》: Văn phong khá thú vị, phù hợp để nhập môn design pattern.
- 《Software Architecture Design: The Way to Integrate Large-Scale Website Technical Architecture and Business Architecture》: Nội dung rất toàn diện. Phù hợp để ôn nhanh một số kiến thức lý thuyết quan trọng trước phỏng vấn, cũng phù hợp để mở rộng và hoàn thiện độ rộng kỹ thuật.
- 《Microservices Patterns》: Cuốn sách do Chris Richardson, một trong mười software architect hàng đầu thế giới và người tiên phong của microservice architecture, đích thân viết; điểm Douban là 9.6. Code ví dụ sử dụng ngôn ngữ Java và framework Spring. Sách giúp bạn thiết kế, triển khai, test và deploy các application dựa trên microservice.
Cuối cùng, xin giới thiệu thêm hai tài liệu liên quan:
- Alibaba Java Development Manual: https://github.com/alibaba/p3c
- Google Java Style Guide: http://www.hawstein.com/posts/google-java-style.html
