My latest post of the Test-Driven Development Yahoo Group:
— In firstname.lastname@example.org, “Casey Charlton”
However, I assert the problem is that development is largely a creative skill, not a technical one. And creative skills are nearly impossible to quantify – you know when you like a piece of artwork, but you cannot say why in a way that means anything to anyone else. I cannot prove I am worth my daily rate, other than by people trusting me.
I think I get what you are saying here, and I agree.
However, my undergraduate work was in mathematics, which is similar to CS in that it is extremely abstract, involves complex variables, and, to the initiated, looks like complete gibberish. 🙂
Still, in math, first and foremost, we were taught Occam’s Razor – that the simples solution is probably the correct one. We were taught a sense of aethetics – to the point that you could look at a proof and say “that just looks wrong” – and, nine times out of ten, it would be wrong.
Aesthetics is strong guidance in mathematics; not only could you find the error, you are likely to be able to tell exactly where the proof went off the rails by looking for when the ugliness began.
In Computer Science, we lack similar concepts. In fact, when I was in CS School, the big idea was the grand, over-arching framework that was going to solve all our problems(*).
So, while I agree with you in that it may not be possible to quantify goodness of software, I believe it is possible to condition, or to teach behavior that leads toward ‘better’ code. On place to start is with teaching aethetics in the undergraduate curriculum, another is to foster a sense of craftsmanship in software development.
This fall, I start teaching computer science part-time at Calvin College, and I am considering running a peer workshop in 2009 on craftsmanship (specifically, apprentice/journeyman/master) in software development.
What are you doing? 🙂
(*) – In math, you’d look at the grand framework that delivered no business value and say “That just looks wrong.” 🙂