Nhiều lập trình viên không chịu đọc sách — nhưng bạn đừng giống họ

Bài viết được dịch từ blog Coding Horror

Một trong những đề tài trung tâm của stackoverflow.com đó là nhiều nhà phát triển phần mềm không còn học lập trình từ những cuốn sách nữa, như Joel đã đề cập:

Các lập trình viên ngày nay dường như không còn đọc sách nữa. Thị trường sách về các chủ đề lập trình thì quá nhỏ khi đem so sánh với số lượng các lập trình viên đang làm việc.

Joel cũng đã nói rõ ý kiến tương tự vào năm 2004 trong một bài viết có tên là The Shlemiel Way of Software:

Phần lớn mọi người vẫn không chịu đọc. Hoặc viết. Phần lớn các lập trình viên không chịu đọc các cuốn sách về phát triển phần mềm, họ cũng không chịu đọc các trang web về phát triển phần mềm, họ thậm chí còn không đọc cả các trang như Slashdot.

Là một lập trình viên thì tôi có nên thường xuyên đọc sách?Là một lập trình viên thì tôi có nên thường xuyên đọc sách?


Nếu ngày nay các lập trình viên không học từ các cuốn sách, thì làm thế nào để họ học lập trình được? Họ làm việc này theo cách đã lỗi thời: là cứ việc xắn tay áo của họ lên và hùng hục viết code – trong khi tìm kiếm giải pháp cho vấn đề họ đang gặp phải trên internet trong một cửa sổ thứ hai. Internet đã làm cho những cuốn sách lập trình trở nên lỗi thời. Nó thì nhanh hơn, hiệu quả hơn, hay chỉ đơn giản là thông minh hơn để tìm được thông tin về lập trình bạn muốn trên môi trường trực tuyến. Tôi tin vào kinh nghiệm của Doug McCune, khi anh ta nêu ra một số lý do khá điển hình trong bài viết Lý Do Tại Sao Tôi Không Đọc Sách.

Tôi liệt kê ra đây một phần của những chỉ trích gay gắt đối với những vấn đề trong ngành xuất bản sách kỹ thuật của chúng ta:

  • Hầu hết các cuốn sách về lập trình đều rất cùi bắp. Điều kiện để trở thành một tác giả viết sách, thì tôi có thể nói là gần như không tồn tại. Với sự hỗn loạn của ngành xuất bản sách thì người ta có thể xem rằng nó cũng chả tốt đẹp gì hơn cái mà bạn tìm thấy trên môi trường hoang dã của internet. Có hàng trăm cuốn sách về lập trình được xuất bản mỗi năm, và có lẽ chỉ có từ 2 đến 3 cuốn trong số đó là có giá trị thực sự để bạn đầu tư thời gian vào đọc.
  • Các cuốn sách lập trình giờ đây được bán theo cân nặng (kiểu bán ve chai), chứ không bởi giá trị của nó. Dường như có một mối quan hệ nghịch lý giữa độ dày của một cuốn sách và chất lượng của nó. Cuốn sách càng dày, thì càng có ít thông tin hữu ích được chứa trong đó. Liệu đó có phải là đặc điểm của những cuốn sách khổng lồ dạng tham khảo toàn tập? Bạn có tìm được bất cứ thứ gì ở trong đó không, hay là toàn những thứ vớ vẩn?
  • Những cuốn sách lập trình đa số là kiểu “mì ăn liền” nhắm đến đối tượng lập trình viên mới vào nghề. Tôi không có ý chống lại những người mới tham gia vào lĩnh vực lập trình. Nhưng tôi tiếp tục tin rằng vô số cuốn sách dạng “Học [bổ sung ngôn ngữ lập trình vào đây] trong 24 giờ!” đang làm hại nghề nghiệp của chúng ta. Việc cứ chăm chăm vào các giải pháp ăn liền và nhanh nhất, dễ dàng nhất có thể thì sẽ dẫn những người mới bắt đầu vào một con đường sai lầm – hoặc tôi thích gọi nó là, “PHP”. Tôi đùa đấy! Tôi nói giỡn chút thôi!
  • Sách lập trình mà cứ như là sách báo khiêu dâm vậy. Nhiều người cứ sưu tập một đống sách dày cộp, gồm rất nhiều các cuốn sách về lập trình trông có vẻ quan trọng trên giá sách, phần lớn là chưa đọc, và hy vọng bằng cách nào đó nó sẽ khiến bạn trở thành một lập trình viên giỏi hơn. Như David Poole một lần trước đây đã viết cho tôi trong email rằng, “Tôi sẽ chẳng bao giờ làm điều đó trong thế giới thực”, nó giống như là một đống sách lập trình với chủ đề khiêu dâm vậy. Đấy là lý do tại sao tôi đã cân nhắc, và từ chối mua cuốn sách “Art of Computer Programming” của tác giả Knuth. Hãy mua những cuốn sách về thực hành để bạn sẽ thực sự đọc, và điều quan trọng hơn là chuyển nó vào hành động.

