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

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….

7 thoughts on Coding practice, making new neurons, and the trouble with analogies

  1. Well, I think it’s more a shame that learning “how to code” is clouded by crap that really is not all that important – such as “philosophical constructs”.

    I mean, I understand the concept but who cares? Just code! The more you practice, the more you learn. Create fun, useful projects for yourself or follow examples of others. The web is saturated with them.

    Your time is FAR better spent studying code, and isolating errors – than learning abstract definitions that NO ONE in the profession even considers unless they are writing a patent application.

    Most of this stuff is impossible to learn except by heuristic problem-solving. Everything else is a waste of time.

    Trust me, I’ve been doing this for a long time and have taught myself far more programming and scripting languages than I can remember.

    I don’t mean to obsess on THAT part, but it strikes a nerve, I guess. Other than that, GOOD for you on setting aside some time!

    I like to say, it’s the “pain of discipline” versus the “pain of consequence” – we get to choose. Being self-employed, I understand how valuable your time and choices are!

    Good luck, looking forward to hearing about your progress!

  2. Surely the hardest part about learning is understanding how ‘this’ brain works, not the brain of a tutor or a teacher. You need to fit new knowledge into your own patterns until the new knowledge creates its own space; the brain needs pointers, just like the most basic computer system, to connect ‘a’ to ‘b’ to ‘c’ and on to ‘zzz’.

  3. Thanks, Kim

    I appreciate your perspective — but respectfully, this teacher’s approach to communicating not just coding skills, but how to think about coding, is VERY useful for me.

    YMMV, of course.

    - Amy

  4. Thanks Barbara

    Normally I’d agree — after all, analogies have been a key learning tool for me my whole life. But right now, in this project, I find they’re getting in the way of me simply trying to understand what’s going on with code. Maybe after I’m not such a total coding noob I might think differently, but right now I actually appreciate this instructor’s approach and need to get out of my own way more. And right now, I think my tendency to analogize is getting in the way.

  5. m alexander (sandy) stiffman · October 9, 2012 at 9:12 pm ·

    Your commenst about learning coding sounds — how should I say — “young.” The only way to learn anything is to practice — unceasingly. You know the old joke: how do you get to Carnegie Hall? Practice! Years ago I programmed in IBM assembler language. Classes were rare — you were given IBM documentation and expected to learn from it. Often — very often — I stayed up all night. One reason: had to wait for the mainframe to be available in order to test the code. But , in addition, I had to intensely review and re-review the written code for errors, etc. because computer time was at a premium — not cheap and available as it now it. This is “on the emmess”: I would often have weird dreams of oceans of code. It was totally consuming. One main difference between your experience and mine is that I was addressing specific, real world problems. In any case, expect to sweat and suffer far more that you would rationally expect. And then… after a while… you look back and smile with satisfaction at the logic you imposed … and you wonder why it was so hard to get from there to here — it was just a matter doing (here you fill in the blanks with a summary of the approach you took and the coding tricks you applied).

    Sandy

  6. Well, whether my comments sound “young” (whatever you mean by that) or not, it’s my perspective. People have individual learning styles, and your mileage may vary.

    It’s really amusing to me how whenever someone (especially a woman) tries anything new with technology, more experienced practitioners are eager to basically say “You’re doing it wrong, you should do it like I do it.”

    Well, the process of learning is gaining experience, and that’s what I’m doing. I am learning a lot, regardless of whether it meets others’ preferences or standards. And I’m enjoying blogging my learning curve, despite the inevitable condescension.

    Thanks,

    - Amy

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>