If you know someone at your workplace who you consider to be a great developer, ask him what technical book he is reading. He will have one to name almost always.
The simple fact of the matter is that great developers read books
Most highly skilled developers will have a library of books. Not every person who has a stack of books on their desk is a great developer though. One thing to look for is to see if the book bindings look like the books have ever been opened. Some developers just collect books and don't actually read them. When I am interviewing someone for a development job, I will often ask about mocking and books read recently or favorite books. Chances are if someone knows about mocking and is reading good development books they are a good developer. Seems a little wild to make a large statement like that, but experience has taught me this is true.
Why do great developers read so many books?
There are actually quite a few answers to this question.
A great developer always knows that there is always something more to learn.
It doesn't matter how smart we are, or how much we think we know. There is always something to learn. Someone can always teach us something we didn't know and we can always improve. As soon as someone stops learning they stop growing, and if you're not growing in the software industry, you are shrinking. Someone who is learning is someone who is always getting better. A person like that is also very likely to analyze problems in a way that asks questions and looks for better solutions rather than jumping to conclusions. In a field this big that is growing so rapidly it is impossible to know it all. I often fantasize about being a developer in the 80's when you could perhaps know it all, but nowadays the amount of technology, libraries, frameworks, best practices, methodologies, tools, etc are growing so rapidly that you can't even hope to keep up at a steady pace. You just have to keep from drowning.
A great developer always knows that there is someone to learn from.
What's the difference between getting in an argument, excuse me, discussion, with a great developer and a mediocre developer? Authority. A great developer can speak with authority, because it is not his idea or words that he is saying, but that of someone smarter than him. That of a whole bunch of people smarter than him. If you are arguing with a well read developer you are most likely arguing with Robert Martin, Don Knuth, Steve McConnell, and others. A developer who knows that someone has something to teach them not only values other people and ideas, but values teaching. A great developer recognizes that it has all been done before. That someone else has asked the same question, spent many hours researching it, and has a better solution than they could make up in 30 minutes. A good developer says “how can I solve this problem?” A great developer says “how did someone else solve this problem?”
A great developer wants to do things the right way.
You've heard it called elegant code, software craftsmanship, clean code or many other things, but I think deep down it's all about doing it the right way. A great developer looks for other people's views on how something should be done, ever in search of the elusive “right way.” How to design the database; how to write good unit tests; how to separate concerns; how to build good software. Books contain some of these answers and a great developer turns to others for help. A great developer knows from experience that the first way we think to do something is not likely to be the best way, so he is interested in seeing what someone else has to say on the subject.