DEV Community

Scott
Scott

Posted on

What to do when you're stuck on any problem.

Draw. It. Out.

The Skinny

Seeing things visually and drawing out the problem and working on the solution is important regardless of the challenge. Architecture, algorithm, code implementation, documentation examples, etc.

Why is drawing things out so important?

I'm not necessarily a visual learner, I'm more of a tactile learner, but I still feel laying out my problem and working on the solution on scratch paper always yields better results than if I were to try to do things in my head.

I usually also find edge cases that I wouldn't have caught otherwise, by just being able to see the whole picture in one spot.

Why is this especially important in July 2020?

Most if not all people working in technology have been required to work from home. Usually, in an office we have endless white boards, supplies, and space to doodle and talk through problems. Working at home presents its own set of issues and usually we are confined to less space and have less materials than normal.

That's ok! You have a few options!

  1. Just buy a notebook! I love notebooks and they're the lowest cost option you have. Disclaimer: just make sure the paper is large enough to get your point across and see all of your options.
  2. Buy a whiteboard: This gets tricky because if you're limited on space than I would suggest option 1. This is because you wont actually get enough lateral space to be effective and it'll be more frustrating than worth it.

In the wild

Ya, ya, ok but when have you actually used this?

Great question, just this week, I was updating our documentation on Gitlab about recommending a alternate approach to using mixins in our Vue components to get ready for Vue 3. I couldn't quite conceptualize how it would work out in my head so I took my own advice and Drew. It. Out.

This had great results and I really enjoyed the process. In addition, I was able to see a few other options we could use I wouldn't have otherwise seen.

Another time, in my previous blog post, The One Blog Post That Made Me a Better Dev, the problems in SCIP were so hard I was advised by my mentor to do every problem in a notebook, step by step and then write it in code. Did it always workout? No, but it helped me get further on almost every problem.

How do I use this new skill?

A good place to start is outlining all of your known inputs and outputs and see if you can see a pattern. Try to solve each result with one input by hand, maybe after a few times you'll be able to see a pattern, repeat the process and find an implementation. Don't forget your edge cases!

Your party favor

Working on a computer all day everyday becomes taxing. We mentally cannot keep everything in order in our heads (regardless of our mindfulness practices and how awesome we think we are). Take a moment, get a piece of paper, and draw or write it out. It will help you organize your thoughts and I believe your process will become much more free flowing and organic. The tools we choose always have their limits of productivity. When our goal is pure problem solving and cerebral brain dumps, simplifying our toolset to a pen and paper can result in great success and more robust solutions.

Thanks for reading!

Scott
https://scottistern.com

Top comments (0)