Coding practice, making new neurons, and the trouble with analogies

class exercise
It may not look fancy, but this class exercise, executed all in HTML and CSS, was a success for me.

It seems that a big part of learning to code is simply spending lots of time practicing it — getting things wrong, getting frustrated, asking for help, and getting them a little better next time (hopefully). In that sense it’s like learning to play a musical instrument — you can think and talk about it all you want, but if you really want to learn it you need to get your fingers moving and be willing to sound really crappy for quite awhile.

Yeah, I know: Duh. But it’s one thing knowing that piece of obviousness, and another to really knuckle down and do it….

That’s where I’ve been falling down on this project so far — I pay attention in class and understand stuff in class (our teacher, Richard Jones, is really skilled). But spending time on the homework is where I’m having a hard time. Quite simply, I keep procrastinating because it’s uncomfortable for me.

So my goal for the next week is to spend at least 3 hours a day on work related to the class, including at least 90 solid minutes of coding practice. (Yeah, hardcore developers may snicker at that, but for me it’s a big deal. Especially being self-employed: I don’t get vacation time, and even cutting back on my workload I still have much I can’t put aside totally. So go ahead and snicker.)

Another thing I’ve realized is that part of my habits for learning something new is to try to related it through analogy to things I already know, or relationships I already understand. For instance, in class Monday our teacher was talking about phenomena, principles, and techniques in web design. Basically they’re philosophical constructs. I just wasn’t getting the distinctions and the relationships, so I tried out an analogy:

  • Principles = Core aspects of how web design works, such as page flow. (My attempted analogy: blood must circulate through the body.)
  • Phenomena = what happens when your code gets screwy, like float collapse. (My attempted analogy: when an artery gets clogged a heart attack can occur.)
  • Techniques = how you address the problem, such as clearfix. (My attempted analogy: clearing the artery and implanting a stent.)
My instructor was unimpressed with my attempted analogy — and the more I think about it, it’s probably off by quite a bit.
Which made me realize the larger problem: I keep trying to use analogies to wrap my brain around coding. But instead, I should just focus on coding and let the understanding emerge — painfully, slowly, but steadily.
OK, time to get back to guitar — er, um, coding — practice….