Why software engineering certification may not work out the way people want

March 23, 2008

Proponents of requiring programmers to be certified generally have in mind the model of engineering and an outcome much like how certification has worked out for engineers; often this is made explicit with labels like 'software engineering certification'. In this model, the programming world keeps evolving at almost its usual pace, much like engineers keep building new sorts of buildings with new designs, but it does so in a (more) disciplined way so that programs don't fall down so often.

But there's another model for how professional certification can work out, one that I think is more likely to happen: the medical profession, where ordinary doctors do not innovate and instead follow approved procedures generated infrequently by comparatively few people.

The crucial difference between the two models is that engineers can demonstrate beforehand (and afterwards) that their new design was safe according to general understanding and principles. To do this, engineers rely on building from materials with known properties so that they can confidently analyze the effects of various stresses on their design to insure that it is safe.

(If the design blows up anyways because of some new, previously unrecognized source of stress, I believe that the engineer is legally off the hook.)

There is no such thing for doctors. For doctors, it is 'this probably should work; I guess it's time for the animal trials'. As a result, ordinary doctors by and large cannot innovate because they have nothing to build on and no way to analyze their plans for safety; innovation comes from the few that have the opportunity to do direct safety tests for new developments. It is as if engineers could not use a new bridge design until an example bridge had been constructed and then had the maximum safe load driven over it.

In other words, engineers not only know how to build a safe bridge, they know how to prove that it is a safe bridge, and the ability to prove it is crucial for their legal protection when they propose a new design. Without the ability to prove it, engineers would have to stick to known and proven designs.

In this respect, programming is a lot more like medicine than it is like engineering. We don't have the practical ability to prove anything about programs or about development practices; instead what we have is 'best practices'. Thus I expect the results of meaningful programmer certification to be much more like medicine than like engineering.

Written on 23 March 2008.
« Why NFS writes to ZFS are sometimes (or often) slow
The two sorts of (programmer) certification »

Page tools: View Source, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Sun Mar 23 23:27:40 2008
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.