Maddeningly Simple

Wall

Wall, by: Danila Balashkin on Unsplash

Have you ever stared at a problem that ended up having the simplest solution that makes you angry? I know I have. For me, it’s happened when I’ve solved the problem in a more complicated manner and then see, or worse am shown an easier solution. It’s not that I am not excited to learn, it's just getting hit with a simple solution that makes it maddening you didn’t see it before.

Storytime

Let me share a story about an SEO problem we had about a decade back. We had 5 million pages that needed to have a different beginning to the title. We wanted to build these titles with either ‘The Best…’, ‘The Top…,’ or ‘The Greatest…’ Once the page title was set, this needed to remain as the beginning title for all of history. So, I built a table that held the 5 million rows referenced to the page ID and generated the list of new titles. It was a little bit of a load to the call, but hey, that’s what was wanted.

It’s an SEO problem though, so performance was important, and a 5 million-row table just for a title was not a great option. It shouldn’t have surprised me, that a colleague at the time, came over and just asked why I didn’t just put a binning check on the Page ID.

A binning check involves dividing a continuous range of values into discrete intervals or bins. In our case, because we only had three variables, we could simply check the last number in the ID and have 0-3 be the first option, 4-6 be the second, and 7-9 be the third. There would be no need for an additional table, and the small check was short, fast, and a lot less code. Just another example to show that more lines of code, don’t make a better application.

Que my slack-jawed frustration. I won’t lie, I’ve been excited to use this method several other times since in my career, and have even given the slack-jawed frustration to a few others with it. Misery loves company, unfortunately, but what I love more is sharing great ideas with people so they can shortcut their over-complicated solutions.

Tips for Recognizing Simple Solutions:

  • Take a Breath - After you’ve thought through your projects, sometimes it’s best to take a step back from your work and try to view it with fresh eyes. Make sure you look at your goals and verify that you are still trying to achieve them. Ask yourself if you’ve added unnecessary scope to reaching them.
  • Seek Feedback - Don't hesitate to seek feedback from colleagues, mentors, or stakeholders. They can provide valuable perspectives and point out areas where you might be overcomplicating things. More minds bring better ideas.
  • Break It Down - Break the problem or project into smaller, more iterations. This can help identify areas of unnecessary complexity.
  • Challenge Assumptions - In the example above, I had a poor assumption that I had to have a table to constantly hold onto data that wouldn’t change. Question the assumption you have on solutions to verify it’s the right one.
  • Occam's Razor - Apply Occam's Razor, the principle that the simplest solution is often the best one. If multiple solutions are presented investigate the simplest one first.
  • Consider the End User - The best of us will forget our users while we are crafting solutions. Sometimes complexity can arise from trying to anticipate every possible scenario or edge case of all the solutions. Simplicity is often more user-friendly, so remember to take it a step at a time.
  • Importance of Keeping Things Simple

    Keeping things simple is important because simple is smooth and smooth is fast. This encourages rapid iterations which allows you to continue to refine as you go. If you went with the complicated plan it’s going to take you longer to find the mistakes you will make and longer to fix them.

    It’s not just a matter of convenience; it's a fundamental principle in project management. Good project management is as much time management and looking for ways to streamline processes, improve efficiency, to enhance the overall user experience. Having quick prototypes to test your hypothesis saves time. This is why you put mockups before stakeholders early as opposed to building the fully functional product for their review.

    Being willing to iterate and refine your solution, you can continually simplify and improve it. The idea of iterations is partially the idea of stripping complications and only adding in an incremental way. This helps you refine your focus on what matters.

    Conclusion

    Simplicity is not just a nice to have; it's a critical aspect of successful problem-solving and project management. By prototyping and testing early, as well as embracing an iterative approach to refinement, you can ensure that your solutions remain simple, intuitive, and ultimately more impactful. Listen to the feedback along the course and get rid of your assumptions for lengthy builds.