Justin Etheredge had a question about the strategy for becoming a better developer. There is a simple answer: “Code”. The more you develop, the better you become. So, the bias should be towards finding more opportunities to code, improve code and apply coding techniques and best practices.
You may ask, what about learning? After all, you have to learn various coding techniques before you can apply them. But in reality, the more you challenge yourself with complex development tasks, the more you will be forced to learn. Learning stops being an end in itself, but subject to your programming needs.
Learning, for its own sake, results in knowledge that is a mile wide, but an inch deep. It does not help you solve real problems. It is also likely to be forgotten quickly without the training provided by utilizing it in the work you do. It can also lull you into a false sense of understanding, and lead to bad, under-informed decisions.
Knowledge acquisition should be like waves formed by a pebble in a pond. You should be strong in your speciality and then keep expanding into associated areas such as tools, frameworks, new versions, and dependencies. Obviously, some level of general knowledge about other areas is important, but don’t fall into the trap of over-rating it and spending too much time while neglecting your primary strengths.
But let’s go back to coding. Coding at work offers you the opportunity to code, but internal and external (customer) constraints prevent you from maximizing your learning. The longer you work on the same application at work, the lesser you improve, unless you decide on a technology or architecture upgrade, which is typically infrequent.
So, you must do coding outside of office hours. Choose a problem that you want to solve, so that you remain motivated to complete it. Select non-trivial problems so that you are forced to go outside your comfort and knowledge zones. Once you come up with a solution, see how you can improve upon it. Demonstrate it to others so that you can invite their feedback for improvement as well as encouragement.
Games are a good example of a hobby problem. I once gave a problem to a few students of mine: Create a working chess board that allows two human beings to play a game. This was not spectacularly difficult, because the only logic involved was the rules of chess. But it motivated them to learn graphics and object-oriented programming.
Therefore, make coding (at work and at home) the focus of your attempt to become a better developer. Other activities (reading books/blogs, networking, podcasts) can be subservient to it. As you increase your strength in your core areas, you can expand outwards into more knowledge domains.