10 quyển sách lập trình "kinh điển" mà các lập trình viên đều nên đọc

    
     Chào các bạn!
     Là 1 developer, nếu không học lập trình từ sách thì bạn đã bỏ lỡ 1/2 sự nghiệp của mình. Nhiều bạn cho rằng developer thì cần quái gì đọc sách, code nhiều là giỏi thôi. Vâng nó khá đúng vì các cụ xưa nay có câu "practice make perfect"! Tuy nhiên làm nhiều cũng phải có phương pháp, đúng cách mới tốt được. Nếu cứ cắm đầu cắm cổ code theo 1 kiểu mãi thì sẽ không bao giờ khá lên được đâu!
     Về sách mình đọc cũng kha khá, từ sách tiểu thuyết đến sách lập trình. Theo cuốn Code Complete thì trung bình mỗi developer đọc ít hơn 1 cuốn sách mỗi năm. Vậy nếu bạn đọc 1 quyển/năm thì bạn đã giỏi hơn 90% dev rồi đó =)). Nhân dịp Win10 vừa ra bản RTM, Icetea Việt chọn lọc 10 programming books bằng tiếng Anh về design, C, C#, C++, HTML, Cloud Computing, Java, JavaScript,.. dựa theo danh sách mình sưu tầm được từ blog Coding Honor và nhiều nguồn khác!


TẠI SAO PHẢI ĐỌC SÁCH

     Khi lần đầu tiên chọn lọc danh sách này, bạn biết mình nghĩ gì không ạ? Lúc đó mình nghĩ rằng đúng là chết tiệt thật, giá như mình biết được danh sách này sớm hơn. Bởi trước đó vì không ai bày cho nên đọc sách gì, nên mình đã cắm cổ đọc sách về một công nghệ nhất định nào đó như là ASP.NET, JAVA, PHP,... như điên. Mình thức cả đêm để download hàng trăm cuốn sách, hàng chục GB tài liệu rồi cuối cùng bỏ đó. Và cách đọc sách của mình cũng sai nữa, vớ được cuốn nào là mình đọc hùng hục từ đầu đến cuối, có khi hứng lên còn đọc luôn cả phần lời cảm ơn nữa! :)
     Sau này mình mới biết có những cuốn kinh điển như “Code Complete 2″ là sách gối đầu giường của các lập trình viên Âu Mỹ cho đến Ấn Độ, Họ hay đọc các quyển sách về tư duy, giải thuật, phong cách lập trình. Mình nghĩ cuốn này nên dịch ra để làm giáo trình cho sinh viên đại học CNTT ở Việt Nam thì tốt biết mấy.
Bạn đã có cuốn sách để đầu giường cho riêng mình?

1. Code Complete 2 – Steve McConnell


     Cuốn sách Code Complete 2 của tác giả Steve McConnell đối với các nhà phát triển phần mềm thì cũng nổi tiếng như cuốn Joy of Cooking dành cho các chuyên gia đầu bếp vậy. Đọc nó nghĩa là bạn yêu thích công việc của mình, bạn có thái độ nghiêm túc về cái bạn làm, và bạn muốn làm cho nó trở nên tốt hơn. Trong Code Complete, 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 thì đã giúp kéo bạn ra xa khỏi 90% các đồng nghiệp của còn lại. Dĩ nhiên là theo hướng tốt hơn.
     Nếu bạn muốn trở thành một dev chuyên nghiệp thì nên đọc quyển này, vì nó dạy cho bạn tư duy xử lý vấn đề. Từ cách thiết kế class, đến cách đặt tên biến, method,...     

2Advanced Linux Programming – CodeSourcery LLC , Mark L. Mitchell, Alex Samuel, Jeffrey Oldham


     “Advanced Linux Programming có đầy đủ thông tin từ thread management, interprocess communication, shared memory, devices, cho đến implementing inline assembly code… Đây là một quyển sách PHẢI ĐỌC dành cho người muốn biết về Linux
     “Quyển sách này đúng là đáng kinh ngạc. Mọi thông tin và ví dụ thực tế đều được chứa đựng trong hơn 300 trang sách. Tôi được hướng dẫn từng bước căn bản từ tạo basic applications, shared & static libraries, sockets, pipes & security, forks/threads đến nhiều ví dụ cụ thể về synchronization mechanisms.”

