DEV Community

Cover image for Is there an iron triangle of development?
Imran Askem
Imran Askem

Posted on

Is there an iron triangle of development?

Before I was a developer, I was a Project Manager and one of the first things I learnt was the iron triangle. For anyone not familiar with it, it's a model of the constraints of managing a project. The idea is that you can only have two of the three points. For example, if you want a project with many features delivered quickly it will cost a lot of money/resource. I found it a helpful construct for thinking about what trade-offs to make, which got me thinking about how this could apply to development.

As someone that likes to make conscious decisions, I often wonder what trade-offs I'm making as I write code.

If I'm working on a task that needs to be highly performant am I sacrificing readability? If I want to make a project easy to maintain does that mean it can't be as extensible?

I'm actually not sure what shape the "development" version should be or what the axes are. My starting list would be:

  • Performance
  • Readability
  • Extensibility
  • Maintainability
  • Time (to develop)

At the moment I have a lot of questions and few answers but I think it's an interesting idea, have you ever thought something similar? It would be great to hear from you.

Discussion (1)

johnsheard profile image
John Sheard

I think maybe you could argue that Maintainability includes Readability and Extensibility in some definitions. If it did include those in its definition, then it makes the corner of the triangle probably the most complex to understand out of the three, and the Iron Triangle's success is in part due to its simplicity.