DEV Community

Cover image for Learning to love software development books πŸ’™
Anna Buianova
Anna Buianova

Posted on • Edited on

Learning to love software development books πŸ’™

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)

Collapse
 
ennor profile image
Enno Rehling (恩諾)

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.

Collapse
 
lightalloy profile image
Anna Buianova

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.

Collapse
 
ennor profile image
Enno Rehling (恩諾)

It doesn't really address any particular language, though? I'm a PHP developer, and it's fundamentally changed how I work.

Collapse
 
karataev profile image
Eugene Karataev

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.

Collapse
 
lightalloy profile image
Anna Buianova

Totally agree on adjusting your plan and switching learning styles while you're learning.

Collapse
 
ricdev2 profile image
Ricardo Dev

Great article Anna!! always we have to search the way to get confidence to code and the programmings book are really good.

Collapse
 
mvazquezolmos profile image
Marcos VΓ‘zquez Olmos

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!

Collapse
 
javarevisited profile image
Javarevisited

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

Collapse
 
nyambol profile image
Michael Powe

"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.

Collapse
 
a_nah_123 profile image
Ω†ΩˆΨ± Ψ§Ω„Ψ³ΩŠΨ―

I love reading in computer science and programming languages. But I have some difficulty in understanding the translation of these books

Collapse
 
elcotu profile image
Daniel Coturel

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.

Collapse
 
lightalloy profile image
Anna Buianova

Many of the books I've read are Ruby-specific, though currently I'm moving towards reading non-Ruby ones.

  • "Working with Legacy Code" by Michael C. Feathers - it's the one I'm currently reading, and I think it's a great book. If you use Java or C++ it will be even more useful to you.
  • "Designing Data-Intensive Applications" by Martin Kleppmann is a good one, explains a lot about databases and data storage and transfer overall, problems of distributed systems. I definitely recommend it.
  • "Professor Frisby's Mostly Adequate Guide to FP" is an interesting one, but I still need to learn more on the topic. Examples are in js.
  • Sandi Metz's books "POODR" and 99 bottles of OOP (this one with Katrina Owen) contain examples in ruby but I think they are still useful for non-rubyists.

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.

Collapse
 
kelani248 profile image
Kelani248

What are the best books for beginning coders to start with?

Collapse
 
lightalloy profile image
Anna Buianova

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.

  • "Code: The Hidden Language of Computer Hardware and Software" is an old book, but it'll help to know the basics (though I still haven't read it :)
  • "Grokking Algorithms" for algorithms
  • some of the books were listed in the comments, maybe you'll find a suitable one for you
Collapse
 
mshwf profile image
mshwf • Edited

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.