Better Programmer – a 12 Month Project
I wanted to become a better programmer. I have mentioned this in other posts and figured I should take some of my own advice. In reality this is more of a “I feel like I need to do some catching up as a programmer” instinct than anything. Technology is changing so fast and there is so much of it around it is easy to get lost in all of it. I have been working in the industry for just about 5 years, but lately feel like I don’t have a great grasp of a lot of the simple concepts. I want to Google less and just code more. Being able to work how to do some simple code without stopping to find an example. There are things that seem trivial that I have done before and feel like I should know how to do, but end up needing to find an example on-line to finish the code.
Part of this was brought up by a comment a co-worker made to me. He said, “It seems like students know how to copy code, but don’t know how to write it”. After looking at how I code, I had to agree and I wanted to be a better programmer. I tend to Google a question and end up on StackOverflow or some other blog usually to end up copying the code and them making some small modifications to make it would for my needs. I started looking at more of my students and found the ones that understood the code and didn’t really copy it out of the book or on-line were doing much better than the ones that did.
I figured I would try a new way of learning things. the idea is to take 12 months to be a better programmer. I would focus on one technology/language for a month. Study every part of it that I can get my hands on. At the same time practice as many parts as I could. Practicing, I hope, would be the key. I would need to focus on the chosen language or tech for one complete month. Without all the distractions of other tech to grab my attention, I would be free to explore each part of the technology. I have seen other blogs and developers work through a project a day or week in a specific area and taking the idea up a level to a broader sense seems like a good thing. As I document the process and my progress I hope to also document areas of the tech that I could focus on later. Then come back to that tech and focus on it even more after my year is compete.
To get this little project off the ground there are a few things that need to be taken care of before I start. First, I need to have a list of the tech/languages that I want to focus on. Second, I need figure out what order/month I want to focus each of them in. Creating the list of tech that interests me wasn’t really that hard, in fact I came up with about 20+ areas I wanted to focus on. The hard part is I only want this project to run for a year. That would mean I would either have to remove some things off the list or extend my year or combine some things. There are some obvious things that could be combined. HTML and HTML5 I can look at all in a month. Then there are other things like Javascript, jQuery and Angular that could be put together, but are fundamentally different in their purpose. So they should stay separate.
In the end I decided to do a couple solutions. As I write this it is November and I wanted to get started sooner rather than later. I decided I would start now and go though December of the following year. First, the holidays can really mess with this schedule and second why wait till the first of the year to get started. There is some research that would need to be done to find resources for each of the tech anyway so the extra time would help with some of that. Second, I would combine the things that made sense to combine and leave others the I want to spend more time on for a full month. Last I would eliminate some things off the list. I wanted to work on fundamentals and specific new tech like Angular might have to wait. Unfortunately that is the sacrifice to keeping things moving and on schedule.
I also decided to give myself some leeway with the tech I was focusing on. If I felt pretty confident with the tech I could move on to something else earlier and before the month is over. I would need some sort of test in order to pass this point and I will be looking at a couple, either a certification or a simple test on-line to test my understanding. So the final process to the month would be to test my knowledge with some testing or certification site.
Moving on to the other minor obstacle, what order do I study them in? Again for some this was pretty easy HTML, then CSS then Javascript. But what about C#, .Net and SQL. I decided to work my way though the HTML and CSS and JavaScript. From there I will go on to C# and .Net. After that I am not sure where things will take me. Again I am affording some flexibility in the scheduling as I can change the schedule around as I see fit. The learning process would be to follow the 20 hours of Josh Kaufman. I find his learning style to be incredibly intuitive and easy to implement. Studying and practicing the language for about 40 minutes per day to solidify the concept.
The hope is to achieve a few goals. First and for most to to less reliant on Google to write code. Second, gain more understanding of the technology I love to work with. Finally, the side benefit is to blog more consistently, share the knowledge that I am gaining and solidify that knowledge in my mind. Becoming a better programmer is going to be an ongoing process, but I feel like taking this time to focus on one piece of it at a time would make it easier to get to my goal.