A failed launch is that terrible situation in which your product starts breaking or misbehaving as soon as it is launched into production. You and your team have spent the past few months planning and executing on the requirements, but the day you launch to production, something goes wrong.
Users can’t access the software. Errors appear all over the place. The site is non-responsive. And this is all happening while your marketing team is working at full steam letting the world know about your grand new product release. It is product management’s worst nightmare.
The good news: With strategy, planning, hard work and a bit of good luck, you can avoid these failed situations.
Define an MVP that Fits Realistically into Your Timeframe
In any product release, no matter how low or high the stakes, it is important to have a clear understanding of the requirements and to propose a MVP (minimum viable product) that is doable within that time frame. It’s better to release something that has limited functionality but is very stable than to release extra bells and whistles at the expense of reliability.
Remember that software is always a work in progress. The only certainty after a successful version 1.0 release party is that the following Monday, you’re back to work on version 1.1.
Be Realistic About Your Team’s Capabilities
As you create the product roadmap and pitch it to executives, it is important to be honest about the capabilities of your team. We often fall prey to the halo effect and believe that since we have a great team of back-end developers, they can tackle any other area, such as mobile, UI, etc. However, software disciplines are very specialized these days. For example, in SaaS software teams, it’s common to find specialists for services, database, networking, front end, security and mobile.
Make sure you work with engineering leaders to understand what it will take to build the product. If your product is complex, needs high availability or has tight deadlines, be realistic about whether your existing team is sufficient to meet those needs. You might need to change scope or convince the executive team to hire the resources you need. Otherwise, it’ll be almost impossible to deliver on the product promise you are making.
Don’t Forget to Include a Project Manager
Agile zealots might not agree with the idea of having a project manager. After all, the product owner should be able to handle it all, right? I don’t think so. This approach might work for small products with a handful of developers, but when the scope grows, this model doesn’t hold.
Complex products will have multiple teams working on related items, and there need to be people dedicated to making sure everything fits together. Scrum of scrums can help, but in my experience it is better to have people dedicated to tracking progress and timelines and making sure everything is advancing in the right way. This need is accentuated if your product includes both hardware and software.
A strong project manager can own the day-to-day operations, keep track of the goals vs. the schedule, and keep everybody on the same page: vendors, engineering and other departments. This person can be the central point of communication for reporting status and risks.
A note of caution: The fact that product managers often have a project background doesn’t mean we should take on both roles at the same time. The more we can offload those responsibilities to a dedicated project manager, the more risk we mitigate and the more time we’ll have to focus on key product needs. If you find yourself doing more project than product management, you are probably not adding all the value you could be.
Agile Development Can Reduce Risk
Agile provides a framework for minimizing risk by implementing iterations that produce working software. It is not a silver bullet, but it can help a lot. It provides us with a framework for continuous improvement, one sprint at a time.
Each iteration is self-contained, meaning that it includes design, development and testing. Therefore, the code on every single iteration is tested to ensure it meets the desired levels of quality.
As part of the testing strategy, the QA team should develop unit tests, perform regression testing and build a comprehensive automated framework to validate all the use cases defined by product management. There will always be some manual testing on every iteration, but the better the automated coverage, the better the chances of success.
Now, making sure the development team implements the right delivery processes is not the responsibility of the product team. It is the responsibility of the delivery team, and their engineering leaders, to make sure that their execution process yields good results. But in many companies, especially at small startups, these processes are often not in place.
Since the product launch is your responsibility, do some investigation to ensure all the right processes are in place. If they are not, then it is okay to start conversations with development leaders and begin shepherding the creation of those processes. Otherwise, your chances of success will be greatly diminished.
Plan for Performance and Stress Testing
Product management must understand the impact to customers when their product is down. For example, if my system fails, will businesses cease to operate? Will electricity go down? Will people’s lives be in danger? The bigger the impact, the more you have to plan for performance and stress testing.
You also need to understand your audience and the overall usage of your product. This understanding should be part of the product requirements. You should be able to answer questions like:
- Will we have 100 or 100,000 concurrent users?
- Which times of day are more likely to have peak usage?
- What redundancy and elasticity specifications does the product need in order to meet demand at peak times?
Understanding the constraints is the first step. The next one is to come up with a plan to test them and ensure you’ll be ready to handle them when they occur. Make sure to have some projections on how your adoption will grow and how your infrastructure needs to scale in order to meet that demand. Chances are you’ll be way off, but you need to start somewhere.
To ensure this planning for performance and stress testing gets done, it should be part of your standard process, and not a one-off exercise. Performance testing must be done in every sprint, and it should be done in an environment similar to the real world. Anything less and you risk maxing out your website very fast. The performance team should have their own stories in the backlog and should have deliverables for each sprint. Additionally, I recommend doing end-to-end performance testing several times before the release. Which brings me to my next point …
Allocate Time for Integration Testing
Even though agile promotes creating production-ready code on every sprint, the reality is that it is hard to get there. If you have a big development team, each agile pod might be able to test their part of the code, but there is no guarantee that everything will work flawlessly when you merge the code of hundreds of developers.
To mitigate this risk, put aside at least one sprint for integration testing and stabilization before every major release. The goal of this sprint is to stabilize the system and get it ready for production. No new features will be developed during this sprint.
On top of the technical challenges associated with integration testing, be prepared to convince your executive team that no new features are going into the product during that final sprint. They might not be happy, but it’s our job to educate them on the process and help them understand that in the end, this effort will benefit the product, the users and the company.
Let’s face it. Delays happen. Building complex products is hard, and it is not an exact science. Many things might come up, and delays are likely to occur.
When faced with a delay or any other roadblock, it’s imperative to have open communication with the executive team. Sponsors need to have timely access to information so they can make decisions that might affect the whole company (not only your product).
Take advantage of agile and use the end of each sprint to inform your executive team about the progress—and more importantly, about whether the product is on track to meet the deadlines you agreed upon.
It’s Better to Delay than to Implode
If, after all these precautions, you realize that your product still won’t be “ready” by the deadline, then you need to make a decision: to push the release out further or to cut scope to ensure that at least something is released. Notice that I say “ready” in quotes, meaning that it’s up to you, along with your team, to determine what ready means. You can play with the scope and with the timelines, but I do not recommend playing with quality as a variable to meet a deadline. That’s how your worst nightmares become a reality.
I’m not saying that delaying is easy, but it might be less expensive than pushing forward with a faulty product. To make these decisions, it’s important to understand both the technical and business side of your company, so you can understand the impact even before you make the recommendation to your executive team.
A good example of managing a delay comes from Gran Turismo, the best-selling car-racing game in history. The release of version 5 was delayed for a couple of years due to “executive decisions” because they believed the game was not ready to meet expectations. In the meantime, the company released a reduced version called Prologue to keep the fans engaged while they worked on the final product.
The approach worked. Although Microsoft and others launched competing products during the wait period, the launch of Gran Turismo 5 was a huge success, in part due to the credibility they maintained with their audience and the fact that when the product came out, it truly delivered on its promise. Not all companies have this luxury, but it’s worth considering whether there might be some middle ground.
At the end of the day, it’s product management’s responsibility to bring the product to light. Failure to launch can be a disaster not only for your company, but also for your career as head of the product. Luckily, many of the risks can be mitigated with good planning, foresight and great communication.