After reading a question about books every programmer should read, I wonder if the following should be considered obsolete:


Code complete: 1st edition in 1993; 2nd edition in May, 2004
Introduction to algorithms (Cormen, Leiserson, Rivest, Stein): 1st edition in 1990; 2nd edition in September, 2001; 3rd edition in 2009
The Pragmatic Programmer: October, 1999
Structure and Interpretation of Computer Programs: 1st edition in 1984; 2nd edition in September, 1996
The C Programming Language: 1st edition in 1978; 2nd edition in April, 1988


All these books seem very old. Isn't there a difference between modern computing and what was current when those book were written?

For example, my 61-year-old teacher explains things very nicely but forgets to take into account all that has been done between when he began to teach 25 years ago and now.

Isn't the same true for those books? Aren't there any more modern books that teach principles and technologies that are closer to current practice? Or do you consider them to be useful and relevant even today?

These book are about the principles of development. These principles are, by nature, language-agnostic, and for some even paradigm-agnostic (OOP, functional programming, imperative languages).

They explain the theory and good ways of the development because, in the end, software is always about getting data, processing it, then outputting it back. Facebook, Twitter, 3D, batch process of accountancy, railway traffic management, launching rockets, etc.

Books that are about a language, like  "How to learn XXXXX in YY days", where XXXXX is a language and YY is a number that will eventually (and sometimes actually very quickly) become obsolete, because, by nature, they are about things that either evolve, or get replaced and become outdated.

Code Complete, by the awesome Steve McConnell, is perhaps the book that made me realize this. And the Pragmatic Programmer totally changed the vision I had of software development. By reading such books, you realize that 95% of the problem you're facing everyday has already been solved, and that 95% of us are still reinventing the wheel.

The so-called "Cloud" isn't the future of software development, it's a way to use developed software. 

Don't fall into the trap of hype/bullshit buzzwords, focus on how you can improve your software craftsman skills.

Focus on learning from what other brilliant spirits have invented and learned before us, because it is the only way to become an accomplished developer.
