Monday, July 26, 2010

Does "Software Engineering" Need to be a Profession?

[This is Part 2 of a review of Steve McConnell's book Professional Software Development. Read Part 1 here.]

In proposing that software development should become a true profession, McConnell points out that for a something to be considered a profession, it must have

  • A requirement for extensive learning and training.
  • A code of ethics imposing standards higher than those normally tolerated in the marketplace.
  • A disciplinary system for professionals who breach the code.
  • A primary emphasis on social responsibility over strictly individual gain, and a corresponding duty of its members to behave as members of a disciplined and honorable profession.
  • A prerequisite of a license prior to admission to practice.

In discussing licensing, McConnell notes

Licensing is a mandatory, legal process that is intended to protect the public, and is typically administered by jurisdictions (states, provinces, and territories).


One of the consequences of being a professional engineer is that you can be held personally liable for the work your company performs under your signature. Courts in the United States have held that only members of a profession can be found guilty of malpractice. Doctors, lawyers, and architects can be guilty of malpractice. Garbage truck drivers, short order cooks, and computer programmers cannot be guilty of malpractice because, legally, they aren't considered to be professionals.

No individual engineer will be required to be licensed, but some companies eventually will be required to employ licensed engineers.

Professional engineers in these companies will review software engineering work and sign off on the software their companies deliver. To those companies, employing professional engineers will be a legal necessity. If software companies follow other engineering disciplines, the company that hires a professional engineer will pay for liability insurance as part of the professional engineer's employment package, which will minimize that disadvantage of getting your professional engineering license.

Professional engineers will gain other benefits. The professional engineers who put their signature and reputation on the line for their companies will have final say over methodology choices, design approaches, and other decisions that affect the quality of the software for which they might be held liable. Without professional standing, your boss can come to you and demand that you commit to an unrealistic schedule, make shortsighted design compromises, or sacrifice quality in order to get the software out the door. With a well-defined profession—consisting of education, a code of ethics, and licensing—you will be able to say, "The standards of my profession don't allow me to shortchange quality in this situation. I could lose my license or get sued." You will have a professional and legal basis for standing up to unenlightened managers, marketers, and customers—a basis that is sorely lacking today.

Wow. In some ways, it sounds great to have a legal basis for saying no to bad development practices. In other ways, it sounds very scary to be subject to that liability.

Mostly, though it makes me wonder if software development truly needs to have "standards higher than those normally tolerated in the marketplace" and "a primary emphasis on social responsibility over strictly individual gain." It makes me want to know more about what happened to make it generally agreed that in engineering, medicine, and law, public good can't be ensured by the marketplace alone.

Because right now, one of the arguments for high standards in software development is that it's a good business decision. "The only way to go fast is to go well," as Uncle Bob Martin says. Or, we want to make sure we don't take on the wrong kind of technical debt, because that will be bad for the company in the long run.

But for a profession, these high standards don't have to be justified solely in marketplace terms. Instead, they have been accepted by society as being important for its own public interest.

In discussing how engineering came to be a profession, McConnell says:

Historically, professional engineering has been established in response to threats to public safety. Although we take the safety of modern bridges for granted, in the 1860s American bridges were failing at the rate of 25 or more per year. Bridge failures and the loss of life they caused precipitated creation of a stricter engineering approach to bridge design and construction.

I wonder what sort of disaster would need to happen for society to demand higher standards in software development. Or would a slow build-up of buggier and buggier software be enough? How many times do you need to lose your data, have your computer crash, or just plain not be able to figure out how to do what you want in a user interface before you've had enough? And if you've had enough, can you buy a competitor's software instead, or is it just as buggy?

Can the problems of today's software development be fixed by the marketplace, or do they require regulation? Does software development need to be a profession?


  1. I would love to agree that we need some structure to improve the profession, but it just won't happen for a few decades.

    I was a fully paid-up member of the British Computer Society Here is a professional body trying to do what Steve McConnell says. It was costing me about £80 a year (this was 5 years ago probably more now). You know what, it didn't mean diddle squat to any employer I spoke to so I cancelled my membership and I have not missed it at all.

    Until there is a need for it I don't think it will happen. Technologies change too quickly and the idustry is still very young. Perhaps in 20 or 30 years when we have business leaders who have grown-up in the digital age they will see value in having IT as professionl profession!

  2. From this it can be said that the answer to this question depends on the profession of the software engineer to the extent we take it. Yet programmers are not be called a s a liable but there are pure chances to be in that place.

  3. IET is trying to get Engineering in the UK to become more like Engineering in the EU - a respected profession. One can become a CEng (a charted engineer) and through that show commitment to professionalism etc. Sadly, SoftEng CEngs i have known in were terrible developers and didn't show much regard to the charter they signed. Perhaps that tells us more about the environment (the city) and less about the general quality of charted engineers as the whole.

    Dave Hawes above is correct. Employers simply don't care. I employ a number of developers and engineers and I don't really care if they are members of IET, BCS, ACM, IEEE etc. or even if they have a CEng. Why? Simply because these are not good predictors of quality, knowledge or commitment. Sad but true.

  4. Some high-profile disasters directly attributable to software failures (with loss of life) may push software development towards professional regulations and standards.

    Society must believe software sometimes plays a vital role in the world around us. It's not always a "nice to have" we can switch off when it misbehaves.

  5. what is the license called that you need?

  6. As you might imagine, it is a difficult role to fill and it is entirely possible that the low numbers of SETs isn’t because Google has created a magic formula for productivity but more of a result of adapting our engineering practice around the reality that the SET skill set is really hard to find. We optimize on this very important task and build processes around the people who do it. ccde

  7. Garbage truck drivers, short order cooks, and computer programmers cannot be guilty of malpractice because, legally, they aren't considered to be professionals.speech recognition program