Drew Barontini

Product Builder

Issue #36
5m read

Infinite Iteration

Nothing is perfect.

This is my six-year-old son’s response whenever someone says something is perfect.

Is he right? Can nothing truly be perfect?

I think so. But I also think there’s beauty in that.

Why?

Because then we can always make something better than it is. There’s no destination to reach, which frees us from the tyranny of perfection.

In the book The Beginning of Infinity, physicist David Deutsch posits that all knowledge is limitless. What we know right now is only limited by what we don’t yet understand, and we’re at the beginning of an infinite process of understanding and improvement.

The Many-Worlds Interpretation is a theory that argues quantum phenomena are best explained by the existence of parallel universes. I spent many hours reading about this theory and my head still hurts. Relevant to our discussion, though, is the fact that, as Deutsch points out, the theory isn’t actually validated—it’s just the best explanation we have right now.

But if knowledge is infinite—and nothing is perfect—then we are in a constant cycle of iteration, growth, and evolution.

That’s the key!

Iteration is the connective tissue between speed and quality; between where we are today, and the infinite progress ahead.

Let’s discuss three elements of iteration, and how they help resolve the eternal tension between speed and quality.

Rapid Prototyping

Creating prototypes is ideal in situations with a high amount of unknowns—when you need to quickly answer questions.

The goal of rapid prototyping is to quickly test ideas. The fidelity should be as low as it can be to test the idea while retaining its value. You need a direction, not a perfect solution.

Several years ago, I spent months creating clickable prototypes for a software product that would help sales engineers visualize airflow from industrial fans. This was a novel product that required deep exploration in a low-risk environment. We built prototypes, tested with users, and iterated. And we did this until we felt confident enough in the idea to move forward.

That’s what rapid prototyping gives you: confidence in the direction. You de-risk the work by resolving the major unknowns. And it doesn’t matter how you do it. Find the best method that lets you move really fast. This is an area where AI can help. There are countless products that let you move from idea to working solution with just a short text prompt.

One important callout here: Get as close to the context of the final solution for your prototypes as you’re reasonably able to. If you’re making a web application, create your prototype as a functioning web application. Clickable wireframes can only reveal so much. Get it functioning in the live environment. That’s where you will learn the most.

Feedback Loops

Rapid prototyping by itself means nothing if you don’t answer unknowns and create direction. The key to doing so is feedback loops, which I talked about extensively in Issue #23. Feedback loops are the mechanism by which the iterations within rapid prototyping are prioritized.

That’s the loop. And the time between each step is of critical importance. You want to move as fast as you can from idea to prototype to feedback to new prototype. This is the iteration speed, and it’s the most important metric.

Iteration Speed = Prototype Creation Time + Feedback Collection Time + Implementation Time

When we were building the prototypes of the airflow drawing tool, we increased the iteration speed by getting real-time feedback from subject matter experts who were available to us. I’d share my screen and make updates live in the meeting. You could see the changes happen like a time lapse. This allowed us to get early feedback before bringing it to a larger group of users.

All great products are predicated on feedback loops. And the faster you get the feedback, the faster you can iterate and improve. When you’re trying to get raving fans early on while building products, the time-to-implemented-feedback metric means everything. Bugs in the software won’t matter if you can show users how quickly you resolve them. And if they make a suggestion, you implement it, and then follow up? The raving fans will be there.

Incremental Changes

But there’s another problem.

Software development (and most work endeavors) fall into the trap of either starting with too much scope (common), or uncovering more scope through the work (more common).

The goal of rapid prototyping and feedback loops is fast, directed iteration. But there’s also a strategy to selecting the changes you make.

Why?

Because you want to make each cycle of iteration worth it. If the feedback is too wide, then you changed too much at once. You need to shrink the surface area of changes, which is the Surface Control concept I talked about in Issue #30. Doing so will not only improve the feedback in the next round, it will reduce the time it takes you to make the change (Implementation Time).

If you shrink the amount of changes made, you can even come back with multiple options. There were a lot of complex drawing experiences and interactions in the airflow software we prototyped. Sometimes we needed to concentrate on one single interaction, and get feedback on multiple variations. Being diligent about introducing incremental changes is how you get there. Small, but meaningful.

Quality is met through constant improvement, not running around in circles. Forward progress builds momentum, and momentum is the engine that drives iteration.

Keep Learning

Each step is about one thing: learning. Use rapid prototyping to create a functioning solution to test the feasibility of our idea. Use feedback loops to rapidly improve the work through iteration cycles. And make incremental changes, strategically focused on making not just progress, but the right progress.

Nothing is perfect.

We can only focus on making our work better, one iteration at a time.

Enjoying this issue? Sign up to get weekly insights in your inbox: