measuring

How I Measure My Progress to Learn to Code

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.

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.

Pivotal Tracker

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.

  • http://twitter.com/mdbrenner mdbrenner

    thanks for the nod AKK. since learning never really ends i feel that measurements are multi-dimensional. i utilize a crawl, walk, run measurement strategy. i’m in sales, so using relationship building as one example… if gaining a clients trust is the ultimate goal of the relationship, then building rapport, and then creditability is first required. that said, i am more focused on building my rapport and creditability techniques and i am constantly refining them in an attempt to accelerate trust in relationship building process…..

    • http://andrewkkirk.com/ Andrew K Kirk

      I agree with the multi-dimensional approach. Learning is a very abstract concept. I always want to have a rough gauge of my progress without obsessing over measuring.

  • Bianca

    This is a great idea! I’m learning Ruby on Rails as well, though with a less structured timeframe. I have also identified a mentor and am working through various tutorials. I hadn’t thought about tracking my progress, although I do have an end in mind which is similar to yours in terms of having sufficient skills to build useful products. I will definitely be following your blog. Good luck!

    • http://andrewkkirk.com/ Andrew K Kirk

      Bianca – That’s awesome! For me, I needed a tangible end goal and timeframe in which to complete it. Without these contraints, it would be too easy to slow down and give myself too much leeway in terms of completing the necessary steps.

      For me to be successful in anything, I set goals which have:

      1) a very specific end result (avoid generalities)
      2) exact timeframes

      Good luck!