3. The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition)


     Có nhiều ý kiến cho rằng đây là cuốn sách “kinh điển” duy nhất trong lĩnh vực phát triển phần mềm của chúng ta. Nó như là "Kinh Thánh" trong giới dev và PM. Nếu bạn vẫn chưa đọc nó, thì thật đáng hổ thẹn.
Tôi thách thức bất kỳ lập trình viên nào đọc cuốn The Mythical Man Month mà lại không tìm thấy câu chuyện về một hệ điều hành không tồn tại nữa, và nhóm người đã phát triển ra nó, rất đáng ngạc nhiên là chúng lại rất liên quan đến vấn đề của bạn ngày nay. Cuốn sách 30 năm tuổi đã minh họa sâu sắc một quan điểm rằng: máy tính có thể thay đổi, nhưng con người thì không. Bằng chứng là những gì quyển sách đã nói cách đây 30 năm đến giờ vẫn còn chính xác!
     Đọ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. Tuy không giúp bạn code giỏi hơn, nhưng giúp bạn có cái nhìn tổng quan về ngành Công nghệ phần mềm!

4. C# Yellow Book – Rob Miles

     “Nếu bạn chưa bao giờ lập trình thì đây là cuốn sách dành cho bạn – beginner – với nhiều hướng dẫn cực kỳ dễ theo dõi… Phần lớn topic về C# đều được tác giả đề cập đến trong C# Yellow Book nhưng những vấn đề “khó nhằn” nhất thì lại bị bỏ qua.”
     “Quyển sách này không chỉ dạy bạn những điều căn bản về C# programming mà còn nhiều lý thuyết lập trình khác. Nếu bạn muốn học lập trình thì đây là 1 khởi đầu đúng đắn dành cho bạn.

5. Clean Code: A Handbook of Agile Software Craftsmanship – Robert C. Martin


     Tất cả ví dụ trong sách là của Java, nhưng phần hướng dẫn có thể được áp dụng trong hầu hết các trường hợp, ngôn ngữ khác nhau.”
“Chương khó nhất và cũng giá trị nhất là ‘Refactoring of the class SerialDate’ (từ thư viện JCommon.) Nó là một ví dụ thực tế và tác giả đã mô tả từng bước refactoring để người đọc dễ nắm bắt hơn. Chương cuối cùng, ‘Smells và Heuristics’ là 1 kết thúc tốt trình nêu nhiều vấn đề tiềm năng và đề xuất cách giải quyết /giảm thiểu chúng.”

6. Don’t Make Me Think: A Common Sense Approach to Web Usability

     Một cuốn sách rất hay về thiết kế giao diện. Sách viết về usability (tính dễ sử dụng của phần mềm). Tác giả Steve Krug đã bao quát mọi khái niệm quan trọng về usability trong cuốn sách này, và ông làm công việc đó rất tốt. Sách không dạy các bạn thiết kế giao diện sao cho đẹp, nhưng nó dạy chúng ta cách thiết kế đơn giản, dễ sử dụng, không gây khó khăn cho người dùng. Đọc cuốn sách này thì rất vui. Nếu bạn chọn đọc chỉ một cuốn sách về usability, thì hãy lựa chọn cuốn này. Nó chứa rất nhiều thông tin tuyệt vời, và hình thức trình bày thì ngắn gọn súc tích, dễ áp dụng theo. Nó phù hợp với bất kỳ độc giả nào: 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ý v.v…
     Nó đưa ra một qui tắc rất đơn giản khi thiết kế giao diện: người dùng rất lười, hãy thiết kế sao cho người dùng ít phải suy nghĩ nhất. Và về sự đắt giá của giao diện người dùng, chỉ cần thay đổi 1 button có thể tăng doanh thu lên đến 500 000$ trong 1 năm!

