DEV Community

Cover image for Learning to love software development books ๐Ÿ’™

Learning to love software development books ๐Ÿ’™

Anna Buianova on April 04, 2019

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

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
 
healeycodes profile image
Andrew Healey

I had a similar experience to you. At first, technical books seemed quite boring compared to the alternative โ€” which is strange because I'm a voracious reader otherwise. So I've been catching up! Lately, I enjoyed revising my algorithms and data structures with Grokking Algorithms โ€” a light, fun read with fantastic illustrations.

Collapse
 
lightalloy profile image
Anna Buianova

I have a paperback Grokking Algorithms, a great book โœจ

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
 
andersonjoseph profile image
Anderson. J

I always prefer books over videos. With videos (tutorials) you learn a specific thing, with books you learn a lot of thecniques/tools/workflows for build anything you want <3

Collapse
 
glennmen profile image
Glenn Carremans

I didn't before but since this year I started reading more software related books. Previously read Clean Code and now almost finished with The Clean Coder.

I still have a whole list of want to read books on my shelf.

Collapse
 
codemouse92 profile image
Jason C. McDonald

I adore reading. I have two and a half shelves dedicated just to programming books (not including the hundreds of eBooks I've accumulated). I find that books don't become "outdated" as fast as one might think. Even when many languages release a new version, backwards compatibility is usually quite good, so the "old" books I have still contain quite a lot of useful insight, especially when paired with a few articles on 'what's new'.

Collapse
 
theodesp profile image
Theofanis Despoudis

Nowdays I'm reading Essential Scala which is quite nice practice

Collapse
 
jamesmackinnon profile image
James

I treat a technical/programming book like an academic course, helping me form a more well-rounded understanding of the topic. Most of my day-to-day reading comes from online articles, but a good book can be an enjoyable/geeky dive into the 'Why?' as much as the 'How?' when dealing with systems.

Collapse
 
andreasjakof profile image
Andreas Jakof

I am currently reading โ€œF# for C# Programmersโ€ and I like it quite a lot so far.
I pushed some basics and concepts into me with some presentation videos (fsharpforfunandprofit.com/video/) but now I will spend some time reading and thinking about concepts and patterns. How they are different from the ones I am used to.
Nevertheless I havenโ€™t read much coding books, because I am mostly hands on... doing something and learning on the way.

Collapse
 
bhermans profile image
Bart Hermans

I used to read a lot of books when I first entered the job market, around 20 years ago. Books were an absolute necessity, especially as a reference. There was no Google... :)
I don't anymore, mainly because software/tools/frameworks/... change so fast nowadays, books do get outdated really quickly.
I've noticed I can learn most of the stuff from online docs, articles and blogs. And lately I've also started enjoying the more technical Youtube videos. There's some really quality stuff on there!

Collapse
 
steelwolf180 profile image
Max Ong Zong Bao • Edited

I actually don't really read technical books often unless I go for technical that is sort of like a reference guide or mindset which does not change as years goes by.

Especially the last one book The Art of Deception, despite it's super dated but it's still relevant even in today's context if you are into security.

This is the book list that I really like and really enjoy it.

1) Two Scoops of Django - Daniel Roy Greenfeld & Audrey Roy Greenfeld
2) The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt & David Thomas
3) Clean Code - Robert Cecil Martin
4) Debugging Teams: Better Productivity Through Collaboration by Ben Collins-Sussman & Brian W. Fitzpatrick
5) Soft Skills: The Software Developer's Life Manual by John Sonmez
6) The Art of Deception by Kevin D. Mitnick, William L. Simon & Steve Wozniak

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
 
ben profile image
Ben Halpern

I donโ€™t read books as a primary method of learning, especially new things, but they are good to complement everything else and generally make me more knowledgeable.

I really enjoyed a book on Erlang I read. I had no plans on writing Erlang, so I just read to be a bit more informed about Erlangโ€™s ideas and itโ€™s place within our craft.

Collapse
 
lightalloy profile image
Anna Buianova

Agree, I don't usually learn by reading books for the new things (like a new language or framework).
I found it more effective to read books about more advanced and fundamental topics. I was glad to find that there are also language-specific(Ruby) books, that help with learning general software development concepts and at the same time get better at the language itself.

Collapse
 
edisonywh profile image
Edison Yap • Edited

Do you read books and code along or just read through?

I used to think reading programming book makes little sense (like you said it's like documentation), but the practice was what I think made me grasp the concepts.

I am a huge fan of Pragmatic Bookshelf (they have a tonnes of books, I'm mainly there for their Elixir selections) and I've also heard of Manning's, if anyone's interested can check them out!

Collapse
 
lightalloy profile image
Anna Buianova

For most of the books, I do experiment with the code pieces that I find interesting. If there are exercises, I do work on them.
But I wouldn't say that I "code along" for many of them because they are not usually about developing a project and describing it. But if they are (e.g. Exploding Rails) I do code along.

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