From Bugs to Beta (Different Bugs): My Experience With Build-Test-Iterate
So you’ve got a product prototype, you’ve tested demand, now how do you launch it? We’ve all heard the concept of build-test-iterate, but what does that actually mean? And what do you actually do in each step? In this post, I’ll outline how I’ve approached this concept in my own business (currently in beta launch!).
Why build-test-iterate?
This is a structured approach that involves making small, incremental changes to a product, testing them, and then gathering user feedback. This process allows you to learn and iterate versus trying to get everything right on the first try (impossible).
You build in small steps, release your changes, evaluate how those changes went, build a next version, and repeat. This is pretty cost efficient, because you’re aiming for smaller changes and frequent updates, reacting to how those changes impact your users, and incorporating learnings into your next iteration.
How do you start, though? If your product is brand new, how do you know it’s time to launch? Test phases!
Build-test-iterate: launching your product for the first time
Build
Build is probably the most self explanatory. You build your product with a defined endpoint in mind. In launching your product for the first time, you are building toward your definition of what a minimum viable product (MVP) is. It’s a good idea to define your MVP before you get too far into the development process. You literally define the minimum features you will need in order to adequately serve your customers and give them some value.
For example, say you are building an online retail business. Your MVP might be something like:
- Identify and source three products based on customer feedback or trends.
- Set up basic logistics: for instance, plan to pack and ship orders yourself to keep costs down.
- Choose a shipping service like USPS or UPS where you can print labels at home.
- Buy simple packing materials (boxes, bubble wrap) to keep the process efficient.
- Build a basic Shopify store to sell your products and integrate a simple payment solution like Stripe.
This is not the scaled version of what you likely want your product to be, but it’s enough of a start that you can begin testing actual demand for your product, understand rough unit economics, identify things you want to change / improve as a result of your first “build”, and iterate from there.
Test / iterate
Test/ iterate in the context of product launch has a few steps. Here are the ones you are likely to follow (in my own words):
Dogfood
This is internal testing, where you, your team, or a group of testers (ex: willing friends or colleagues) are using your product on a daily basis. You will find lots of functionality issues, features that don’t work very well yet, and the user interface will probably not look great.
Goals: To find major functionality issues, fix them, and get the product in stable enough shape to move to the next phase.
Example: In our online retail business, this means using the actual products you sourced, checking the functionality of your online store, testing your checkout experience, seeing how products actually fit in boxes, etc.
Alpha launch
Supervised testing with actual users, where you watch them use your product, they give you feedback about what works / doesn’t work, you find lots of bugs, you get feedback and ideas to make the user interface / user experience better, and you consolidate and prioritize that feedback.
You might categorize what you see into categories (critical bugs, UI / UX improvements, and features to build), prioritize what you must do before moving onto beta launch, and estimate how much work it might be to execute on each piece of feedback. Below is an example of how to consolidate feedback from this phase.
You won’t apply all of the feedback, but certainly you’ll fix major bugs and have a good list of improvements you can make as you progress.
Goals: To gather feedback from supervised testing with real users, identify critical bugs, improve the user interface and experience, and prioritize changes before moving to the beta phase.
Example: For our online retail business, this phase involves bringing a small group of trusted customers (friends / family?) to browse the store, place orders, and give feedback on their experience. I’d recommend doing live screen share if possible. We literally watch how they interact with the site, ask them what works / doesn’t (e.g., confusing navigation, slow checkout process), and hear their suggestions for improvement. Based on this, we prioritize fixing major issues—such as cart functionality—and minor UI/UX tweaks, like simplifying product categories.
Beta launch
Unsupervised testing with actual users, where they just use your product and you try to figure out how it’s working for them. You will likely want some basic support / bug identification functionality, product analytics, and line for feedback. You will use these tools to figure out what’s going wrong, if there are bugs that need to be fixed, and what to prioritize in the next iteration of your build.
Goals: To let real customers use your product, monitor the product’s performance in the real world, and collect data on bugs, user behavior, and feedback to inform the next iteration.
Example: In the beta phase of our online retail business, we launch the site to a wider group of users (maybe your waitlist? Some light digital ads?) and let them loose in our online store. We implement basic analytics to track user flow—how customers navigate the site, where they drop off, and which products they buy. We may notice that several users abandon their carts after reaching the shipping page, which might mean there’s a potential issue with the shipping cost display. This data helps us focus on resolving major issues before the official launch.
Summary of this phase from my own business
Our business is software, so we are just emerging from the dogfood-alpha-beta test phases. It’s been really scary, exciting, frustrating, and interesting to actually see something we’ve built in the hands of real users. Some highlights from our test phases:
- Dogfood - found so many software bugs. This was everything from screens freezing or crashing to nonsense combinations of fields that didn’t make logical sense to API configuration issues.
- Alpha - watched actual friendlies use our software in production and found so many bugs (thank you, friends!!!). Some of these were critical, where we absolutely had to fix before moving on to the unsupervised phase. It’s good to find these, but also so scary when it’s your software and you imagine real users finding these bugs without you - disaster!
- Beta - we’ve just launched to our waitlist and started light marketing. We have a very long list of improvements to make given our alpha launch experience, and we will have more to add to the list. We are monitoring our product functionality and where users get stuck, and we will be doing our best to interpret those signals and determine what to build in the next phase. It's harder to know what's going wrong when you're not literally watching and talking to users as they use the product.
The whole idea of build-test-iterate sounds so simple, but it’s plenty complicated. When you're first launching, it’s easy to want your product to be perfect before showing it to the world. But it’s going to be messy and iterative and that’s expected. The point is to get your product into the hands of users quickly so you can learn and make it better.
I certainly want to polish all of the rough edges thoroughly and add extra features, and my cofounder (engineer) encourages me to not micro manage and just get it out there. I'm trying to listen to him. Although it’s really scary and likely filled with more bugs than you ever imagined, it’s still a huge step forward to actually launch. Do it!