Là một tác giả viết sách, tôi cũng cảm thấy tội lỗi. Tôi là đồng tác giả của một cuốn sách lập trình, và tôi vẫn không nghĩ rằng bạn nên mua nó. Tôi không nói điều này với mục đích nói ngược để dụ bạn mua sách của tôi. Ý tôi là cuốn sách đó thì tương đối bình thường. Nó không phải là một cuốn sách tồi theo bất kỳ hình thức nào. Tôi luôn có sự tôn trọng rất lớn dành cho những người đồng tác giả kính mến của mình. Nhưng những thông tin tương tự trong cuốn sách thì bạn có thể truy cập ở nhiều nơi trên web. Việc gom tất cả vào trong một cuốn sách như vậy thì cuối cùng chỉ là một việc tốn công mất sức.

Internet chắc chắn đã đẩy nhanh sự thoái trào của những cuốn sách lập trình, nhưng có một vài bằng chứng rằng, thậm chí trước thời có internet thì các lập trình viên cũng không đọc nhiều sách về lập trình. Tôi đã khá ngạc nhiên khi đọc được đoạn sau đây trong cuốn sách nổi tiếng Code Complete:

Nếu bạn đang đọc cuốn sách này thì bạn đang học nhiều hơn hầu hết mọi người trong ngành công nghiệp phần mềm, bởi vì hầu hết các lập trình viên đọc ít hơn một cuốn sách mỗi năm (tác giả DeMarco và Lister 1999). Việc đọc một chút sẽ giúp bạn tiến một bước dài về phía trước trong sự nghiệp của mình. Nếu bạn đọc thậm chí chỉ một cuốn sách lập trình chất lượng mỗi hai tháng, hay xấp xỉ 35 trang sách một tuần, thì bạn sẽ sớm có một chỗ đứng vững chắc trong ngành công nghiệp này và khiến bạn nổi trội hơn so với đám đồng nghiệp xung quanh.

Tôi tin rằng đoạn trích đó cũng có trong phiên bản đầu tiên của cuốn sách Code Complete vào năm 1993, nhưng tôi không còn giữ một bản copy của nó để xác nhận lại điều đó. Qua một chút tìm kiếm thì tôi đã khám phá ra một đoạn của Steve McConnell được trích trong cuốn sách Peopleware của hai tác giả DeMarco và Lister như sau:

Thống kê về việc đọc sách làm cho chúng ta vô cùng nản lòng: Các nhà phát triển phần mềm trung bình, thường không sở hữu một cuốn sách nào về chủ đề mà anh ta hoặc cô ta đang làm việc, và chưa bao giờ đọc một cuốn nào cả. Thực tế đó làm kinh hãi bất kỳ ai quan tâm đến chất lượng công việc trong lĩnh vực này; và cho những ai đang viết sách như chúng tôi, đó thực sự là một tấn bi kịch.

Tôi đã khổ tâm lẫn dằn vặt rất nhiều khi đọc được những lời bình luận trên mạng xã hội Reddit và biết được rằng mọi người đang hiểu tuyên bố sứ mệnh về “đứa con” của tôi là stackoverflow.com như là một sự phủ nhận những cuốn sách lập trình. Có nhiều cảm xúc trái ngược trong tôi về thị trường sách lập trình hiện nay, tôi yêu các cuốn sách lập trình! Mỗi blog mà tôi tạo ra đều dựa trên khái niệm từ danh sách những cuốn sách nên đọc mà tôi đã giới thiệu đến các lập trình viên. Nhiều bài viết trên blog này là tôi đang cố gắng giải thích theo cách của mình về các khái niệm quan trọng được đề cập từ lâu ở trong các cuốn sách lập trình kinh điển đó.

