Coding is a tool, but there is so much depth within that it often feels like an art form. There are many ways to approach the same problem with different frameworks, languages, and architectures. The end product could be the same but look totally different under the hood. This is the underlying reason coding is so dangerous for developers. With so much freedom, we can lose sight of the original goal: solving a problem.
It’s very easy to dive into a project and decide that you should build it from scratch because you’re a developer, you can code! You have the magic power to bring amazing things into being with only a keyboard! You start building, troubleshooting bugs you didn’t imagine would pop up to ruin your plans. Then, the features you pictured in your head turn out to be significantly more complicated. Hours later, you discover a spreadsheet and Google form could solve it in a few minutes. It’s an amazing feeling to see your work come to life, but it can blind us to the simple solutions that we can discover with a little more patience.
Alright, so you’ve searched around and mulled it over, it actually does make sense to build something new to solve your problem. Awesome, you’ve been meaning to try out that brand new language you found! Chances are, you won’t be the last person working on this solution though. Will the next person have the experience & knowledge to maintain a niche language? Does it put your company in a position where their bus factor is just you?
Fine, we decided it made more sense to use technologies that are more stable and commonplace, even if they aren’t as exciting. Well, this should incorporate some machine-learning background jobs to give us insights on the best path forward, right? Maybe a little blockchain under the hood? It also needs to be multi-region & scalable to the nth degree to make sure we can handle the millions of users waiting around the corner for this. If it’s not fully resilient, they won’t want to use it! Developers love adding features and improving software, especially the ones who care about the craft. Like artists, they will never be satisfied with their work and can always find something to tweak. Eventually, the energy is better spent elsewhere. We forget to ask ourselves “Are these features actually what people need/asked for?".
The danger in these situations is when coding becomes a ‘feel-productive’ task while not moving you closer to a solution. This happens because of the disconnect between the actions taken that let us check off boxes (writing a new feature, deploying the service, etc.) with the actual planned outcome. It feels great to see progress, but if that path leads to nowhere you are just wasting time.
The possibilities available when you know how to code are staggering. It’s easy to become lost in the void of possibilities, losing your tether to your original goal. Next time you’re looking over a project ask yourself: