Trading Off Value, Quality, and Time
Time, quality and value - as much as we'd like to get the best in terms of all three, we've got to make trade-offs in the real world. Which ones do you choose?
Join the DZone community and get the full member experience.Join For Free
the traditional iron triangle tries to explain in graphical form how software projects need to make hard tradeoffs between scope, schedule, and resources.
this is alternatively referred to as the time-cost-quality triangle, triple constraints, the triangle of balance, or the iron triangle.
there are many variants. a common variant is the phrase, "fast, cheap or good. pick two."
a more nuanced version illustrates the nature of the tradeoffs that you're making and allows for a middle option where all three are in balance, but you're not really optimizing any of them.
software engineers are all about managing tradeoffs. the highest level tradeoff is during planning and prioritization in the form of trading off value delivered, the quality level of that value, and the time to deliver it.
the agile triangle
"if you're a team that practices waterfall development or are new to agile development, the important thing to remember is the difference between what is fixed and what is estimated. unlike waterfall development, agile projects have a fixed schedule and resources while the scope varies." https://www.atlassian.com/agile/agile-iron-triangle
agile methodology, in particular, uses fixed time periods and fixed resources. this is typical of a start up environment, where you need to ship quickly and do not have the resources to hire many engineers. you're also typically building an mvp type product, trading off scope versus time. scope can be further broken down into feature breadth and depth, and the quality of the whole experience.
my agile mvp triangle
to simplify, my version of the agile mvp triangle looks like this.
you can pick exactly one spot on this triangle for a given project. if you choose a spot close to the value point of the triangle, you are explicitly giving up some focus on quality and a polished experience. you're also choosing to push out time to delivery somewhat to get more value in.
this is jokingly talked about as "fast, cheap, or good. pick two. no, not that one. " alternatively described as, "nine women cannot make a baby in one month" ( mythical man month ), meaning that even if you did add resources in the form of extra engineers, you can quickly get to a point of diminishing returns where adding people doesn't actually speed up the delivery.
what do these points mean, exactly?
this is basically scope. it could also be labeled "features," both in terms of breadth of different features, and the depth/scope of an individual feature. i thought about calling this "user value," but quality could also be considered to deliver user value. likewise, scope could include quality/polished work. in the end, this isn't a perfect term, but i basically mean user value excluding quality/polish.
some examples of quality are high fidelity graphic style, ux optimizations based on feedback and performance tuning. this is often subjective and can take a virtually unlimited amount of time as you polish on the far end of the diminishing returns curve. the trick is getting to 80% of max quality with 20% of the effort.
this is simply the time to ship - to put the software in front of real users.
Published at DZone with permission of Chase Seibert, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.