Is testing the responsibility of the engineer or should you have a dedicated tester? At what stage does testing become a thing that you have to think about separately to the creation of software? It’s a debate that refuses to go away for the very reason that there is no hard and fast rule.
The same goes for how we build software, there are no rules to what we can build, how we build it, how we test it or deploy it. There are only tricks we can employ to make it seem like we have more control.
So what we end up with is the illusion of control. We are not in charge of where our creative purpose goes – we want to create something that others will use. We hear the phrase “Build it and they will come” but of course they won’t come if our system is unreliable buggy and short on features. They may stop by but they won’t stick around and give us their money.
Through the process of creation we are walking a fine line of creativity and control. This has been called Software Craftsmanship in some places, but in today’s world that phrase sounds rather ungainly and sexist. How instead can we understand that there is no schema or plan that we can follow that will guide us to a complete piece of charming, functional, easily extensible and supportable software – there is no easy path.
Instead we must invest in ourselves and those around us to ensure that they have the skills and the diligence to carry out the best work. The tools and systems we put in place around that can help this endeavour. At what point do they themselves become something which limit further growth or opportunity?
Software is a living thing. Treat it as such, with care and respect. Only then do we begin to understand just how hard it is to make and maintain good software.