I have always loved to read, but my experience with technical books is more complicated than with other kinds of reading.
When I first started to code, I found reading programming books boring. It seemed like many of them were just repeating documentation.
I was mostly learning by practicing then: reading and writing code, googling and reading language documentation. I still read some books on software development every once a while, but I tended to choose the more "stable" and general-purpose ones, like "Code Complete", "The Mythical Man-Month" or "Joel on Software" (which are great). I thought that most of the books will get outdated soon, so I haven't read any books on the languages I used.
Several years and jobs passed, but I was still mostly learning by coding on the job, reading blog posts, and working on my pet projects.
Later, I had a very busy couple of years: maternity leave + part-time work, then full-time work + learning to drive. When I was able to return to a more steady schedule, I gained a great will to learn and fill blanks in my knowledge, but still hadn't much spare time to learn.
Around that time I stumbled upon a Sandi Metz's book "Practical Object-Oriented Design in Ruby". I decided that reading will be a nice way to complement my professional life. It took me a long time to finish the book (like 3 months :D), though it is really interesting. After reading POODR and doing some research I realized that actually there are many great books that don't get outdated instantaneously. Later I've built a habit and started reading much faster (which is a topic for another post I'm working on).
What I like about the books is: they provide structured knowledge. You don't need to search for the information on the topic each time. If you have a spare half an hour or even less, you can just return to the book and start reading. Over time you will notice how much knowledge you've got.
I found reading highly effective when accompanied by practice at work. It helped me to fill a lot of blanks in my knowledge and even gain more confidence. I would definitely advise my previous self to start reading tech books earlier in my career.
What about you? Do you see reading software development books as an effective way to learn?
Latest comments (43)
I have had the same experience: learning on the job or from pet projects, I felt more comfortable with language documentation (and even the C++ spec) than books that re-hash the documentation and are often written with beginners in mind.
The first titles to break that pattern for me were the "Effective C++" books by Scott Meyers, which are aimed at advanced practitioners. I'll always want more of those, for other languages. "JavaScript: The Good Parts" by Douglas Crockford is another example that comes to mind.
There are a few other exceptions, and what characterizes them is that they're not trying to teach a language or framework. An oft-cited example of that would be "The Pragmatic Programmer", but the one book I recommend most often is "Working Effectively with Legacy Code" by Michael C. Feathers, which is about testing. For C++ programmers, "C++ Coding Standards" by Herb Sutter and Andrei Alexandrescu is useful for working in a homogenous team.
I have finished Working Effectively with Legacy Code" this year. It's a great book, especially for those who work with C++ or Java. It's less hands-on for a ruby developer (like me) but is still an interesting and useful read.
It doesn't really address any particular language, though? I'm a PHP developer, and it's fundamentally changed how I work.
I read a lot of technical books when I was starting programming and usually it was really boring. I thought that reading a book from cover to cover will make me confident to say "I know languange N".
It's not.
For me the best results are achieved when there is a perfect mix of theory and practice. When there is a new field to learn, I try to start with small practical steps. When I hit a wall because of lack of knowledge, I search for answers and tutorials to solve my practical problem. With next practice task the loop repeats. With every round I get more practical experience and theory knowledge.
I think your feelings should be the guiding star in learning process.
Enjoy reading a technical book? Go ahead!
Is it boring to read? Screw it! Do some practice work instead.
Frustrated with finding a solution to a problem? Go read some theory to fill the gaps.
Totally agree on adjusting your plan and switching learning styles while you're learning.
Great article Anna!! always we have to search the way to get confidence to code and the programmings book are really good.
Great article! i agree in the idea of pairing the work and reading a book about that task im doing, because doing it in a test lab or only reading the book is for me hard, because i have no real reference and i acquire the knoledge in a more superficial level. in other words: i need the war to become better!
I love it, in fact it's my passion to learn books and that's why you will find so many articles about books on my blog.
Here is a list of couple of them which have inspired me in my career:
10 Algorithm books Every Programmer Should Read
10 All time great books for Java Programmers
10 Books Every Programmer should read
6 Books to Improve your Coding skill
All the best
Javin
"Learning by doing" is an effective paradigm for solving immediate problems and finishing projects. It's not effective for the broad sense of learning either programming or a language. That's because you only learn the bits you need when you need them. It's possible to write significant projects in Java, for example, and never learn inheritance or polymorphism. You just write the classes you need and keep going. To learn to use the full language, you need to understand interfaces, abstract classes, and all the details that go with them.
I had a love affair with video trainers, but the bloom is off. They are good for gathering information about a language or other aspects of programming. But they can't compare to books. Books necessarily have the detail and, as you note, the structure to enable you to put together multiple pieces. What's more, with books you can look up things you are vague about, and review them.
I love reading in computer science and programming languages. But I have some difficulty in understanding the translation of these books
It's been similar for me, I've read several books about programming and it's really a good approach to learning.
By the way, I'm open to listen suggestions about good books to read.
Many of the books I've read are Ruby-specific, though currently I'm moving towards reading non-Ruby ones.
I also loved DHH books (Getting Real and Rework), but I read them a long time ago. They are not so much about coding, but more about business and getting your projects done.
What are the best books for beginning coders to start with?
For me, it's hard to recommend a specific book to learn to code, because I started reading regularly later in my career.
I would still recommend spending more time practicing at the beginning.
And I would still recommend more general-purpose books for the beginners.
I started my career after reading a book!
I believe, reading technical books is a must-have skill for any programmer who wants to be distinguished in the industry. It provides you with the in-depth knowledge, that courses (videos) can't cover. The benefits of reading technical books are related to how our brains work during reading, which I think related to how the developer's brain should work.