Building: Be simple, valuable, and iterative


#engineering #goal

The Goal

We're builders. And our goal is to provide people with something they want.

Let's define some terms so we can be clear about that goal.

Let's say a feature is anything that helps people get what they want. You want that nail in that board? Then a hammer is a feature that helps you get what you want.

Let's say value as anything people want. Money. Clicks. Attention. Health. Sustainability. Nails in that board. Anything. (Jeffries 2015, 80-83)

A feature helps you get what you want. And value is what you want. So features help you get value. That hammer (a feature) helps you get those nails in that board (the value).

Now, as builders of features, we must make choices about what we build first, what we build later, and what we may never build. This is where time comes into play.

A feature only provides value when it spends time in people's hands. And, the longer the people have this feature the more value they can have. We can capture this relationship with an equation.

We say that features/time = value.

With this understanding, we can clearly state that our goal is to maximize features over time which is equivalent to saying our goal is to maximize value which is roughly equivalent to saying our goal is provide people with something they want.

We'll show that how we choose to structure work can either bring us closer or further from our goal. And we can do this without hiring more builders AND without asking them to work harder/faster/more hours. 💚🛠

How we use to build

Here we have some tasks:

And here is an order we might choose to build them:

We've organized our work for builders to work more efficiently -- we grouped common tasks together!

Let's see how this choice affects our goal?

Nice. We shipped all the features and our providing our people with value!

And yet, given the same builders, working the same amount of time, is this the best we can do?

How we will now build

What happens if we order our tasks in a way that we can release a feature as soon as possible and then again as soon as possible and so on.

How does building in this order affect our goal?

Even better! We built a feature, released it immediately. Built another and released that one. Look at all the more value we are providing this way!

But wait, didn't we just say that how we use to build "more efficient" for builders? Then in the new building style we may not ship as many features in the same amount of time, right?

Right! We may be shipping less features but the goal is NOT to ship the most features. The goal is to provide the most value.

We can ship less features and still provide more value in this new way of building! 🙀

That means, given the choice between:

a. planning work so engineers can produce more features over time

vs.

b. planning work so engineers can ship something as soon as possible

You should generally choose a.

Assumptions

This post assumed that the features were adding value to the product. This is not always obvious nor true. We'll address that in a future post.

References