Licensing Software Engineers
I just finished reading my birthday present from bkseiver
, Steve McConnell's Professional Software Development
. It's a good book with a lot of useful advice on how to run software projects. But one axe he wants to grind with it is pushing a licensing regime for software engineers. That I'm not so sure about.
I'm all for developing better methods for building software, and engineering is a good model for that. But let's not get carried away with the formality of it all. Real engineering has a lot of craft and artistry in it. Some people try to pretend it's all science, especially in academia, but that doesn't survive real-world problems.
One way that some software people want to be more like "real engineers" is getting licenses along the lines of the "Professional Engineer" licenses
awarded by states. A PE signs off on the design of bridge or other structure, formally taking responsibility for its quality. McConnell wants software PEs to be the leaders in their organizations, enforcing the processes needed to produce good software. These are very different things.
I work in an engineering field--aerospace--that has hardly any PEs. I'm not sure how many because it doesn't come up as part of the job. We don't have a single engineer stamping a design document as the end of the process. This is a team project, with multiple layers of review on a design. Once the designer's boss approves it there'll be a design review of the subsystem (and higher levels). Then when it's built there's formal testing to make sure it works as performed. This is something you usually can't do with a bridge. Sure, you could drive heavier trucks over it until it breaks and then rebuild it. But that doesn't answer how well it'll stand up to peak windstorms and twenty years of rust. You have to design it right.
Bridges, buildings, generators, and other standalone devices often are designed by one or a handful of engineers. Without extensive reviews or comprehensive testing to wring out the design you have to have a person, not an organization, accept responsibility. That's what the PE license is for. An engineer who is the last word on a design because there aren't any other engineers around to back him up. The government takes a hand in approving licenses because bad engineering gets people killed.
Now which of those models is McConnell's vision of proper software development (i.e., the first sixteen chapters of the book) closer to? Clearly the aerospace model. Lots of teamwork, reviews of designs, and extensive testing. No individual is going to be the sole word on the quality of the code. If there's no document to be stamped, what's the point of the PE? Just a way to proclaim some engineers better than others. That can be done without dragging the government into the process.
(And if you think I'm hostile to the idea, try Tom DeMarco's take on it.
He clearly thinks "Those who can do, those who can't teach, those who can't teach administrate" and sees licensing as a power-grab by the administrators.) Current Mood: thoughtful