The Software Development Triangle

The Software Development Triangle Image

I have always been a fan of this triangle describing software development:


There are three overarching choices when developing a software project.


A fixed release date may be important. Some projects need to be released at the same time as a big marketing push, or to coincide with the release of a certain product, or with real life events like the beginning or end of the school year. Or maybe the client just wants the app as soon as possible. It is important to get these done fast.


Of course, everyone wants a good product. Apps should be bug free, well designed, user friendly, and have useful functions. Having certain features may be more important than getting the app out by a certain time.These features might be absolutely necessary for the app to be functional, and so cannot be cut, as users won’t bother with an app that serves little to no function for them. So the app must have just enough features to entice and maintain users.


And lastly, apps cost money. There’s planning and design work, there’s testing and retesting (and then testing some more), and there’s the development time that goes into making the clients vision a reality. The app can be made cheaper by cutting non-essential features, or by not worrying as much about polish.

Now, of these three aspects, you get to pick two.

No set of choices is wrong, it depends on what exactly the client needs or wants from the app. Maybe a large company with lots of money needs an app out right away to support a new product of theirs. If money isn’t a factor, the app doesn’t need to be cheap. Maybe a client has a grand vision for a life-changing app, one that could be the start of a whole business platform. They don’t have a large start up fund, and they don’t need it done right away, but it does need to be done well if it’s going to succeed. Fast and cheap apps are best for informational apps, or apps that will only be used by a small subset of people, who will know exactly what they’re working with. These apps don’t have a lot of features, and might not look flashy, but they serve exactly the purpose they need too.

But having all three is impossible.

A good mobile app that is done fast can’t be cheap. It requires lots of time by to plan, develop, test and release. And you need good quality people performing those tasks, and they aren’t cheap. Getting it done fast may mean adding more developers, or bumping the priority of other projects down, which typically bumps the price up similar to “rush fees” at many other custom order businesses.

A good mobile app that is cheap won’t be done fast. Other (likely higher paying) projects will be higher priority. High quality features and UI will take extra time, as it gets slotted in between other projects. And how good it is will always be relative to just how cheap it needs to be.

Finally, a cheap app that is done fast won’t be good. Quality work always takes time – more testing, more polish on the UI, and more attention in general. Needing a fast, cheap app means any of these qualities could be dropped.

It’s important to keep these three factors in mind when considering any software project, as they will determine the end-state of the product. Deciding what is important for the apps success is a crucial part of mobile app development.