Làm thế nào để tôi có thể dung hòa những điều tưởng chừng như mâu thuẫn đó, tôi nên yêu hay nên ghét sự biến động này? Bạn biết đấy, có những cuốn sách lập trình, và cũng có những cuốn sách lập trình. Những cuốn sách lập trình tốt nhất là những cuốn sách bất tử. Chúng vượt quá việc lựa chọn ngôn ngữ, IDE, hoặc nền tảng nào đó. Chúng không giải thích cho câu hỏi như thế nào, mà giải đáp cho câu hỏi tại sao. Nếu bạn cảm thấy bị thôi thúc để dọn bớt giá sách của mình cứ mỗi 5 năm, thì tin tôi đi, bạn đang mua nhầm phải những cuốn sách lập trình tồi rồi đó.

Tôi sẽ không bán kệ sách lập trình của mình với bất cứ giá nào. Tôi tham khảo chúng hầu như mọi lúc mọi nơi. Thực ra, tôi đã tham khảo nó hai lần trong khi viết mỗi bài trên blog này.

Những cuốn sách hay dành cho lập trình viên.Tôi sẽ không giải thích thêm về sự quan trọng của danh sách những cuốn sách mà tôi đã đề nghị bạn nên đọc, cũng như tôi luôn giữ gìn nó như một niềm kiêu hãnh trong nhiều năm qua.

(Cập nhật: Một người bạn tên là Tim Spalding tốt bụng đã tạo một tài khoản thay mặt cho tôi trên trang LibraryThing – và các thành viên ở đó đã liệt kê tất cả các cuốn sách có trong bức hình về kệ sách của tôi. Thật là ấn tượng, và khá tuyệt!)

Nhưng tôi cũng xin nói rõ là: top 5 cuốn sách lập trình của mình mà tôi nghĩ mọi lập trình viên đang làm việc nên sở hữu – và đọc. Những cuốn sách này là hạt giống để làm phong phú thêm cả lý thuyết lẫn thực tiễn, từ năm này sang năm khác, bất kể là tôi đang làm về dạng lập trình nào. Mỗi lần đọc thì chúng càng mang lại nhiều giá trị sâu sắc hơn và nhiều sự tinh tế của kỹ nghệ phần mềm đến với tôi, mặc dù đã lăn lộn nhiều năm kinh nghiệm trong nghề này. Nếu bạn vẫn chưa đọc những cuốn sách này, thì bạn đang đang còn chờ đợi điều chi?

Code Complete 2Code Complete 2 Don’t Make Me ThinkDon't Make Me Think
Peopleware   Peopleware Pragmatic ProgrammerPragmatic Programmer
Facts and FallaciesFacts and Fallacies

Mục đích lớn nhất của tôi là biến stackoverflow.com như là một phần bổ sung cho những cuốn sách lập trình kinh điển và bất tử nói trên. Không có cách thức, hình dạng hay khuôn mẫu nào có thể thay thế cho chúng được cả.

Một mặt khác, nếu bạn không may lại là tác giả của cuốn sách “Perl for Dummies”, thì hãy ngoảnh lại nhìn phía sau lưng mình, bởi vì chúng tôi rõ ràng đang chĩa súng về phía bạn đấy anh bạn ạ!

Các bài viết liên quan:

Về tác giả bài viết:

Jeff_atwood_coding_horrorJeff 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, CA. Anh là một kỹ sư phần mềm chuyên về công nghệ Microsoft .NET, và là một blogger nổi tiếng trong cộng đồng công nghệ với blog Coding Horror, anh là 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 và cũng là đồng sáng lập của Stack ExchangeDiscourse.

Advertisements

