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 ...
For further actions, you may consider blocking this person and/or reporting abuse
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:
Language specific:
Still on my pile:
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! ๐
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.
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...)
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".
Never heard about "Land of Lisp" book before, but the Music Video on the website is awesome ๐
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.
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.
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?
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.
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.
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
Once I started listening on 1.5-2x, it's hard to go back!
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.
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 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.
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.
"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 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.
I have a paperback Grokking Algorithms, a great book โจ
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.
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
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.
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'.
Nowdays I'm reading Essential Scala which is quite nice practice
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.
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.
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!
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
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
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.
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.
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!
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.
Great article Anna!! always we have to search the way to get confidence to code and the programmings book are really good.
I love reading in computer science and programming languages. But I have some difficulty in understanding the translation of these books
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.
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.