Skip to main content

Small Steps Forward

Published: Sep 28th, 2019

Over the past three years, Voom has built a premiere on-demand helicopter booking platform. And we did it one small step at a time.

large outdoor staircase
Photo by Mirko Blicke

From day one, Voom has been improving the product in small incremental steps. Let’s talk about what that means and why we do it.

For a feature to be a small step forward it should be as small as possible while being independently deliverable and independently acceptable.

Independently deliverable

A feature is too small if it cannot be delivered independently. Anything that is required for the feature to become a live and working part of the application needs to be a part of the feature.

Independently acceptable

A feature is too small if a user cannot see a change. If a user cannot see a change, our product managers cannot see the change and confirm that the feature is working as it should.

The improvement can be subtle. If server response times drop from 300 milliseconds to 200 milliseconds that is an improvement a user can observe, even though in most cases they would not be consciously aware of it.

Small as possible

A feature should be as small as possible, but no smaller. If a feature can be broken down into pieces that are each independently deliverable and independently acceptable then it probably should be.

Advantages

Working on small, incremental improvements has numerous advantages.

Small incremental improvements provide rapid feedback. It is painful to work on a feature for six months and ship it, only to discover that it is not what your users actually need. It is less painful if you only worked on it for a week. It’s barely an inconvenience if it took two hours.

Small incremental improvements keep the team focused on user value. None of our work is ever far from providing a real benefit to users.

Small incremental improvements keep morale high. It feels good to be able to see that we are making real forward progress.

Exceptions

On rare occasions, pragmatism will compel us to not break up a feature that could, in theory, be broken up. If the feature is already very small and breaking it up would create multiple features that touch the same code we will make an exception for it.

An example feature might be “Show an error if the user name has leading spaces, trailing spaces, or capital letters.”

We can easily break that up into three features, but it is already a very small feature and breaking it up would result in three features changing the same line of code.

Challenges

It’s relatively easy to see the benefits of small incremental improvements. It is more difficult maintain the discipline to stick to them.

Engineers, designers, and product managers all need to agree to the principle of small steps forward and keep it in mind while defining, designing, and implementing features. If some of the team members are not on board, scope creep will set in.

One result of this sort of incremental development is that features will be less than perfect when they are first delivered. That is okay! Nothing we do is perfect, and iterative development requires accepting and embracing that.

The principle of incremental, constant, small steps forward, have allowed the team at Voom to create an amazing product at a rapid and sustainable pace. It is a principle we are proud of and one we are committed to adhering to in the future.