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."

352 comments

  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: 0

      Joy of Sex was better. Both the book and getting laid.

    2. Re:The Joy of C by Nemesisghost · · Score: 1

      I still have my copy of "The Joy of C" & have lent it out to several people trying to learn C/C++. Great book.

    3. Re:The Joy of C by Anonymous Coward · · Score: 0

      The Joy of Sex is outdated and full of terrible advice. The Joy of Gay Sex is much better.

    4. Re:The Joy of C by jebblue · · Score: 1

      Peter van der Linden's Expert C Programming: Deep C Secrets is one that I'd recommend for sure. Also, Steven's Holtz's books on Assembly. I'd start with those in fact.

    5. 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.

    6. Re:The Joy of C by Anonymous Coward · · Score: 0

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

      You just need to start with head or tail, and follow the daisy chain until you come to the right position.

  2. The story of Mel by quietwalker · · Score: 5, Interesting
    1. Re:The story of Mel by go-nix.ca · · Score: 1

      Why not go whole-hog? http://www.catb.org/jargon/htm... I know I've spent hours rolling on the floor laughing and developing goosebumps reading that. And speaking of whole-hog: http://steve-parker.org/articl...

  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 turgid · · Score: 1

      The winner of this thread.

    2. Re:Books to read by sleekware · · Score: 1

      Design Patterns by the gang of four.

      Beat me to it! I second this...

    3. Re:Books to read by Jahf · · Score: 1

      Thanks for a good thread to the OP and reply from you :)

      I'm recently on disability and plan to use what time I can sit at a desk to be the back-end programmer for my wife's web site (she has a brick and mortar art gallery, so online presence is important but not a full time or even regular part time job). I spent a few years hacking Perl scripts up for web sites in the 90s but since then let what little I have self-taught rot in my brain. This subject is one I was ready to post, but in the vein of purely unpaid hobby work. It will be useful

      --
      It is more productive to voice thoughtful opinions (reply) than to judge (moderate) others.
    4. 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.
    5. 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?
    6. Re:Books to read by Anonymous Coward · · Score: 0

      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.

      Agreed.

      All too often I've seen patterns used by those who don't really understand what they're doing.

      They've got a hammer, and every damn thing they see looks like a nail.

    7. Re:Books to read by fermion · · Score: 1
      I would add an old book, Composite/Structured design. It is an old idea, but I have seen cases where people still have learned to keep data structures out of the code that operates on those data structures. If one is using a heavily OO development tool, this happens automatically. Of course, those who use such tool therefore never learn how to design so that the two are kept apart purposefully.

      Also if you are a C++ program, the original K&R C book is a good read of how to keep things simple.

      Both of these are short books, with a high ROI.

      --
      "She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
    8. 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.

    9. Re:Books to read by Anonymous Coward · · Score: 0

      I'd rather go for the collected writings of Alan Kay than for any of that stuff. Why go for small eye-openers when you can go for large ones? Only then go for the small ones once you can put them into proper context.

    10. Re:Books to read by Dionysus · · Score: 1

      Also if you are a C++ program, the original K&R C book is a good read of how to keep things simple.

      I agree on the K&R C book. Also would add The C++ Standard Library by Josuttis. Although I don't know how dated it is, since the version I have dealt with C++98 (or whatever was before C++0x. I'm not much of a C++ programmer these days). I also like Beautiful Code by Oram & Wilson (small essays from programmers about beautiful code they've seen/written in different languages). K&R C book has that too. If you're interested in history, I loved Go To by Steve Lohr and The Design and Evolution of C++ by Stroustrup.

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

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

    12. 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.

    13. Re: Books to read by cyber-vandal · · Score: 1

      And abandon their horribly over engineered code to some poor fucker while they head off to new shiny land.

    14. Re:Books to read by Anonymous Coward · · Score: 0

      I'd downvote the "Design Patterns" book, it tends to do more damage than good in the wrong hands (as other posts have also indicated). Seen too many people try to make all their code fit one of this patterns, which ends up in the good ole' round peg, square hole problem.

      Big thumbs up on "Working Effectively with legacy code" though, most useful programming book I've read. A very good way to understand *why* testing is the most important part of work (most of us already knew it, but gives a lot of confirmations on this we thing we know). It also helps you avoid despair when jumping into undocumented, untested code messes that we all jump into every few years during our careers.

    15. Re:Books to read by cheesybagel · · Score: 1

      If I see any more misuses of the Singleton pattern I will shoot someone. The Singleton pattern is the worst POS idea I have ever seen.

    16. Re:Books to read by DaveTaylor8308 · · Score: 1

      "Rapid Development" by Myers.

      Is that an actual book? Not showing up on Amazon.

    17. 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.
    18. Re:Books to read by Cederic · · Score: 1

      You've posted some genuine game-changers, that I'd agree are a fantastic way to step up from programming to software engineering.

      I'll throw in one more : The Pragmatic Programmer, by Hunt & Thomas.

    19. Re:Books to read by rochrist · · Score: 1

      That was a great book.

    20. Re:Books to read by Anonymous Coward · · Score: 0

      There's a C++11 revision of Josuttis's The C++ Standard Library, so it's not dated in the least (at least until C++14 arrives...)

    21. Re:Books to read by AuMatar · · Score: 1

      True, it's not a problem with the quality of the writing in the book, or of the information in it. It's a problem with it being over-advised to the wrong set of people. If you're an intermediate level of knowledge in architecture or design, it's a good book. If you're a rank beginner having done mostly work on other people's designs, it's going to screw you up. You need to have enough experience to be able to apply it in the right way. That's why I hesitate to put it on a must-read list: because most programmers don't need to read it. It's something that won't help you until a later point in your career than most of the other books on the list.

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

      Good point. Alan Kay is indeed a very clever fellow!

    23. Re:Books to read by oldCoder · · Score: 1

      Design patterns are very language-dependent. Many of the GoF patterns solve problems that only exist in C++.
      C++ has enough problems that thinking only within that box isn't good.

      --

      I18N == Intergalacticization
  4. TFM by NIK282000 · · Score: 4, Funny

    Everybody should RTFM.

    --
    Dear aunt, let's set so double the killer delete select all
    1. Re:TFM by Anonymous Coward · · Score: 0

      how? the spelling is horrific, the grammar atrocious, and the logic faulty.
      who doesn't like programming advice who can't program natural language.

      Despite being so conman and omnipresent, not every programmer have enough knowledge of Memory.

    2. Re:TFM by Rhymoid · · Score: 1

      More eyes on the manual means more criticism, which might lead to the manual being improved.

    3. Re:TFM by quickOnTheUptake · · Score: 1

      how? the spelling is horrific, the grammar atrocious, and the logic faulty. who doesn't like programming advice who can't program natural language.

      You should cut them a little slack; most natural language interpreters will parse anything by aggressively guessing how to correct typos and syntax errors (unless they support the -W or --pedantic flags). It makes it damned hard to debug.

      --
      Mod points: Guaranteed to remove your sense of humor.
      Side effects may include gullibility and temporary retardation
    4. Re:TFM by cwsumner · · Score: 1

      how? the spelling is horrific, the grammar atrocious, and the logic faulty. who doesn't like programming advice who can't program natural language.

      You should cut them a little slack; most natural language interpreters will parse anything by aggressively guessing how to correct typos and syntax errors (unless they support the -W or --pedantic flags). It makes it damned hard to debug.

      Bad writing slows down processing significantly, though. And that is -my- time they are wasting!

  5. True Names... and Other Dangers. by mfarah · · Score: 1

    No list is complete without Vernor Vinge's _True Names... and Other Dangers_. I don't care if it's a book, instead of an article, but still, it's required reading.

    --
    "Trust me - I know what I'm doing."
    - Sledge Hammer
    1. Re:True Names... and Other Dangers. by richardneish · · Score: 1

      Thanks for the recommendation, I will keep an eye out for that.

      I wish that more of Vernor Vinge's work was available as an ebook, since this is out of print and the only used copies I see on the web are in Australia or the USA, but I'm in the UK, so the shipping is more than the book.

    2. Re:True Names... and Other Dangers. by cwsumner · · Score: 1

      No list is complete without Vernor Vinge's _True Names... and Other Dangers_. I don't care if it's a book, instead of an article, but still, it's required reading.

      I second that! The world described is much more advanced, but we are getting into some of the same problems now.

  6. "How to Write a WINNING Resume" by JoeyRox · · Score: 1

    And "How to Write a KILLER LinkedIn Profile... And 18 Mistakes to Avoid", both by Brenda Bernstein.

  7. 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 Anonymous Coward · · Score: 1, Funny

      Hey, you won't know until you try!

    3. Re:Obviously... by Anonymous Coward · · Score: 1

      Well then, just write a program to decide which will halt and which won't.

    4. Re:Obviously... by Anonymous Coward · · Score: 0

      Which ones?

    5. 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.

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

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

    1. Re:Code Complete by gweihir · · Score: 1

      Never read it, and decided to better stay away after perusing reviews.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    2. 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.

    3. Re:Code Complete by Anonymous Coward · · Score: 0

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

      What a bore.

    4. Re:Code Complete by invid · · Score: 1

      Agreed. I recommend it to all our new programmers.

      --
      The Moore-Murphy Law: The number of things that will go wrong will double every 2 years.
    5. Re:Code Complete by BasilBrush · · Score: 1

      I read Code Complete in the 90s after 10+ years of coding. At that stage it was the best book on coding I'd ever read, covering material that no one else had written about. Unfortunately I leant my copy out to someone now forgotten who didn't return it, so I can't check it out to see if it's stood the test of time 20 years on.

      It would be a mistake to avoid it, though it may be that in the intervening years there are other books that have covered the topics and are more up to date.

    6. Re:Code Complete by vix86 · · Score: 1

      I read Code Complete cover to cover after having been a hobbiest programmer for 5-7 years. Some of the many mistakes I'd made over time were mentioned and left me nodding my head in acknowledgement and gave me the ground to realize that probably a lot of the other wisdom distilled in the pages was worth heeding as well. Code Complete made me realize how bad my coding practices were. Its a book I recommend to everyone now.

  9. George Orwell by Anonymous Coward · · Score: 1

    "Politics and the English Language", George Orwell.

    Should be required reading for everyone not just programmers.

    1. Re:George Orwell by Anonymous Coward · · Score: 1

      A pile of overgeneralizations, hyperbole, and flat-out falsehoods. It has done a great deal of harm.

    2. Re:George Orwell by Anonymous Coward · · Score: 0

      So, a Republican playbook. Gotcha.

      Captcha: annoyed

    3. 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."

    4. Re:George Orwell by cwsumner · · Score: 1

      "Politics and the English Language", George Orwell.

      ...
              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."

      That sounds clear to me... Maybe you are reading it in the wrong dialect? 8-)

  10. 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 Anonymous Coward · · Score: 0

      Noo, I havven'tt readd thatt onee...

    2. 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.
    3. Re:If you haven't read The Myythical Man-Month... by Anonymous Coward · · Score: 1

      I've called myself a software engineer and haven't read it.

    4. 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."

    5. 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
    6. Re:If you haven't read The Myythical Man-Month... by swilly · · Score: 1

      If you you do is write code, then you aren't a Software Engineer, you are a Programmer. An engineer is involved in requirements, specifications, design, and testing. On a good team, the experienced Software Engineers should also be consulted for process improvement, QA, and DevOps.

    7. 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. Re:If you haven't read The Myythical Man-Month... by narcc · · Score: 1

      Can we stop using the term "engineer"? It's not only meaningless, it does a serious disservice to actual engineers.

    9. Re:If you haven't read The Myythical Man-Month... by Anonymous Coward · · Score: 0

      There's nothing wrong with using the term "engineer" loosely if you're clear that's what you're doing.

      You think no engineers existed before professional societies came around? How far back do you want to go, the origins of Freemasonry?

    10. Re:If you haven't read The Myythical Man-Month... by BasilBrush · · Score: 1

      Engineer: a person who designs, builds, or maintains engines, machines, or structures.

      That certainly covers what software engineers do. So we'll keep on using the term.

    11. Re: If you haven't read The Myythical Man-Month... by Anonymous Coward · · Score: 0

      According to Merrim-Webster...
      Engineer: a person who has scientific training and who designs and builds complicated products, systems, or structures

      Quit pretending you can't be an engineer unless you fall into a narrow set of fields. Just about anyone can be an engineer. They're nothing special.

    12. Re:If you haven't read The Myythical Man-Month... by narcc · · Score: 1

      Good luck with that. Depending on the state or country you're in, it may be illegal to title yourself "engineer".

      Is it worth the risk just so you can continue to pretend that "software engineering" is an actual discipline?

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

      Just about anyone can be an engineer. They're nothing special.

      That hurt... Seriously? Anyone?

      I guess that explains some of the things I've seen...

      --
      "File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
    14. Re:If you haven't read The Myythical Man-Month... by BasilBrush · · Score: 1

      Good luck with that. Depending on the state or country you're in, it may be illegal to title yourself "engineer".

      My country doesn't try to regulate the dictionary in this way.

      Even if they did, they wouldn't be stopping people who have qualified as software engineers from calling themselves software engineers.

      Is it worth the risk just so you can continue to pretend that "software engineering" is an actual discipline?

      It is an actual discipline. See: http://en.wikipedia.org/wiki/S...

      Good luck trying to impose your personal dictionary on others.

    15. Re:If you haven't read The Myythical Man-Month... by Cederic · · Score: 1

      My copy included his paper, "No Silver Bullet". _That_ was worth reading, learning and remembering.

    16. Re:If you haven't read The Myythical Man-Month... by rochrist · · Score: 1

      Yes, and no one will believe you. The Mythical Man Month will make you a believer. Plus, it's not very long and exceedingly entertaining.

    17. Re:If you haven't read The Myythical Man-Month... by david_thornley · · Score: 1

      I don't think I can recommend this straight to just anybody any more. There's stuff in there that Brooks flat-out got wrong. There's stuff that doesn't make much sense anymore. There's stuff that's old hat now. And, of course, important stuff that too many people have failed to learn since the 1960s.

      Find the anniversary version with "No Silver Bullet" in it. It also has some of Brooks' reflections on it, and he does point out where he got things wrong.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    18. Re:If you haven't read The Myythical Man-Month... by cwsumner · · Score: 1

      Can we stop using the term "engineer"? It's not only meaningless, it does a serious disservice to actual engineers.

      A Software Engineer is a person with degrees and experience in both Engineering and Programming/Computer Science.
      There really is such a thing. And it makes a difference to the resulting applications.

      (Of course, a lot of people claim a lot of things and the term is sometimes abused.)

  11. The Little Schemer by atarzwell · · Score: 1

    The little schemer series, (The Little Schemer, The Seasoned Schemer and The Reasoned Schemer) Daniel Friedman

    Even if you never intent to use a lisp, it's worth reading.

    http://www.amazon.com/The-Litt...
    http://www.amazon.com/The-Seas...
    http://www.amazon.com/The-Reas...

    1. Re:The Little Schemer by DickBreath · · Score: 1

      After The Little Schemer, read The Reasoned Schemer.

      --

      I'll see your senator, and I'll raise you two judges.
  12. The Art of Computer Programming by Anonymous Coward · · Score: 1

    I have a copy of the first three volumes of TAoCP and have skimmed parts of it. I've occasionally opened it as a reference source (for example, on PRNGs), but I wouldn't claim to have "read" it. People who do are likely either hardcore computer scientists or bullshitters.

    1. Re:The Art of Computer Programming by retchdog · · Score: 1

      eh, they're not that hard to read. doing all of the problems would be another story (especially the ones that are open research questions... :-/), but for the content the presentation is amazingly straightforward (this is the real accomplishment of Knuth). i casually read vol. 1 and did ~25% of the problems one summer with a friend.

      that linked story is hilarious, though.

      --
      "They were pure niggers." – Noam Chomsky
    2. Re:The Art of Computer Programming by BasilBrush · · Score: 1

      It is quite funny. But not actually true.

      http://www.catonmat.net/blog/d...

    3. Re:The Art of Computer Programming by BasilBrush · · Score: 1

      Are you sure you wouldn't be happier as an AC?

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

    They're there for a reason.

    1. Re:Other Programmers Comments by rgmoore · · Score: 1

      Frequently because management forces them to include a minimum percentage of comment in their code. It would be much better to find a piece of really well documented code and a piece of really badly documented code and force them to read both so they can see what the difference is.

      Bad comments tell what the code is doing when that's obvious from the code itself. Good comments explain why, especially when they're fixes for non-obvious bugs. If you spent a lot of time figuring out the solution to a tough problem, you owe the next guy to see your code an explanation.

      --

      There's no point in questioning authority if you aren't going to listen to the answers.

    2. Re:Other Programmers Comments by ArcadeNut · · Score: 0

      You mean the ones like:

      x++; // Add one to X

      --
      Visit the Arcade Restoration Workshop @ http://www.arcaderestoration.com
    3. Re:Other Programmers Comments by byrtolet · · Score: 1

      Bad comments tell what the code is doing when that's obvious from the code itself. Good comments explain why, especially when they're fixes for non-obvious bugs. If you spent a lot of time figuring out the solution to a tough problem, you owe the next guy to see your code an explanation.

      Not exactly. Sometimes comments describing what the code does are what is needed. For example when commenting assembly language, describing what instructions do from the point of view of the problem solved is really helpful. Another example is when writing some not-that obvious optimization. Of course both are examples of code with no obvious behaviour. Obvious code, I agree, should not be commented. But obvious to one is not nesseccery obvious to other

      I don't understand how we can answer why, especially in the code. For example

      //what: Adds two numbers

      //why: I don't know

      Add(a, b){

      return a+b;

      }

      The why should be answerd elsewhere. In some design document or in a design choice comment.

    4. Re:Other Programmers Comments by BasilBrush · · Score: 1

      That code snippet requires no comment. As a utility function it's completely self explanatory. In a less obvious utility function it might need the what or the how explaining, but rarely the why.

      At places where you call the utility you might need a comment on why, but not here. That is where the why might be an issue.

      Even then commenting should be the last resort. If you can explain the necessary why or how by choosing meaningful identifiers, then that is better.

  14. 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 dfsmith · · Score: 1

      K&R was an excellent introduction (short, expensive, valuable). However, I think I learned more about the why of C from reading Harbison & Steele, "C, A Reference Manual". It was a book for compiler implementers and programmers, and went into some of the design decisions, which really helped my comprehension.

    2. Re:K&R by Anonymous Coward · · Score: 0

      Indeed, H&S is the standard for C books. For a lighter read, `Expert C Programming' by Peter van Linden is another good C resource. Finally, `The new C standard: a cultural commentary' (actually a cultural and ... I forgot) is superb!

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

      Excellent arguments, I'm convinced.

    4. Re:K&R by Raenex · · Score: 1

      Harbison & Steele, "C, A Reference Manual" [..] which really helped my comprehension

      Yup, I loved this book. C was a very weird and fuzzy language until I read this. OK, C is still weird and fuzzy, but not mysteriously so.

    5. Re:K&R by oldCoder · · Score: 1

      Harbison & Steele is and has been the best book on C. Once you have it you can throw the others out.

      --

      I18N == Intergalacticization
  15. 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.
  16. Text Encoding by Anonymous Coward · · Score: 2, Informative

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

    1. Re:Text Encoding by StripedCow · · Score: 1

      The funny thing is, even the C++ standard library and the Boost library do not correctly support unicode.

      --
      If Pandora's box is destined to be opened, *I* want to be the one to open it.
    2. Re:Text Encoding by BasilBrush · · Score: 1

      Another reason why I enjoy using Objective-C and the Cocoa libraries. Unicode everywhere - only time you ever have to consider ASCII is when interacting with raw files or C/C++.

    3. Re:Text Encoding by Anonymous Coward · · Score: 0

      You mean "all the time"?

    4. Re:Text Encoding by Anonymous Coward · · Score: 0

      > The funny thing is, even the C++ standard library and the Boost library do not correctly support unicode.

      No, the really funny thing is, neither C nor C++ has native string handling. How quaint.

  17. Everything by Kittenman · · Score: 1

    Programmers maybe write reasonable code - but they often cannot express their ideas in ordinary language. Read the paper, George Orwell, 'Clean Code', Slashdot, whatever - and practice writing too. And talk to people. If they look puzzled, you're not communicating well, and need to get better. Use grammar. Write clean, accurate comments.

    (Quick scan to make sure that this is clean... well, good enough...)

    --
    "The greatest lesson in life is to know that even fools are right sometimes" - Winston Churchill
  18. Should read A Game of Thrones by Anonymous Coward · · Score: 0

    You never know when the Lannisters will turn on you.

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

    Dilbert.

    1. Re:Dilbert. by bobbied · · Score: 1

      Dilbert.

      http://www.dilbert.com/

      That was my first idea too..

      --
      "File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
  20. Appreciate where you are by Anonymous Coward · · Score: 0

    By seeing how it used to be.

    www-smirc.stanford.edu/papers/chapter1.pdf

    It won't hurt you to read about hardware, I promise!

  21. Real Programmers Don't Use PASCAL by Anonymous Coward · · Score: 0

    http://www.ee.ryerson.ca/~elf/hack/realmen.html

  22. Re:This by Anonymous Coward · · Score: 0

    Slashdot? Then no one will get any work done!

  23. 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.

    1. Re:Two unexpected computer science books by pla · · Score: 1

      This, a million times this.

      You can certainly find better books to help you learn a particular programming language. You can find better books about the history of programming. You can find better books on algorithmics that will make you a better programmer overall. You can even find better writing (although the skill that went into some chapters - "Crab Canon" in particular - simply blow me away), if you just want a good read overall.

      But if you don't read GEB and fall in love - you need to find a different career, because programming ain't for you. Seriously. I didn't get into the field because of Hofstadter, but that one book pretty much embodies 90% of the reason I did. And even as a seasoned pro, you will learn something from it - Hell, even after 20+ read-throughs, I still discover something awesome and new each time I revisit it.

    2. Re:Two unexpected computer science books by Anonymous Coward · · Score: 0

      That reminds me of another Bach.

      The Design of the UNIX Operating System, by Maurice J. Bach

    3. Re:Two unexpected computer science books by waitamin · · Score: 1

      As much as I've liked both, I am not sure about their importance. Especially GEB.... I actually read it twice. Once a few years back, when I was still studying, once just recently, as I thought I must have missed something. The book itself is full of very interesting insight, but it is a very difficult read. It is difficult to read not because of the subject matter, but because Douglas Hofstadter is simply not very good at writing. There, I said it.

      I start with the worst: the dialogues. The dialogues are really, _really_ forced. If you don't know what he's talking about without them, you won't get it. I _think_ I understood what he's talking about, and my thought was, "alright, I get it, but what's the point?" It's unnecessary either way, it's preaching to the choir, it's intellectual mastrubation which many clever people can't seem to avoid. Despite the fact that it seems that he is trying to educate.

      Then the actual content. As I said, a lot of insight, but too much handwaiving. Especially when it comes to the really important things. Let's say that the topics he is trying to write about are such that they require a certain amount of vagueness (which is a matter of opinion); still, the text gives off the feeling that it is avoiding going into the detail that will make it really useful as an educating text _or_ as a formal treatment. At the end, it fails at being good fictions, and avoid being truly useful non-fiction.

      So yes, GEB is a book everyone should read, but not only because of what it says, but also because so many others have read it, and they will look down on you if you haven't.

  24. Hitch Hikers Guide To The Galaxy by Anonymous Coward · · Score: 1

    Can't think of anything else that 'every' programmer should read. All programmers are different, what would benefit someone who writes C for embedded systems might bore a WPF developer to pieces and not benefit him or her one bit. So might as well read something funny.

  25. The Bible by DoofusOfDeath · · Score: 0, Offtopic

    with a good commentary to explain the historical, cultural context needed to understand certain sections well.

    Programming is a fun and rewarding way to earn a living. But it's not the most important thing.

    1. Re:The Bible by Anonymous Coward · · Score: 1

      That manual has been deprecated by the Book of Mormon. Much easier for a new user to absorb.

    2. 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.

    3. Re:The Bible by DoofusOfDeath · · Score: 1

      There are rational and irrational persons on both sides of this issue.

    4. Re:The Bible by BasilBrush · · Score: 1

      We're not recommending people, we're recommending books. And the two I recommenced encourage analytical thinking, whilst the bible encourages the exact opposite. "Faith".

      To be fair though, a lot of programmers do seem to like sci-fi and fantasy, so they might get something out of The Bible on that level.

    5. Re:The Bible by DoofusOfDeath · · Score: 0

      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.

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

    6. 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.

    7. Re:The Bible by DoofusOfDeath · · Score: 1

      The Bible is a collection of 66 different books, some of which appear to have been intended as allegory (parts of Genesis; Job; etc.), poetry and wisdom literature (Psalms), history (1st and 2nd Kings), etc.

      My understanding is that the allegorical and poetical books are not considered as such simply because a literal interpretation would be problematic. My understanding is that the Hebrew writing style flags them as such. I think you're making the mistake of interpreting non-literal books as having been intended as literal, and thus get a mistakenly tainted view of the Bible, and of the persons whose beliefs are rooted in it.

      As far as bringing a dead person back to life: the Bible's authors certainly aren't claiming that's something that normally happens, nor that it's a natural even. The whole point of those resurrections was to confirm that Jesus wasn't merely a lying or deluded human.

      Regarding analytical thinking vs. rationality: If you're depending on the differences in their meanings / connotations, I'm all ears, but you need to clarify your meanings. But in normal conversation, the two terms generally go hand-in-hand.

      And I agree that the topic will probably go no where. Not because it's on the wrong /. thread, but because it generally takes more than an exchange over the internet to make someone change his position on this topic.

    8. Re:The Bible by Anonymous Coward · · Score: 0

      with a good commentary to explain the historical, cultural context needed to understand certain sections well.

      Which commentaries would you consider relevant when reading TAOCP?

    9. Re:The Bible by BasilBrush · · Score: 1

      I think you're making the mistake of interpreting non-literal books as having been intended as literal, and thus get a mistakenly tainted view of the Bible, and of the persons whose beliefs are rooted in it.

      You call it a mistake, yet the literal truth of the bible is exactly what most evangelical and born-again Christians profess as their belief. And before the 19th century codexes were unearthed in coptic monasteries, showing that the books of the bible had changed significantly over time, pretty much all protestant Christians believed in the literal truth of the bible, and indeed that the bible was the literal word of God.

      For sure for those modern Christians that accept some of the bible is "allegorical and poetical" do so because they accept that there is too much evidence against them to be literally true. It has nothing to do with interpretations of Hebrew - the coincidence of the change with the discovery of the early bible codexes gives the lie to that story. The readings of Hebrew were available long before the end of the 19th century. They were always available.

      As far as bringing a dead person back to life: the Bible's authors certainly aren't claiming that's something that normally happens, nor that it's a natural even. The whole point of those resurrections was to confirm that Jesus wasn't merely a lying or deluded human.

      And it's simply faith for those that believe it. The analytical mind finds no support for it.

      Regarding analytical thinking vs. rationality: If you're depending on the differences in their meanings / connotations, I'm all ears, but you need to clarify your meanings. But in normal conversation, the two terms generally go hand-in-hand.

      They might go "generally hand-in-hand" for the non-analytical mind. But not for the analytical mind. That's my point. The fact that you didn't distinguish the two points to a fuzziness in your thinking.

      The difference? An ant or a bee is extremely rational, arguably more rational than a human, but it's not at all analytical. Everything the ant or the bee does is to ensure survival of it's genes. That's rationality. However, it is not capable of analysing it's behaviour or anything around it.

      I'm not particularly playing up the difference with regard to the content of these posts. Just the fact that you repeatedly made the mistake of switching one word for another, when their meaning is related but not the same. Going back to the original topic of the need to have an analytical mind to be a good programmer, it's like not distinguishing an int from a float.

      Not because it's on the wrong /. thread, but because it generally takes more than an exchange over the internet to make someone change his position on this topic.

      It's as rare as hen's teeth that an exchange face to face would do so either. Almost always a belief in religion is because of either indoctrination as a child, or because a person has come to crisis in their life, such as a prison sentence, or the loss of a loved one, and they have clung on to a fantasy that has brought them comfort.

      In the other direction however, education can effect a change from religious belief to atheism or agnosticism. And I don't mean specifically atheist education. I mean general education that encourages analytical thinking.

    10. Re:The Bible by DoofusOfDeath · · Score: 1

      I don't have the time to respond to all of those issues, but if you want to pick one, I'd be happy to keep chatting.

    11. Re:The Bible by BasilBrush · · Score: 1

      No, I'm happy to leave it there.

  26. 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.
    1. Re:The Fortran Coloring Book by cwsumner · · Score: 1

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

      Heh! ... Interesting. 8-)

  27. Re:There are no things every programmer should rea by machineghost · · Score: 1

    But how do they get "the right context" without knowing what to read?

  28. Facts and Fallacies of Software Engineering by Anonymous Coward · · Score: 0

    By Robert Glass

  29. A Fortran Coloring Book by davidwr · · Score: 1

    Gack wrong title.

    --
    Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
  30. Beta by Tablizer · · Score: 0

    Study Slashdot Beta so you know what not to do.

  31. It's simple by viperidaenz · · Score: 3, Insightful

    code.

    1. Re:It's simple by Anonymous Coward · · Score: 0

      Yep. Don't waste your time reading books... especially if you're keen on re-inventing the wheel as many times as possible.

    2. Re: It's simple by Anonymous Coward · · Score: 0

      If you've got any talent you'll reinvent the wheel a lot at the start, then later on rarely at all because you'll know the answer without thinking and more importantly will understand the solution better because you solved it yourself. Experience trumps theory every time.

      I've come across plenty of 'well read' programmers who can't produce a working system because they're trying to shoehorn pre-existing ideas into their code instead of simply analysing the problem and producing the optimal solution. Heck, we have a system at work that's so poor it's going to have to be deleted since it's not salvagable.. Written by a Cambridge graduate no less. He'd read *all* the books listed, and still managed to be so poor he got fired.

    3. Re:It's simple by Anonymous Coward · · Score: 1

      No, you don't read code to learn abstractions and good technique. Code is an output, not an input. That is like saying you learn engineering by looking at diagrams of engines. You don't, you take THEORY classes and the diagrams are merely instances of applied theory.

  32. This is in addition to ... by davidwr · · Score: 1

    ... the top 10 books/articles/whatever that every human being should read.

    Now if only we could get some kind of agreement on what those "top 10" are.

    --
    Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
  33. Effective C++ by phimpshiex · · Score: 1

    Here's my two cents:
    - Effective C++: 55 Specific Ways to Improve Your Programs
    - Code Complete
    - Design Patterns: Elements of Reusable Object-Oriented Software

    1. Re:Effective C++ by narcc · · Score: 1

      Yuck. GoF crap. Even the title contains nonsense "Reusable Object-Oriented Software" What a joke!

    2. Re:Effective C++ by Cederic · · Score: 1

      So above in this discussion you're bitching about people using the term "Software Engineer" and now down here you're slating one of the most influential contributions that helped turn programming into a profession.

      Several people have recommended the Gang of Four book because.. it's a perfect fucking book for software engineers.

      Shit, it's the realised application of an architectural philosophy to software. Or are you going to bitch about A Pattern Language and The Timeless Way of Building too? Just that those were written by someone that knows more about Civil Engineering than most civil engineers..

    3. Re:Effective C++ by narcc · · Score: 1

      everal people have recommended the Gang of Four book because.. it's a perfect fucking book for software engineers.

      It's a terrible book that has caused more harm than good.

      Further, how do you suppose it's useful for software "engineers" when the book has extremely limited applicability? (It's not language agnostic. A point even the authors admit.) What about the lack of research behind their "discovery" of those "patterns"? Let's face it -- it's nothing more than another programming self-help book that happened to catch-on.

      A Pattern Language

      Ah, the book from which the GoF borrowed their title, and completely misunderstood.

       

    4. Re:Effective C++ by Cederic · · Score: 1

      Forgive me if I suggest you're talking shit.

      Where's the evidence that the GoF misunderstood Alexander? Where did they tell people not to read deeper and further, including Alexander's books? Where are the people recommending the GoF book and stating that it's the end step?

      It's a fucking powerful book BECAUSE it skips the mystical philosophy and goes straight to the "Here's something fucking useful". It's two years down the line that you realise just what you learned, and go off and learn more.

      You have to start somewhere, and the GoF book is an excellent start point. Shit, their patterns may not be entirely language agnostic but I've implemented several of them in multiple langauges and I've used their taxonomy to solve non-programming problems. They promised "re-usable" and delivered.

    5. Re:Effective C++ by narcc · · Score: 1

      Where's the evidence that the GoF misunderstood Alexander?

      I see that you didn't read the book you recommended. Color me surprised.

      You have to start somewhere, and the GoF book is an excellent start point.

      Where's the evidence? Oh, that's right. There isn't any.

      They promised "re-usable" and delivered

      Funny, where you see "reusable" I see "forced in inappropriately". Pattern abuse is rampant. I've yet to see a real-life example of a GoF pattern used appropriately, nor have I found a problem to which a GoF pattern is an appropriate solution. I have, on the other hand, seen GoF patterns introduce significant and unnecessary complexity on many occasions.

      I'd offer some research to back my experience, but it doesn't exist. Of course, you won't care as neither the GoF nor anyone else has done research to validate the claims they made in that abomination of a book. Facts clearly aren't that important to you.

      I'm sorry that you bought that snake-oil. It's going to hurt a lot when reality sets in.

  34. 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.
  35. 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);
  36. 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.

  37. 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.
  38. Read General books on Management by Anonymous Coward · · Score: 0

    It will help you better understand your bosses concerns. And some day that's where you will be as technology laps you and you go from being a nerd to a person supporting a family where money means more than technology.

    I intend to be a manager before I am 50. 10-15 years of not having to think out technical problems and I'll be making more money. It's win/win.

  39. Read The Art of Computer Programming vol 1-4A by Anonymous Coward · · Score: 0

    from cover to cover, then get back to me.

    I'll wait.

  40. There ain't no such thing as plain text. by Anonymous Coward · · Score: 0

    There Ain't No Such Thing As Plain Text.

    For the love of all that is holy, every person who ever writes a line of code anywhere, for any purpose, must read this! No exceptions!

    There Ain't No Such Thing As Plain Text.

  41. A book on Hindi? by Anonymous Coward · · Score: 1

    How about a book on Hindi so you can communicate with your boss and offshored co-workers at 2:00 AM in the morning, then train the H-1B who is going to be your replacement so you get a severance package?

    Realistically, K&R's C book is a classic worth looking at. Defensive programming, and programming with security in mind are also important texts.

  42. Watership Down by Petersko · · Score: 1

    You gotta disconnect from the tech every once in a while.

    1. Re:Watership Down by Anonymous Coward · · Score: 0

      my Fav

    2. Re:Watership Down by bobbied · · Score: 1

      You gotta disconnect from the tech every once in a while.

      Yikes, How does reading about a litter of talking rabbits help you with that? Do they have a kindle version?

      --
      "File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
  43. 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.

  44. How to Break Web Software: Functional and Security by peterofoz · · Score: 1

    This should be required reading for any programming putting software on the web. It details some 50 basic vulnerabilities that must be avoided. Its also a good starting point for the Q/A team and test planning.

  45. 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.

  46. Infinite Jest by Anonymous Coward · · Score: 0

    to superinflate the already universe-busting ego of the average computer programmer

  47. The Little Schemer by Anonymous Coward · · Score: 0

    Fun and will teach you to "think" like a programmer. Plus LISP! FTW!

  48. 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.

    1. Re:The Design of Everyday Things by Anonymous Coward · · Score: 0

      This, times a thousand.

      It's the best design book I've ever read.

      It changed the way I look at the world, and changed the way I design my software.

  49. 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.
  50. If you haven't read The Myythical Man-Month... by Anonymous Coward · · Score: 0

    No need to worry, we'll get off your lawn...

  51. half your job will be people not computers by Anonymous Coward · · Score: 0

    You should read about dealing with people as well as programming. Read "Crucial Conversations"

  52. Re:This by Anonymous Coward · · Score: 0

    Work? We are programmers. We abhor work.

  53. 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'.

    1. Re:Something with this title by Anonymous Coward · · Score: 0

      How to not split infinitives?

  54. stackoverflow.com by Anonymous Coward · · Score: 0

    /thread

    1. Re:stackoverflow.com by Anonymous Coward · · Score: 0

      StackOverflow used to be ok, but now it's full of people who don't know shit.

      Half of the up-voted answers are plain wrong and most of the rest is full of crap.

  55. Chip spec, Op Codes, Compiler Impl. At least once. by VortexCortex · · Score: 1

    I'll just leave this free and open source CS101 course here: NAND to Tetris.

  56. Martin Fowler's Refactoring by acroyear · · Score: 1

    No, in spite of what some jackasses say, it isn't just rewriting for its own sake. It is improving the structure in standardized ways so that you can add your new features much more safely. In interviews, I prefer people can name some standard refactorings before I ask them the typical questions about design patterns.

    http://refactoring.com/

    --
    "But remember, most lynch mobs aren't this nice." (H.Simpson)
    -- Joe
  57. 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 SuperKendall · · Score: 1

      I totally agree, just a great book all around.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    2. Re:Strunk & White: The Elements of Style by Anonymous Coward · · Score: 1

      Thinking and writing clearly and with good organization are very good things. But Strunk & White is CRAP!!!

    3. Re:Strunk & White: The Elements of Style by Katatsumuri · · Score: 1

      Also William Zinsser, On Writing Well.

    4. 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.

    5. Re:Strunk & White: The Elements of Style by bugnuts · · Score: 1

      That's a good link, and shows that their grammar wasn't perfect. It is, however, a "style" book and discusses how to read n write good like and common misused words; it isn't strictly a grammar book.

      One of the biggest complaints I normally see is that S&W is too pedantic, and the claim that English is a living language and changes, and that White screwed up the language when it was published and adopted by so many universities. But, that very claim that it's living and morphable is the same thing they're annoyed with (or rather, "with which they are annoyed"). S&W codified things, to make the language a little more understandable and less willy-nilly for proper writing. They changed it (by deprecating many poor or ambiguous uses) and to most detractors, this is the problem... changing a living language.

      I don't see it as a problem.

  58. Secrets of Consulting by ech3 · · Score: 1

    The Secrets of Consulting: A Guide to Giving and Getting Advice Successfully by Gerald M. Weinberg
    It has a lot of little anecdotes that help you recall concepts of how to manage your own time. Things like Rudy's law of Rutabaga stick with me even though I haven't picked up the book in a while. I read this book based on someone's recommendation on /. a long time ago, and I am glad I did.

    --
    "Doctor's mistakes you bury, Engineer's mistakes you live with forever."
  59. The Unix Philosophy by Anonymous Coward · · Score: 1

    The UNIX Philosophy by Mike Gancarz is a great book. It is specifically applicable to understanding unix. But, it is broadly applicable for anyone developing software. Understanding how to build small reusable components that can be strung together well. It is also a short book, and thus a very easy read. So, it belongs on the list of books every program should read. You get a lot of bang for your buck.

    1. Re:The Unix Philosophy by jmd · · Score: 1

      Excellent recommendation. Also a good life manual. Keep life simple.

  60. 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.

    1. Re:Code Complete by Steve McConnell by SJrX · · Score: 1

      Yes this book (the 2nd Edition) is indeed something everyone should read. As is The Pragmatic Programmer, Gang of Four Design Patterns ( but initially I found it a bit terse, so Head First Design Pattern was a good initial grounding for OO), as well as whatever seminal books there are for your language of choice. For instance Effective C++ or Effective Java.

  61. "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

    1. Re:"Code Complete" by Steve McConnell by Anonymous Coward · · Score: 1

      That is a good book. I like this one too

      http://www.amazon.com/Debugging-Indispensable-Software-Hardware-Problems/dp/0814474578

      It shows 'how' to debug and more importantly gives you a good framework in which to do it. I teach this method to many 'ok' programmers and they become excellent ones most of the time. As when it hits the fan you need to know how to fix it. Knowing how to fix it is good brownie points ;)

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

    Spoiler, everybody dies

    1. Re:A Game of Thrones by bobbied · · Score: 1

      Spoiler, everybody dies

      Including the reader... Or at least you wish you where dead for wasting all that time...

      --
      "File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
  63. Must reads by Anonymous Coward · · Score: 0

    All the novels of Jacqueline Suzanne (one of the giants).

    "Atlas Shrugged" by Ayn Rand.

    And THIS.

    1. Re:Must reads by Anonymous Coward · · Score: 1

      > "Atlas Shrugged" by Ayn Rand.

      Or, you could read some real philosophy, written by scholars who managed to mature beyond emotional adolescence.

  64. How To Win Friends and Influence People by clockwise_music · · Score: 1

    "How To Win Friends and Influence People" By Dale Carnegie.

    A classic, every programmer (and person) should read it.

    1. Re:How To Win Friends and Influence People by Anonymous Coward · · Score: 0

      "How To Win Friends and Influence People" By Dale Carnegie.

      A classic, every programmer (and person) should read it.

      I recommend nobody bother studying computer science because 99.9% of the jobs are not for computer scientists. A help desk position requires a BSc(CS) these days. Really. I have read the job advertisements. Stupid. When I last interviewed for a position with a small company the dynamically dull duo IT staff interviewing me were terrified I would make them look like the dullards they are so I never heard back.

  65. Good one by Subratik · · Score: 1

    "What every programmer should know about floating point math"

    1. Re: Good one by Subratik · · Score: 1

      What every COMPUTER SCIENTIST should know about floating point math. Oops :)

  66. GEB by Anonymous Coward · · Score: 0

    GEB

  67. Fyodor Dostoyevsky - Crime and Punishment by Anonymous Coward · · Score: 0

    Fyodor Dostoyevsky - Crime and Punishment
    So they feel guilty about their crappy code

  68. Optimizing C++ from agner.org by Anonymous Coward · · Score: 0

    Optimizing C++ was an eye-opener for me because it isn't just about how to optimize C++ but more about how things actually work (in the real world).

  69. 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.

  70. How to Write Unmaintainable Code by ZeldorBlat · · Score: 1

    This has always been one of my favorites.

    https://www.thc.org/root/phun/...

    1. Re:How to Write Unmaintainable Code by Letophoro · · Score: 1
      Drat.

      You beat me to it.

      It is a wonderful list of things that I've seen over the years. And I'm sorry to say, a few things that I have done.

  71. most importanly, by Anonymous Coward · · Score: 0

    Capital, Volume 1

  72. Going by some of the software out there by FuzzNugget · · Score: 1

    Their own code

    1. Re:Going by some of the software out there by narcc · · Score: 1

      Here, here.

      Know who writes bad code? Everybody.

      Nothing is more instructive than a review of your own old work.

  73. Revised report by Anonymous Coward · · Score: 0

    Revised report on the algorithmic language ALGOL 60

  74. So everyone should just take some basic CS classes by Anonymous Coward · · Score: 0

    Basic CS courses @ a university should cover this stuff, at least in Europe.

  75. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  76. Soul of a New Machine by Tracy Kidder by Anonymous Coward · · Score: 1

    Won a Pulitzer in 1982, and git off my lawn.

    1. Re: Soul of a New Machine by Tracy Kidder by Anonymous Coward · · Score: 0

      Came here to say this (w/o the lawn, though :-) ). An especially good read if you are an engineer new to a big organization and you have no idea Wtf some personalities are so difficult to deal with.

  77. The Design of Every day things by Anonymous Coward · · Score: 0

    One book I like to recomend to people is "The Design of Everyday things". It makes good observations about form following function, and what happens when this goes poorly. And gives examples of bad design choices. Its probably a must read for anyone doing user interface design.

    1. Re:The Design of Every day things by Anonymous Coward · · Score: 0

      Yes! Also recommended:

      Apple Human Interface Guidelines (pre-1992 if possible)
      Don't Make Me Think by Steve Krug
      The Inmates Are Running the Asylum and About Face by Alan Cooper
      The Non-Designer's Design Book by Robin Williams
      Web Pages That Suck by Flanders & Willis

      And on the web: the IArchitect User Interface Hall of Fame/Shame!

  78. Books constipate the mind by Anonymous Coward · · Score: 0

    I remember opening and closing The Art of Computer Programming. I was in a "fuck that shit" mood but to be honest this is a heavy book which will put you in the ranks of code monkey rather than innovator/creator. But maybe you've decided that you want to be the pass-all-thd-programming-test guy, the interview guy and the guy who wants to be part of the team. In this case, you can spend a lifetime reading books, bearing in mind that some of the books were written by guys or girls who didn't really make it. This is crucial. Read their bio, google them and ask yourself "do I really want to read anything from them, other than help me pass an exam or get through some Microsft style interview test." This is not right. Sadly anyone can write a book these days. However there are exceptions like the father of C++, Bjarne Stroustrup.

  79. Re:There are no things every programmer should rea by Anonymous Coward · · Score: 0

    and browse the C2.com wiki (the first public wiki ever) to get some ideas of the philosophical conflicts surrounding software engineering. It's not neatly organized, but with some patience you'll find some interesting viewpoints and debates.

  80. Nothing! by Murdoch5 · · Score: 1

    Don't read any books on programming, they're a waste of time and money. To become a good programmer, join an open source project and start developing in an open community. If you want to buy the books as a learning experience then I suggest grabbing an arduino ( or other uC ) and just writing a firmware, logging system and web interface for it.

    1. Re:Nothing! by geekoid · · Score: 1

      Worse. Advice. Ever.

      Hey, you don't need to learn about class, or environment, or understand memory to be a programmer! Just use VB.

      That the same mentality, stop it.

      Why you think OS = Good programming; is beyond me.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    2. Re:Nothing! by Murdoch5 · · Score: 1

      That is not the same logic, it's not even close. Joining a project with multiple developers who QC your code and assist you in module development is far from the crappy VB auto-completion. As for memory, I don't know where you got that either, as I mentioned to get a uC and write firmware for it, that is a crash course in pointers, memory and architecture, which you need to know to be a good programmer.

    3. Re:Nothing! by Richard_at_work · · Score: 1

      All you are doing there is pushing babysitting duties on to the OS project maintainers, and that's not their job.

    4. Re:Nothing! by Murdoch5 · · Score: 1

      I don't even know how you get that from what I wrote.

    5. Re:Nothing! by Anonymous Coward · · Score: 0

      I don't even know how you get that from what I wrote.

      Maybe from this:

      Joining a project with multiple developers who QC your code and assist you in module development...

      It is NOT the job of the other developers/maintainers to babysit you like that.

  81. Dune. by Anonymous Coward · · Score: 0

    "Thou shalt not make a machine in the likeness of a human mind."

  82. Law of Leaky Abstractions by Mr.+Sketch · · Score: 2
    1. Re:Law of Leaky Abstractions by Anonymous Coward · · Score: 0

      The topic is books for programmers, not gay sex erotica.

    2. Re:Law of Leaky Abstractions by Walter+White · · Score: 1

      Someone pointed that one out to me when I started working on a framework to manage timers, digital I/O and so on on the Arduino platform. Apparently Joel feels that abstractions are not useful because they cannot be perfect. He points out that stream sockets hide the errors in network transport by 'guaranteeing' packet delivery order and retransmiting dropped packets but cannot mask the problem when the cable is pulled. So what? If someone needs to read this to understand that the network is not going to work when the cable is disconnected, they're probably in the wrong business.

    3. Re:Law of Leaky Abstractions by david_thornley · · Score: 1

      Joel on Software as a whole is an interesting read, and often enlightening, but he's far from perfect. Approximately nobody can throw insights onto the table regularly without getting some of them seriously wrong.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  83. How about the Tao of Programming by androidph · · Score: 1
  84. These book are CRITICAL for your career by geekoid · · Score: 1, Insightful

    7 habits of highly effective people.
    Never Eat alone
    EMotional Intellegence 2.0
    The Five Dysfunctions of a Team

    What, were you thinking of programming books? bah, mostly worhtless for your career.
    Understanding people? that is how you make it.

    I used to be all about the programming books. I write solid, clean code. I use small methods, functions., etc. I wrote some really good code, did some amazing things with very limited memory.
    None of that gets you dick in the long run.

    Career and business wise, understanding how to deal with people, and how a good team works is the way to get ahead.

    If I had read those books when I was twenty, I would have retired by 45. Instead I work endless hours to craft some high quality code when I could have written something mediocre and gone home on time.
    Seriously no one would know or care.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    1. Re:These book are CRITICAL for your career by Anonymous Coward · · Score: 0

      I used to be all about the programming books. I write solid, clean code. I use small methods, functions., etc. I wrote some really good code, did some amazing things with very limited memory.
      None of that gets you dick in the long run.

      ...

      If I had read those books when I was twenty, I would have retired by 45. Instead I work endless hours to craft some high quality code when I could have written something mediocre and gone home on time.
      Seriously no one would know or care.

      TFA talks about EVERY programmer. Guess what? Some people "write solid, clean code" because they enjoy doing it not because they see it as a get rich quick scheme. Heck, some people even do it for free!

      Sure money is nice, but I say do what makes you happy. It's attitudes like yours that are the reason I rarely visit this site anymore, whatever happened to the geek spirit around here?

    2. Re:These book are CRITICAL for your career by TuringTest · · Score: 1

      Even people who only want to write software in their basement can benefit from some people's knowledge, as long as they want that software to be used by someone else

      What good is creating "solid, clean code" if it solves the wrong problem, because you didn't know how to ask people what problem they need to solve?

      --
      Singularity: a belief in the "God" idea with the "demiurge" relation inverted.
  85. Here's the list by Anonymous Coward · · Score: 0

    W. Ross Ashby's "An Introduction to Cybernetics", You have got to understand systems.
    Jon Bentley's "Programming Pearls" and its sequel. Beautiful examples of doing it right.
    And last but not least, Machiavelli's "The Prince". Because sooner or later, some a-hole is going to try to manage you.

  86. 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
  87. Mark Twain's Rules of Literary Art by DutchUncle · · Score: 1

    Mark Twain wrote a scathing essay titled "Fenimore Cooper's Literary Offenses" which discusses "nineteen rules governing literary art in the domain of romantic fiction–some say twenty-two", and mentions 18 in detail. Of course it's all an excuse to bash another author's writing, but there is a germ of truth behind it. Think of variables as "characters" in the "tale" being told (perhaps a user story?). http://www.pbs.org/marktwain/l...

    1. Re:Mark Twain's Rules of Literary Art by oddtodd · · Score: 1

      When you consider that Fenimore Cooper was not a professional writer and only started his writing career after complaining to his wife about a book he did not like to which she told him to write one himself, I think Twain should cut him some slack. Just sayin...

      --
      I have plenty of common sense, I just choose to ignore it. -- Calvin
    2. Re:Mark Twain's Rules of Literary Art by DutchUncle · · Score: 1

      The same can be said about many coders, and I do NOT cut them some slack if their code is going in my project. :-)

    3. Re:Mark Twain's Rules of Literary Art by waitamin · · Score: 1

      He's good enough until you turn about 10. Then it's a real pain to read the shit, as it is almost impossible to make a coherent mental picture of events or people. He is just very bad at telling credible stories, and I don't know why would anyone want to "cut him some slack".

  88. The Cathedral and the Bazaar by Raymond by mrflash818 · · Score: 1

    There is a wikipedia entry about it, in case you have interest:

    http://en.wikipedia.org/wiki/T...

    --
    Uh, Linux geek since 1999.
  89. Buck-Full by nightcats · · Score: 1

    See my sig line below: Buckminster's the man to read, you geeks.

    --
    Development is programmable; Discovery is not programmable. (Fuller)
  90. Hindi for Dummies by Anonymous Coward · · Score: 0

    - Hindi for Dummies
    - How to Live like a Prince on a Pauper's Salary!
    - Idiot's Guide To Self Medicating
    - So You Want To Take Up Drinking!
    - How To Impress No One And Irritate People

  91. Software Tools by Anonymous Coward · · Score: 0

    A fundamental book that teaches good programming habits, "Software Tools" also reveals many of the thought processes behind and the design of UNIX and its utilities. Interestingly, the code is in FORTRAN, but using a preprocessor similar to C's, which translates "RATFOR" (RATional FORtran) into the base language. The preprocessor is one of the Tools described in the book.

  92. 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
  93. Everything men know about women by smittyoneeach · · Score: 1

    Everything Men Know About Women. They say Knott Mutch is the nom-de-plume for a Slashdot editor, but I'm not sure which one.

    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
  94. In the Beginning... by oddtodd · · Score: 1

    Was the Command Line by Neal Stephenson

    --
    I have plenty of common sense, I just choose to ignore it. -- Calvin
  95. Anything by Michael Abrash by Anonymous Coward · · Score: 0

    ...he seemed to be the guru of efficient programming back in the day. The old x86 code may be well out of date but the principles of structure and efficiency are universal.

  96. Here's my book list, as a CS prof by Anonymous Coward · · Score: 0

    That's very timely---this week, I was researching what textbooks I should use for my CS courses (this is the time of year for semester-based schools to choose next semester's books), and I decided that the huge amount of work it took (there are a LOT of CS books out these days) should be amortized by sharing the results with many people. Except, I got curious, and repeated the process for every course. Here's my blog post from Monday listing what I decided were the best. I wrote the list in part to provoke debate, especially debate that might lead me to different choices for my courses, so please follow up with disagreements here!

    http://casual-effects.blogspot.com/2014/05/a-computer-science-book-reading-list.html

  97. Books every programmer should read by mysidia · · Score: 1

    #ifndef BOOKS_EVERY_PROGRAMMER_SHOULD_READ_H
    #define BOOKS_EVERY_PROGRAMMER_SHOULD_READ_H
    "The TAO of Programming", "Back to Basics: A Complete Guide to Traditional Skills - Abigail R. Gehring", "Paper: Bitcoin: A Peer-to-Peer Electronic Cash System - Satoshi Nakamoto",
    "Murach's Mainframe COBOL - Mike Murach, Anne Prince and Raul Menendez", "Cosmos - Carl Sagan", "The Persian Expedition - Xenophon",
    "Democracy in America - Alexis de Tocqueville", "Crucial Confrontations: Tools for talking about broken promises, violated expectations, and bad behavior -- Kerry Patterson, Joseph Grenny, Ron McMillan, Al Switzler",
    "The Curriculum - Stanley Bing", "Python the hard way",
    "Dan Ariely: Predictably Irrational", "Are your lights on?", "A Brief History of Time - Stephen Hawking ",
    "D is for Digital: What a well-informed person should know about computers and communications - Brian W. Kernighan",
    "History of the Peloponnesian War - Thucydides", "PostScript Language Tutorial and Cookbook - Adobe Systems" /* (The Blue Book) */,
    "Elements of Positional Evaluation - Heisman", "The origin of the species - Charles Darwin", "The Fourth Turning - William Strauss, Neil Howe", "The Art of War - Sun Tzu",
    "The Practice of Programming", "The Elements of Programming Style", "A Random Walk Down Wall Street - Malkiel", "One Up On Wall Street - Peter Lynch", "The TeX book",
    "Silent Spring - Rachel Carson", "LaTeX Beginner's Guide - Stefan Kottwitz", "The Art of Choosing", "Liespotting",
    "Basic Physics: A Self-Teaching Guide", "The Art of Assembly Language - Randall Hyde", "1491 - Charles C. Mann",
    "The IDA Pro Book: The Unofficial Guide to the World's Most Popular Disassembler - Chris Eagle", "The Unix Programming Environment", "http://plan9.bell-labs.com/plan9/*", "http://www.vitanuova.com/inferno/*",
    "Learning CFEngine 3: Automated system administration for sites of any size - Diego Zamboni", "UNIX and Linux System Administration Handbook - R. Hein", "DevOps Troubleshooting: Linux Server Best Practices - Kyle Rankin", "The Unix Philosophy - Mike Gancarz",
    "What Every Web Developer Should Know About HTTP - K. Scott Allen", "A Mathematician's Apology - G H Hardy", "Linux Device Drivers - Jonathan Corbet, Alessandro Rubini", "http://www.slashdot.org/*",
    "http://rubyonrails.org/*", "paper: Reflections on Trusting Trust - Ken Thompson", "Computers, Chess, and Cognition", "paper: Fundamental Concepts in Programming Languages - Christopher Strachey",
    "paper: An Axiomatic Basis for Computer Programming - C. A. R. Hoare", "Cryptonomicon", " Dreaming in Code", "Beautiful Code:*", "The future of the internet and how to stop it - Zittrain",
    "The Devil's Dictionary", "I, Robot - Isaac Asimov", "1984 - George Orwell", "Tufte. The Visual Display of Quantitative Information",
    "The Non-Designer's Design Book - Robin Williams", "The Wealth of Networks - Yochai Benkler", "Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency - Tom DeMarco", "Why Popcorn Costs So Much at the Movies: And Other Pricing Puzzles - Richard B. McKenzie",
    "Where Wizards Stay Up Late: The Origins Of The Internet", "Engineering Long-Lasting Software: An Agile Approach Using SaaS and Cloud Computing -- David Patterson, Armando ", "Practical Electronics for Inventors - Paul Scherz and Simon Monk", "How to Diagnose and Fix Everything Electronic - Michael Geier ", "Hard Drive: Bill Gates and the Making of the Microsoft Empire - James Wallace",
    "Learning Web Design: A Beginner's Guide to HTML, CSS, JavaScript, and Web Graphics ", "Brave New World - Aldous Huxley", "Understanding Digital Signal Processing - Richard G. Lyons", "HBase: The Definitive Guide",
    "The Joy of jQuery: A Beginner's Guide to the World's Most Popular Javascript Library ", "TCP/IP Illustrated Volume 1", "DNS And Bind", "Cisco Internet Routing Architectures",
    "HTTP The Definitive Guide", "Foundations of IT Service Management with ITIL 2011 - Brady Orand, Julie Villarreal", "In S

    1. Re:Books every programmer should read by Anonymous Coward · · Score: 0

      #ifdef COUNTRY_OF_ORIGIN
      #include <$COUNTRY_OF_ORIGIN/books_every_citizen_should_read>
      #endif

      You forgot a book about how the preprocessor works, but I guess that's because you never read one.

  98. Re:There are no things every programmer should rea by Anonymous Coward · · Score: 0

    Those that don't learn from history are doomed to repeat it. Look at node.js -- anybody who used cooperative "multitasking" back in the day knows shat a shitty hack it is. The node.js designers never learned that lesson (and then wonder why their single thread web server isn't web scale. Needs more callbacks!).

  99. Numerical Recipes in C by Anonymous Coward · · Score: 0

    Numerical Recipes in C

  100. 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.
  101. Playboy by Anonymous Coward · · Score: 0

    Because that's the closest you'll get to a naked woman for a long time...

  102. Notes on Programming in C by Rob Pike by n1ywb · · Score: 1

    Word for word this short essay served to improve my coding more than any other document, and not just in C. Most of the essay is applicable to any language. Pike elegently and concisely explains the most important principles of good code style and software architecture. The sections "Programming with data" and "Function pointers" are particularly sailent. The section "Complexity", also known as "Rob's Rules", is outstanding and ought to be burned into the brain of every software developer. It's a free online classic and I'm surprised it hasn't been mentioned yet. http://www.lysator.liu.se/c/pi...

    --
    -73, de n1ywb
    www.n1ywb.com
    1. Re:Notes on Programming in C by Rob Pike by bzipitidoo · · Score: 1

      The thing is, I haven't come across any material I consider essential. Didn't know about Pike's work. Online documentation is too often lacking. A lot of books are crap. There are good ones, but programming is such a large subject that a few books can't cover everything. A programming language is only the surface. Should also have references to libraries, references to helper tools like the make utility, organizational tools like a guide to Agile programming techniques and a reference to a code repository management tool like CVS. General usage information like "man bash", a small reference of essential vi or emacs commands, and maybe some handy debugger commands for gdb, and some knowledge of the base utilities and layout of a typical UNIX like system so one knows that "ls /usr/bin" lists several hundred utilities that may be worth looking up in "man". Sure, an integrated development environment like Eclipse can replace some of that, but not all. Some knowledge of heavy duty utilities like a database (MariaDB), and especially the basics of SQL, can also be good to have. Then there's networking. One ought to know of sockets and enough TCP/IP to put them to use where appropriate. Not necessary to know the gory details, just need some knowledge of their abilities and limitations and how to call on them. Another essential area of knowledge closely related to networking is the World Wide Web. Know enough HTML to construct a simple web page. Some knowledge of the capabilities and options in Apache configuration files can be of use. System administration is another area that's good to have some experience in, say by trying to install Linux on your own PC and, once that's done, tinkering with firewall rules, setting up a mail server, configuring some hardware, and so on. All this is knowledge of the craft. Also important is the science, and for that, need to have studied a little algorithms, enough to have an idea what Big O is about.

      Of the good books, many like Introduction to Algorithms by Cormen, Lieserson, and Rivest are really rather narrow. The pseudocode is good enough that a person can translate the examples into a working programming language without entirely understanding the algorithm, and get a working function. And yet, the sort of programmers who spend all their time gluing library functions together are not going to find this book of much use.

      A decent reference book for the programming language of the day is useful. The Camel book for Perl is still good, as Perl 6 still hasn't been released last time I checked. Not that I've looked all that hard, but I haven't found any book about Javascript that covers the language with minimal to no flowery verbiage, and is also up to date. No book on Javascript published before 2010 is going to cover certain very important improvements. There are hundreds of books about C/C++, and most of them seem to be garbage. Java has a similar problem. Some take 10 pages to flog a trivial example to death, to explain something that should have taken one paragraph. Many get lost in the trivia, covering the details of something like operator overloading, with overly simplistic examples that come across as contrived and so fail to show the usefulness. Very hard to show the value of OOP with tiny trivial examples that fit on 1 or 2 pages, so they resort to basically saying "trust us, OOP really is a useful time saver and organizer for large projects".

      Books about utilities can be good. But they are of course also quite narrow. For instance, the book about GNU Make covers its subject well. Books about CVS, Subversion, Git, Mercurial, or whatever repository software is being used are hit and miss, sometimes okay, and sometimes barely edited assemblages of online documentation that could have used some polishing but didn't get any. HTML is another narrow subject that can burn up more shelf space. Some of these books are massive tomes that seem only to have all those pages to look more impressive.

      --
      Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
  103. Know thy system by Anonymous Coward · · Score: 0

    If you want to understand the system "under the hood", i recommend grabbing copies of any modern assembly programming books or references (i usually read off technical reference of CPU manufacturers - Intel, ARM etc..

    the benefit of reading and understanding them is enormous. You start to understand how memory layout, alignments, registers, instructions and modern CPUs interact during a lifetime of a code. this is not only beneficial for performance people but for every programmer who has to write code; in general understanding them makes us a better programmer "because" we understand how it all interacts underneath (might take a while to grasp everything but a nobel pursuit nonetheless) and will write software to behave well. Even if you write the "high"est level code (think of most modern language such as Java, Scala etc..), you will then appreciate the fact that this is how vector arithmetic or memory alignment make things faster and that high level libraries do implement that in some form using some C library which then uses some assembly underneath. Understanding them takes time; but again, one thats worth a pursuit.

  104. I'd suggest... by Anonymous Coward · · Score: 0

    ... The Design of Everyday Things.

    And BOFH.

  105. You have no credibility until you've read these by Anonymous Coward · · Score: 0

    Hitchhiker's Guide to the Galaxy, Ender's Game, and Cryptonomicon

  106. Re:Absolutely! by Anonymous Coward · · Score: 0

    The part where he relates that Wordstar used the high bit of an ASCII byte to signify "last letter in a word" is a wonderful example of the confusion of concerns.

  107. Just the articles by Anonymous Coward · · Score: 0

    If we're just talking articles, not books:
    The Rise of Worse is Better: http://dreamsongs.com/RiseOfWorseIsBetter.html

    goto considered harmful: http://www.cs.utexas.edu/users/EWD/ewd02xx/EWD215.PDF

    others have mentioned, and I second:
    The Cathedral and the Bazaar: http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/

    And for the lighter side:
    Real Programmers Don't Use PASCAL: http://www.webcitation.org/659yh1oSh
    BOFH: http://bofh.ntk.net/BOFH/0000/bastard01.php

  108. Re:There are no things every programmer should rea by narcc · · Score: 1

    I'll second C2, and offer an additional recommendation: dig deep.

  109. Names and unicode by Craig+Ringer · · Score: 1

    Anyone developing software needs a clue about names, and about unicode and text encodings.

    http://www.kalzumeus.com/2010/...

    http://www.joelonsoftware.com/...

    (Then learn lots, lots more about text encodings).

    Also, whether or not they use SQL directly, about metacharacter attacks and SQL injection:

    http://bobby-tables.com/

    http://watchguard.com/infocent...

  110. 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.
  111. "A lot" by Torp · · Score: 1

    The correct answer to this question is "A programmer should read a lot".

    --
    I apologize for the lack of a signature.
  112. How to apply for a degree... by tonejava · · Score: 1

    And learn the fundamentals!

  113. Everyone Poops by Anonymous Coward · · Score: 0

    http://www.amazon.com/Everyone-Turtleback-Library-Binding-Edition/dp/0613685725

    Seriously, it puts everything into perspective.

  114. 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
    2. Re:no, the ones like by Cederic · · Score: 1

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

      At which point I reject the code and its comment.

      refCount++;

      No fucking comment necessary.

    3. Re:no, the ones like by sjames · · Score: 1

      Actually, the first comment does convey the most important information. In the second, the variable should have been called RefCount, not x.

  115. Outside the box by Ramirozz · · Score: 1

    Programmers should read / investigate about how things work, specially human behaviour, economics and politics and pay special attention to problems (and why they happened across the longest period of time you mind can handle). That will be far more better than whatever recommendation.

    --
    http://www.quasarcr.com/
  116. The Art of Software Testing by Anonymous Coward · · Score: 0

    While a lot of programmers feel that software testing is both below them or not needed (the My code is perfect). This book should be required reading. Your code by definition is faulty unless it can pass the tests. And if the tests are bad, the code stays faulty forever.

  117. Applied Cryptography by Bruce Schneier by simishag · · Score: 3, Insightful

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

  118. 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.

    1. Re:C Programming Language, by K&R by david_thornley · · Score: 1

      I've programmed extensively in C and in several different assembler languages. Then I look at a modern CPU and realize I still don't know how it works.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  119. 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...

  120. The Most Important Book! by MouseTheLuckyDog · · Score: 1, Flamebait

    Zen and the Art of Motorcycle Maintenance

  121. The Programmers Stone by vovin · · Score: 1

    If you don't read it, you don't get it.

  122. For C++ by the_arrow · · Score: 1
    --
    / The Arrow
    "How lovely you are. So lovely in my straightjacket..." - Nny
  123. 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
    1. Re:Try by Like2Byte · · Score: 1

      Mod up parent. So wish I had mod points.

  124. Soul of a New Machine by wirelessjb · · Score: 1

    by Tracy Kidder. A CS prof in school put it on the syllabus. Great account of a development project.

  125. Some classics by vikingpower · · Score: 1

    Karl Popper, "Objective Knowledge", in order to make you understand what the dangers of induction and inductive reasoning are.

    John von Neumann & Oskar Morgenstern "Theory of Games and Economic Behavior", a brain-trainer that will leave you, after having read it, much more induced to first simulate, then code !

    Peano, "Calcolo Geometrico", containing his famous axioms for Boolean algebra. There is a good translation from the year 2000 by Kannenberg, titled "Geometric Calculus"

    Leslie Lamport, "Time, Clocks and the Ordering of Events in a Distributed System" -- you will never think the same again about synchronization and time-related problems....

    And so on. All classics from the 20th century, giving the necessary background in computing and logics fundamentals that I so often miss in today's fresh graduates. The oldest text, by Peano is even from 1888, but still actual today !

    --
    Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
  126. 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.

    1. Re:C++ FQA (and ignore the downmods) by Anonymous Coward · · Score: 0

      you absolutely must read the Frequently Questioned Answers [yosefk.com]:

      Let me summarize it for those who haven't read it, so they can avoid wasting their time: C++ sucks because it is not Java, C++ sucks because it is not Garbage Collected and lastly the C++ FAQ sucks because it does not have a perfect solution for everything. You really should use something with a garbage collector instead.

    2. Re:C++ FQA (and ignore the downmods) by david_thornley · · Score: 1

      Truth is truth, but it's a bit thin on the ground in the FQA.

      I examined a random chapter thoroughly. There were flat-out untruths. There was a lot of ignorance of how to do things in C++. There were a lot of personal preferences masquerading as something significant. There was darn little that was actually useful.

      If you know C++ well, you may as well avoid it because you know everything it might teach you. If you don't, you should avoid it in favor of something more truthful.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  127. The Economics of Software Quality by HighFlyer · · Score: 1

    by Capers Jones.

    Provides empirical evidence _why_ we need to write good code.

    Here's an interview with the fella I just stumbled across yesterday:

    http://www.informit.com/articles/article.aspx?p=1824791

    --

    -- Truth suffers from too much analysis.
  128. Dale Carnegie - oh please by hunnybunny · · Score: 0

    This has got to be the most overrated book ever.
    It's one man's hopelessly out-of-date, patronising, down-home, folksy BS in the form of boring, repetitive, unsubstantiated anecdotes.
    I've never read so much waffle with so little actual content.
    It's basically advise on how to butter people up so you can sell them stuff or manipulate them so you can sell more stuff.
    Typical manipulative, overblown nonsense from a typical salesman-philosopher.
    A 1930s Gareth Cheesman (UK reference).

    Don't waste your time.

  129. Dale Carnegie - oh please by hunnybunny · · Score: 0

    russoto: I didn't make it clear I agree with you! Just hate the book.

  130. A Toastmasters manual by Stolpskott · · Score: 1

    ok, this is more about what programmers should "do" than what they should "read". But for anyone involved in working as part of a team or dealing with either managers or subordinates (holy crap, I have just described everyone not working completely alone), I strongly recommend going to a few Toastmasters meetings.
    No matter what programming language you use, development style, methodology, or approach, programmers today spend more time communicating with other people than they ever have done before.

    Toastmasters - both in terms of giving speeches and also performing leadership tasks based on running the meetings, helps to improve communication and leadership skills (dramatically, in most cases).

    If you are ok with being the anti-social loner who sits in the corner churning out code, and who thinks of communication with others as "one grunt for no, two for yes", then you need not bother. But for everyone else, it is a great place to go.

  131. Books for writing performance critical robust code by Anonymous Coward · · Score: 0

    This is a list I think anyone should read if they really want to be a good programmer writing mostly critical system software that needs to be very fast and robust. A few of these are not directly applicable, but teach ways of thinking and analyzing programs that are very beneficial for writing correct code.

    Aho et al.,Compilers: Principles, Techniques & Tools
    Pierce, Types and Programming Languages
    Winskel, The Formal Semantics of Programming Languages
    Pierce et al., Software Foundations (online book)
    Baier, Katoen, Principles of Model Checking
    Cormen et al., Introduction to Algorithms
    Sedgewick, Flajolet, An Introduction to the Analysis of Algorithms
    Kreher, Stinson, Combinatorial Algorithms
    Bird, Pearls of Functional Algorithms Design

  132. C++ programmers required reading by Anonymous Coward · · Score: 0

    I think all C++ programmers should read "The D Programming Language" by Andrei Alexandrescu, only then will they appreciate how truly awful C++ syntax is and discover a language that is just as powerful, but is also simple and elegant.

    1. Re:C++ programmers required reading by Anonymous Coward · · Score: 0

      I agree, and will raise you this.

  133. Large-Scale C++ Software Design by John Lakos by Puff_Of_Hot_Air · · Score: 1

    If every university simply taught this book, software development would be called software engineering. Written in 1996, and still we have not learned the lessons. Flawed. Wordy. Partially out of date. And yet, if you understand and apply the concepts in this book, you will design applications and systems of the standard that everyone actually expects software to be at (rather than where it is).

  134. One more thing by Puff_Of_Hot_Air · · Score: 1

    Don't be put off by the "C++" in the title. Most of the concepts are applicable to any language. It's about the engineering behind large scale software development.

  135. "Zen and the Art of Motorcycle Maintenance" by Anonymous Coward · · Score: 0

    ISBN-10: 0060589469
    ISBN-13: 978-0060589462

  136. Why’s (Poignant) Guide to Ruby by Anonymous Coward · · Score: 0

    If you want to read something different, try : Why’s (Poignant) Guide to Ruby

  137. Re:There are no things every programmer should rea by ultranova · · Score: 1

    Only thing worse than GOTO statement is COMEFROM statement.

    Yet the same people who complain about GOTO because they have to scroll around the source to see what'll happen have no problem with things like object-oriented programming, where it might be literally impossible to figure out what function (out of an unbound set) will actually be called until the code is run.

    --

    Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

  138. Writing Secure Code by Anonymous Coward · · Score: 0

    Apparently we don't actually care about security here. Writing Secure Code should be on every must-read list.

  139. Reflections on trusting trust by Ken Thompson by Anonymous Coward · · Score: 0

    ... for a perspective on security.

  140. confirmation bias by queBurro · · Score: 1

    which dull book did you invest time in reading, and you now want other people to read so you can feel validated?

    --
    sag
  141. "Algorithms + Data Structures = Programs" by Anonymous Coward · · Score: 0

    Best overall book on programming.

    Of course, finding any good Algebra book would help as well, along with an introduction to Abstract Algebra, which is a foundation of all programming languages, and many, many algorithms used for every coding project - even if the coders don't believe it.

  142. Watch this by Anonymous Coward · · Score: 0

    Learn about Unix and the foundation of Linux from the comfort of your armchair, without all the hippy unicorn shit from Stallman et. al.

    Learn about the force, Luke. pwd

  143. Naive Child by Anonymous Coward · · Score: 0

    By the time you're 35, you will be a manager. The mythical man month is the bible for this realm.

    Also, why haven't I seen Knuth yet.

  144. What every programmer should know about memory by StripedCow · · Score: 1
    --
    If Pandora's box is destined to be opened, *I* want to be the one to open it.
  145. Re:There are no things every programmer should rea by gweihir · · Score: 1

    Look around for things that deal with aspect that interest you, that expand on topics you do not know yet and that you can follow. I am _not_ against reading a lot. I am against elevating some texts to "high wisdom", as that can do more harm than good. This cannot be done without experimenting and looking around.

    For example, for me, the algorithm books by Knuth are pretty worthless. I find them far too hard to read. On the other hand, the original papers referenced I usually understand much better.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  146. Re:There are no things every programmer should rea by gweihir · · Score: 1

    Goto is not a problem in itself. In order to understand the issue, you have to know that at the time this article was written, most people used goto exclusively, and _that_ is a problem. Used competently, goto is just another tool in the box and it does have its uses.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  147. An excellent book for programmers by Anonymous Coward · · Score: 0

    Software Tools, by Kernighan and Plauger. Read and follow the examples and you will understand how to decompose a large problem into a set of small and useful solutions. I read this when I was learning C (even though the examples were in Ratfor in the version I had), and I always regarded it as the best book about programming that I ever read.

  148. Re:There are no things every programmer should rea by gweihir · · Score: 1

    Indeed. All paradigms known so far have their serious problems, and I do not expect that to change. The important thing is to know more than one tool and more than one style, so you always have choices to make the code better. And "better" always means KISS, clarity, simplicity. There is no silver bullet, and there may never be one. But people that just know one tool, tend to think it solves everything best. It does not.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  149. Re:There are no things every programmer should rea by gweihir · · Score: 1

    They use cooperative multitasking in this day and age? How stupid can you get? Cooperative multitasking has its applications, but only in small, extremely high quality code, where you have special needs besides that.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  150. Wrong question by Anonymous Coward · · Score: 0

    I keep reading submissions like this. What should I read? What's THE MINIMUM I should learn? What do I really really HAVE TO do?

    You're doing it wrong. You should read MORE than you really need to. If you like something, read more about it. If you don't, stop and do something else. CS is a vast field. Roam free.

  151. Writing Solid Code by Stele · · Score: 1

    This was the book that opened my eyes to defensive programming. It's pretty old now, but apparently there a newer version.

  152. Ob by Hognoxious · · Score: 1

    TFM?

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  153. Code by gshegosh · · Score: 1

    Every programmer should read code. Bad code and good code. To learn how to do things and how to not do things.

  154. Mein Kampf by Adolf Hitler by Anonymous Coward · · Score: 0

    You're welcome

  155. Baber: Error-Free Software by Capt.Albatross · · Score: 1

    Error-Free Software: Know-how and Know-why of Program Correctness by Robert L Baber, published by Wiley, ISBN 0 471 93016 4

    http://www.amazon.com/Error-Fr...

    This slim volume is by far the most readable and practical introduction to formal verification that I have seen.

    Don't be put off by its somewhat overstated title.

    I believe it is important for every professional programmer to have some understanding of how to construct a proof of correctness of code, even if they never use it professionally, as it will expand their understanding of programming. In my case, knowing what it would take to prove a program correct has changed the way I program, in ways that I hope improves the reliability of what I write.

  156. Soul of the the New Machine by Amigan · · Score: 1

    I'll second the recommendation on Steve McConnell's Code Complete - I've used it as a college textbook in classes on SE I've taught. On a lighter note, I would recommend Tracy Kidder's The Soul of the New Machine. Somewhat dated, but gives a historical perspective on how/what it took to build a new machine and make it to market.

    --
    "Software is the difference between hardware and reality"
  157. A bug database by OrangeTide · · Score: 1

    Programmers should sift through an old bug database.

    --
    “Common sense is not so common.” — Voltaire
  158. TFM by rs79 · · Score: 1

    Duh.

    --
    Need Mercedes parts ?
  159. Learn that Characters != Bytes for God's sake by DickBreath · · Score: 1

    Not a book to read, but read about Unicode and learn that Characters are != Bytes.

    Bytes are 8-bit machine values.

    Characters are part of human languages. The old ASCII coding where a char is a byte is just one (primitive) method of encoding characters into bytes.

    The important thing is that whenever you need to convert or store characters into bytes, you must use a function to convert chars to bytes. Conversely, when you need to convert bytes into characters, you need an inverse function to do so. Think of it like if you had to convert between bizarre languages like Klingon and Canadian, you would use a pair of translation functions between the two. You could not just access values from Klingon and assume they are valid values in Canadian.

    The conversion from Chars to Bytes and vice versa takes an additional parameter that indicates which Character Encoding to use. There are several to pick from. US-ASCII, UTF8, UTF16, etc. But UTF8 is a very good default because it is very much like ASCII, but will properly convert characters in any human or alien language between Unicode and bytes. The functions that convert from Bytes to Characters on your system may very well offer a function that does not need a character encoding parameter (eg, UTF8) but will figure out which encoding the bytes represent and then decode them into characters for you.

    It is difficult, I know. The notion that chars == bytes is deeply embedded. But it is easy to break. And once you do, it's really easy to understand that they are different and they must always be converted using a pair of functions. So for example, a function that compresses data would accept BYTES not characters and would return BYTES. A function that encodes data into Base64 would accept BYTES as input and would output CHARACTERS limited to the US-ASCII set of characters. But the characters could be embedded into anything that accepts character parameters, such as an email, output into a web page, etc. A function that parses JSON into a data structure accepts CHARACTERS as input, not bytes. An HTML output (or input) stream is characters, not bytes. A file on disk is bytes, not characters. But the byte stream can be passed through a reader that returns a character stream in order to read through the file as characters. Etc.

    --

    I'll see your senator, and I'll raise you two judges.
  160. Less programming, more math by Anonymous Coward · · Score: 0

    Although I don't believe that there is such a thing as a book that every programmer (or scientist or what have you) should know or have read, I think that apart from style guides on writing and programming well a good book or two on the mathematics relevant for the field the programmer works in primarily is quite valuable. It is much easier to comunicate your ideas about any abstract concept if you have a basic grasp of the mathematical and logical vocabulary. It's also invaluable in making your own assumptions clear to the point where you can see that maybe they do not conform to the reality of your (or someone else's) code. Any book on discrete math and something light on logic by e.g. Raymond Smullyan will do for a start. If a working programmer does not know the first thing about algebra than he will undoubtedly will run into trouble when dealing with things like user-defined operators or comparison functions.

  161. Required by Anonymous Coward · · Score: 0

    1984 - Don't be evil. (Looking at you google)

  162. Art of Unix Programming by Anonymous Coward · · Score: 0

    http://www.catb.org/esr/writings/taoup/

  163. Smashing the Stack by dave562 · · Score: 1
  164. Tufte & Knuth by Anonymous Coward · · Score: 0

    The Visual Display of Quantitative Information

    The Art of Computer Programming

  165. 7 weeks books by Anonymous Coward · · Score: 0

    The 2 best computer science books I've read in the last few years. Excellent writing, really teach you about how languages and databases get created, and how they fundamentally differ.

    Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages
    Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement

  166. On the Cruelty of Really Teching Computer Science by Anonymous Coward · · Score: 0

    E. W. Dijkstra's essay:

    EWD 1036
    On the cruelty of really teaching computing science

    This essay won't help you much with programming, but it provide clarity on why you should choose a different career.

    https://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/EWD1036.html

  167. Re:There are no things every programmer should rea by Cederic · · Score: 1

    http://c2.com/cgi/wiki if you want the URL. One of the oldest URLs in my memory that still works.

    It's not neatly organised, but I find I go to check one thing and two hours later I start closing the tabs I've opened that I know I'm not going to get around to reading.

    It predates, predicted and helped evolve the whole Agile development movement, and all the conversations and insights that led to current best practices are still there.

  168. Re:There are no things every programmer should rea by BasilBrush · · Score: 1

    Yet the same people who complain about GOTO because they have to scroll around the source to see what'll happen

    That is of course a straw man. People don't complain about goto because they they to scroll around. Even in properly structured non-oo programming you have to scroll around to see subroutines. And that's fine.

    The argument against goto is that it tends to produce buggy and unmaintainable code. Where maintenance isn't just scrolling around to understand what's going on, but making fixes and changes to the functionality.

    Of course the oop approach is also complex, but it's complication derives from the actual complexity of the problem domain of writing event driven applications. Goto complexity (spaghetti programming) is accidental and unnecessary complexity.

  169. just not MSDN by rewindustry · · Score: 1

    i've done more harm to my own (and other people's) code by following advice taken from MSDN articles than by any another means.

    microsoft have a way of breaking everything, and then writing about it is if they invented the solution.

    except their solutions never work.

    the number of times i have had to rewrite server code, socket code, locking code, threading code, all because the original was based on one of their samples.

    there is no single "right" way to write code, but there are plenty of wrong ones, and microsoft have been the worst offenders, to date, in my experience.

    at time of writing stackoverflow is my best reference, and otherwise plenty of RTFM.

  170. Re:This by Anonymous Coward · · Score: 0

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

    If you see them every other week, you're visiting the wrong sites.

    What is a good read about programming?

    Source code! Lots and lots of source code...

    If I want to get into programming, which language should I start with?

    Brainfuck.

    If I want to get my child into programming, where should I start?

    First you'll need to get a child. In order to get that, you'll need to have sex! Which means that you'll have to get out of your moms basement.

    In other words: Forget about it!

    Should schools push teaching programming?

    Should schools push teaching auto repair, cooking and sewing?

    Can I get a programming job with two semesters of classes done?

    No.

    I've programmed for my whole life, can I learn a new language?

    Depends on how stupid you are?

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

    Only sometimes.

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

    Try that with "whitespace" or "malbolge" and all the directions are "U-turn! U-turn!".

  171. Re:This by MetalliQaZ · · Score: 1

    The first thing I thought of when I saw this post was "import this" in Python, which prints out the Zen of Python:
    """
    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the temptation to guess.
    There should be one-- and preferably only one --obvious way to do it.
    Although that way may not be obvious at first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right* now.
    If the implementation is hard to explain, it's a bad idea.
    If the implementation is easy to explain, it may be a good idea.
    Namespaces are one honking great idea -- let's do more of those!
    """

    Which is definitely relevant. Oh well.

    --
    "Here Lies Philip J. Fry, named for his uncle, to carry on his spirit"
  172. Programming Pearls? by Anonymous Coward · · Score: 0

    For sure...

  173. Start from bottom up. by ememisya · · Score: 1

    Art of Assembly is a good book.

  174. Absolutely! by Anonymous Coward · · Score: 0

    I concur. I've read three of Joel's books, which are comprised of the same essays you find online, but they all make for a great night curled up on the couch reading. Great storyteller Joel is, and the topics are always interesting.

  175. 4 Imperical Books by araxius · · Score: 1

    Kernighan and Ritchie's "The C Programming Language". I think it is the best to understand programming. Knuth's Art of Computer Programming is a great plus, but it is not the basics. Also having an understanding of compilers is very beneficial. Dragon book is really recommended.

  176. GTD / David Allen by c.jaeger · · Score: 1

    The algorithms and architectures found in code help you manage workflow and data. You'll need those same skills in other areas of your life so you can be effective. IMHO - the best book for figuring out how to handle time and mental energy is "Getting Things Done" (GTD) by David Allen. Here is the best summary I've found for condensing the book's 288 pages down into less than 4000 words.

    --
    -- "In a time of drastic change it is the learners who survive; the 'learned' find themselves fully equipped to live in
  177. Re:There are no things every programmer should rea by david_thornley · · Score: 1

    The problem with GOTO is that it makes it difficult to reason about the code, or make statements you can count on. (This largely goes away when GOTO is used in a disciplined fashion, but most of its real uses have different and more limited keywords in modern languages.) In OO programming, you can examine the member functions to make sure that they do the same thing, if in different ways. If you find they don't, that's a real problem.

    --
    "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  178. Re:There are no things every programmer should rea by david_thornley · · Score: 1

    Thing about cooperative multitasking is that it's safer than preemptive. Errors are going to lead to thread starvation, which is fairly obvious and may not harm the program except by making it take longer. In preemptive, errors can occasionally cause race conditions, in which execution goes subtly awry and you get the wrong answer without realizing it.

    --
    "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  179. Patterns by TechNeilogy · · Score: 1

    "The Timeless Way of Building" by Christopher Alexander.

    --
    "The wisdom of the Patriarchs was that they *knew* they were fools." --Master Foo
  180. science fiction by Anonymous Coward · · Score: 0

    and probably Tolkien, Douglas Adams, Heinlein

    oh and probably read dilbert from the begining.

  181. Ethical Engineering by MoarSauce123 · · Score: 1

    Read a book or paper about ethical engineering. The rest will fall in place.

  182. dunning-kruger effect by Anonymous Coward · · Score: 0

    http://en.m.wikipedia.org/wiki/Dunningâ"Kruger_effect

  183. Re:There are no things every programmer should rea by gweihir · · Score: 1

    The problem with cooperative is that basically any piece of code can kill the whole thing by deadlocking it. Testing is not adequate to find that. On the other hand, calculations that give wrong results because of race-conditions are exceedingly rare. Race-conditions are a crash-, deadlock- and security-risk, but almost never a risk that causes wrong computation results. In addition, with preemptive you can split processing power into parts that do not have dependencies. With cooperative, that is impossible, everything always depends on everything else working.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  184. to become what? yet another programmer? by Anonymous Coward · · Score: 0

    read everything you are interessted in. think about. may be you will be a better programmer after this, or may be you will be an author too or ... or you invite the next facebook and run around as a zombie, who sold his soul ...

  185. Re:There are no things every programmer should rea by Anonymous Coward · · Score: 0

    > Thing about cooperative multitasking is that it's safer than preemptive.

    The only time it's safer is when you control all the code running on the CPU. Blindly run anyone else's code, and you're asking for trouble!

  186. Indeed. "Programming Pearls" by Jon Bentley by Anonymous Coward · · Score: 0

    ...and get off my lawn

  187. Read ... by Anonymous Coward · · Score: 0

    The Cat in The Hat by Dr Seuss ... to prepare programmers for the mayhem that is projects and Project Mangers.