Hot answers tagged books
Effective Java, Second Edition by Joshua Bloch. No question. If every Java developer read this book, there would be a lot less broken code in the world. After that, I'd read Java Concurrency in Practice (see separate answer), and maybe Java Generics and Collections (see separate answer). Anyone that reads and puts into practice the information in these ...
Here's how I learn, generally speaking: Buy a book Don't read it cover to cover but know where everything can be found Find a pet project to work on Learn from experience, but use the book as a reference Where the book fails, there is always google Note: the third point sometimes comes first. Edit: To answer the question "Why?" Google is great to find ...
No, it is not a substitute, but a perfect complement. I feel a combination of the two holds a lot of power. Why is it that a good lecture teaches you more than just reading a book? Interaction and the ability to ask questions. By just reading a book, some questions might pop up to which you can't find any answers. Look for those questions here, or ask them ...
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, ...
Thinking in Java by Bruce Eckel Comments from duplicate answers: prash: Thinking in Java by Bruce Eckel is a great book for beginners and teaches you not only the "What"s and "How"s of Java but also the "Why"s. It is available from the above link. Michael Easter: It is an introduction and yet discusses the background behind Generics, Swing, ...
All those books seem very, very, very old." Psychology-Computer-Programming (1971) - With a Million times as many programmers as in 1970 the psychology of how they design programs and what mistakes they make and how to avoid them is more important than ever. Software Tools (1976) - With the web being a collection of frame works, utilities, scripts and ...
When it comes to multithreading, Java Concurrency in Practice is the choice.
Head First Design Patterns - not necessarily a pure Java book, but essential for every Java developers who designs his applications himself.
Code Complete by Steve McConnell. I don't even think it needs explanation. It's the definitive book on software construction. Incredibly well written and covers all aspects of the practical (programming) side of creating software.
Head First Java is great for beginners. Effective Java will take you from journeyman to master.
I've read a lot of resumes, some good, some bad, and they've never had a list like this. Honestly, it would indicate to me a candidate who has extremely little hands-on experience and is desperate to pad a thin resume. And a candidate who hasn't bothered to research common resume formats. Such a resume would most likely be circular-filed. By me, anyway.
The key problem with legacy code is that it has no tests. So you need to add some (and then more...). This in itself would take a lot of work, as @mattnz noted. But the special problem of legacy code is that it was never designed to be testable. So typically it is a huge convoluted mess of spaghetti code, where it is very difficult or downright impossible ...
Be sure to read all of Gates's quote including this: "It took incredible discipline, and several months, for me to read it. I studied 20 pages, put it away for a week, and came back for another 20 pages. If somebody is so brash that they think they know everything, Knuth will help them understand that the world is deep and complicated." ...
Code Complete is about software craftsmanship; it is an advanced-beginner/intermediate-level book, written for the working programmer, but it would still be very useful to someone who's been programming for at least a year. Thus the key points of Code Complete (2nd ed.) are nicely summarized in its Chapter 34, Themes in Software Craftsmanship. As ...
We have really BIG eyes. All kidding aside, I'm one of the people who finds reading to be very difficult. If I'm working my way through a very large book, I try to read early in the morning, when I first wake up, when my mind is free of distractions. I find that I'm able to get engrossed much easier at that time of day and I retain more. Then, there are ...
Refactoring by Martin Fowler Especially the chapter about Bad Smells in Code should be understood by everyone.
The Design of Everyday Things by Donald Norman
Some reasons why books are still relevant: I find it easier to read a lot of text on paper than on standard LCD screen, maybe e-books on a e-ink display will change this. Book tend to describe the big picture and some good practices, that is really good when you need a quick start or a new view. Google is really good when you need examples on specific ...
TAOCP is an utterly invaluable reference for understanding how the data structures and algorithms that we use every day work and why the work, but undertaking to read it cover-to-cover would be an extraordinary investment of your time. As one family man to another, spend the time with your kids.
Getting Things Done David Allen
Is the content still valid today? I guess most theoretical stuff don't change over night, but is there some major points which does not hold today which I should be aware of? The content is logic and math. It doesn't change in any substantial way, not only over night. It will be valid forever.
Even I think Knuth's book is a bit advanced and difficult to understand. Those books are definitely for research level algorithmists IMHO. So are there any books out there that are friendly for novices/slow people like me? Introduction to Algorithms by CLRS is much simpler. EDIT : Still if you want to read Knuth's book you should first go through ...
The Structure and Interpretation of Computer Programs, aka SICP When I saw that SICP was not listed yet, I grimaced in pain. :) Why: There's nothing more to add to Norvig's praising this book as the greatest introduction to computer science ever written. Well OK, since the Why? was requested: SICP covers the fundamentals of software in a satisfyingly ...
Design Patterns: Elements of Reusable Object-Oriented Software comes very close to my definition of a canonical book on design patterns. According to its wikipedia article (emphasis mine): The original publication date of the book was October 21, 1994 with a 1995 copyright, and as of July 2010, the book was in its 38th printing. The book was first made ...
There is no "correct" order to reading these books. They each focus on different aspects of software engineering. Clean Code - focuses on coding in the small. How to write classes and functions. Code Complete - focuses on the processes of software engineering. Pragmatic Programmer - focuses on working within a team producing software.
Worth mentioning: The Mythical Man-Month
Any book that allows you to teach yourself X in Y hours. I've read some in the past but once read you don't know any details whatsoever about X and you can't use the book as a reference for X either. After discovering that it seems better to go for the big books.
Only top voted, non community-wiki answers of a minimum length are eligible