Make the Right Thing the Easy Thing

How to Design Systems and Processes Teams Actually Follow

by Jason Lengstorf
@jlengstorf  ·  jason@lengstorf.com

Slides: git.io/right-thing-easy-thing

Team work

As lead developers, it’s our jobto keep our team running

When the pressure is on
we have two choices

Wintergatan, a complex, marble-powered musical instrument.

Fix the process

Smurf being a hero.

Fix the problem

Being the team’srockstarfeels really good

Being the team’sauditorfeels... less good

There’s just oneproblem

Rockstarsdon’t get days off

What is your code’sbus factor?

What is your code’svacationtolerance?

The problem withrockstars:

  • They become bottlenecks
  • They create dependent teams
  • They build knowledge silos
  • They eventually leave

We need to dobetterfor our teams

We need to fix therealproblem

We need to create aProcess

...wait, what?

What slows teams down?

  • Lack of confidence in ability, knowledge, or autonomy
  • Lack of clarity about the goal of a given project

A good process createsconfidence& clarity

+ autonomy + trust + ownership + safety
+ other buzzwords meaning “happy team”

A good process createsstronger teams

  • No one is a bottleneck
  • Each dev can make decisions independently
  • Knowledge is shared and documented
  • No chaos if devs take vacation, get promoted, or quit

How can wecreatesolid processes?

A good process needs

  • Excellent onboarding and documentation
  • Ongoing internal education and training
  • Frequent code reviews and coaching
  • Comprehensive test suites
  • Internally consistent style and quality guidelines

“I’ve tried this!No onewill listen!”

Why processesfail

Knowvsfeel

The Rider and The Elephant

The elephant and the rider, by Kristin Noelle.
Credit: Kristin Noelle
Book cover for Switch, by Chip and Dan Heath.

Make the Right ThingThe Easy Thing

By focusing on four core values:
Emotional Rewards + Automation
+ Simplification + Yak Shaving

Emotional Rewards
Automation
Simplification
Yak Shaving

Make the Right Thing the Easy Thing: part 1

EmotionalRewards

  • Less effort required to do things the new way
  • Immediate praise and positive feedback
  • Public recognition and gratitude
Marisa Morby

“Very few things at work feel better than the validation of other people praising your contributions in public.”Marisa MorbyHead of Research, Clearhead

Jason Lengstorf.

“It doesn’t matter how objectively correct your solution is; it only matters if people will use it.”

Me, just now

Make the Right Thing the Easy Thing: part 2

Automation

  • Set up CI/CD (e.g. Travis, Jenkins) for tests
  • Run and commit Prettier automatically
  • Use ESLint, Danger.js, etc. to catch quality issues
  • Automate code coverage checks
  • Use semantic-release for versioning and releases

Don’t fail onstyleJust use Prettier

Tired:

Code Cops

👮‍♀️ 👮🏽‍♂️

Wired:

Code Bots

🤖 🤖

Make the Right Thing the Easy Thing: part 3

Simplification

  • Consider onboarding and training costs of new tools
  • Use open source tools if a stable option exists
  • Write code that’s small and easy to delete
  • Build for now, not 5 years into the future
Jem Young.

“Weigh the trade-offs and choose the thing that makes your team more productive.”

Jem YoungSenior Software Engineer, Netflix
Chris Biscardi.

“Premature optimization can be a violent source of tech debt. If you have experience and know it’s the right move, great. Otherwise: keep it as simple as possible for as long as possible.”

Chris BiscardiSoftware Engineer, Honeycomb

Make the Right Thing the Easy Thing: part 4

Yak Shaving

  • Limit the team’s exposure to yak shaving
  • Invest in your technical foundation
  • Create zero- or low-config dev environments

Don’t make people do a bunch of work before they can start working

1 hr/week × 10 devs × $70k/year$16,153burned on yak shaving

Don’t ask people to fix a mess

Set them up tosucceed

What is a LeadDeveloper?

A lead developer isn’t

  • Carrying their team by doing most of the work
  • Inserting themself into every code decision
  • Single-handedly enforcing the team’s style guide

A lead developer is

  • Creating guard rails to encourage best practices
  • Defining processes to create confidence and clarity
  • Removing bottlenecks and knowledge silos

Lead Developers

Design processes that are emotionally rewarding

Lead Developers

Improve consistency by Automating processes

Lead Developers

Reduce training costs by simplifying workflows

Lead Developers

Invest in the foundation to Prevent yak shaving

Teams we build

Maintain a reasonable vacation tolerance

Teams we build

Operate with high levels of confidence & clarity

Teams we build

Know their work is both recognized & valued

Teams we build

Feel confident in their autonomy & safety

Teams we build

Are not dependent on rockstar developers

Thanks!

Jason Lengstorf

Jason Lengstorf
Follow me on Twitter: @jlengstorf

Resources

  1. “But Testing Sucks!” — How to Build a Testing- and Quality-Driven Culture
  2. Switch by Chip and Dan Heath
  3. Kent C. Dodds on Script Toolboxes
  4. Marisa Morby on Twitter
  5. Jem Young on Twitter
  6. Chris Biscardi on Twitter

Tweet: @jlengstorf #LeadDevNewYork