7. Core HTML5 Canvas: Graphics, Animation, and Game Development (Core Series) –David Geary


Flash hiện đang chết - và bây giờ là thời đại của HTML5??? 
     Như chúng ta đều biết thì dạo này Flash rất hay bị tấn công, lỗi và bị chặn trên đa số trình duyệt, các ông lớn là Facebook và Google cũng đang dần chuyển sang HTML5, vậy dại gì mà chúng ta không thử tìm hiểu 1 chút về các lợi ích của chúng?
     “Cuốn sách này cực kỳ chi tiết và hướng dẫn của tác giả cũng đúng vào những điều trọng tâm nhất.” Chương 1 bao gồm các yếu tố cần thiết của canvas element như event handling, sử dụng HTML element trong canvas element, in canvas. Chương 2 giới thiệu cách vẽ canvas. David bắt đầu với những điều cơ bản như vẽ hình học căn bản và từng bước nâng kỹ thuật lên bằng cách sử dụng bezier curves, path manipulation, và transformations.”
     “David hướng dẫn người đọc qua nhiều ví dụ bằng hình ảnh, video, animation, sprites, game physics và mobile development. Code trong ví dụ của ông rõ ràng và được trình bày theo thứ tự với nhiều màu sắc khác nhau… Mặc dù Core HTML 5 Canvas tập trung vào game development nhưng mọi thông tin trong sách đều có ích cho mọi application developer.”

8. C++ GUI Programming With Qt 3 – Jasmin Blanchette và Mark Summerfield


     “6 chương đầu tiên cung cấp một nền tảng rất vững chắc về Qt. Các chương nổi bật gồm: chương 1 cung cấp kiến thức nền tảng vững chắc về Qt, chương 3 nói về modeless application development với nhiều ví dụ dễ hiểu, và chương 6 nói về layout management.”
    “Qt là 1 application framework đòi hỏi bạn phải đối mặt với vấn đề về files, sockets, và network programming. Quyển sách này giúp bạn giải quyết tất cả những vấn đề đó.”

9. JavaScript: The Good Parts – Douglas Crockford

     “Đây là quyển sách dành cho người có nhiều năm kinh nghiệm lập trình, muốn tìm hiểu cách tốt nhất để tạo và sử dụng objects, arrays, types, v.v… Kinh nghiệm của Crockford về JavaScript hướng dẫn tôi nhiều kỹ thuật, style coding thực tế.”
     “Quyển sách mỏng nhưng cực kỳ đầy đủ thông tin với nhiều lời khuyên hữu ích đến từ vô số developer có kinh nghiệm lập trình JavaScript trong nhiều năm. Tôi đồng ý và không đồng ý với Crockford ở một vài quan điểm, nhưng những quan điểm của ông đáng để đọc và suy ngẫm rồi rút ra ý kiến của riêng mình.“

10. The Design of Everyday Things - Donald A Norman

     Công việc phát triển phần mềm có thể làm bạn nản lòng đến mức khó tin, bởi vì có quá nhiều thứ có thể trở nên sai sót. Có rất nhiều thứ chúng ta làm là để phòng thủ: cố gắng đoán trước điều gì sẽ trở nên sai trước khi nó xảy ra. Nó là nguyên nhân làm bạn kiệt sức về tinh thần, và thậm chí có thể biểu lộ bản thân theo một số cách khá tiêu cực. Đôi khi tôi mô tả công việc này với những người không chuyên về kỹ thuật như thể tôi đang tạo ra một cái đồng hồ với hàng ngàn chi tiết nhỏ, tất cả chúng có thể hỏng một cách ngẫu nhiên vì những kích thích nhỏ nhất.



Sau 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 và 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 những framework, công cụ và các API mới.”
Chào các bạn và chúc các bạn học tốt! 


Post a Comment

Nếu link nào lỗi các bạn cứ cmt hoặc liên hệ trực tiếp qua facebook mình fix nhé

[facebook][blogger]

Contact Form

Name

Email *

Message *

Powered by Blogger.
Javascript DisablePlease Enable Javascript To See All Widget