On Shipping

6th September 2020

An ex-colleague of mine - a product owner in our team - said something that’s stuck in my head. A simple phrase that has dictated my approach to projects and product development ever since. All he said was:

Great teams ship

3 words. That’s it. Great teams ship.

We were having a conversation at the time on what we could improve in our product development processes and the steps we had to take to improve the quality of the applications we were building - we were also discussing a slump we were in with one of our internal projects. Our team at Equals was doing really well, we were a good team but in order to become great we had to ship more.

Our quality was increasing drastically, we were investing heavily in building great components and interfaces, we were covering a lot of ground across multiple applications in multiple products, however, we had to ship more.

You could have the most highly tuned onboarding flow and that’s good, but if its not in your customer’s hands then it’s not that great. You could have the most beautifully optimised sorting function for displaying thousands of items of data at once but if its not in your customer’s then it's not that great. You could have brilliantly refined components but if your customer isn’t interacting with them yet then that’s not that great. You get the point.

Going from good to great

This was tricky, there was only a few things we had to change but the things we had to change were deep down. It’s technical, it’s cultural and it requires investment. There’s no one-size fits all but here’s how we did it.

  1. Set an expectation that we will always deploy no matter what. If your core feature has to be behind a feature flag then that’s cool, deploy anyway to get some of the minor bug fixes live. This helps sets the habit. Pick a day, maybe a Wednesday or Thursday and stick with it.
  2. Invest in a pipeline that’s fast, but more importantly consistent. If you’re going to ship frequently (at least once per week, ideally more) then you need to trust your pipeline.
  3. Empower everyone in your team to handle releases.
  4. Make sure everyone understands the customer benefit behind every single feature. Great product developers care about their customers, show them why their work matters.

The main one you need to focus on is point one, it's also the one you need to keep an eye on and keep in check. If you want to be great team you need to get features into your customers hands, you need to be able to react quickly to market and customer behaviour, you need to know that what you're building is impacting real people. There's only one way to do that - to ship it.

Great teams ship.