Slashdot Mirror


Ask Slashdot: What Should Every Programmer Read?

An anonymous reader writes "There's a blog post floating around right now listing articles every programmer should read. I'm curious what articles, books, etc., Slashdot readers would add to this list. Should The Art of Computer Programming, Design Patterns, or Structure and Interpretation of Computer Programs be on the list? What about The Mythical Man-Month, or similar works that are about concepts relating to programming? Is there any code that every programmer should take a look at? Obviously, the nature of this question precludes articles about the nitty-gritty of particular languages, but I'm sure a lot of people would be interested in those, too. So if you can think of a few articles that every C++ programmer (or Perl, or Haskell, or whatever) should know, post those too."

62 of 352 comments (clear)

  1. The Joy of C by Anonymous Coward · · Score: 4, Insightful

    It's rather out of date but "The Joy of C" was my first programming book and I attest its style to easing me in to the development mindset.

    1. Re:The Joy of C by Anonymous Coward · · Score: 4, Funny

      I've read both, and I still don't understand how to insert pointers into doubly linked lists.

  2. The story of Mel by quietwalker · · Score: 5, Interesting
  3. Books to read by Dionysus · · Score: 5, Informative

    Clean Code by Robert C. Martin, Working Effectively with legacy code by Michael C. Feathers, Refactoring by Fowler, Design Patterns by the gang of four. If you are a C++ programmer, anything by Sutter or Meyers.

    --
    Je ne parle pas francais.
    1. Re:Books to read by radtea · · Score: 2

      Excellent suggestions all. I would add:

      1) "Software Failure: Management Failure" by Stephen Flowers (somewhat dated, but an excellent collection of case studies of failed projects... technologies change but the lessons learned remain relevant.)

      2) "Rapid Development" by Myers. The chapter on estimation alone is worth the price.

      --
      Blasphemy is a human right. Blasphemophobia kills.
    2. Re:Books to read by AuMatar · · Score: 4, Insightful

      The problem with that book is that too many people read it the wrong way. Instead of using it as a language to describe design, they attempt to find ways to force their code into patterns or to add patterns because they think they should use them. The result is worse code than if they had never read it. This is especially true of those who read the book before they've seen enough code to understand design. It should be read, but only at the proper time and in the proper way.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    3. Re:Books to read by narcc · · Score: 2

      I can't recommend reading it. That would be unethical.

      However, it is useful for leveling furniture and is an excellent source of kindling. So I guess it's not all bad.

    4. Re:Books to read by MouseTheLuckyDog · · Score: 2

      If you're doing C++ everything by Meyers.

    5. Re:Books to read by Anonymous Coward · · Score: 2, Informative

      Unfortunately 99% of the /. crowd falls into the "cowboy coder" bucket and they'll piss and moan about those horrid "design patterns" because every line of code they write is a beautiful and unique snowflake.

      Look, anyone who studies software architecture and does their due diligence on design patterns will probably jump balls-deep into a few projects and try to use all of the cool stuff they've learned. Then they'll realize that it was overkill, they'll start fresh, and incorporate the patterns as they emerge from the code rather than trying to force the code into those patterns from the start.

      It's no different from any other type of learning. The theory is easy; the practical application is hard and takes experience to get right.

    6. Re:Books to read by cfulton · · Score: 2

      Well yeah. But that is not a problem with the book exactly. The problem permeates the software development space in many other ways and the problem is...Many employers and many in the general public think that a weekend with the gang of four, Java in a nutshell and a complete lack of social skills are the definition of a complete programmer. Welders get more training and mentoring that the average programmer. Employers simply point to a goofy looking kid with bad motor skills and say get to it. Of course simply reading a book won't make you a good programmer. We need to develop apprenticeship and mentoring as standard models of how developers become REAL developers. As long a employers and the public equate bad social skills and the ability to type something that compiles with good developer we will have issues. It is not the patterns book that is the problem. It is in fact a very good book.

      --
      No sigs in BETA. Beta SUCKS.
  4. TFM by NIK282000 · · Score: 4, Funny

    Everybody should RTFM.

    --
    Dear aunt, let's set so double the killer delete select all
  5. Obviously... by fuzzyfuzzyfungus · · Score: 4, Funny

    An arbitrarily long strip of tape, divided into sections on which there appear symbols drawn from some finite alphabet. They should be able to work the rest out from that.

    1. Re:Obviously... by VortexCortex · · Score: 4, Funny

      They should be able to work the rest out from that.

      Actually, you can't make such a generalized determination. Surely some of them will halt.

    2. Re:Obviously... by fuzzyfuzzyfungus · · Score: 2

      They should be able to work the rest out from that.

      Actually, you can't make such a generalized determination. Surely some of them will halt.

      The ones that halt, you fire or reassign to the help desk. The number of halting systems tends to drop at that point. It's one of the poorly understood aspects of computability theory; but the empirical evidence is compelling.

  6. Code Complete by Anonymous Coward · · Score: 4, Informative

    Code Complete is the #1 thing every programmer should read.

    1. Re:Code Complete by Anonymous Coward · · Score: 2, Informative

      Code Complete 2nd Edition is the holy grail of programming books. Required reading for serious professionals.

  7. If you haven't read The Myythical Man-Month... by Troy+Baer · · Score: 4, Insightful

    ...you don't get to call yourself a "software engineer" or talk about others' software engineering practices.

    --
    "My life's work has been to prompt others... and be forgotten." --Cyrano de Bergerac
    1. Re:If you haven't read The Myythical Man-Month... by gweihir · · Score: 5, Informative

      Nonsense. The Mythical Man-Month is mostly about team-building, project management and a bit about software architecture. It has almost no software engineering content. Sure, it is a highly valuable source, but not a software-engineering one.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    2. Re:If you haven't read The Myythical Man-Month... by VortexCortex · · Score: 3, Interesting

      No need. The "Mythical Man Month" is merely a series of special cases of the law of diminishing returns and/or The Planning Fallacy.

      It's much more efficient to say: "Too many chiefs and not enough braves is bad, and it will always take longer than expected."

    3. Re:If you haven't read The Myythical Man-Month... by bobbied · · Score: 2

      ...you don't get to call yourself a "software engineer" or talk about others' software engineering practices.

      Excellent book, but the software engineer who is just writing code doesn't need it, in fact they might not want to if they don't have good managers. Now if you MANAGE a project or other software engineers, THEN you should read this book every few years.

      --
      "File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
    4. Re:If you haven't read The Myythical Man-Month... by Anonymous Coward · · Score: 2, Insightful

      Yeah, it's the Bible of software engineering: everyone quotes it, but no one has read it.

  8. Other Programmers Comments by Anonymous Coward · · Score: 3, Insightful

    They're there for a reason.

  9. K&R by ericloewe · · Score: 3, Insightful

    The C Programming Language, so they learn how to properly document their work.

    1. Re:K&R by bucket_brigade · · Score: 2

      Excellent arguments, I'm convinced.

  10. There are no things every programmer should read by gweihir · · Score: 3, Insightful

    Paradigms, styles, approaches are different. There is no "central" body of things that can capture this. Even absolute classics like "Goto considered harmful" can be misleading and counter-productive to read unless the reader can supply the right context. That said, every programmer should always work to understand his or her craft better and broaden their view. That includes reading about insights other people have had into the process.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  11. Text Encoding by Anonymous Coward · · Score: 2, Informative

    http://www.joelonsoftware.com/articles/Unicode.html

  12. Dilbert. by Anonymous Coward · · Score: 4, Insightful

    Dilbert.

  13. Two unexpected computer science books by bugnuts · · Score: 4, Insightful

    I'm gazing across my bookshelf full of O Reilly books, Knuth's series, TCP/IP Illustrated, and others... but the most important books are more mundane:

    Godel Escher Bach: an Eternal Golden Braid, and Alice in Wonderland

    Both of these books encompass the thinking and mindset which will make you a better programmer by planting the seed of logic, states, and recursion, and nourishing the hell out of it. It will massage the pathways to make someone actually want to be a programmer.

  14. The Fortran Coloring Book by davidwr · · Score: 4, Interesting

    I wish I'd read Roger Kaufman's book before I started programming. It would've helped a lot.

    Here's a few pages to get a taste of the style: http://www.cs.utsa.edu/~wagner...

    --
    Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
  15. It's simple by viperidaenz · · Score: 3, Insightful

    code.

  16. I thought we already knew the answer by roc97007 · · Score: 3, Insightful

    "The best book on programming for the layman is Alice in Wonderland, but that's because it's the best book on anything for the layman."

            - Alan Perlis, "Epigrams on Programming", ACM SIGPLAN Notices 17 (9), September 1982, pp. 7–13

    --
    Oliver's law of assumed responsibility: If you're seen fixing it, you will be blamed for breaking it.
  17. Answer to title by O('_')O_Bush · · Score: 3, Insightful

    Code. Lots and lots of code. Code from diverse sources, understanding the problems, understanding the solutions. Programming books/articles offer nice ideas, philosophies, anecdotes, whatever, but nothing will improve programming skill more than experience. Reading code, IMO, and at least for me, increases that experience much more than writing it or reading the meta about programming.

    --
    while(1) attack(People.Sandy);
  18. Books Ive recently read by petur · · Score: 2

    The Psychology of Computer Programming, by Weinberg. Its from 1971 but still relevant. It tackles the management aspect of working in a team, how to handle difficult people etc. Clean Code, a great book for those interested in adopting a better coding style. Are your routines longer than 5 lines? Wrestling With Bears , goes into details about how to mitigate risk, evaluate and prioritize requirements and keep your projects on track. Test Driven iOS Development. Cocoa Design Patterns (if your an iOS developer); it really helps to understand what is happening under the hood of the API. Software Engineering by Ian Sommerville, for those interested in design, architecture and large systems. Its a rather long and very traditional (not agile friendly), but its comprehensive and good. Someone already mentioned K&R, I'd add C++ by Bjarne Stroustrump. Agile and Iterative Development: A Manager's Guide. Its not really a "managers guide", but more of a "How can I be a good team player" with an introduction on XP/UP and Scrum kind of a guide. Highly recommented.

  19. A couple of classics by stargazer1sd · · Score: 2

    That's a good list of subject areas, and articles for technical areas, but if you're going to be an effective programmer, you need to venture out a bit. There are a couple of good books by Gerald Weinberg that will change the way you look at your profession. First is The Psychology of Computer Programming. It's a bit long in the tooth, but the lessons are still relevant. Same goes for Quality Software Management, Volume 1. Be warned, QSM, in particular, will make you dissatisfied with your managers.

    --
    Play it cool, play it cool, 50-50 fire and ice.
  20. Re:This by Anonymous Coward · · Score: 2, Insightful

    I'm sure I'm not alone. This type of "article" seems to come up every other week.

    What is a good read about programming?
    If I want to get into programming, which language should I start with?
    If I want to get my child into programming, where should I start?
    Should schools push teaching programming?
    Can I get a programming job with two semesters of classes done?
    I've programmed for my whole life, can I learn a new language?

    Isn't the rule of thumb for answers to headline questions to be "No"?

    Seriously. Make a roulette wheel, spin it, then type the language it falls on followed by "tutorial" into google and start following directions.

  21. Dale Carnegie by russotto · · Score: 3, Insightful

    "How to Win Friends and Influence People". Not for the advice; as a geek type you'll likely never be able to pull it off anyway. But in the spirit of knowing thy enemy; when the sales and marketing and pointy-haired businessmen try to manipulate you, you'll recognize the techniques and be able to put a source to them.

    1. Re:Dale Carnegie by clockwise_music · · Score: 3, Insightful

      ...when the sales and marketing and pointy-haired businessmen try to manipulate you

      You have entirely missed the point of the book. It is not about manipulation. It's about being genuine and being persuasive. They are different things.

      I definitely agree that it is good to know when and how someone is trying to persuade you something, and it's a very valuable skill to increase your communication skills.

      "as a geek type you'll likely never be able to pull it off anyway"

      Resigning yourself to having bad communication is not helpful - it is possible to vastly improve your communication skills, you can do it and you should learn how.

  22. The Design of Everyday Things by rmccoy · · Score: 2

    I see some good suggestions on how to code well but it's important to know how to produce human interfaces that are understandable, effective and even fun.

    For that, my favorite book is "The Design of Everyday Things." It's not about software design, it let's you see effective (and bad!) design all around you and will make you think about your own designs. The affordances, or clues, you provide on how things work without having to spell it out in documentation.

    Good programming is just the start. Good problem solving is the goal.

  23. If this is about articles, by Beck_Neard · · Score: 2

    Then I suggest every programmer read every single one of the posts on this site: http://prog21.dadgum.com/ . The author has a remarkably clear head about things and a very mature outlook on programming.

    --
    A fool and his hard drive are soon parted.
  24. Something with this title by YrWrstNtmr · · Score: 2

    "How to not fuck up"

    It hasn't been written yet, but it needs to be written.
    There are many that say 'how to do x'. But few/none that say 'How to not fuck up'.

  25. Strunk & White: The Elements of Style by RandCraw · · Score: 5, Interesting

    The best preparation for becoming a good programmer (or scientist or engineer) is to learn how to organize your thoughts and then address only what is necessary and sufficient to accomplish a given task.

    I know no book that teaches clarity of thought better than Strunk & White's "The Elements of Style". Clear writing and great coding share a common wellspring.

    1. Re:Strunk & White: The Elements of Style by GODISNOWHERE · · Score: 2

      Strunk & White were "grammatical incompetents," and The Elements of Style is considered by linguists to be a pretty awful book.

  26. Code Complete by Steve McConnell by Hangtime · · Score: 4, Informative

    My boss gave me this book when I started by my first job out of college. By far one of the best books on software development and construction out there. It is timeless and even though I no longer write code for a living, I refer back to it on many occasions still. You want a book to make a you a better programmer; you can't go wrong here.

  27. "Code Complete" by Steve McConnell by Anonymous Coward · · Score: 3, Informative

    Whereas other programming books are filled with conjecture and opinion ("I think this" or "I think that"), Steve McConnell went out and did the hard work of researching what actually works, then providing actual citations for everything he found. Following the guidelines and tactics in this book is like adding 10 years of experience to your programming skills. This book is a masterpiece in the field of programming.

    http://www.amazon.ca/Code-Complete-Steve-McConnell/dp/0735619670

  28. A Game of Thrones by jfdavis668 · · Score: 2, Funny

    Spoiler, everybody dies

  29. How about reading your code? by NemoinSpace · · Score: 5, Insightful

    After a year i go back and realize what a horrible programmer i am. It happens every year. But i'm getting better. I also spend a lot of time reading other people's code. I've found that if you are writing "new" code you haven't already seen in action, you just might wind up killing somone someday.

  30. Re:There are no things every programmer should rea by 140Mandak262Jamuna · · Score: 2

    Even absolute classics like "Goto considered harmful" can be misleading

    Only thing worse than GOTO statement is COMEFROM statement. Event driven programming is basically COMEFROM functions.

    --
    sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
  31. In other words... by SuperKendall · · Score: 5, Insightful

    Nonsense. The Mythical Man-Month is mostly about team-building, project management and a bit about software architecture

    In other words the mix of work for a programmer of every company I have been at.

    You think you came to write code? Ha Ha! Let me acquaint you with Mr Process.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  32. I highly recommend... by sootman · · Score: 2

    ... my upcoming book, "Quit Fucking Up Perfectly Good Software with Overly-'Designed', Non-User-Tested Bullshit, I'm Looking at You, Apple Mozilla Google Microsoft Adobe Slashdot and Certain People at My Company Who Shall Remain Nameless", in stores this fall.

    So far it's just the cover and then 168 pages of the title being repeated but I think I'll get it wrapped up pretty soon.

    --
    Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
  33. Peopleware: Productive Projects and Teams by NotSoHeavyD3 · · Score: 3, Insightful

    Mostly so if you ever go into management you'll have a clue, unlike the vast majority of managers. (Unfortunately after reading it you see just how much stupid stuff management does.)

    --
    Did you know 80 to 90% of the moderators on slashdot wouldn't recognize a troll even if one dragged them under a bridge.
  34. no, the ones like by Chirs · · Score: 2

    //it is okay if x overflows
    x++;

    or

    //bump the refcount so nobody can delete it while we're using it
    x++;

    1. Re:no, the ones like by ArcadeNut · · Score: 2

      First comment is still a little vague. Why is it ok to let it overflow?

      Second one is a good comment.

      --
      Visit the Arcade Restoration Workshop @ http://www.arcaderestoration.com
  35. Applied Cryptography by Bruce Schneier by simishag · · Score: 3, Insightful

    Applied Cryptography by Bruce Schneier. Really any and all of his books.

  36. C Programming Language, by K&R by PassMark · · Score: 2

    +1 for, The C Programming Language, by K&R
    (Brian W. Kernighan, Dennis M. Ritchie)

    Because if you have never programmed in C (or assembler) then you really don't know how a computer works.

  37. Lists and links of top Programming Books by Sits · · Score: 3, Informative

    This is one of those questions that's going to keep being asked... Perhaps one day I'll be fast enough to get a first post on this that people actually read...

    Link summary from last time:

    General comments

    • A few people have volumes of Knuth's Art of Programming on their shelves (but it's harder to find people who have read all of them).
    • One of the consultants who taught at my University said that the Mythical Man Month and Peopleware were good. I've read these too and can also recommended them (although they are more about managing programmers rather than programming per se). The consultant also recommended Design Patterns (although he said not to read the book cover to cover but rather to just be aware of them so you could refer to them later).
    • I've heard the "Dragon Book" (Compilers: Principles, Techniques, and Tools I think is the 2nd edition) being talked of favourably.
    • Many people seem to recommend reading Godel, Escher, Bach (I'd say it's about mathematical thinking)...

    I've noticed which book answers tend to fall a bunch of categories:

    • Books that talk about software engineering/management/teams.
    • Books that talk about programming languages.
    • Books that talk about Computer Science.
    • Books that improve your mathematical thinking.
    • Books that programmers like but aren't programming/maths at all.

    If you're going to ask someone "which book?" try limit the categories they should give you an answer for...

  38. Try by Ghjnut · · Score: 3, Informative

    The pragmatic programmer and code complete

    --
    MouseClass extends ScrollClass, which extends TabClass, which extends SidebarClass, which extends PowerClass, w
  39. Re:George Orwell by RDW · · Score: 2

    "Politics and the English Language", George Orwell.

    Mod this up!:

    https://www.mtholyoke.edu/acad...

    "A scrupulous writer, in every sentence that he writes, will ask himself at least four questions, thus: 1. What am I trying to say? 2. What words will express it? 3. What image or idiom will make it clearer? 4. Is this image fresh enough to have an effect? And he will probably ask himself two more: 1. Could I put it more shortly? 2. Have I said anything that is avoidably ugly? But you are not obliged to go to all this trouble. You can shirk it by simply throwing your mind open and letting the ready-made phrases come crowding in. They will construct your sentences for you -- even think your thoughts for you, to a certain extent -- and at need they will perform the important service of partially concealing your meaning even from yourself. It is at this point that the special connection between politics and the debasement of language becomes clear."

    His parody of a 'translation' of Ecclesiastes 9:11 into pretentious and imprecise modern jargon is priceless:

    "Now that I have made this catalogue of swindles and perversions, let me give another example of the kind of writing that they lead to. This time it must of its nature be an imaginary one. I am going to translate a passage of good English into modern English of the worst sort. Here is a well-known verse from Ecclesiastes:

            I returned and saw under the sun, that the race is not to the swift, nor the battle to the strong, neither yet bread to the wise, nor yet riches to men of understanding, nor yet favour to men of skill; but time and chance happeneth to them all.

    Here it is in modern English:

            Objective considerations of contemporary phenomena compel the conclusion that success or failure in competitive activities exhibits no tendency to be commensurate with innate capacity, but that a considerable element of the unpredictable must invariably be taken into account."

  40. C++ FQA (and ignore the downmods) by rmstar · · Score: 2, Informative

    If you're doing C++ everything by Meyers.

    If you are doing C++, you absolutely must read the Frequently Questioned Answers:

    "C++ is a general-purpose programming language, not necessarily suitable for your special purpose."

    It's a little (though not much) out of date, as it does not cover C++11. But the author has some comments on it, too.

    Obviously I am going to be modded down, but hey. Truth is truth.

  41. Re:The Bible by BasilBrush · · Score: 2

    As programmers need to have clear analytical thought, they'd be much better off reading The Blind Watchmaker or The God Delusion than The Bible.

  42. Re:The Bible by BasilBrush · · Score: 2

    I think you're mistaken about what the Bible means by "faith". It is not belief contrary to overwhelming or clear evidence. It's the willingness to take a risk that something is true, in cases where the evidence is ambiguous or mixed.

    Garden of eden? Noah's Ark with at least 2 examples of every land species? Bringing a dead person back to life? There's no ambiguous or mixed evidence. If you believe this stuff, it's blind faith. And it's the opposite of analytical thinking.

    I'm not aware of anywhere in the Bible where irrationality is endorsed.

    I think it's telling that I'm talking about analytical thinking, and you keep responding as if I said rationality.

    Anyhow, this off-topic thread is going nowhere.