Licensed Software Engineers

LicensedSoftwareEngineers is an idea to hopefully bridge the rift between "Software developers should be real engineers" and "Forcing software developers to be real engineers would hamper the state of the art".

In the United States as a whole, several professions require licenses to perform (although in some cases one may work under a licensed professional to get the required training). By and large, the most famous of these are ones that cause tremendous harm when they fail, and involve some form of personal liability. Examples are physicians, nurses, barbers and hairdressers (after all, those scissors come pretty close to our ears...), building trades (to make sure that the walls stay up and you don't electrocute yourself in your own house) and lawyers (who impact decisions on freedom and life itself). An apparent odd man out is the Certified Public Accountant, who simply provides information about large sums of money, but that is probably because by the time your (personal or corporate) finances require a CPA, producing the wrong answer can be a criminal offense.

To acquire these licenses, the theory is that one needs to prove that you are familiar with a "proper" way of doing things that is very safe. You are made aware that deviating from these "best practices" can cause dire consequences, and leaves you open for legal action if you deviate and screw up. The consequences of this is creating a very conservative approach to the trade or profession. After all, we don't want a surgeon or an electrician just "winging it". Even a hairdresser who can exhibit enormous creativity in their craft must stick to licensed standards for hygiene and customer safety when dealing with sharp blades.

There is a time and place for conservative best practices in software, and there is a time and place for looser practices that break these practices. I want the people who write code for my pacemaker, the plane's fly by wire, and that new radiotherapy device to use those conservative best practices, and I'm willing to pay for it--after all, my life is on the line. I want LicensedSoftwareEngineers making that stuff. We have the best practices; ask NASA. Such development is small, slow, and expensive, but it rarely fails.

For my OS, my video games, my phone (arguably; 911 can be a life-on-the-line application), I don't want to pay top dollar for those, and I can handle (say) a failure a month or so for the sake of not paying $2000 for the next Super Mario game. I don't need LicensedSoftwareEngineers doing this, because I don't want those slow, expensive software engineering practices to jack up the price.

For those, the profession can afford to experiment, to come up with things like ExtremeProgramming that would make the NASA software developers nauseous. XP is good for day-to-day, bugs-won't-kill-me software. I doubt that anything like XP will ever be acceptable for life-critical software, but it's great for what it does.

Why force video game designers, website geeks, and e-commerce wizards to go to the same expensive standards as the people who write the software we stake our lives on?

In conclusion: the software profession should behave differently, and be held to different standards, depending on whether or not life or safety is on the line. When it is, we want the conservative approach that licensing would imply. When it is not, we want to use cheaper and faster methods of software development that get us acceptable results faster.


EditText of this page (last edited August 8, 2011) or FindPage with title or text search