DEV Community

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

Posted on

2

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.

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (1)

Collapse
 
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.

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay