Maybe you have heard of the phrase "the iron triangle" before. In software development (and manufacturing), it is often used to describe the interconnection of three variables: time, resources, and quality. If we are constrained on one side of the triangle, it affects the others.
Product teams often face the challenge of balancing quality and time. In an ideal scenario, every software release would be thoroughly tested and polished before being shipped to users. However, deadlines are often tight, and features need to be prioritized. Teams may opt for a "good enough" level of quality, knowing that they can always address bugs and user feedback in future releases.
In another scenario, product teams may be faced with difficult decisions around investing in higher quality code, more rigorous testing, or additional resources, all of which come with a cost. These investments can help ensure a better user experience, fewer bugs, and a more reliable product. However, they can also impact the project's bottom line, and may not always be feasible within a given budget.
In simpler terms, a product can be:
- Fast and cheap, but buggy and held together by duct tape
- Cheap and high quality, but slow as molasses to ship
- High-quality and fast, but hopefully you have piles of cash laying around to pay all those senior devs
Ultimately, every product team will need to make tradeoffs at some point in the development process. Muscling projects through to completion is simply not feasible. Leaders who take this approach end up burning out their entire team and cutting scope at the last minute in a scramble to ship something.
It's easy to assume that product teams always use data when deciding which trade-offs to make, but in reality most teams rely on guesswork, intuition and previous experience to make decisions on what to build, estimate when features will ship, or determine how much budget or how many developers they’ll need to invest.
While most teams miss the mark when guesstimating, worse, many refuse to acknowledge the iron triangle and its inevitable impact on their project outcomes.
While we can’t eliminate the need to make tradeoffs, injecting data into our decision making can give product teams a more realistic picture of their capacity given a set of constraints - on time or on resources. After all, you can’t manage what you can’t measure.
How does your team “estimate” when major features will ship? How do you decide which tradeoffs to make? Shoot us a line and sound off firstname.lastname@example.org.