By daviddh | Wed, 07/22/2020 - 10:36
Shower ideas

I watched a YouTube video recently titled Drop Your Tools -- Does Expertise Have a Dark Side?. This is a fascinating video with great storytelling. It really caught me off guard. For this article, I want to focus on a clip at 33:18 where Dr. Brady talks about why you get your best ideas in the shower.

I'll let Dr. Brady speak as to why this is the case, but it is so true for me personally. I leverage my morning showers for everything from idea generation to tricky problem solving. Over the years, I've found it best to follow up a "breakthrough" with an immediate work session or at least some note taking.

When I say "leverage" it sounds like I'm actively doing something. That is not the case. Whatever is weighing on me most is the likely path that my mind will take. For me, the best time is in the morning after a single cup of coffee. For others, maybe it's a morning workout or an afternoon walk.

At a previous job, a colleague and I developed a software product called ZOE. It was an innovative panning and zooming style HMI for warehouse control applications. I wrote the core of ZOE, and he wrote all of the graphical widgets such as buttons, data grids and "smart" conveyors. At some point after the first production deployment there were still some expected features that were missing in the product.

One of these features was "Zoom to Pointer". If you've ever used other pan-and-zoom tools such as AutoCAD, you'll understand what that means and why it's important. It is the feature that lets you point to an area on the screen and spin the center wheel of your mouse to zoom up to the area of interest. At that time in ZOE, I had only implemented "Zoom to Center" which zooms up on the exact center of the screen.

I made several attempts to code zoom-to-pointer but just couldn't get it to work. It was one of those situations where you know that you're close and there's not much more code to write, but the solution just eludes you. So, I put it on the back burner and worked on other issues. The workaround for the application engineer was to pan the area of interest to the center of the screen and then zoom. This was clumsy, but workable.

I set this problem aside for months, but eventually started reviewing the code and thinking about it again. One morning, the solution to the problem came to me during my shower. It was so obvious. I coded the fix that morning, and it worked perfectly. There were only a few lines of code to change. I love my morning shower.