I don’t know how many times I’ve had to face the statement in the title, in this or in one of its many variations: “we don’t need the perfect solution“, “it doesn’t have to be perfect!”, “we need it fast, can we skip the tests?”, “is there a quick and dirty solution?“…
I could keep going, but I’m sure you got the idea. How would you respond?
My answer would be: if this is a protype or a throwaway software, then hell yes, we can find a compromise! Do you plan to keep this system running and possibly grow in the future? Then no sir/madam, that’s not adviseable because you are going to pay the cost of this shortcut a much higher price later on.
Jumping into the world of nerds, every shortcut you take is going to contribute to the application technical debt, and while your business partners are not required to understand it, you, the software developers, the people of this nitty nerdy world we live into, are.
If you care about your professionality and you don’t want to be considered just the guy who knows how to speak to computers, it is your responsibility to properly advice and inform your business partners, not only of the consequences of their decisions, but also to give them options.
While it is true the business doesn’t care about software quality, it does care about the software working properly and having consistent and predictable maintenance costs, not skyrocketing the day after it gets delivered.
Now, let’s put it into another business domain, let’s talk about constructions. Imagine we are building an house rather than a piece of software and you, “the business“, are going to ask your trusted engineer something like “Can we cut the construction time/cost by reducing the amount of concrete we put in the walls or by not building the roof? It doesn’t have to be perfect, I just need a place to sleep in as soon as possible”. I would expect such a consultant to tell me…
No buddy, if we reduce the amount of concrete in the walls the risk of having you and your whole family ending up under a couple of tonnes of rubble is getting too high. And without a roof there will be nothing to protect you from rain or the shining sun you have over here in Italy.
No, you can’t do that, but we can build the one-floor-only version, maybe we can also cut on the swimming pool: I know it’s the real reason we started this project, but you can live without that for a couple of months, trust me.
Is this reasonable? I believe it is for anyone not mentally ill, but apparently the same doesn’t apply to software. The difference stands in the fact everyone knows how an house is built and what is the value of each feature. In software development you, the guy living in the nerdy world, are most probably the only one understanding the value of software quality.
This doesn’t prevent you from helping your business partner making the right choice, and no, you cannot pass-on if he/she is not understanding: you are the expert, you have the knowledge, you have the ethical responsibility.