Whilst I’ve always enjoyed reading, I traditionally struggled to find time for it. When I do find time, it’s normally fiction, an autobiography something nerdy but fun. My Kindle is by far and away my favorite piece of technology that I own. I still find it incredible to carry a library in my hand, on a device where I can finally have a battery that lasts a sensible amount of time (e.g. a month).
Where I really lacked though was in technical reading. Sure I’ve read the classics such as Clean Code, but that’s about it. I’ve always been an “I’ll just Google it” kind of guy. Technical books are so dry and boring! So as a rule I’ve shied away from reading textbooks.
Until about 8 months ago. In my final few weeks of work before heading off to travel the world for a year (I’m writing this on a bus from Peru to Bolivia), I had a bit more spare time than usual so I decided to take the time to do some reading. My firm has a Safari Books Online subscription (if yours doesn’t then I implore you to lobby for them to buy it with the training budget) which basically gives unlimited access to all programming books ever written, and then everything changed.
It turns out the quality of material and writing you get on the internet isn’t great (DZone excluded of course). Most writing is isolated pieces of “here’s how to do X”. It isn’t a story arc, taking you from where you are now to somewhere much better. The process of writing a book, having to think through that arc, having to put your writing through editors and to have it scrutinized by other technical people before it goes into the world results in a much higher quality of product.
It also turns out that most books aren’t boring! Sure there are some less reputable publishers that churn out books by volume who should be avoided, but a quick look at the ratings should help you to avoid any howlers. Most of these books are engaging and interesting. It’s a fascinating way to learn.
The big change for me is that I truely feel I am a much better developer for taking the time to read say, one textbook a month. I’ve read about microservices and feel that I’m in a much better position to know what I’m talking about, and I know I have a reference to go back to whenever I need help. By taking the time to sit down with a Clojure textbook and learn even the basics I’m in a much better position to talk about functional languages and where Clojure could be used better. 7 concurrency paradigms in 7 weeks is an excellent and eye opening read, particularly as a Java developer, as to the different approaches to multithreaded programming (and the flaws inherent in Java).
Sure, the majority of the information contained in these books probably exists online somewhere. But unless you need a specific piece of information you’re not going to search for it and you’re never going to read it, and you’re not going to get the ambient information surrounding it. Choosing to read a book switches you from a pull methodology (I will go and get the information I need only when needed) to a push methodology (by reading a book you are being exposed to a variety of information that you would not have seen otherwise). This is incredibly important, particularly to career development.
The most important career tool of all is continous learning. Particularly in an industry like ours where everything is constantly changing; new languages and paradigms and frameworks are cropping up all the time. It is literally impossible to keep on top of due to the volume. You could dedicate yourself to your life as a developer, work all day then read and program all night, and you still couldn’t keep on top of it all.
Fortunately no one expects that. However, too often I see developers, particularly junior ones, who see the daunting task and instead revert to a passive learning mode. They don’t seek to learn new stuff unless someone (e.g. a team leader) introduces them to something new. They learn on demand. This is a surefire way to remain an average developer.
Learning takes on many forms. The important thing is to choose subjects you enjoy and spend at least a little time looking into them. Start right now; choose a textbook and give yourself the goal of reading it this month. Not sure what to read? I certainly recommend the following books:
Clean Code by Robert Cecil Martin
7 Concurrency Models in 7 weeks by Paul Butcher
Effective Java by Josh Bloch
Building Microservices by Sam Newman