As a programmer, we are mostly on a fascinating journey of problem-solving, where challenges and their corresponding solutions can be classified into two categories: the simple and the complicated. However, finding the right pairing can bring elegance, ingenuity, and ultimately satisfaction. While this concept may appear obvious, I’ve found on occasion tangled in the web of the wrong combination, despite my best intentions.

a. Simple Problem-Complicated Solution: Occasionally, we become fixated on flexibility and inadvertently complicate a straightforward problem. Instead of treating a fundamental business rule as a convention in code, we over-engineer it with unnecessary configurational levers. This infestation stems from a desire to showcase our intelligence but can result in naivety and foolishness.

b. Complicated Problem: Ah, the realm of complexity! It is here that we encounter challenges that stubbornly resist our attempts to simplify. This is particularly true in complicated industries, large businesses, and most definitely at the intersection.

We find ourselves with two distinct paths to consider:

  • Complicated Solution: In the face of complexity, it is not uncommon to unintentionally gravitate towards convoluted solutions. This involves incorporating excessive or insufficient configurational levers within the code. This tendency emerges when dealing with tight timelines or collaborating with the wrong individuals at the wrong stage. The pressure of tight schedules may force us to bypass thoughtful design and hastily plunge into coding. Likewise, premature collaboration with incompatible minds during the delicate ideation phase can lead us down a path of complexity. The outcome? A bittersweet blend of momentary relief tinged with a lingering sense of dissatisfaction.

  • Simple Solution: Equipped with experience and guided by intention, we possess the power to craft elegant, uncomplicated solutions, sprinkling only the necessary configurational levers. This is achievable through the right expertise and collaborating with suitable individuals at the appropriate time — a significant milestone for satisfaction.

And finally, the ultimate convergence:

Simple Problem-Simple Solution: This scenario occurs with the perfect alignment of factors — our philosophy as a maker, industry or business that is innovative yet simple (often small in scale), our level of expertise in it, and the right people for collaboration at the opportune moment.

While it may appear complex, nurturing this desire is worthwhile, as it can be attained through a series of small choices over time.