Taking the plunge to go full-time to learn to code was exhilarating. I knew what I wanted to accomplish and began laying out a project plan.
I also knew it would be important to measure my progress along the way. I definitely didn’t want to simply throw up my hands after 18 weeks and shout “Ta-Da!”
Receiving this Tweet from @mdbenner prompted me to write out specifically how I’m measuring my progress.
@andrewkkirk btw… how are you going to measure your transformation from noob to #programmer ?… #metrics
— mdbrenner (@mdbrenner) October 12, 2012
Think About The End First
In order to track my progress, I had to have an end goal by which to gauge. I struggled with coming up with a specific, tangible achievement goal.
My initial thought was to base it on finding a short, contract job as a developer. My rationale was that if someone else believed in my abilities enough to hire me, then this was validation enough that I’d achieved a certain level of knowledge and understanding.
After much thought and consideration, I abandoned the “job goal” for two reasons. First, my decision to learn to code is not motivated by finding a job or improving my career opportunities. I’m going down this path because I want to be able to build and execute interesting products. Thus, making my success dependent on a job felt counterintuitive.
Second, I sought out input from talented developers and tech people that I admired. Several, especially Tara Brown and Buster Benson, helped me realize that if I made the job the end goal, then this outcome would influence me and my plan. It would be easy to make decision about languages, tools, and platforms based off an employment motivation; ultimately, I didn’t want unnecessary external influence finding it’s way into my plan.
At this point, I took a step back and realized I was making it too complicated. If my goal is to increase my technical skills to build a product, then it makes sense to create a product as the end goal.
If you’re inexperienced, create goals based on learning the code necessary to build a product. <Tweet This>
Obviously I couldn’t build a product from day one. So, I’ve divided the 18 weeks into two halves. In the first 9 weeks, my focus is on completing as many tutorials as possible, reading Ruby on Rails Guides, and getting familiar with developer basics, such as RubyGems, Bundler, Rake, and version control (Git). The second 9 weeks will be dedicated to a project-based learning style, where I’ll be learning by building.
Learn to Code Tracking Progress
I do track my progress and what I’ve completed. For one I want to keep myself honest and ensure I’m completing ample work each week. Second, I want to have a record of the work I’ve completed.
I use Pivotal Tracker to record each tutorial or lesson I complete. Using Agile development mentality, tutorials and lessons are logged as “stories“. I score each story as either 1,2,4, or 8 points based on difficulty and time required to complete. I also log my time for each story, in order to understand how long a story took to complete.
Note: I’m not Agile nor Pivotal Tracker expert; I simply adopted these systems in a manner to meet my own needs.
My hope is that I complete as much or more points each week. However, I’m mindful not focus too much on simply churning out stories each week. If a tutorial isn’t helpful, I’m not afraid to abandon it before completing it. These aren’t homework assignments; my focus is on learning. Therefore, I try to balance the importance of completing a steady pace of work each week, with ensuring that my time is dedicated to learning.
How do you track progress on your goals? Share your thoughts in the comments section.
Featured image courtesy of Louise Docker.