January 2, 2019
Beyond Treating the Symptoms
Over the course of my career as a developer, one trend that I have noticed is that I'm particularly good at finding band-aid solutions to a problem. This may be due to the fact that a lot of my early development experience revolved around debugging CSS. For example, when someone ran into a bug, my first instinct would be to take what I already knew to create a workaround to patch the bug (i.e., clever positioning, floats, etc.). And while this has been helpful in various ways, I find that this has hampered me when it came to innovating new ideas.
The ability to work within a set of constraints and come up with a solution is a good skill to have. In fact, I would say that it's one of the key skills to being a good developer. After all, if our ability to solve a problem was entirely contingent on a perfect API or some function pre-built for our problem, we wouldn't get very much done. 😅
While the band-aid technique makes us feel very productive, we end up in a pattern of treating symptoms rather than the root cause. After all, we are constantly using old techniques to soothe whatever pain it is that we are encountering. In addition, because the pain is taken care of with relative ease, we are rarely motivated enough to go back and investigate the origin. After all, once I've put out one fire, there's always more waiting for me.
This feels counter intuitive to write, but Chris brought to my attention that pain is not something to be simply brushed away as quickly as possible. In fact, in order to provide better value to the world, it is paramount to understand that pain. So rather than simply creating a quick solution to patch the problem, it's important to take time to gain a holistic understanding of the situation at hand.
To be clear, it is not about intentionally extending the length of pain. It is about taking the time to examine the cause of the pain and critically analyze the solution at hand. And while the band-aid can be more than adequate in many situations, it is important to question whether or not a better solution is possible.
Like many of you, I never bothered trying to come up with a better solution because I:
- Thought I wasn't smart enough to figure it out
- Didn't think my opinion was worth anything
- Was afraid of ridicule for suggesting something stupid
The reality is that all of this is complete and utter nonsense. It's not about being the sole person responsible for creating the perfect solution, but about starting the discussion around finding that solution. There is power in numbers and this is no different for devising new solutions in our field.
Remember that encountering some sort of pain point is a signal that there is a problem to solve. More importantly, the drive to figure out the cure for the pain rather than simply treating the symptom is an unwillingness to simply accept the status quo. And if you think about it, odds are pretty good that if you are feeling that pain point, someone else in the world has felt it too and needs your help.
I've run a loose metaphor through this post regarding the pain point being a sort of sickness. That said, I realized that it's important for me to write down alternatives to the band-aid solution:
- Blog about it - Even if it's only a few paragraphs and documenting what ideas you might have around the ideal solution, this provides a record that someone may also run into in the future.
- Create a library - There are a ton of npm libraries out there that do things quite simple like changing the case of strings. So if someone hasn't created one to solve your proble, you can create one too! And then people can contribute to it with improvements and such as time goes on!
- Propose a new specification - Assuming you have the technical ability and knowledge to navigate the space, you could submit a proposal to the language specification to propose the new solution if you think it's a problem a lot of people have.
This is going to take some effort on my part to change my habits, but after much thought, it is clear to me that I need to not take the pain that I or others around me for granted. Although the band-aid technique has gotten me quite far, I know that grasping the importance of pain is critical for me to go beyond simply treating the symptoms.