Excitement, frustration, discovery, passion, elation, disappointment, hunger, failure, conquest, defeat, insight, freedom, dominance. These are not subtle words, and I’ve chosen them because they are descriptive of programming, and more specifically, growth as a programmer. Not one word standing above the others, but all of them, in any order, and of varying durations. Do you know these words? Do you know them now, or are they a memory?

I’ve been thinking a lot lately about how to determine if you’re growing as a programmer. It’s easy to see growth when you are first beginning; you see the progress of acquiring knowledge. But as your mastery increases, quantifying growth moves from that based on knowledge, toward a growth based on understanding and application. What are the metrics for determining growth then?

An Experiment

To give us an idea if we are growing, let’s try an experiment. Answer the following questions:

  • List three new things you’ve learned in the last week about your current technology of preference.
  • What new idea, concept, pattern, or technique have you played with or tried to use in the past week.
  • What was the last technical book you read for fun? When did you read it?
  • Do you program outside of work? (For fun, not freelancing)
  • When was the last time you had an exciting conversation with a peer about programming?
  • Do you look forward to going to work?

Did your responses to those questions give you an idea about your current state of growth? Simply put, the best metric for determining if you are learning and growing as a programmer - probably as anything - is this: “Are you having fun?”

So, are you?

Go back to the first sentence of this post. When in your programming career have you felt those words most intensely? When you were learning, right? But weren’t you also enjoying yourself? Weren’t you having fun?

Being Stuck

If you had trouble providing positive answers for the questions above, maybe you’re in a bad spot. I know what that’s like. I know what it’s like to have every idea shot down because that’s “not how we do things.” I know what it’s like to have your creativity constrained because “failure’s not an option.” I know what it’s like to want to do better, but be told “it’s good enough.” I know what it’s like to be stuck.

Being stuck is a horrible state to be in. Maybe you’re stuck because of the technology you’re using, or maybe it’s your boss or your organization, maybe it’s the system, but whatever the case, there you are, unchanging, unmoving, not growing, stuck.

Needless to say, being stuck is not fun.

Encouraging Growth

The whole premise of this post is that if you’re having fun, you’re most likely growing as a developer; if you’re not having fun, then you’re not growing as much as you could. If you’re not growing as much as you would like, then something needs to change, and maybe several “somethings”.

What follows is a list of some ideas you should try in order to rekindle your love and excitement for the art. This is not an exhaustive list, and I would love to hear from you what things you’ve tried to get the development juices flowing.

  • Keep lists of researchables: I have a list - it sounds more organized than it is - I use to keep track of words, concepts, and ideas that I want to research. When I get a few minutes (between test runs) I go and look things up.
  • Develop a low pain threshold: We create applications to solve problems. Pay attention to those little annoyances and find a programmatic way of solving them. e.g. Be annoyed by the way your editor behaves and find a way to fix it.
  • Play more:
    • Take some time to tweak your configuration files; especially emacs, VIM, Git, or shell configs.
    • Experiment with a new library or language
    • Force a limitation on yourself: examples, try to use recursion instead of loops; use methods instead of constants; read source code in place of documentation; etc. See also Creative Limitations
    • Participate in a Hackathon
  • Find other developers who are passionate and start hanging out with them, especially if they’re better than you.
    • Check out your local user groups
    • Go to conferences
    • Find a mentor
    • Find a way, but make those connections
  • Start contributing to a FOSS project
  • Try playing with some Arduino or Raspberry Pi projects?

The point is to play and to have fun, and to remind yourself how much fun programming is. Yeah, at times programming is difficult and sometimes it’s even a chore, but you know from your past that it doesn’t have to be that way, and you know from your experience that it shouldn’t be that way. If you are at a point where you find yourself incapable of growth, maybe it’s time for a change; maybe a drastic change.

Because, let’s face it, “If you’re not having fun, you’re doing it wrong.”