Technologists love solving problems, it’s one of the defining characteristics that pulls people into the world of high-tech. When this desire is put towards the right ends, then it’s a powerful force for good. There are some tools and techniques that can keep you on this path, and a few traps to watch out for.
First up, be clear what the true problem is you are trying to solve. Understand what the issue is, consider who is impacted now and what will change once it’s solved. Look at the value in the solution, the costs involved in solving it and the opportunity cost of targeting this vs something else.
Taking time to build this understanding gives a proper frame to the problem. It’ll prevent a couple of the traditional mistakes we can make, things like automating the existing bad process, or only providing benefit to the noisy stakeholders who are demanding a solution right now.
Now, step away from pure technical solutions. If you stay fully in the world of software and hardware, you’ll find you default to solving all problems by just writing code. The longer you do this, the easier it is to drift away from your customers, until all you care about is the minor version of the tech stack and wringing out another micro performance update. You’ll probably place too much weight on getting rid of old software just because it’s built in a slightly outdated way, rather than moving on because it’s no longer serving a purpose.
So, look over the problem again. If you aren’t selling enough of a widget, then don’t immediately jump on updating a feature. Maybe you are not marketing it to the right people, or your copy is out of date. Is it a complex product that has a sales funnel? Can you optimise that? Are people using it correctly or is it too complex? Maybe the right solution is taking away features rather than adding more?
When you look up beyond the purely technical, you increase the overall impact you are able to have. Work with the cross-functional experts in all the disciplines relevant to the problem and you’ll always come up with a better solution. You can be confident that when you break out the development environment and start cutting code that you’ve worked the problem and that a technical solution is the right one.