The game you don’t want to play as a programmer
A small change that can have a huge impact
It’s a warm Wednesday evening in July, and I’m at my first programming meetup in Cambridge. A four-person panel is talking about their experience learning to program, giving the typical advice beginners expect to hear. As the evening is wrapping up, one panelist offers her opinion.
“Whatever you do,” she warns as she leans forward in her chair, “stop comparing yourself to others.”
She says these words with such authority that I stop listening and begin thinking about them.
Programmers, and people in general, play the comparison game all of the time: comparing education levels, achievements, and skills with others. This is a bad game to play because it puts your thoughts and energy toward things you can’t control. Plus, it detracts from what really matters: your progress as a programmer.
There’s an alternative. Instead of comparing yourself to others, compare yourself to yourself. That’s what I’ve set out to do. It’s a small change that can have a huge impact.
Focussing on Myself
What did I learn this week? What did I accomplish today? Answers to these questions come from my weekly and daily self-assessments, which are helping me become a better programmer. They focus my attention inward: comparing me to myself.
On Sundays I head to my standing desk, open Evernote, and evaluate my programming progress at the weekly level. It’s a two-part process: reflecting and projecting. Reflection comes first because I need to look back in order to move forward.
With my laptop open and a cup of coffee by my side, I type up the concepts I learned or progress I’ve made during the past week, like refactoring a program. This gets me thinking about what went well and what needs some work.
Last week, for example, I poured hours into a problem. Although I was happy that I got the program to work, it was long and complex. When I shared this information with a more experienced programmer, he recommended that I use the CSV (Comma Separated Values) module, which I knew nothing about.
So I spent some time studying and practicing it. Then, I used CSV to re-solve my problem, and this time my program was much shorter and cleaner. Although I didn’t solve many problems last week, I now have a new tool to use. Small successes, like learning a new module or writing clean code, matter and add up over time. My weekly reflection reminds me of that.
The other purpose of my weekly assessment is to project my goals for the week ahead. What do I want to achieve by the end of the week? For example, there’s a problem I want to solve that involves regular expressions, which I first need to learn about. So, one aim is to understand regular expressions and how to use them.
I’ve been doing the weekly projection for a while now; the reflection part is newer for me, but it’s been extremely valuable. Together, my weekly assessment brings awareness and clarity to my programming efforts: what I did and what I want to do. The nitty-gritty details of how and when I’ll accomplish my aims come later.
How Do I Stack Up Against Myself?
I also assess my programming progress at the daily level. At the end of each day, I create a plan for the day ahead, so on Tuesday evening I create a plan for Wednesday. In it, I include a daily programming goal (a broad objective), as well as a micro-goal (the specific actions I’ll take to achieve that daily goal) for each block of time I spend programming.
One day last week, my daily goal was to understand how to use the CSV module. A micro-goal was to read about this module in Naomi Ceder’s book The Quick Python Book and complete the exercises in her book.
These small goals give me something to focus on, leaving no time to think about how good or fast other programmers are. They also hold me accountable. I review my goals at the end of each day to see what I did or did not do. This information helps me plan for tomorrow, as I make a new plan with new goals.
You may be thinking, “I don’t have time for this”. I get it. My time is limited, too: I work full-time and am learning to program outside of work hours. It only takes me a few minutes each day to plan for the day ahead, though my weekly assessments on Sundays take longer.
Ultimately, however, the time spent on these personal assessments pays dividends in return. They encourage positivity, keep me focused on the things I can control, and help me get the most from my programming hours. My programming journey is also much more enjoyable. Each day I focus on getting incrementally better - to become the best programmer that I can be.
I’m a writer (amymhaddad.com), and a beginner programmer.