The Lounge is rated PG. If you're about to post something you wouldn't want your
kid sister to read then don't post it. No flame wars, no abusive conduct, no programming
questions and please don't post ads.
These days, I find it easier to learn from on-line articles than books. There are some great resources out there on sites like this and SQLServerCentral and I've rarely felt the need to hit the book shop for IT purposes in the last few years. The last decent coding book I bought was John Skeet's C# in Depth which is great but not for the faint-hearted.
No, I've probably read all of K&R at some point or other but not in a start-at-the-start-finish-at-the-end kind of way.
The more I think about this topic, the more I realise that reading time is far, far more rewarding when devoted to the adventures of Jeeves and Wooster than it ever could be when looking at coding manuals.
Also, think about how simple the book is. It just steps through these little programs building the readers knowledge with each page. The programs are so simple really but do some really interesting things. Of course it is all console based so that is interesting too,because the authors didn't have to worry about teaching UI type of layers.
Disclaimer : It may sound as if I'm saying the book isn't good, I'm not. However, it is interesting that a book written like that these days might not be accepted since a lot of readers would complain about all the "missing" parts.
I think it was much easier to structure a book in those days because there was a simple entry point at "Hello World" which could be dealt with in the first couple of pages and things could build slowly and steadily from that.
Modern development environments don't really lend themselves to that approach. Make a new partition, install this VM, install that VM, kick your machine around the room, wipe it clean, reinstall everything, swear a lot, get this plug-in, get that plug-in, figure out some license agreement written in gibberish, get the plug-in you missed, swear some more, 'phone your brother because he's never seen a train crash ... before you know it, you're on chapter 96 without a single line of code having been written.
That's not to take anything away from the mighty K&R - quite possibly the best pair of developers who ever lived and pretty darned good at explaining it, too.
I agree 100%.
While developing my iphone/iPad app I had to install some CocoaPods thing that was simply entirely magic to me.
1. Go to terminal
2. type in command to pull libraries
4. try to build...
if anything fails along the way, you don't know if it is a script that pulls the library or what.
We program from _mystery_ these days and have left _mastery_ behind.
I'm going to buck the trend, and recommend Donald Knuth's The Art of Computer Programming. IMO, learning a computer language is only the first (and easiest) step. The next step is learning algorithms, data structures etc. No programmer can be considered professional if he does not know something about these areas.
All 3 of the John Robbins debugging books have been hugely helpful and influential for me.
(Debugging Applications, Debugging Applications for Microsoft .Net and Microsoft Windows and Debugging Microsoft .Net 2 applications). All 3 though dated in areas, are amazingly useful and should be read start to finish. The amount of time you can save....
I'd also recommend Code Complete.
I'd also recommend K & R for C fundamentals.
Last but not least the Mark Russinovich Internals books about Windows. Incredibly useful.
Here is a selection of some of my favourite reads.
Joel on Software - Joel Spolsky: Easily one of the best book on software I have ever read. He takes a tour of software development covering every aspect of the industry.
Why Software Sucks - David Platt: A brilliant look into the UX / UI of software and why software developers aren't always the best people to design them.
Grady Booch - Object-Oriented Design with Applications: The best book on the subject of OOP. I read this from start to finish and never regretted it.
"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare