
A prospective client wanted us to develop a piece of custom software, preferably as soon as possible, at a high level of quality, at the lowest possible cost.
Besides the fact that these are the wrong conditions for a good working relationship, and that cheap custom-made software tends to spawn hidden costs, it would be hard to satisfy this client in the first place. I will explain this using this triangle:

FAST + CHEAP ≠ GOOD
GOOD + CHEAP ≠ FAST
GOOD + FAST ≠ CHEAP
It is easy to see that you can only pick two of
the three variables. Even though you want to have all three, in
practice for 99% of cases, this is impossible. If you want speed and low
cost then you won’t get quality. Good combined with cheap can sometimes
be done if you sacrifice speed. Good and fast is costly.
Since we only build custom software of good quality,
the first option is never available. The second option is rare, because
demand for development capacity has exceeded supply for years.
Programmers are scarce and we plan well, so there are no extra billable
hours left at the end of the month.
Based on this reality, we often say ‘no’ to projects
when our conditions are not aligned with those of our potential clients.
This is not because of unwillingness or lack of flexibility, but an
honest ‘no’ will prevent problems with unsuitable clients. That way, we
can spend our time on custom software development for clients who want
to pay for quality.