Gressing: a new strategy for motivating developers

January 13, 2016

Failure counts as done. So do mistakes.

The Cult of Done Manifesto

Years ago, I remember reading The Cult of Done Manifesto. The manifesto is a collection of 13 statements about work and essentially advocates a focus on finishing over an emphasis on the process. It’s a fascinating list of axioms about work. I encourage you to check it out. Even if you don't agree with the specifics, the manifesto's focus on delivering a result is a particularly salient message.

One of my favorite lines from the manifesto has always been #10: "Failure counts as done. So do mistakes." To me, this epitomizes the idea that attempting to avoid failure is a fallacy. No matter what we do, we will sometimes step backward or in the wrong direction. Sometimes, these missteps even produce better results than we would’ve achieved on the right course. After all, penicillin, microwave ovens, and chocolate chip cookies all came from mistakes.

I’ve often remembered the manifesto throughout my career as a developer and manager. It mostly comes back to me when I am motivating developers after seeing individuals or teams that are blocked. We all know the story: a developer is waiting for a code review, a critical team member is out on leave, a team is waiting for a security review, or a busy QA engineer has to test something.

We have a lot of reasons for assuming that idling is necessary. This was a malady that I was noticing on my own team when I introduced the notion of gressing. You have probably never heard of this term. That is because, as far as I know, I made it up.

I am an English geek—I enjoying playing with words. Gress comes from the Latin root grad/gress, meaning to step. There are several English words based on this root:

  • Progress – a movement toward a goal or to a further or higher stage
  • Regress – to revert to an earlier or less advanced state or form
  • Digress – to deviate or wander away from the main topic or purpose
  • Congress – to assemble together
  • Egress – the act of getting out, or leaving, a place
  • Ingress – a place or means of accessing; an entrance

While some of these words are at odds, they all share the common characteristic involving activity, movement, or decision. You cannot do any of these things while being idle. They’re all about getting some of kind of momentum going, even if it is the wrong direction.

To me, this is key to motivating developers. There is nothing individuals and teams hate as much as that stuck feeling. In my group of examples above, how many would have benefitted from someone actively looking for any way to gain some momentum? What if that waiting developer just found another code reviewer to jump on her PR? What if the team tested its own ticket instead of waiting on that busy QA engineer?

That is the definition of gressing: to never accept idleness or being blocked. Gressing is about always looking for a way to keep moving, even if it isn't necessarily forward. This approach posits that developers who focus on what action they can take in that moment are more likely to succeed than those who accept any blockage or misfortune and just stop.

We always think about progress, and that is the best, but not the only form, of gressing. It’s easy to only think about the action we can take to go toward a goal. Perhaps, when seemingly stuck, an enterprising developer could take a step back and reevaluate if the current approach is the most elegant.

Maybe there is a simpler way forward if we only stepped back (regressed) for a bit and reconsidered. Or perhaps a sidestep would be advantageous? What if, when stuck with one ticket, a developer took some time to review another ticket and found inspiration therein? Maybe it’s time congress for some paired programming to get moving again.

When motivating developers, I tell my team to always keep gressing! If they don't know which way to go, try something—don't just sit there idly waiting for something or someone else. Progress or regress—move forward or backward. I would rather see my employees try something than sit back, wait, and remain blocked. There is always something to be gained in action, and there is rarely much benefit to sitting back.