With such an abundance of online material, why do I continue to read programming books? After all, online content is usually free; and buying books is expensive.

I read programming books because I believe they offer a large-picture perspective on the topic at hand. Books usually cover the full application lifecycle, from planning to production. For books which are not about an application or framework (such as a book about a programming language), I enjoy the thorough and organized coverage.

Often times, as programmers, we simply need to look up syntax we do not remember. This is usually faster online. However, if we are looking for information about a specific function and its use cases, a good technical book is not a bad place to start. Often, they will include more detail or have more thorough examples than you will find in official documentation online. The function will likely be explained in the context of a larger example - and you could see a new idea you never expected.

One of the problems with looking for everything online is that very few blog posts are comprehensive. They cover a very specific technical problem as briefly as possible. In a book, you can see where a problem is organized in context of other topics. Books tend to be both longer and more rigorous than blog posts.

Books are almost always written by programming experts. A person (or group of people) who can write an entire book on a programming topic definitely know what they are doing. It is also possible to find great authors online, but more often than not, you will not have any idea whose blog you are reading.

Books are most advantageous when learning a new skill or topic from scratch. I have recently been learning functional programming using Scala. What I really need before I can learn all the little details (I can find those on Stack Overflow) is an understanding of the computer science aspect of functional programming, why that is beneficial for particular kinds of applications, and the architecture of applications using Scala. Until I see the big picture, the details do not have any meaning to me, and I will not remember or even make much sense of them.

Online searches are a strong choice when you encounter a bug (Stack Exchange) or when you really just need syntax - NOT an explanation of an implementation.