Make the right things easy

When I was at Shopify, I started using a motto:

Make the right things easy and the wrong things hard.

People are lazy. I’m really lazy. Sometimes I’ll drop something on the floor and think to myself, maybe I should just leave it there. No, don’t be lazy, I say to myself, and I pick it up. Maybe. Sometimes. Anyways. Point is, if I have an easy way to do something, I’ll usually take it.

When we established the product front-end team at Shopify, how could we make things easier for developers to do the right thing? Copying and pasting code from one page to another was commonplace but was prone to errors and often was missing key elements or classes that needed to be in place for things to look and work properly.

We needed to do more than create a CSS file. We needed to create documentation. We needed to create an api that could be easily consumed.

Having these things in place made it easy to do the right thing.

The flip side to that is to also make the wrong things hard. Linting tools, for example, make it difficult to commit code that doesn’t fit company guidelines.

At Xero, as another example, different teams use different front-end tech stacks. In order to help the company coalesce around a single front-end framework, I recommended the design systems team (known as UX Engineering) build out front-end components in one framework. This way, doing the right thing is easy: the components are ready to go. Doing the wrong thing ends up being a lot of work since complex interactions would need to be written from scratch in whatever framework they chose.

In your team, how can you make it easier for your team to do the right thing? How can you make it harder for them to do the wrong thing?

Published April 07, 2016
Categorized as Opinion
Short URL: https://snook.ca/s/1080

Conversation

2 Comments · RSS feed
Tommy Hodgins said on April 07, 2016

One way I've tried to “Make the right things easy and the wrong things hard” has been to put all of my various site themes, styles, and plugins into a super basic site template together. The result has been like a pressure cooker! Testing the themes and plugins against each other really fleshed out support for both much more quickly than using them in various projects - it's like having an inter-project styleguide!

Now whenever I author a new style I can test it against a bunch of plugins that may end up being used with it someday. And likewise whenever I write a new plugin, I have more than a handful of themes where I can instantly test it out for fonts, contrast, colours etc.

Where this gets exciting for me is today: I got news that we're creating a team wiki for documenting business and tech practices, so next week I will be documenting how to use these plugins for the rest of the team. I'm hoping this means it will be easier to grab my plugin for order forms or alerts than to go searching the internet for some plugin that we didn't write and trying to transplant that into the site. All our plugins have support for our own themes already :D

Aaron said on April 29, 2016

Make the right things easy. Yes, that means if you want to do the right thing, you can.

But make the wrong thing hard?

First, that means wasted effort on your part. You can't stop someone who is wrong, from doing the wrong thing. You might succeed in making it hard, but you won't make it impossible. You certainly won't convince them to do the right thing. They'll just think you're a jerk.

And maybe it turns out you were wrong after all.

I see the same sort of issues with testing and devops, so it's probably universal. Sometimes the right thing is hard to do. If you can make it easier, you might win them over.

Sorry, comments are closed for this post. If you have any further questions or comments, feel free to send them to me directly.

Want to learn about scaling CSS for large projects?

I'm available for full and half-day workshops on scalable CSS architecture. I can provide on-site training for your team. Interested?
Get in touch.