I’ve heard in many of the sources I’ve read that there are 3 dials for projects and optimizing for 1 or 2 of the dials will affect the other(s). The dials are:
- Cost (Expensive vs Inexpensive)
- Quality (High with lower bugs, Low with more bugs or inefficient code)
- Delivery (Quick delivery vs Long delivery)
But why can’t you have inexpensive projects of high quality with quick delivery?
Ultimately the problem here I think is that all of these terms are relative. The dials are being turned based on some already established benchmarks. A different question rather than how are these three things related given a particular process, but maybe “Can I use a different process that will make all three targets decrease?”
I’ve heard that doing Agile development that is driven by tests improves all three markers.
- Test Driven Development: means writing sensible tests for the expected business outcomes of your code that you can run at any time. The tests need to be quick and reliable and as you add new requirements you create more tests to ensure each of the business requirements is being met.
- Continuous Deployment: Maybe you can’t achieve the continuous part, but it’s something that could be worked toward. What if you could deploy tested changes to the live environment by yourself at the end of every day, or twice a day, or heck, every hour? You could potentially get almost immediate feedback on your changes and with the testing piece in place (once you’re doing it well) you could be reasonably sure that you haven’t broken any of the previous requirements.
- Agile delivery: Quick delivery cycles make sure you hit the customer’s desired outcome in an efficient manner, minimizing the cost of the project (assuming you are billing hourly… not that I particularly like billing hourly, but it’s been difficult not to when working on small-ish projects). Keeping customer costs down while delivering high quality results.
So, what do you think? Sound interesting?
Nope. Speed, quality, or price. Pick 2. I’ll die on this hill. I’ve had clients expect the world… And that’s fine… I’ll build you a top quality system and have it ready next week, but if I’m dropping everything else to work on YOUR project, expect to hear little cash registers go off every time you said “can the database do…?” Yeah. Sure. Add $1000.
I guess I should have compared apples to apples. I’m talking more about internally making my development of DBs better in all three areas. So my premise is not so much aimed at the typical example of the client view of value. I think you’re right when it comes to explaining things to a client and how that cycle works. Even if I am improving all three internally, if the client wants to stretch their buck at any given time after you’ve already given them an estimate, you are totally right.