Ask Slashdot: What Books Should An Aspiring Coder Read?
Earlier this month Bill Gates released his summer reading list, which included Seveneves, by Neal Stephenson and mathematician Jordan Ellenberg's book How Not to be Wrong. Now an anonymous Slashdot reader asks for your book recommendations.
I've been trying to learn more about coding, but I need a break sometimes from technical documentation and O'Reilly books. Are there any good books that can provide some good general context and maybe teach me about our place in the history of technology or the state of the programming profession today?
In the U.S., Memorial Day is considered the "unofficial" first weekend of summer -- so what should be on this geek's summer reading list? Cracking the Coding Interview? Godel, Escher, Bach? This year's Nebula award winners? George Takei's The Internet Strikes Back? Leave your suggestions in the comments. What books should an aspiring coder be reading?
In the U.S., Memorial Day is considered the "unofficial" first weekend of summer -- so what should be on this geek's summer reading list? Cracking the Coding Interview? Godel, Escher, Bach? This year's Nebula award winners? George Takei's The Internet Strikes Back? Leave your suggestions in the comments. What books should an aspiring coder be reading?
Coders code. It's what we do.
Write something. Anything.
Create a screensaver, a simple unity game, it doesn't matter. Just code something up.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
How to learn Hindi in 30 days :-)
Whatever he damn well pleases.
Michael Scott: Programming Language Pragmatics. Morgan Kaufmann.
It'll make you understand how crappy your programming language is (unless it's a good one, which is unlikely).
Great book. A must read for any aspiring coder.
Anything from Andrew would be appropriate I would like to think
What is the single most influential book every programmer should read?
"They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety."
Read your chemistry textbook, especially the chapter on thermodynamics. Knowledge of real things... an arcane skill these days.
What books should an aspiring coder be reading?
First of all, this one.
If that's not your bag then, this one because that's the future of coding.
Blast from the past? Today we read online docs and stackoverflow.
When all you have is a hammer, every problem starts to look like a thumb.
Or, really, any other introductory algorithms book.
The language you choose to learn may turn out to be a flash in the pan, but algorithms are forever.
https://www.edx.org/ Not a book, but good resources for learning.
Unix Power Tools is from O'Reilly but, it's not really a traditional book. It's more like 1000 pages of super useful Unix anecdotes. When I've worked at companies that had interns, I've always bought a copy for them and dropped it on their desk. I would consider it required reading for anyone working on Unix/Linux machines.
Jonnie Goodboy Tyler is the engineers hero. With his bare hands, ingenuity and scraps of knowledge, he takes down a power empire. Great read.
Read a book about something else, and find a career that doesn't suck. Software sucks. It may take you a few years to realize it, but eventually you will discover the truth.
The Mythical Man Month - Frederick P. Brooks, Jr.
Death March (2nd Edition) - Edward Yourdon
Snowcrash.
In the free world the media isn't government run; the government is media run.
Fuck GEB. It's shite. If you see it placed prominently on a shelf it means the person is a pretentious tossbag and hasn't actually read it but is trying to appear intellectual to to other pretentious tossbags.
Zen and the Art of Motorcycle Maintenance. Lila is pretty good too.
Either User Interface Design for Programmers or Don't Make Me Think.
The Machine That Changed the World.
Any of the reengineering ones by Hammer and/or Champey.
Either Mein Kampf or Atlas Shrugged.
Accounts Demystified.
Philosophy Made Simple (long out of print; "For Dummies" overran their niche).
Design for the Real World: Human Ecology and Social Change.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
Then you can be a unique special snowflake and insist that you can't possibly add anybody else to your project that's six months behind because it would take 'forever' to train someone because you're a shithead who doesn't comment your code or architect before you start pushing bits.
You will write pretty stale and crappy code if you're not conversant with the way the rest of the world works.
Amazon Link: http://www.amazon.com/Dreaming...
It's an old book (first published in 2008 with mixed popularity), but 8 years later I remember it being a nice story on "what it's like to code" and accurately described the state of software engineering of its time. This was before Big Data was a thing, so you may find a lot of it out of date, but I think it fits what you're looking for.
Good luck!
Dianetics by L Ron Hubbard is a great read. Especially if you like tragic comedies.
"To Engineer Is Human: The Role of Failure in Successful Design" by Henry Petrosky http://www.amazon.com/Engineer...
We learn much more from failure.
"The Design of Design, Essays from a Computer Scientist" by Frederick Brooks http://www.amazon.com/Design-E...
This isn't as well known or quite as easy to read as "Mythical Man-Month."
Both of these books should take you outside of 'pure coding' into thinking about the systems the code is part of, and how those systems interact with humans and with other systems.
If you desire to be incompetent, read something about "Agile" development. If you wish to be a Tom Cruise Mho-Rhon idiot, read L.Ron.Hubbard.
For non technical stuff, I'd recommend Love in the Time of Cholera and Heart of Darkness, all the works of Ovid and a book by Pahalniuk.
Or any book that inspires you to start something
Donald Trump: 'Think Big and Kick Ass in Business and Life'. To understand the 'thinking' behind the nightmarish dystopia you might be coding in for the next five years.
UNIX Power Tools by O'Reilly is a great treatise on programming in general because it does concepts such as loops, conditionals, environment, I/O, formatting, etc etc.... all via shell scripting, no "hardcore" compiled languages. Just 1056 pages of the concepts of programming, with examples and loads of documentation. You can take the concepts into oher languages easily enough later on. I've been re-reading it over and over for almost 20 yrs now, its that good.
C|N>K
If you include works of fiction, Cryptonomicon should be required reading.
The Prince by Niccolo Machiavelli
Like it or not, you got to survive dick-head bosses, power struggles and office politics to have a decent career (more than your coding skills or knowledge)
Death March, and also the Unix-Hater's Handbook. Both are fairly educational, and the latter is a bit dated but a funny and mostly accurate roasting of Unix. You don't need to dislike Unix to enjoy it, and it's educational too.
For every problem, there is at least one solution that is simple, neat, and wrong.
Hard to say, since it depends entirely on what sort of thing you like!
If you want technical stuff that isn't gory details, something like Fred Brooks' The Mythical Man-Month is probably worth a shot. A lot of stuff from this book has passed into common wisdom, but actually reading the first-hand accounts makes it far more real!
If you want lighter entertainment reading that's vaguely computer related, I can strongly recommend Charles Stross's "The Laundry Files" books. These are a mash-up of spy thriller and Lovecraftian horror with a hacker protagonist, in a world where computers are the ultimate key to summoning up tentacled creatures from beyond.
But if your favorite author is Dostoevsky, then this may not be to your tastes. As I say, it depends entirely on what sort of thing you like.
Coding is a technical subject. Success is found in meeting the needs of other people. It takes both technical and social savvy to be great. The following books will introduce you to the bigger picture.
The Mythical Man-Month by Fred Brooks
Peopleware, Productive Projects and Teams by DeMarco and Lister
Almost Perfect: the rise and fall of WordPerfect Corporation by W. E. Peterson
Innovation and Entrepreneurship by Peter Drucker
The Art of the Metaobject Protocol by Gregor Kiczales
The Ten-Day MBA by Steven Silbiger
http://www.amazon.com/Coders-W... Read this one a while back. There's interviews with the (then) new kids on the block as well as some old unix greybeards, so there's a good amount of perspective in there. Another more historical book I can recommend is When Computers Were Human http://www.amazon.com/When-Com...
Comment removed based on user account deletion
I thoroughly enjoyed The Cuckoo's Egg by Cliff Stoll.
Read this seminal book on programming: 1984, by George Orwell. It'll help you spot future trends in software development.
Just cruising through this digital world at 33 1/3 rpm...
A Pattern Language by Christopher Alexander. Really a book about architecture and urban planning, but sets out the idea of a pattern language that has been very influential in many fields, particularly software engineering.
The Mythical Man-Month by Frederick Brooks on a lot of the pitfalls of managing big software projects.
Depending on the anonymous reader's level of experience and literacy, Why's Poignant Guide to Ruby ( http://www.rubyinside.com/medi... ) may be a good introduction to the language, or to programming in general. It's a bit too whimsical to really teach you design patterns or anything, but as far as a first-time guide to the idea of variables and loops, it might be just what is needed.
See subject: He was an inspiration to me & I had a nice "geek speak" w/ him here https://it.slashdot.org/commen...
APK
P.S.=> It's more of a read for security folks imo, but, nice to see you mentioned one of my favs... apk
Read source code. Might not be your typical Great Gatsby summer ready, but you can learn a lot just by reading existing source.
A book telling you how to Google for a way to fix whatever programming issue/problem you're trying to resolve.
To start off with learning this important skill, you can begin Googling for this book, telling you how to Google.
For actually learning to code you're better off following lectures on Youtube or courses on Udacity, something interactive and up-to-date on the latest paradigms and frameworks.
Read about computers for some inspiration:
Anything by Ray Kurzweil
The Master Algorithm
Automate This
Nine Algorithms That Changed the Future
Neuromancer
Snowcrash
A Fire Upon the Deep
Beyond the Blue Event Horizon
For non-fiction I'd suggest:
Mind Change: How digital technologies are leaving their mark on our brains - Susan Greenfield
The Knowledge: How to rebuild our world from scratch - Lewis Dartnell
For fiction, try:
The Circle - Dave Eggers
The Owner Series (The Departure, Zero Point and Jupiter War) - Neal Asher
Neptune's Brood - Charles Stross
Yup, not a single one of them has anything to do with code or coding, but a few of them certainly provide some context / insight into where we are today, and where we might be going.
The Joy Of Sex. So you'll know what you'll be missing ;)
https://en.wikipedia.org/wiki/... - to understand the people that make computers
https://en.wikipedia.org/wiki/... - to understand computers
https://en.wikipedia.org/wiki/... - to understand users of computers.
Have fun!
Just saying it like it are.
I would read books about stuff that interests you.
Reading a book about a new technology just because it is hot makes only sense: if it interests you.
Reading about e.g. angular.js just because it is hot, but you never really want to use JavaScript ... pointless.
Perhaps you find this interesting: http://www.amazon.com/History-...
I only have volume 2: http://www.amazon.com/History-...
It is a good read. A collection of articles about a few dozen programming languages. You can read one in 30 mins before going to bed e.g.
Regards
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
Check out, "Design Patterns - Elements of Reusable Object-Oriented Software".
Skim some old books of decades past, so you at least get a feel for the history of computer programming and know what was taught to undergraduates in different eras.
For the late-70s era, I recommend Roger Kaufman's A FORTRAN Coloring Book.
I also recommend skimming both the original (1978) and second (1988) editions of Kernighan and Ritchie's The C Programming Language.
While I don't have specific recommendations, it would be worth a trip to a university library to find early instructional books using the BASIC, COBOL, and JAVA languages if you don't know those already. Then pick up something on a late-1990s/early-2000s version of Microsoft's Visual Basic. Again, these are just for skimming and picking up a bit of history, not for learning the languages (unless you actually want to, of course - in which case also get a modern book on the language you want to learn).
If you've never used an assembly language, I recommend learning at least enough to do a "hello world" and call and return from a subroutine on whatever real or simulated processor you have handy. I know that's not a book recommendation but it may lead you to find a book on the topic worth reading or skimming. Today almost nobody uses assembly language except in very specialized environments, but it's still good to understand what is going on at the chip-architecture level (what we used to call the "bare metal" before sophisticated microcode and the like made that statement not-exactly-true).
On a non-technical level, find yourself a good, up-to-date book on computer security practices from a human-being point of view and a good book on businesses how they work (yes, that's a very broad topic, feel free to pick a sub-topic). For the business book, I'd go for an older book that has withstood the test of time. The Peter Principle qualifies but it's not the only good book out there.
It's somewhat dated in that it doesn't exactly apply to some modern programming models, but Brooks's The Mythical Man-Month is worth reading cover-to-cover.
In the spirit of complete honesty, I've only read some of the books mentioned above cover-to-cover.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
An elegant, succinct book that makes even Oreilly Nutshell books seem long winded. Explains C coding very well, and gives a great understanding of low level algorithms.
https://en.wikipedia.org/wiki/The_C_Programming_Language
Is that like when you carve a web page into a stone tablet or something?
you will start to understand how it feels to be completely baffled as a linguistic and conceptual newcomer, which is exactly the same experience your users have when they try to figure out how your system works and the words you use to describe things.
and not just a foreign language, but one that uses a writing system you know nothing about, like if you are American, try Russian or Persian or Chinese.
Natural Logic by Neil Tennant - *before* learning to program.
Algorithms in C by Robert Sedgewick.
A philosophical joy ride.
I enjoyed coding in the beginning, but then I worked with a super genius coder... and I realized I'm a long way from being a great coder. So I gave up coding and started working in another field, where I actually made substantial amount of money... Semi-retired at 44. So can't complain really.
Someone said that Alice in Wonderland is the best book on programming. "The Idea Factory" is about technology in the last century, and touches on computers, and is also quite readable. "The Art of Unix Programming" is worth a read, along with the jargon dictionary, and they're free. "Zero Bugs and Program Faster" has code examples from across half a century. This series was really great, but might be hard to find.
"First they came for the slanderers and i said nothing."
Anything and everything by Stephenson really, some are a little better than others. ........
Cryptonomicron, Snow Crash, and The Diamond Age are the best of them.......
But "In the Beginning was the command line" is non-fiction. More of a geek history.
https://en.wikipedia.org/wiki/In_the_Beginning..._Was_the_Command_Line
by Victor Frankenstein
Software development can be a grind. Perspective is valuable.
Geoffrey James, The Tao of Programming
http://www.mit.edu/~xela/tao.h...
Neal Stephenson, In the Beginning Was the Command Line
http://cristal.inria.fr/~weis/...
Vernor Vinge, True Names
Dale Carnegie, How to Win Friends and Influence People
https://en.wikipedia.org/wiki/...
Read a game rule book and then implement all those constraints, conditions and dependencies into code. Then read a book about the programming language you used to work out how you could have done it better, then look at a DIFFERENT set of rules, doing it better from scratch instead of tinkering at the edges of the first.
Bonus points if it's not a game but a simulation of a real system, but games are normally more precisely described with possibly more motivation.
If I could send every programmer, project manager, and product manager to one course/seminar, it would be the Dale Carnegie Human Relations course. Understanding customer requirements from the customer's point of view, diving deep into customer issues, and communicating back and forth amongst all of the stakeholders in a software project require human skills that, sadly, some coders lack. People skills, project management skills, and productivity skills (such as GTD and the Pomodoro Technique) are just as important as, if not more important than, technical skills. Learn the people skills first. They'll get you set up to learn the rest on the fly.
The Phoenix Project: : A Novel about IT, DevOps, and Helping Your Business Win
As someone who has worked in IT for multiple different industries over (more than) 20 years (finance, manufacturing, tech sector, etc.), I cannot stress enough how well this book represents the challenges that businesses face, and how developers can be extremely crucial players in making businesses succeed. That is, if the developers, IT and the rest of the business get on board to implement the best practices of continuous delivery/integration, in as such as it makes sense for their business. Overall, I feel the information that one could learn from this book (as well as the book that inspired it, entitled "The Goal: A Process of Ongoing Improvement"), can be extremely beneficial for anyone who will be coding for a Company, open source project, etc.
"Startup: A Silicon Valley Adventure" by Jerry Kaplan.
http://www.amazon.com/Startup-Silicon-Adventure-Jerry-Kaplan/dp/0140257314/
"Showstopper!: The Breakneck Race to Create Windows NT and the Next Generation at Microsoft" by G. Pascal Zachary.
http://www.amazon.com/Showstopper-Breakneck-Windows-Generation-Microsoft/dp/1497638836/
In the U.S., Memorial Day is considered the "unofficial" first weekend of summer
Assuming that the last "unofficial" weekend of summer is the labour day weekend, that would mean that Canada has a longer summer. Our first weekend of summer is the May Two-Four, the weekend before Memorial Day.
When our name is on the back of your car, we're behind you all the way!
Code takes you from the basics of how information and numbers are encoded electronically, to how they are stored and transmitted in modern computer systems.
This is the book I wish I had read 20 years ago!
RTFM.
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
The Art of Programming (Kernighan & Plaugher). Mandatory Reading.
Software Tools (Kernighan & Plauger). Also Mandatory. I prefer the "Ratfor" version, but YMMV.
The C Programming Language (Kernighan & Ritchie). Actually has a lot of good programming tips.
Out of Control (Don't remember the author, but he is/was a big name in Wired Magazine). Introduction to self-regulating systems.
The 100 (Again, don't remember the author). Thumbnail histories of 100 "most influential" people (in author's opinion).
Design Patterns. Pretty much standardized OOP/OOD terminology.
And, of course, the books by Knuth (NOT light reading, but excellent references & advanced computer-science studies).
Good webcomics, like XKCD, SchlockMercenary, and GirlGenius.
Goedel, Escher, Bach.
Wolfgang Wickler's "Mimicry", for the beautiful illustrations and the understanding of relationships between concealment and the unintended consequences of similar appearances.
To step away from programming and understand the batshit crazy politics, I'll recommend the Bible, Koran, Chariman Mao's little red book, Meiin Kampf. The Book of Mormon, the Communist Manifesto, the secret Scientology scriptures over at factnet.org, Atlas Shrugged, etc., etc. Getting a handle on the pure nuttiness is enlightening and can be entertaining.
http://www.amazon.com/Pragmati...
This may be a bit out of left field as a suggestion, but How to Lie With Statistics by Darrell Huff is short, funny, enlightening, and teaches a lot about the presentation of technical information. It's a painless introduction to the subjects that Edward Tufte goes into in far more depth.
Q: What does the "B." in Benoit B. Mandelbrot stand for? A: Benoit B. Mandelbrot
Still very relevant to Coders: Writing Solid Code by Steve Maguire, which teaches techniques how to avoid bugs.
I gave some talks on different books that'll be interesting for technical people, and in the end compiled them in a list in goodreads:
https://www.goodreads.com/list...
A depressing but unsurprising litany of dull technical books, bad science fiction, and Any Rand. Don't read books with code in them, or books about coding, that's what the internet is for.
Read fiction, because it's good for you. Read things that seem a bit unlikely to entertain at first. Read The Inferno, Frankenstein, Pride and Prejudice, The French Lieutenant's Woman, Nineteen Eighty Four, Animal Farm, Wise Children, Ridley Walker. The only halfway technical book I ever enjoyed was Chaos by James Gleik, and that was when I was thirteen. Read proper books. Life's too short to spend any of it reading about code. Believe me.
The Mythical Man Month
It kinda changed me
YMMV
Muchas Gracias, Señor Edward Snowden !
Cliff Stoll's "The Cuckoo's Egg" is technically out of date (written in 1989) but an excellent walk through the midset and workflow of hacking - white and black. Very entertaining.
The historical perspective that it provides is a bonus.
Learn some soft skills to bring your career to the next level:
There are plenty of technical books out there. Those will serve you ... your first ten years of your career. If you want to remain in a true technical role - keep current with the latest technologies thereafter. However if you want rise up the chain beyond that point - its less about individual technical ability and more about team technical ability. The 10x rockstar only takes you so far if you plan to have a life outside of work - you'll need to start relying on your team to get the job done. Start looking for books on leadership and how to build a team.
Comment removed based on user account deletion
What we need is a Communist-Mohammedist Utopia and you nice folks will deliver that.
There exist educational courses for being a "computer scientist" or a "software engineer". If you need a picture, then:
Coder == Hamster cranking out buggy shite at high speed
Software Engineer == White middle-aged guy who can say "fuck that, I will not do this and I will now go find a new job". The WMAG also has a very solid education in a SCIENCE (yes, it is, whatever the self-trained pu$$ies say). He knows how to solve many problems perfectly.
WMAG builds things like the A320 flight control software, the Buran software or the software controlling ABS brakes.
WMAG knows how to ignore the bull$hit propaganda. And he likes PASCAL 100 times more than the Bell Labs Dreck.
Your first language should be Pascal or Ada and your should work on Niklaus Wirth's Algorithms and Data Structures.
If you want to be a hamster, please reconsider. We already have more than enough Code Hamsters. You will earn less than a plumber with that shitqualifiaction.
Isaac Asimov, "Foundation series", "I Robot", George Orwell "1984", Bruce Schneier "Secrets And Lies".
Anyone in the IT industry should have read these, in my opinion.
You should also be warned to ignore the nonsense which emanates from certain (often Java-related) circles. AOP, Agile and other hamster-wheel techniques of False Prophets.
Computer Science is rock-solid and based on hard theory and we do not need the agitprop shite which has no substance in an irrefutable way. Instead, focus on what and has been proven. E.g. Complexity Theory. Also, use common sense. "Agile" is as craptastic as Marxism. It comes with the same hyperbolic promises and the same enormous amount of hand-waving.
Agile and similar voodoo ideologies make as much sense as Marxism or Mohammedism.
Seriously helped me
I recommend "The Cathedral and the Bazaar" by Raymond
https://en.wikipedia.org/wiki/...
Uh, Linux geek since 1999.
"The Sciences of the Artificial" by Herbert Simon. First edition is better than the later editions but you'll never find it so just read one of the later editions. Original focus was on the structural differences between natural sciences like chemistry or medicine and what Simon labels the artificial (from "artifice" - man made) sciences like engineering and economics. Simon won the Nobel Prize for Economics, the Turing Award, etc. Wiki him and then read the book. It's not very long and full of interesting ideas.
"The Structure of Scientific Revolutions" by Thomas Kuhn. Sufficiently well known it requires no introduction. Just read it; it's good and will get you to think.
I guess would make for good reading, if you want to get used to having diversity rammed down your throat - something you'll surely encounter working in the tech industry.
Jokes aside, here are some articles and short stories that make for good tech reading.
http://www.catb.org/jargon/html/story-of-mel.html - The Story of Mel. It's about coding "back in the day" when everything was drums.
https://www-users.cs.york.ac.uk/susan/joke/cpp.htm - A fake interview and brilliant dig at C++
http://www.arts.ucsb.edu/faculty/reese/classes/artistsbooks/The%20Library%20of%20Babel.pdf - A short story about language
I also recommend Blindsight by Peter Watts, it's a sci-fi novel that rarely gets mentioned but it's well written, will teach you a lot and has some interesting takes on places technology could realisticly take us.
It's kind of interesting. At this point, the Brooks book is taken as gospel, and yet, at the same time, management everywhere attempts to emulate all the worst parts,
These were my foundation: Usborne books for kids. It seems that you can read the entire texts online for free now. This gets down to the nitty gritty of ones and zeros, and it's written for kids. NOTE: Usborne not Osborne.
Michael Arbib's "Brains, Machines, and Mathematics." Oldie but goodie.
Coding is not unlike trying to write, stringing symbols together into meaningful sentences. Writing prose would better than reading. But reading is helpful for improving writing.
The secret to good coding a a very broad amount of knowledge. I really recommend starting with Frankenstein, War and Peace, Don Quioxte, Dialogues by Plato, Shakespeare and so on. Read A LOT. This is the first and more important step. Then start coding. The good reference books will always be changing and there are a lot of good books online, but the best one may depend on your language and what you want to start coding in. The best Japanese computing books are not in English and vice-versa. O'reilly series seem to always be very good in English to get started and go from there to more advanced topics. Take as much math and science as you can in grad school as well!
Then you are ready to start basic coding...
of course start early like in nursery school anyway you can.. always code! Books will help later once you can read.
"The Prophet", or indeed anything else by Khalil Gibran. There are lots of other good poets and writers too. They are also good choices.
The point is to learn what beauty looks like, and then try to create something beautiful yourself. Code can be beautiful and you should aspire to that.
This thread has lots of very code-specific reading choices and that's fine. I additionally look for inspiration beyond the tech field. It broadens your mind and reminds you that as programmers, we write. As such we share something with the authors of books and poetry.
One of my suggestions as well. A great read!
https://smile.amazon.com/Hackers-Heroes-Computer-Revolution-Anniversary-ebook/dp/B003PDMKIY?ie=UTF8&keywords=Hackers&qid=1464700569&ref_=sr_1_1&s=books&sr=1-1
Not a movie plot, just a lot of good stories that help explain the evolution of our technology.
A little late to the party here, but if anyone is still reading this thread, Neuromancer is a great novel. Even after 30 odd years or so it still brings the mojo. And the anti-hero hero is a programmer.
Not exactly a book about coding so much as how to code. I recommend both "Clean Code" and "The Clean Coder" by (Uncle) Bob Martin. There is a style and professionality taught in those books that I wish was far more common in the real world. I really cannot recommend them enough.
excellent choice - this book is wonderful.
nonfiction broad-interest: Steven Levy: Hackers Tracy Kidder: The Soul of a New Machine Cristopher Moore and Stephan Mertens: The Nature of Computation fiction/fun: Neal Stephenson: Reamde (note the spelling) Geoffrey James: The Tao of Programming nonfiction textbookish but worth reading through: Marc Rochkind: Advanced UNIX Programming W. Richard Stevens: Advanced Programming in the UNIX Environment Michael Kerrisk: The Linux Programming Interface Thompson and Ritchie: Bell System Technical Journal "The UNIX Time-Sharing System" and all the other reprints in which they discuss the evolution of UNIX Kernighan and Ritchie: The C Programming Language
But Gallifrey, the lead machine now, still wasn't all there. It was running all the toughest diagnostics, but failing occasionally on some of the lower-level ones. The Hardy Boys would leap for their analyzers, run the test again, and the failure wouldn't happen.
"A flake."
But where was it?
On October 6 the vice president, Carl Carman, came down to the lab as usual, and they told him about the flakey.
Carman is a man of medium height, in his forties, fair-haired, with skin rather pink from the sun—all in all cherubic-looking. He smiles like Alsing, mysteriously.
The ALU was sitting outside Gallifrey's frame, on the extender Gallifrey was running a low-level program. Carman said, "Hmmmmmm." He walked over to the computer and, to the engineers' horror, he grasped the ALU board by its edges and shook it. At that instant, Gallifrey failed.
They knew where the problem lay now. Guyer and Holberger and Rasala spent most of the next day replacing all the sockets that held the chips in the center of the ALU, and when they finished, the flakey was gone for good.
"Carman did it," said Holberger. "He got it to fail by beating it up."