56 comments on “Nhiều lập trình viên không chịu đọc sách — nhưng bạn đừng giống họ

  1. 1. Bị ép buộc phải đọc, nên thành ra cũng quen.
    2. Mình hay lên it-ebooks.info để tìm quyển nào hay, xong in ra đọc, không biết có được tính là sách không 😀 Chắc 5q/năm, chủ yếu là theo chủ đề mình đang học do đang còn là sinh viên.

  2. 1. Đọc sách tiếng anh kiểu gì cũng phải có google translate bên hoặc không thì từ điển, vậy nên đọc không tiếp thu được nhiều
    2. Sách thì mình đọc cũng nhiều nhưng hầu như là đọc nửa chừng, không có đọc hết

  3. 1. Lúc đầu đọc thì cũng khó khăn, đọc riết rồi cũng quen
    2. Một năm đọc khoảng 1 đến 2 cuốn, ngoài ra còn đọc một số bài báo ngắn hoặc một số tutorial hay trên các trang như codeproject.com, asp.net,…Mình sẽ thử tìm và đọc 5 cuốn sách ở trên.

    Cảm ơn bài viết rất hay.

  4. – Ban đầu thì khó khăn lắm anh, vừa dịch vừa đọc, rồi có những đoạn không dịch được phải lên mạng nhờ mấy tiền bối khác 😀
    + Bây giờ thì có đỡ hơn. 😀
    – Mỗi năm mình chỉ đọc 1-3 cuốn, nhưng ít khi đọc hết, chỉ tìm những chương thấy thích thôi :D.

    Anh có kinh nghiệm nào để đọc sách lập trình TA thì chia sẻ cho mình với.

    • trunglee1612, cảm ơn bạn đã trả lời câu hỏi nhé!

      Ai cũng vậy thôi, vì tiếng Anh đâu phải là tiếng mẹ đẻ của chúng ta phải ko, trước thì thấy khó, sau đó thì quen dần. Một số kinh nghiệm mà mình thấy có hiệu quả là:

      – Tìm những cuốn sách hay về chủ đề mình đang cần
      – Đọc những chương đang cần thôi (việc đọc từ đầu đến cuối ko hiệu quả lắm).
      – Có nhiều cuốn phải đọc nhiều lần mới hiểu hết được (có lúc phải có thêm kinh nghiệm thì đọc mới hiểu).
      – Ngày nào cũng phải đọc (ko cần nhiều, nhưng mà phải đều đặn).

      Mình thấy học tiếng Anh cũng giống như mình leo dốc vậy, nếu mình dừng lại thì nó lại “tụt xuống”, có lẽ phải học cả đời? 🙂

      Thân

  5. 1/ Cũng không hẳn là khó, mà cái em thấy khó nhất đó chính là tâm lý không ổn định khi đọc, lười dò từ, lười dịch… đại loại thế. Tóm lại chỉ cần chú tâm thì đọc sách tiếng Anh đôi khi còn dễ hơn tiếng Việt, sách tiếng Việt viết rất ẩu và đa số theo kiểu mì ăn liền, chú trọng bề ngoài mà không nêu rõ bản chất bên trong, chỉ quan tâm “how” chứ ít nói “why”.
    2/ Khoảng dưới 10 quyển, dĩ nhiên không đọc hết một quyển nào cả mà chủ yếu dùng làm công cụ tra cứu là chính. Em thực sự chưa tìm được một quyển sách nào phù hợp để dành tâm huyết đọc nó, nào là code với code, như em nói ở trên, chỉ có “how” nhưng ít có “why”.

    • Quách Tân, “sách tiếng Anh đôi khi còn dễ hơn tiếng Việt, sách tiếng Việt viết rất ẩu và đa số theo kiểu mì ăn liền, chú trọng bề ngoài mà không nêu rõ bản chất bên trong, chỉ quan tâm “how” chứ ít nói “why”.”

      Cảm ơn bình luận rất hay của bạn nhé! 🙂

  6. 1. Kho khan khi doc sach tieng Anh vi 1 phan ton nhieu thoi gian de hieu, phan khac cung do ko biet nen doc cuon nao: vi may cuon em doc tim tren Internet ra nhanh hon.
    2. Moi nam thi e doc qua 1-2 cuon ve chu de minh dang lam, chi tra cuu phan lien quan chu e ko doc het cuon sach.

    Cam on a vi bai viet nay. E se bat dau lai voi tung cuon trong 5 cuon nay. 🙂

  7. 1. Khó! Lần đầu tiên phải đọc những cuốn như “Beginning game programming”, “Game Programming for dummies” thật sự như ác mộng quá nhiều từ mới cũng như thuật ngữ mới trong ngành lập trình game. Lúc nào đọc sách cũng phải có 1 cuốn từ điển Anh-Việt và 1 cuốn từ điển VIệt-Anh cho việc chuyển suy nghĩ thành từ khóa tiếng Anh để google.
    2. Thật là đáng buồn cho bản thân khi thời sinh viên hoặc mới vào ngành trung bình đọc 3-4 cuốn về chuyên ngành nhưng hiện tại chỉ còn đọc Stackoverflow, blog và forum. Muốn kiếm nhưng cuốn sách hay về framework/library của mình nhưng đa phần là kiếm không ra link down hoặc ở 1 bản khá cũ và đôi khi down về 1 cuốn sách với nội dung quá cơ bản.

    Cảm ơn bài viết, tôi có thể tham khảo thêm nhiều cuốn sách về lập trình. Thực ra tôi làm về lập trình game nhưng rất muốn áp dụng nhiều pattern, tư duy mới về kiến trúc vào sản phẩm hơn là việc scripting cho dự án.
    http://gameprogrammingpatterns.com -> là 1 trang web hay 1 ebook online-version nói về pattern nhưng tôi đang tìm kiếm nhiều hơn những thông tin như thế này.

  8. Mình thường đọc khoảng 7-8 quyển 1 năm, nhưng không phải quyển nào cũng đọc hết. Lâu lâu quên gì thì mở ra đọc lại. Mình nghĩ kết hợp làm+học online 1 số course+đọc thì sẽ hiệu quả hơn.

    ps: không biết tác giả mà vinacode muốn làm cùng ngày xưa là ai vậy ? :d

    • Ngọc Tân Đỗ, bạn đọc cũng năng suất nhỉ 🙂 Mình thấy nhiều người đi làm rồi cứ gắn với việc công ty nên nhiều khi còn lại thời gian cũng rất ít.

      Cách “kết hợp làm+học online 1 số course+đọc” này rất hay.

      Ah, vị tác giả đó có tên là K 😉

      • chắc là P.H Khang phải ko? 😀

        Mình hay học trên Udacity+Coursera. Thấy ban đầu học hiệu quả hơn , nhưng riết rồi thì phải đọc thêm lại mới hiểu sâu được. Có thời điểm mình học 2-3 course cùng 1 lúc nhưng ko kham nổi nên bây h chỉ học 1 course xong mới học course khác :d Mong là về sau vẫn bố trí được time để học thêm. Hy vọng Vinacode sẽ tranh thủ làm 1 bài review về coursera+ udacity cho bạn đọc 🙂

        Keep up your good job!

      • Ngọc Tân Đỗ, cảm ơn bạn đã luôn ủng hộ và đồng hành cùng blog Vinacode nhé. Mình sẽ sắp xếp thời gian để làm một bài review về Coursera+ Udacity trong thời gian tới. 🙂

    • Hoàng Lê, cuốn sách Code Complete 2 thì không riêng biệt về một ngôn ngữ hoặc công nghệ nào cả, mà là về những nguyên lý trong phát triển phần mềm nói chung. Bởi vậy nó chỉ có những đoạn code sample nhỏ để minh họa thôi bạn. 🙂

  9. 1. Không vấn đề gì khi đọc sách tiếng anh, thích nữa là đằng khác ( vấn đề là không bao giờ đọc sách tiếng việt )
    2. Số lượng cực nhiều, 2 năm qua bắt đầu từ khi ra trường mình photo hàng chục cuốn, và những cuốn không in ra mà đọc bằng ipad.

    Hoàn toàn đồng ý với tác giả Code Complete rằng “Việc đọc một chút sẽ giúp bạn tiến một bước dài về phía trước trong sự nghiệp của mình.”
    Có thể Tutorial, các video sẽ giúp mình thấy được kết quả trước mắt, có sản phẩm ngay lập tức. Nhưng việc đọc sách, các blogs, articles giúp mình định hình được kiến thức nền tảng vững chắc, và có thể tiến lên được những bậc cao hơn của nghề.

  10. Lập trình viên không đọc sách, nhất là sách giấy vì nhiều lý do:
    – Không có thời gian, overtime rất nhiều làm sao mà có thời gian đọc
    – Sách chất lượng không có, chất lượng thấp
    – Sách không đúng nội dung quan tâm
    – Đa số sách lỗi thời quá nhanh
    – Cần học gì mới thì đã có những khóa trainning và tài liệu trong giới CNTT toàn là tài liệu số

  11. Một năm khoảng 3 cuốn, toàn sách TA vì:
    – Luôn cập nhật kiến thức mới nhất
    – Nguyên văn (sách dịch thường không sát nghĩa)
    – Trình độ, cách giải quyết vấn đề hơn hẳn sách TV cùng chủ đề
    (phần lớn của Oreilly’s)

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s