When you learn new things, learn from books
I can hardly believe that there is any Java developer who never reads a Java book, or “agile developer” who never reads a book on XP, Scrum… Unfortunately, there are just so many many of those. In fact, many people I know/interview have very fundamental gaps in their knowledge and in most cases I discover that it is partly due to the fact that they never spend time learning things from books. Reasons provided often are: not enough time, internet resources are more than enough etc. In most situations, I don’t think it’s a good mindset to develop software.
A decent technical book would provide a learning framework and good coverage on the topic it discusses. In may cases, it may provide a broader and deeper base of knowledge than what required for people to finish the task at hand. But then, the exposure they have with such breadth and depth will allow them to come up with much better solutions than the just-work ones. Besides, by learning about every aspect of a technology, even only the high-level concepts enough to know what it is about and what problem it is trying to solve, people can avoid themselves from creating things which already exist.
How much time do developers often spend researching on the internet about a particular Java or .NET topic, like generics or reflection, during the course of developing a software? If they learn it end-to-end from a decent book, the researching time would be much shortened as the author already did that for them. Besides, with the base knowledge from the book, they are better informed in order to make better and more specific research decisions in other sources, like the internet, should they need to know more. Now, by emphasizing the importance of learning from books, I do not mean to de-emphasize the importance of learning from the internet, from co-workers, or from any other sources. What I really mean is that reading books, in most cases, is just the minimum requirement to really understand about new things.
Another problem with learning from the internet is that people must know what they need to know about, at least to “google” with smart keywords and pick a handful of good articles out of a million misleading articles, while a decent book already provides the things the author, who is often an expert in his topic, thinks people should know. As a person who has been there, the author should know better than most readers about the things new learners should learn. (Of course, that does not work for all learners; for example there can be a learner who is more knowledgeable than the knowledge covered by a book, but then it’s a problem of audience-targeting instead of a problem of learning from books.)
My team has been working on a SharePoint project and as newbies in SharePoint, one of the very first things we did was sitting down together and defining a research plan based mostly on contents presented in the SharePoint and .NET books we have. For example the group responsible for Workflow has picked “Essential WF” and “Workflow in the 2007 MS Office System”, the group responsible for Excel Services has picked “Beginning Excel Services”, and so on. That’s how we can make sure we understand enough of the technologies to get up to speed with the job and to facilitate further research.
One of my favorite interview questions is “which books do you read to learn about Java (or .NET, WPF, patterns etc.)?”. The interviewee can’t just name a random book to answer that question, s/he needs to tell me how good or bad s/he thinks the book is and why. And if it happens to be a book that I’ve read, I will spend a good amount of time learning how s/he really understands that book.
Reading a lot of books does not guarantee good developers, but not reading any book at all (not including university’ required readings) does guarantee bad developers. So, next time when you learn just about anything new, be it a programming language, tool, development process, or technology, ask your most knowledgeable colleagues for their recommendations, check out the blogsphere as to which books people often mention about, review Amazon’s rating, and pick some decent book(s) to learn. It is a good investment…