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?

Top comments (43)

Collapse
 
lokidev profile image
LokiDev

I absolutely love programming books. I even more love the general purpose books (like mythical man month - a book still on my book pile).

The best multi purpose software engineering/programming books I've read were:

  • The Pragmatic Programmer (Thomas Hunt)
  • Clean Coder (Robert C. Martin)
  • The Clean Coder (Martin again)
  • Clean Architecture (and again :D)

Language specific:

  • Python: Test-driven Development with Python (Harry J.W. Percival) - the book can be bought but is also free online readable -> obeythetestinggoat.com
  • Nim: Nim in action
  • Go: Building Microservices in Go

Still on my pile:

  • The Mythical Man-Month
  • Product Leadership
  • Peopleware
  • Code Complete
  • Rapid Development
  • (and a lot of fictional books)
Collapse
 
gypsydave5 profile image
David Wickes

After reading POODR and doing some research I realized that actually there are many great books that don't get outdated instantaneously.

This is an insight that gets lost among the (here I go again) flood of Learn Framework X Version 8.6.5 books that get churned out - one for each major publisher for every damn iteration every library.

A good programming book should teach the long-lived abstractions that much of our industry is built on. Things like object orientation, functional programming, modular programming, the Web, HTTP, REST, command query responsibility seperation, event sourcing. These are things that have been around for a very, very long time and are not going to go out of fashion.

What you should not read books about is some highly contingent currently used implementation of the above. This is what Stack Overflow is for. But by knowing what abstractions are used when talking about and designing software you'll have a much better chance of understanding (and so using) the latest tools.

I still ❤️ The Mythical Man Month, which is a ridiculously old book. I'd recommend reading REST in Practice too.

But if I was recommending one incredible book on programming it would be Land of Lisp. It's not the best programming book. It's not the best Lisp book if you want to learn Lisp. But it's definitely more fun than I've had reading any other programming book. You'll learn a lot. Maybe not things you wanted to know or needed to know, but at least you'll enjoy yourself.

A small taster - keep scrolling! 😉

Collapse
 
lightalloy profile image
Anna Buianova

Great points, David.
I also found it useful to read books on fundamental topics (like oop, patterns, fp, ddd) applied to the languages I use. It helps a lot to get into the topic and start using what I've learned.
Of course, I don't limit myself to only books using "my" languages, especially when getting familiar with the topic.

Collapse
 
gypsydave5 profile image
David Wickes

It's true! I'm not at all experienced with Java, C#, Python, C and C++ - but I find it really important to be able to read those languages just to understand code examples in books.

Especially Java - it's like a lingua franca for developers. Still hate it though 😁.

(I wasn't going to mention DDD, but since you did: I find the Eric Evans book amazing even though I can never manage to finish it...)

Thread Thread
 
lightalloy profile image
Anna Buianova

Can relate :D I'm currently reading "Working Effectively with Legacy Code" by Michael Feathers and it's full of examples in Java and C++ (and I'm a rubyist). So Java is the easier one :)

As for the DDD, I have one of the big DDD books in paper (not the Evans' one) and am not sure if I'll ever finish it, but I do read bits of it from time to time. Another problem is that it's in Russian and I have to sometimes search the terms to find out what the translator meant and if the translation is correct.
I found useful to read at least "DDD quickly" to get into the topic. There's also a book "DDD distilled".

Collapse
 
karataev profile image
Eugene Karataev

Never heard about "Land of Lisp" book before, but the Music Video on the website is awesome 😀

Collapse
 
skydevht profile image
Holy-Elie Scaïde

I have learned programming with books, mostly due to bad internet conditions. I still have an extensive library of them and I prefer them over video courses. I love reading so that may have played a major part.

Collapse
 
lightalloy profile image
Anna Buianova

I remember downloading the php documentation instead of using an online one due to the slow (and limited) internet 😬. But I was in a hurry to learn and also easily distracted, so was jumping from code to docs and so on. Especially at the job which I started without extensive programming knowledge. That's one of the reasons why I was not learning much by reading books.

Collapse
 
andy profile image
Andy Zhao (he/him)

I'm a big fan of reading software books. Once I completed my coding bootcamp, I really wasn't sure how to learn outside of that environment. I realized that I was seeking some structure or guidance, and I found that immediately in one of the books I read. It felt a lot better to me than reading a bunch of blog posts or following video tutorials, too, for whatever reason. Might just be my learning style?

Collapse
 
lightalloy profile image
Anna Buianova • Edited

I was sure reading (docs, articles) is my learning style, but Barbara Oakley (in her MOOC) taught me that for more effective learning we should combine learning styles. Since then I even sometimes watch video courses, though it's hard cause I get easily distracted.

Collapse
 
torpne profile image
Kevin McKenna • Edited

I HATE reading books on software development. Every one I've tried has seemed dry and boring.

I'm one of those people that learn by doing, screwing up, googling and then trying again.. the structured approach to books probably makes more sense in a logical flow kind of way.. but just generally makes me want to poke myself in the eye as an excuse to stop reading.

Collapse
 
alexandrusimandi profile image
Alexandru Simandi

I personally never completely read a programming book. I at most, scroll super fast and read "diagonally" to get the main point. I just love to start by doing something, tweak it, tinker it, think why it works, how it works, how it could be better, is it similar to anything I know?.

When I was a beginner I used to watch a lot of tutorial videos but now I find it too slow and inefficient.

Now I usually just scrolls the docs, read an article or watch a talk on 1.5X speed

Collapse
 
toonarmycaptain profile image
toonarmycaptain

Once I started listening on 1.5-2x, it's hard to go back!

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

Collapse
 
thefern profile image
Fernando B 🚀

I think the biggest problem with language books is that they written by software engineers with 30+ years of experience. Their perspective is totally different from a beginner. So the pace is usually not the best.

I've read a few books where the first chapter is about OOP, objects and classes, before getting into the basics like variables, conditions, etc.

I don't read much books now other than reference a thing here and there.

For me the biggest takeaway in books was that they had a nice progressive learning, good examples, and structured mini projects. Those books are counted with one hand.