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