Monday, March 5, 2018

Synthesis of Programming Problem Solving Strategies:

AEIOU

What?

For context: skim/fast-forward through these:

Thing is, when you're already trying to solve a tough problem, you can't mentally keep track of too many steps. But you also don't want to lose out on important considerations. And add on top of that how easy it is to forget* the steps when they're so abstract. Some steps even seem to overlap. 

I like summaries, so I've been playing with a few ideas to optimize for compactness. Some steps can be grouped into larger conceptual chunks. I've tried posting visual mnemonics in my room (think pictionary and infographics), but I found a simpler way to keep a mental checklist.

I came up with:

  • A
  • E
  • I
  • O
  • U

Which stand for:

  • Assumptions
  • Examples
  • Ideas
  • Optimizations
  • Unit tests

Or if you like things in threes:

  • Examples (which you should ask for to clarify assumptions)
  • Ideas (of different possible solutions, and choosing one)
  • Optimizations (which should be done with testing to evaluate your idea(s))
And then you'd just remember the "EIEIO" farmer song.

*Of course, with practice, you don't really need to memorize the steps. You should be internalizing the concepts behind the steps so they become habits of thought. But having a portable checklist (i.e. a mental/paperless way to remember) is helpful for practicing to set up the habits in the first place.