Imagine that the Gods of Code gave you a magic wand*. This impressive tool allows you to instantly analyze a code base and give a score from 0 to 10about its maintainability; where zero (0) means impossible to change, and then (10) really easy to change.
Suddenly, you receive three consulting proposals from distinct clients (A, B, and C). They are requesting you to implement some new features in their flag-ship product. Using your magic wand, you determine that:
- Product A has a maintainability index of 6,
- Product B has one of 1.5, and
- Product C has a maintainability index of 9
Your potential clients have stated that their product is mission critical and that the impact of introducing new defects (bugs) to that product can be catastrophic. Because of that they will transfer that risk to you: any new bug found during a two-month certification period need to be fixed ASAP and without any additional payment.
Assuming a pricing strategy X (time based, effort based, etc.), can we
- Charge Client C the regular rate?
- Charge Client A the regular rate adjusted (multiplied) by some risk based factor (inversely proportional to the maintainability index)?
- Just drop client B and avoid that risk?
Do you get where I’m going?
- Can we educate our customers by using a pricing strategy that directly reflects the level of risk and effort we need to put in order to work with their messy piece of code?
- With time, and some hard experiences, will our customer be more vigilant about the quality of their code base, and maybe start demanding more quality for all developers, inside or outside their organization?
* Don’t wait for the Gods, you can use SonarQube, PMD, ReSharper, Checkstyle, and many others.