Về tác giả: Jeff Atwood là một chuyên gia công nghệ tại Mỹ, hiện đang sinh sống và làm việc tại Berkeley, California. Anh là một kỹ sư phần mềm chuyên về công nghệ Microsoft .NET, một blogger nổi tiếng trong cộng đồng công nghệ với blog Coding Horror, người sáng lập và kiêm Giám đốc điều hành (CEO) của trang web hỏi đáp uy tín Stack Overflow , đồng thời là đồng sáng lập của Stack Exchange và Discourse.
Gần đây, một lập trình viên Mỹ đã tha thở trong một bài viết rằng:
'Tôi đã sai lầm khi dành quá nhiều thời gian để đọc những cuốn sách về một công nghệ nhất định nào đó như là ASP.NET hoặc Hibernate, thay vì nên đọc những cuốn sách như Code Complete, Clean Code, và Agile Principles, Patterns And Practices in C#'(Tất cả những cuốn sách này, nếu bạn chưa đọc chúng thì tôi khuyên bạn nên dành thời gian để đọc).
Chúng ta đều biết là số lượng không bằng chất lượng. Bằng chứng là vào năm 1958, một học giả người Mỹ là ông Sturgeon đã công bố nghiên cứu nổi tiếng về quy luật 90/10, rằng '90% tất cả mọi thứ trong đời đều là vớ vẩn', bạn thử kiểm tra lại các mối quan hệ bạn bè đồng nghiệp, các sách báo mình đã đọc... xem có đúng không?
Và trước khi xem qua danh sách này thì chúng ta hãy cùng đọc lại một đoạn trong bài viết của một lập trình viên khá nổi tiếng tại Ấn Độ nhé:
'Cũng giống như ngoài đại dương bao la kia, phía trên bề mặt thì sóng rất dữ dội nhưng ở mực nước sâu thì mọi thứ tương đối yên tĩnh, phẳng lặng. Hầu hết các sinh vật sống và phát triển tại đây. Vì thế, hãy tự cảm nhận rằng mình đang ở mực nước sâu và tiến gần với những công nghệ cốt lõi. Bạn hãy dành nhiều thời gian để học về những khái niệm cốt lõi hơn là cứ ngồi đó mà lo lắng về những framework và công cụ luôn thay đổi xoành xoạch xung quanh nó. Cùng với nền tảng vững chắc của những kiến thức cốt lõi, bạn sẽ luôn dễ dàng học được các framework, công cụ và API mới'.
Dưới đây là 16 cuốn sách mà tôi khuyên rằng bất cứ một lập trình viên nào cũng nên đọc:
1. Code Complete 2
Điểm nổi bật: Tác giả Steve ghi chú rằng lập trình viên trung bình đọc ít hơn một cuốn sách kỹ thuật mỗi năm và với việc đọc cuốn sách này, bạn đã đi theo hướng tốt hơn so với 90% đồng nghiệp còn lại.
2. The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition)
Điểm nổi bật: Máy tính có thể thay đổi, nhưng con người thì không.
Đọc cuốn sách kinh điển này chắc chắn sẽ tốt hơn rất nhiều việc bạn sử dụng thời gian để nghiền ngẫm trên hàng ngàn trang tài liệu kỹ thuật mới nhất hiện nay.
3. Don't Make Me Think: A Common Sense Approach to Web Usability
Điểm nổi bật: Tác giả Steve Krug đã bao quát mọi khái niệm quan trọng về usability (tính dễ sử dụng của phần mềm) trong cuốn sách này và cung cấp rất nhiều thông tin hữu ích. Hình thức trình bày ngắn gọn súc tích, dễ áp dụng, phù hợp với mọi độc giả: dân kỹ thuật, không phải dân kỹ thuật, người dùng bình thường, lập trình viên, nhà quản lý...
4. Rapid Development (Rapid Development: Taming Wild Software Development Schedules)
Điểm nổi bật: Đề cập tới 'thực tế của thất bại'. Phần lớn các dự án phát triển phần mềm đều thất bại: chúng thường vượt quá thời hạn kế hoạch đã đặt ra, tạo ra các kết quả không đạt yêu cầu hoặc đôi khi, thậm chí còn không thể kết thúc được. Tuy nhiên, một sự thật là các đội nhóm cần phải trở nên giỏi hơn trong việc tránh những thất bại đơn giản để có thể thành công.
5. Peopleware : Productive Projects and Teams, 2nd Ed
Điểm nổi bật: Giúp các lập trình viên đánh giá đúng các kỹ năng về con người của họ và xem xét tác động của vấn đề này tới thành công của dự án. Đây được xem là cuốn sách nền tảng cho những ai muốn trở thành một Team Leader.
6. The Design of Everyday Things
Điểm nổi bật: Cuốn sách làm rõ những vấn đề khó tin về công việc phát triển phần mềm, có quá nhiều thứ có thể trở nên sai sót và tất cả chúng ta đều có thể thất bại một cách ngẫu nhiên vì những điều nhỏ nhất.
7. About Face 3.0: The Essentials of Interaction Design
Điểm nổi bật: Những chỉ dẫn đầy đủ nhất để bạn có thể ứng dụng nhằm tạo ra một GUI nhất quán.
8. The Inmates Are Running the Asylum : Why High Tech Products Drive Us Crazy and How To Restore The Sanity
Điểm nổi bật: Trình bày khái niệm personas (con người), với những diễn giải cụ thể hướng dẫn chúng ta nói chuyện về những người dùng xác định, người có tên, có cá tính, có nhu cầu và mục tiêu.
9. Programming Pearls (2nd Edition)
Điểm nổi bật: Mặc dù đề cập khá nhiều kỹ thuật lập trình ở mức thấp nhưng cuốn sách này vẫn cung cấp đủ thông tin hữu ích liên quan đến nghề phần mềm với một tập hợp các thủ thuật của những lập trình viên 'cao thủ' nhất.
10. The Pragmatic Programmer: From Journeyman to Master
Điểm nổi bật: Tiếp cận vấn đề một cách thực tế và mở rộng ra nhiều vấn đề không liên quan đến kỹ thuật lập trình.
11. Designing Web Usability : The Practice of Simplicity
Điểm nổi bật: Tập hợp đầy đủ các kiến thức căn bản về web usability, nhưng có một chút khác biệt so với các cuốn sách hướng GUI của tác giả Cooper ở trên.
12. Envisioning Information
Điểm nổi bật: Hiểu rõ tầm quan trọng của thông tin và giao diện người dùng.
13. Mastering Regular Expressions, Second Edition
Điểm nổi bật: Tìm hiểu về Regular Expressions và các vấn đề liên quan.