August 18, 2016

Building momentum in a direction you choose

Hello developer friend!

Lately, I've been thinking about how people work, what motivates them, what leads to good results, etc. What follows are some notes about my own path through life, which hopefully will be relevant to yours.

For a while, I think that perfection is what motivated me. To build something and get rid of all of its flaws; so that I could finally be proud of it.

This is a path built on good intentions, but it leads to the harmful view that an eventually flawless but currently unshipped work is better than a shipped work that is "good enough" today. Eventually, I came to realize that ignoring today's reality in favor of an imaginary tomorrow is a slippery slope... one rooted in both ego and fear of failure.

That's when I caught the "Just Ship It!!!" bug. This was a big deal for me... a major change in the way I looked at both productivity and craftsmanship. It took swallowing a lot of pride to soften my perfectionism, and a major shift in my habits. But then I realized "Just ship" doesn't mean sacrificing quality: it means working in smaller increments, and starting out simple ideas that can evolve over time.

Eventually, the habit of releasing early and often became second nature for me. That should have felt like progress, but in truth was the point at which I crashed full speed into an invisible wall.
Beyond that point was a periodic cycle of major burnout and distress followed by brief periods of calm followed by the same garbage over and over again. I'd rack up a ton of commitments -- succeed with some of them, fail at others, and then get buried in a tangled web of wishlists and deferred tasks that made me feel like I was constantly treading water. It didn't matter how much external validation I was getting, inside of my head and heart this was pure hell, for years.

More recently, I started to realize that if there isn't a positive feedback loop between the different things you spend your time on... they will compete for your attention and energy rather than supporting one another. In the early stages of a career or when you're looking for a major change in life, this can be a useful form of evolutionary feedback; when you're trying to call your own shots and hit a particular target... it's disastrous.

This is where the concept of momentum becomes very important.

Spreading your efforts around to many different responsibilities tends to keep you in a state of equilibrium... Ten different arrows point in ten different direction all pulling with roughly the same force leave you standing still. Of course, that's not exactly accurate, but the point is that the cost of context switching and the limited available capacity you have for each individual project you are working on tends to create enough friction to make you advance very slowly.

On the other hand, if you spend a whole lot of time on some focus area that isn't well aligned with where you want to be a few years from now, your long terms goals will tend to stay out on the horizon rather than getting closer to you each day. You may or may not end up being successful by some metric or the other, but you'll be dragged along by chance rather than driven by design.

Neither of these outcomes are ideal, but the alternative seems both vague and intimidating. Someone can tell you "Just find your north star and let it guide you to success," but that sounds more like a quote from a spam message for a self-help book you didn't ask for than it does actionable advice.

I still need to spend time thinking on this... but for now here's a starting point if you're struggling with building momentum along the path you want to be on in life:
  • First, build a strong work ethic. As a programmer, you probably already have this (or at least the capacity to do it), otherwise you would have never built up skills in this field in the first place. But so many things in life can make this challenging... so it's important to look at your average output and not just your peaks and valleys. Small adjustments to habits can go a really long way towards creating time and energy to get stuff done, but it requires continuous attention and upkeep.
  • Then, build a habit of shipping early and often. If you're not sharing your work daily in some form or another, and you're not spending time talking to real people in the target audience of the things you're building on at least a weekly basis, stop reading here and fix that first.
  • Once you are a certified "Ship the s**t out of anything and everything" professional, then it's time to start setting a proper direction for your work. But don't waste time building out some sort of five year plan or trying to read tea leaves. Instead, look at what you're already doing and learn from it.
  • As you look at your own daily responsibilities, try to see which activities complement one another, and which compete with each other. Also look at what drains you, and what energizes you.
  • Gradually eliminate whatever you feel is dragging you in the wrong direction, or whatever is splintering your attention in a thousand different directions. If this step takes you many months or years, that's completely normal. But get started on it as soon as you possibly can.
  • Eventually, you'll be left with mostly things that you're choosing to do, for a particular reason, that complement one another, and are pushing you towards a direction you want to end up at. You don't need to plan for this, it'll happen naturally as long as you pay close attention to your feedback loops and keep eliminating dead-end paths and harmful distractions.
  • Once you find your path, you can either just enjoy the ride and see where it takes you, or you can start getting into careful planning mode to try to become world-class at something. Both have their tradeoffs, and so that choice depends greatly on context. But be aware that they are in fact different strategies, and trying to apply both at the same time doesn't work well.
This is just a rough sketch of what has seemed to work for me over the years. I'd love to hear from you about your own approach in your work, as well as the challenges you've faced along the way.


PS: My book went into production this week! Only a few more weeks before it's in print.