By Michael Mongon
Feb-27, 2024 19:40
Maddeningly Simple
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:
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.