The technology field is always changing. New techniques, frameworks and ideas are seemingly being introduced every day. While good software engineering is timeless to a certain degree, it's also important to keep up with what is currently being used.
With so many tools and languages to use in software development, it can be difficult to become an expert in a given field. Realistically we have to strive to constantly grow our knowledge.
I've been thinking recently about the best way for me to keep up and make sure that I am continually learning so that I continue to grow as an software developer. I think I have a pretty good system for gathering knowledge; I've become good at filtering my Hacker News RSS feed down to only what is productive and will help me (while avoiding the comment threads). I read books when I have the time and pay for a Safari Books Online so that I can reference videos and books without buying them.
Yet I've found that I'm fairly passive about what I read and learn about. Something will catch my eye and I'll read a blog post or two and perhaps never apply that knowledge. I'll throw interesting web articles into my Pocket feed and then binge on them all at once. Curiosity can be a good thing but it also be debilitating when it points you in too many directions.
With this mind I'm starting a new system this week called "One A Week" for the lack of a better name. Every week (ok, most weeks) I'll pick one topic and immerse myself into studying it as much as I can. I'll read books & relevant articles, watch videos & lectures and maybe even create small projects to practice what I've studied. And then at the end of each of these weeks I'll write a post about what I learned. The goal is to gain a wide range of knowledge beyond a surface level. By concentrating on one particular subject and nothing else, I'll be able to gain a better sense of the topic at hand.
For this inaugural week I'm going to study the programming language Python! I know Python well, having coded in it as long as I have been a developer. But there's also more to learn if I want to become deeply knowledgeable about the language. And it's currently a very relevant topic for my job because we are building two new Django applications and I'm writing more Python than usual.
This week I'll read as much as I can of the book Fluent Python which goes beyond the basic syntax of the language to dive into metaprogramming, generators and the guts of the language. Also, this week there is a Philadelphia Python Users Group meetup about tips, tricks and hidden features, a perfect topic for my studies.
I'll check back at the end of this week to report on my progress. Although I don't think I'll be able to pull this off every week, I'm excited to see where this goes.
Discuss this post with me on Twitter.Send a pull request for this post on GitHub.