A high school ceramics teacher wanted to do an experiment. At the beginning of the school year, he divided his class into two groups.
At the end of the school year, the ceramics teacher had astonishing results. The best pots came from group B. Why?
Group B made pots over and over and over again, learning from their mistakes. They got noticeably better every time they made a new one. Group A on the other hand, spent so much time focusing on making their one pot perfect, that they didn’t learn the tricks to making it right.
I heard this story from Mike Cohn a couple years ago, and it really stuck with me. It’s a profound story on the value of iteration. This is a life lesson that could apply to anything, but we are here to talk about how it relates to software.
When it comes to design, it’s easy to get carried away with all the bells and whistles. “Wouldn’t it be cool if…” and “I bet users would like…” are traps that lead you down a road you don’t want to go down.
User centered design is all the rage right now, as it should be. Software should be about the end user experience. I don’t want to use a website because the back end is written really well. That’s nice, but it’s not going to bring me back over and over again.
You know what’s nice? A new feature waiting for me when I log on in the morning. I’ve been able to get my work done fine until now, but with this new feature, it’s even easier. I’m delighted.
Your first design should solve the business problem. No more, no less.
Get something in front of your user base as quickly as possible. The most valuable thing in your arsenal is user feedback. Without it, you’re assuming what the user wants. And you know what happens when you assume.
Design what you need in order to solve the business problem. Build it. Get user feedback. Enhance the software.
Being iterative does not mean that you shouldn’t have a vision. I wouldn’t expect you to build a piece of software with no expectation as to where it was going.
Don’t design something without a plan. What has works well for me when starting a new project is to begin with an idea of the finished product. Get the ideas out and work backward.
All roads lead to Rome. You just have to choose which road to take.
Your vision is Rome. Your design iterations are the road. The roads wind, dip, circle back, and intersect with each other. There’s no wrong way to get there. You’re going to end up in Rome. The journey is going to make the destination even more valuable.
So start with where you want to go. Then figure out the minimum you have to do to solve the problem.
Just like the students from group B, you’re going to get better at design the more you do it. You are going to learn design patterns that work. You’re also going to learn plenty that don’t work.
It is unreasonable to assume you will be an expert at the beginning.
There’s a reason they say man is the most dangerous game. They are unpredictable. You never know how people are going to react to software you designed. You might think you have the greatest thing since sliced bread, but when it gets in front of users, total flop.
You will learn, you will become better, and you will come up with something great that people love to use.
Even if you have to scrap the entire thing, you’re not at a loss. Before you started from scratch. This time you are starting from experience. The lessons learned from your previous iterations will stay with you forever.
When designing and iterating on software, it’s best to iterate over the application as a whole. What feedback can you incorporate to make the design better across the board?
Don’t put all the work in one area. That will make the software feel lopsided and like it didn’t have much thought to it. Let’s take an example:
You sign up for a new trail hiking website. You can search for trails in your area, track and record which trails you’ve been on, upload photos from your hikes, and add friends so you can see where they are going.
You log in and search for a trail. The search page is beautiful. It’s an intuitive faceted search with all the attributes, features, icons, and details you would want on a page.
You immediately find a good looking trail, and you head out for a hike. Anxious to come back and log your trek, you log in and hit the + New button on the “My Hikes” page.
The page is underwhelming. It’s a free text field for the trail name, a date field for when you hiked (and it didn’t even default to today) and a comment field that is only big enough for one line of text.
Talk about a disappointing experience. By iterating over one section (a vertical) you have set an expectation that the rest of your site will be the same. When users discover that it’s not, that leads to a poor user experience.
Spend some time designing small updates throughout the app. Add a new feature and implement it everywhere. Spread the love.
You have the ability to make world class software. You just have to be patient. Invest the time to do user testing. Listen to them.
Start with a goal in mind. You’ll never get there if you don’t know where you’re going. As long as you know your destination, the route isn’t important.
Whether you’re just starting out with design, or you’ve made your career of it, you are learning every day. Nobody ever “knows it all.” Take every opportunity you can to improve and become the best you. Share your lessons learned with others.
Don’t focus on iterating one piece of your software. Make broad strokes in your design. People like continuity.
So go. Build your MVPs. Learn from people. Share with them. Make a change.