This post originated from an RSS feed registered with Agile Buzz
by Laurent Bossavit.
Original Post: Meet people where they are
Feed Title: Incipient(thoughts)
Feed URL: http://bossavit.com/thoughts/index.rdf
Feed Description: You're in a maze of twisty little decisions, all alike. You're in a maze of twisty little decisions, all different.
This isn't an original thought; if you propose to someone else a change that you yourself went through with success, you'll need to put yourself in the other's skin and see how confusing, scary or uncomfortable that change appears to them - not to focus on how wonderful things look to you now, from the other side of that change. Dale's post on the topic is old enough by now to rate as a classic. But I'm in a situation now where this idea applies, in spades, so I'll contribute a concrete example.
I've been retained to teach object-oriented programming, Java, and Web programming to people who have been and are still writing COBOL batch programs for mainframe computers. Different worlds! These people went through some training already a year ago, attempted to migrate one small application to Java and the J2EE infrastructure. They didn't get anywhere. The Java training was so much water over their COBOL feathers. They told me that they'd purchased the training from one of the large training companies, so I can imagine why that is: they met someone who, instead of meeting them where they are, taught them Java from the "standard" background.
The thing is, if you look at some course material on object orientation, you'll notice that a lot of it assumes familiarity with concepts that are pervasive enough in C++, or even more "classical" languages like Pascal, that a lot of programmers and trainers, especially if they haven't been around long, take them for granted. Little things like the call stack, the heap, pointers, functions with return values and formal parameters, and so on.
The problem is that COBOL has none of these things. That trainer might as well have been talking Greek to the COBOL folks. It has static allocation, what amounts to GOSUBs for breaking programs into smaller pieces, no recognizable notion of local variables or function parameters, an interesting syntax, and remarkably powerful facilities that work in ways not at all obvious to someone raised moslty on languages of the Algol family.
When, before putting together my training schedule and materials, I started trying to run, then modify, then write little bits of code in COBOL, it felt like Greek to me - ancient Greek, that is. I was thrilled: that was precisely the point. The one way I could see of meeting people where they were in this case was to feel their confusion at a strange language, only with the tables turned. I then mapped out how I was going to lead them to objet orientation with COBOL as a starting point.
We'll see how it turns out; the course is formally starting next week.