I'm big on analogies. I believe good analogies are powerful teaching tools. And, of all the jobs and projects I've worked on or at, teaching at ECPI was the coolest - hands down.
While teaching basic electronics at ECPI, I once built a bridge rectifier out of LEDs (light-emitting diodes). A bridge rectifier converts alternating current (AC) to direct current (DC). It does this by switching the path of the alternating current and then summing the result. (Failure in my attempt to simplify this concept duly noted...)
If you haven't gathered it from reading the above paragraph, this is not an easy concept to grasp by simply reading about it.
If you use LEDs, they glow when the current is flowing through them. In my lab, I used a function generator set to output a sine wave running at about 1 Hz (1 cycle per second). The students could then watch as opposing pairs of diodes conducted the applied AC - converting it to noisy DC, as all bridge rectifiers do.
It was (and is) a great analogy.
In developing software, I routinely (pseudo-) multitask. I don't actually multitask. My beautiful bride can attest to the fact that I'm quite incapable of thinking about more than one thing at a time. I pseudo-multitask by time-slicing. I work on task 1 for a bit, then task 2, then task 3. Three tasks seems to be a good fit - for me, at least.
I've worked through about eighteen task 1's and task 2's recenty while tackling a tough task 3. I won't go into details - there will be a blog about it here soon enough - but it wasn't difficult technically, it just stumped me.
I found the solution this morning and fixed it. Where was the solution? The last place I looked! :)
Herein lies a secret to software development: Don't give up. Make the problem give up before you do.
So if you're faced with a particularly difficult bug today, or any day; just when it gets so frustrating that you do not believe you'll ever solve it, take a break. Grab some green tea, go for a walk, get out of the building. Put your mind on something else for ten minutes. Maybe time-slice onto another task when you return.
When you get back to the issue or bug, you'll have a fresher perspective. And you will find it.
It'll be in the last place you look.
Technorati Tags: Software Development Development car keys Developer Community