The old software developer’s joking observation contains endless wisdom: “It’s not a bug, it’s a feature.” We laugh at the classic defense the canonical software developer uses when confronted with a problem in their code: “Oh, I meant to do that! It’s really because of [insert some smart reason here].”
But one of the underlying insights of this observation is that, the line between bug and feature can often be a fine and subtle one. And in software development, like in life, there’s often a tug of war between the bug and the feature, the two sides of any coin. It’s often not obvious to know which side is more appropriate for a situation, and which is less appropriate.
Let’s take a look at a situation that we here at UV deal with daily: the yin and yang of flexibility vs process in the context of a tech consultancy like ours.
There are clear benefits to both flexibility, and to process. Flexibility allows you to adjust as much as need to the world around you. But process ensures quality control and standards, limits risk, makes transitions between team members easier, and makes clarity of what is happening paramount. Both sides are important, in any endeavour — software or not.
But, simultaneously, there is a trade-off between the two. If we apply Kant’s categorical imperative insight, and analyze concepts at their most extreme form — a rigid insistence on process is the precise opposite of flexibility, and a deeply flexibility system is, for all practical purposes, identical to a lack of any process at all!
But how do we get the best of both worlds? The UV strategy is this:
To be deeply process-oriented, but build into our own DNA the core value that we must be constantly improving, adapting, and tweaking our processes, as much as needed.
One of UV’s key values that we pride ourselves on is that we go to extreme lengths to find the healthy balance between these two extremes.
So how do we build this into our DNA? Many ways, including:
- Being process-driven, but always open to the real-world necessities of stretching the process when needed.
- Always keeping our eyes to the ground to make sure we notice when it is needed.
- Having our internal processes live in a state of regular review, so we update them as they need to be updated.
- Having all members of our team, from software developers to product directors, to everyone else, understanding that our processes can be adjusted as necessary.
- Being in touch with the industry’s best practices, so we can regularly update our own processes based on constantly improving industry standards.
Here’s one of the challenges: finding this balance is hard. It’s natural for focused groups to become fundamentalists, since the two directions always tug at you and one side will always tug stronger. This is doubly true in the tech consultancy world, where most players we know are either too flexible or too process-driven for our tastes, as well as the tastes of our clients.
UV’s solution is to make sure we always keep this balance by having it as one of our core values, and to constantly reinforce it and remind ourselves of it, at every level. As this article itself will do for the team: positive reinforcement never hurts!