November 7, 2019
So you want to build an outstanding software product.
This means that aside from developing the idea, assembling the team and getting it to the kickoff line, and getting some funding to begin with, you will need to tackle one additional constraint—the “iron triangle,” touching upon three key dimensions in project management: scope, velocity, and cost. Why is the triangle called iron? Because you can’t change one of its aspects without impacting all the others.
The truth is, introducing modifications into either of the three aspects is often very difficult, primarily due to the lack of understanding of the mutual dependencies of project dimensions and conflicting stakeholder interests. You must be prepared to compromise on one or two aspects and make smart trade-offs.
To illustrate the situation—let’s say you’re a manager who wants to move the weight toward one or two of the dimensions, e.g add some new features to the project scope or shorten the delivery timeframe.
Or let’s say that the financial specialist in your company wants to keep the project costs within budget, but the sales team wants to add more features to your product scope and senior management wants the product to be delivered on time above all else.
Are you able to meet all those expectations at the same time? Not really.
So while the iron triangle exists and there’s not much we can do about, it’s important to learn how to harness its limitations. Being unaware of the above mentioned dependencies might eventually put you at risk of making the wrong decisions and adversely impact the development of your project.
As you can see, the data clearly supports the notion that smart management of the iron triangle is crucial. So today, we’ll guide you through a handful of potential scenarios and realistic consequences of moving the triangle toward one or two dimensions. Before you scale down your team, expand the project scope or move the deadline, read on to see how doing so may impact your project development.
The concept of the iron triangle is taken directly from the Agile work methodology, used by software development companies worldwide. In Agile, before we even start the project development process, we usually first define project requirements and determine its preliminary scope (a list of work items) at a high level. This gives us the resources needed and the time required (the release date) as our variables.
For many projects, however, the simple model doesn’t cut it and the variables need to be approached differently, either at the beginning of project development or further down the line.
Let’s face it—changes in the development process are inevitable and unexpected nuances appearing down the line is par for the course in this particular case. Knowing that we’ll most likely have to change one of the aspects of the iron triangle, it is vital that we can predict the impact it will have on the other two. I will be exploring these mutual dependencies in more detail below.
In short, scope entails all the work that needs to be done with regard to the product’s functionalities and features to create a working product that complies with the product specification.
Broadening the project scope usually impacts timing and budget. Adding more features or expanding the existing ones requires a lot of resources that might not have been anticipated or taken into account during planning. When faced with requests for additional resources, a project manager has to review the estimation, plan the team’s workload, and find the necessary talent if a new feature requires using a technology that the company currently doesn’t use.
This can significantly lengthen the development process as well as increase project costs.
Focusing on important, immovable deadlines and having a fixed budget gives you little flexibility in terms of widening product scope. There is, however, a compromise that lets companies have their cake and eat it too—to some extent, at least.
Some project aim to build an MVP (minimum viable product) first, in order to get the product to market quickly, and see whether it proves the concept, draws enough user attention, and, finally, starts generating profit. In such a case, the developers usually add new features in a gradual manner, based on user feedback and client needs. It’s like a snowball creation process, which makes sense, business-wise, for products that are fully functional as MVPs and companies that want to test their product’s underlying concept and then build from there.
To get to that MVP, teams usually need to stick to a fixed scope and preliminary budget estimation, with time being their only variable. But because it might be impossible to release a viable product without adding in certain features, the release date might eventually get pushed forward.
It’s only after launching the MVP and with the product already on the market that the teams may switch to a variable scope. In such a case, we usually dial down the number of developers working on the project while the focus is redirected toward marketing and finding product-market fit.
On the other hand, we can keep the number of developers constant, but accept a trade-off by making the schedule for the new feature release more flexible.
In real life, many clients decide on extending the scope halfway through development. Imagine you want to add some features to your product before introducing an MVP to the market, but don’t want to make trade-offs with regard to the velocity and timing of product development. Is it even possible? The short answer is—well, that depends.
It’s also possible to introduce additional features into the scope without impacting either the team or the budget—and we can just as well remove some of the initially planned features. Especially when it comes to new products, it’s generally recommended to keep the scope down to a bare minimum, in order to avoid wasting the budget on something the users won’t even need and to keep well ahead of the competition while extending our timeline.
As you might have already guessed, our key variable here is budget, which depends on the quantity and complexity of new features, which can range from very simple tasks to adding a complex functionality that extends into a few extra months of work.
In such a case, we need a truly agile and flexible approach, as well as open and honest communication between the PM and the client, whose expectations or product ideas might change during the development process.
When is this approach recommended?
The expected timeframe of project development is a guesstimate based on a number of factors, including the scope and availability of required resources, project complexity, expected obstacles, and team experience.
Velocity, on the other hand, is a measure of how much work is getting done on your project in a given timeframe. When estimating velocity and, consequently, the potential release date, we must remember that actual velocity will vary across days and weeks. After all, we’re all only human and it’s not possible to work with the same speed and efficiency everyday. Velocity is also influenced by the efficiency of communication between team members and the client’s feedback time.
The changes in velocity make estimation more unstable and difficult.
This is why many software development companies like Monterail use the Scrum work methodology. Daily stand-ups and sprint planning can help map out the team’s workload, remove technology or communication blockers, and flexibly adjust for velocity. Our experience says that you can try to estimate velocity after the completion of 3 sprints (one- or two-week-long work cycles). Three sprints are usually enough to realize whether more people need to be added to the project or the final deadline has to be pushed.
That is why the initial project budget often gets recalculated after velocity and timing are determined.
The third aspect describes the project budget and the number of project team members needed to deliver a working product. While cost budgeting creates a certain baseline, there’s also cost control that helps manage cost fluctuations throughout the process. The key here is to prioritize elements of project scope that need to be delivered and allocate resources wisely across all phases of development.
Depending on the project’s complexity, costs and resources can be either very easy or very difficult to estimate. An experienced PM will base their estimates on data collected from similar projects and best practices, and make a best guess based on detailed information from the client. After the initial estimate, a PM will control and adjust the budget throughout the project development cycle.
As for the resources and the numbers of developers needed to deliver a project, their availability will impact the timing of project completion.
It is possible when there are some open source solutions available, and when corners can be cut on scope without compromising the product’s functionality. It’s worth noting that a wise PM, when faced with a dilemma, will always compromise on scope rather than quality.
It is recommended when it makes good business sense to shorten the release timeframe or introduce additional features that really add value to the product. With an unlimited project budget, however, it’s possible to broaden project scope and suggest the implementation of a richer and more complicated feature set. That said, it’s important not to get caught in the impression, that the more features the product has, the better it is.
In fact, it is recommended to release a product with less complex functionalities first and then make improvements based on users’ feedback and real market needs.
It’s worth noting that the flexibility of the iron triangle depends on the size and complexity of the project. The bigger the project and the longer its development, the more teams will be needed and the timeframe will be more difficult to estimate. At the same time, if the release date is fixed and immovable, the probability that the budget will have to be adjusted in order to meet the deadline will be higher. To handle the iron triangle, project managers break down the project into big milestones and smaller tasks, set clear priorities for the team, and communicate openly with the client to meet their expectations and achieve set goals.
Here are some key points that help to balance the three project dimensions:
Before starting work on any project, we usually invite our clients to take part in workshops during which we create a detailed picture of the product and all of its functionalities, establish project scope, set milestones, and establish a relationship. It leaves the client with a clear idea about what needs to be done, why, and when.
After considering all of the project’s aspects, we first prepare a “ballpark” estimate and then follow it up with a comprehensive one, featuring projected costs and feasible deadlines. The full, estimate is based on the detailed user stories and discussed and modified before any work on the project starts.
A Project Manager plans the team’s workload according to pre-established milestones, carefully estimates the velocity of the required work and the timing of completing specific tasks. The Agile methodology ensures timely delivery of elements needed by different team members to carry out their assigned workload, helps eliminate obstacles and set truly feasible deadlines.
To ensure that your product will be delivered on time, within budget, and will meet quality expectations, it might be a good idea to spend some time finding the right software development partner. Look for companies experienced in successfully executing projects of various scopes, deadlines and budgets. Consider outsourcing to a trusted software company, as it brings benefits beyond time and costs and lets you stay more flexible in the process.
Throughout the product development process, open and timely communication between the team and the client is vital. It helps ensure that every possible change in one of the three dimensions is discussed up front and lets the development team quickly adjust to any changes.
As you can see, managing the dimensions of the iron triangle is really a balancing act that sometimes feels like juggling—it appears easy when you look at it, but proves out difficult when you try it yourself. That’s why, whatever your next big thing is, you will need experienced professionals at your side to build it.
Want to build meaningful software?
Pay us a visit and see yourself that our devs are so communicative and diligent you’ll feel they are your in-house team. Work with experts who will push hard to understand your business and meet certain deadlines.