Thursday, December 06, 2007

Who can program?

Reg takes the "glass half full" view, Bob takes the "glass half empty" view, while Jonathan moseys up to the bar and declaims "That's not my glass, mine was full. Who's been drinking from my glass. Oi, barkeep..."

Meanwhile I saw Ratatouille on the weekend and I think Monsieur Gusteau's book is relevant: "Anybody Can Cook", but Anton Ego phrases it more exactly: "Not everyone can become a great artist, but a great artist can come from anywhere." (Brilliant movie BTW, go see)

After all that I spent Monday interviewing students for a workplacement (aka internship) and met seven hopefuls who ranged from "I'm here because me mammy sent me" to those who are not alpha-geeks only because of technicalities like "years experience".

What always strikes me when I meet this year's class is how easily they can be split into two groups, and how consistently the dividing line can be set on one idea, even on one word. That word is "bug" and, although it generally has a bad reputation in our profession, in an interview context it's good: which of these junior programmers has "caught the bug" ?

Although I have never been quite so direct I am fairly sure you could easily ask them straight up "have you been bitten by the coding bug?". Most of them won't have a clue what you're on about, and they stamp themselves with "No Hire" straight away. Some of them will get slightly embarrassed at your directness, but they'll know exactly what you mean and once the subject is broached the story always turns out to be the same:

There they were, toddling along, thought they might give this programming lark a try, and ... POW ! Suddenly the world is a different place and machines are fascinating after all ! And they all agree they were "bitten by a bug".

I believe the Greeks had a phrase for it: "en theos", but unlike normal enthusiasm it doesn't have a short half-life: I was bitten two decades ago but still do it mainly because I love it. And, much as I whine about having to prostitute my art to meet The Man's deadlines instead of my own, I don't really care about what the problem is, as long as I can be allowed a crack at solving it. OTOH if The Man's deadlines have to be met within a 9-to-5 time frame then He can take his problems elsewhere. I may be merely "haggling over price", but we all have a bottom line.

But enough of me - back to Reg, Bob, Jonathan and the students: "Can anyone program?"

The strictly true answer must be "yes": once you have mastered a set of steps such as
  1. <Start>
  2. <Word>
  3. <File>
  4. <Open>
  5. <Where's the doc I was working on?>
  6. ...
then you are programming. The alpha-geeks may look down on this as "Visual Programming", but in doing so they concede that it is programming. This is where Reg's post is hopeful and helpful - "visual programmers" will be a lot better served by tools which presume they can learn more rather than those which presume they can't. And this is true at every level.

But enough of the beginners - back to the geeks: "Can anyone Engineer Software?"

Most think the beginners need all the encouragement they can get, but another view is pulled out of the closet to discipline and punish the geeks, in particular to curb the kind of enthusiasm which inspires excitement at the prospect of a truly difficult problem and emboldens over-complex solutions. It seems some geeks know how to code, but need to learn how to engineer software.

When not interviewing students I've been trying to help the rest of the team meet some fairly rigorous Engineering standards. And the available tools to help us along that path all try to constrict, constrain, and bully us into good practice. Both the standards and the tools assume that programmers' greatest skill, problem solving, is a problem to be solved before we can engage in real Software Engineering. They do not allow programmers to (for example) solve the problem of traceability, it has to be solved according to procedures devised 20/30 years ago.

Maybe the real elitists are the ones who believe that no programmer can be trusted to Engineer.

Labels: , , , , ,

1 Comments:

Anonymous Anonymous said...

This comment has been removed by a blog administrator.

7:20 p.m.  

Post a Comment

<< Home