It seems like everyone wants everything these days. They want high quality products and services in the quickest amount of time at the lowest price possible. This is never the case.
I don’t recall people talking about this fundamental concept very often that is The triangle of value. It’s also known by many other names. This is a basic resource constraint when you are offering a product or service.
The triangle of value is this:
You have Time, Cost and Quality – Pick two.
You can have a low cost product very quickly but the quality suffers.
You can have a high quality product relatively quickly but it will be very expensive.
You can have a high quality product at a low cost but it will take lots of time to develop.
This is true of project management and DevOps as well. At the end of the day, these are the three elements you have to work with.
Open source products also work like this. You can have a low cost product (it’s free…so to speak) which is high quality with many features, but it gets done on donated time. It may take some time before a bug is corrected or a new features are added.
Other things that affect the “triangle of value”
Skill and Experience
Skill can reduce the amount of time it takes to make something and it can also affect quality of a product or service. Then again, you will pay more money for an individual with a higher skillset especially if you want to keep them around.
It can be something that decreases the amount of time you spend on producing a product or service. It can be in the form of automation or another catalytic process. At the end of the day, all advancements of technology are catalysts for getting more stuff out of a process. On the other hand, technology can take time and expertise to develop. This also can cost more money for better tech.
How does this understanding play into DevOps or anywhere else?
In an ideal world, you may be able to hire the brightest minds who are up to the task, have the best equipment, plenty of lead time for getting to market and an unlimited budget…but this is not the case.
It may be more like, you only could hire 2 of the 5 positions for experienced programmers (maybe your one of them) and they aren’t that bright (they just think they are), you have second hand equipment that is a few years old, your budget is a quarter of what you were promised and last week was when you had to get the project done.
That’s ok, these are the reality of the industry. You do with what you can the best you can, the same principles apply.
If you don’t have enough manpower, you make it up with overtime and finding leverage somewhere…maybe automation.
If you don’t have the latest equipment, let’s say it’s slow…you make it up by getting more of the older equipment and use them in parallel using some clever programming and networking.
If you have a short lead time, you loosen your “quality” regiment (as in hope your developers don’t make mistakes writing code by forgoing tests) to save on the time you spend in development.
DevOps CI/CD the “Holy Grail” may be a lofty goal to achieve if your resources are limited, but it is a worthwhile and doable. It may take some time to figure out how to do it and to build and train the resources to do this.
At the end of the day, what you most value is what you will get. You can’t have it all but you can choose what you can live with.
I am open to feedback and any suggestions you may have. Until then, have a good day.