← Josh Pullen's Blog

Working Through the Tunnel

When I work on a project, like my MathQuill alternative, I need both intrinsic and extrinsic motivationto keep me going. One or the other is not enough.

For me, intrinsic motivation is ever-present. It is the satisfaction of engaging in the work. I love programming. The process of writing code is satisfying. I like designing good things, and I like shaping code. Intrinsic motivation alone can sustain a project for days, weeks, sometimes even months at a time. But–at least for me–it doesn’t last forever.

Eventually, I need to see the light.

Working in the light

Working in the light means putting things out into the world, receiving feedback, and creating tangible results.

There’s an immense satisfaction in watching someone experience what you’ve created. Even if the feedback is complex, it’s so fun to let your work touch grass.

Showing your work provides the extrinsic motivation needed to sustain a project.

The tunnel

Some code is visual, with fun outputs and sharable results. Other parts of the process are darker.

You know you’re entering a dark tunnel when the upcoming section of the project…

  • Will take a long time
  • Has no clear benefit or visible progress until it is completely done
  • Has no obvious checkpoints or progress markers until it’s done

The start of the tunnel: When you first enter the tunnel, your intrinsic motivation moves you. You’re excited about the work, and there’s lots of work to do! So you embark on the journey and muddy your way along.

The hopeless middle: When your intrinsic motivation has stalled but you can’t yet see the benefit of the work you’re doing, you are lost in the darkness of the tunnel. At this point, hopelessness sets in and it’s difficult to keep moving.

The end of the tunnel: Eventually, if you’re lucky, you begin to see the light on the other side. The excitement to share your work takes over, and if you can make it out of the tunnel, the extrinsic reward of putting your work in the hands of another is exhilarating.

Lost in the darkness

In the darkness of the tunnel, you are between points of light. You can’t feel your own progress. You keep stepping forward, and presumably progress is being made, but you don’t really know, and you don’t know when you’ll emerge.

I am in the darkness right now. After sharing my working parser, I embarked down a new tunnel: building live multiplayer math editing using CRDTs. I’ve made great progress, and I know I’m around the half way point, but I have little to show for my work so far.

Many of my projects have died in darkness. I am determined not to let it happen this time.


Here are some things I’m trying to help myself keep moving:

  • Sharing partial results when I can. Publishing YouTube videos and chatting with other folks has been a helpful motivator. I do this as often as I can, but some code is just very difficult to show until it’s done.
  • Sharing the work process (as opposed to the results). You’re witnessing this strategy right now!
  • Setting clear, small goals during work time. Deep in the darkness, it’s easy to bunce around the codebase making improvements without having a clear output goal. I’ve been trying to set clear goals for myself that I believe can be accomplished within an hour and will make a meaningful impact on the output.

I don’t know if it will work. But it helps that I’ve emerged from the tunnel before. I know I can do it again.

Never miss a post!

Sign up for email updates every time I publish. Unsubscribe any time.

Comments