That shouldn’t even be a question. But it should me more than familiar to people who have been in decision-making roles in software companies. That includes developers. An officemate shared an article from Martin Fowler the other day: https://martinfowler.com/bliki/ThreePillars.html
It’s a great set of principles to build a software business on. I’d like to share a quote that caught my attention in particular.
“I remember Trevor Mather (our CEO) contrasting ThoughtWorks with his previous experience at Accenture. He commented that ThoughtWorks did a much better job of software delivery than Accenture, but clients were much happier with Accenture than with us.”
Martin points out that sometimes there’s a tension between sustaining your business, and software excellence. Devs would often find themselves facing a question of whether to compromise on the quality of the product they’re building in order to meet some immediate need of the business. In some cases that directly translates to client requests for the software your selling, or are asking you to build. Having to say no, or forcing clients to take another way because you know that that’s the right way (read: gives them the most value) can get you negative feedback.
I was originally going to post examples, but while typing it out I’ve realized that there’s no blanket answer for every situation. That tension exists. It’s good to know it’s there so that you could carefully weigh the trade-offs. Now you have to make that decision for yourself. It’s difficult, and I hope you have the experience to make that call correctly.
There are certainly business models who pay lip service to quality, and do make money out of it. Software-something-to-sell more than excellence. But I believe that all Software Engineers should give Software Excellence equal importance as having a sustainable business. Because, in the end, excellent software will do more than just sustain your business.