Obviously, those who write books usually have a pretty good idea of what they are talking about, so gaining knowledge from them is a great strategy.
And yes, there is a belief here in Rwanda that you can learn CS by ONLY reading books.
But to your point, I'm not sure why you rank books so highly, when in isolation they clearly aren't enough. The average student probably won't grock worse case runtimes by only reading about them. Having a lecturer explain it and give examples will help, but actually implementing some sorts and seeing how fast they run on different size data sets is really what is going to drive it home.
But for a great many programming jobs, I would actually make the argument that you COULD do them without reading a single book. Granted you probably won't be building the next map-reduce, but you can still be effective.
Learning how to find solutions online, read documentation (does that count as a book?), and debug, as well as fundamental algorithms are the big skills.