Be careful what you ask for.
The topic goes dormant for a while and then like clockwork, the drums bang again for the need for software developers to be subject to professional standards. Often, the topic is presented in terms of craftsmanship and engineering. Engineering is an interesting term because states license Professional Engineers (PEs). These are the folks that sign off on blue prints for roads, bridges, buildings, etc. PEs typically have an educational requirement from an accredited institution and must pass a rigorous examination. In addition, PEs must take a certain number of continuing education credits on an annual or bi-annual basis.
The same is true for the other licensed professions like law, medicine, and accounting. In addition, members of these professions, by the license they hold, are also subject to the rules of professional responsibility that govern a practice, whether it's law, medicine, or accounting. Further, such professionals are required to carry malpractice insurance. Ask yourself now: How many software developers would actually meet such standards, assuming state licensure was required and a suitable standards-making body existed? This article will delve into the rationale for why this topic is continually raised and the potential consequences if software developers were to be subject to professional standards?
DISCLAIMER: This and all Legal Notes columns should not be construed as specific legal advice. Although I'm a lawyer, I'm not your lawyer. The column presented here is for informational purposes only. Whenever you're seeking legal advice, your best course of action is to always seek advice from an experienced attorney licensed in your jurisdiction.
Why the Push for Professional Standards?
My take is that the push is about getting respect and that software development is a profession at the same level as other recognized professions. The hard truth is that it isn't recognized as such today because anybody can open a software development practice. There are no generally accepted professional standards. That doesn't mean the attempt hasn't been made. A good example comes from the ACM (The Association for Computing Machinery) where they've published the Software Engineering Code of Ethics and Professional Conduct: http://www.acm.org/about/se-code. Other authors, such as Steve McConnell and Bob Martin, have made attempts in their respective books Code Complete and The Clean Coder.
You Can Always Be Professional
Setting aside for a moment whether software development is a profession and whether there should be licensure and promulgated standards, don't confuse being in a profession with being professional. If you get paid to write software, you're a professional software developer. Note: That's not a badge of quality or minimum competence. If you get paid for something that could otherwise be considered a hobby or pastime, you're a professional.
The question is, do you act and behave in a professional manner? This is where codes of conduct and ethical considerations come into play. Such codes, like the ones you find at conferences, are an attempt to provide an objective standard of conduct. Put another way, these codes are meant to be objective yardstick to judge behavior. If you violate the code, you can be involuntarily removed from a conference. Lawyers and doctors who violate their codes, which are often referred to as rules of professional conduct, can be sued for malpractice.
Think about that for a moment. What if you, a software developer, could be sued for malpractice? Today, that's an impossibility because there are no objective standards of conduct for software developers. I'll get back to this point in a moment.
The key take-away here is that regardless of the job you hold, you can choose to be professional. That means treating colleagues with respect; which doesn't mean you must always agree with them. Being professional implies that you put the interests of your client and your project before your own interest. At the same time, that doesn't mean you must see a project through, regardless of the cost. Being professional doesn't mean you have make everyone your friend. It's a deep concept that often takes years to master and learn. Those who get it early on tend to be the beneficiaries of good mentorship. It's a learned thing, not something you're born with.
Aren't Certification Exams a Professional Designation?
No, certification exams are most certainly not a professional designation. The same goes for the Microsoft MVP award. Certification exams are tests of minimum competency around a specific product and more specifically, a specific product version. Although it's true that vendor-specific exams can lead to product certification like the MCSD and MCSE (Microsoft Certified Solution Developer and Engineer respectively), that's not the same thing as something like a CFA (Chartered Financial Analyst) or a ChFC (Chartered Financial Consultant) that are earned in the context of a regulated industry that requires licensure.
Should Software Development Be Regulated?
If you're somebody who believes there should be professional standards and a code of ethics, whether you intended it or not, your answer is that you think software development should be regulated. It's one thing for an individual to adhere to a set of ethical guidelines. It's quite another to have those ethical guidelines mandated to govern conduct.
Standards of professional conduct and ethics are the kinds of things that can't be disclaimed in a contract. For example, in the legal profession, there's Rule 1.8 ? Conflict of Interest: Current Clients: Specific Rules. This rule is concerned with making sure that the advice a client receives is unbiased in favor of something that may benefit the attorney or some other client of that attorney. In the software development context, consider the advice you give a client when they ask you if an app should be completely rewritten. What if there's a new technology you want to learn? In this case, you could get paid to learn a new technology. Is that in your client's best interest? The answer is that it depends on the specific facts and circumstances. To what degree has your client given informed consent? To what degree have you disclosed relevant information that would facilitate your client giving informed consent? Regardless of what your contract states, if you violated this rule, you could be sued for malpractice because such a rule cannot be disclaimed in a contract. This is what it really means to be held to standards of professional ethics and liability.
Standards of professional conduct and ethics are the kinds of things that cannot be disclaimed in a contract. Regardless of what your contract states, if you violate a rule, you can be sued for malpractice.
The ACM code of ethics previously referenced deals squarely with conflicts of interest in Principle #4 - Judgment, and specifically, rule #4.05: Disclose to all concerned parties those conflicts of interest that cannot reasonably be avoided or escaped. In addition to the ACM's code on software engineering, the ACM also has an overarching code of conduct: http://www.acm.org/about-acm/acm-code-of-ethics-and-professional-conduct.
Conclusion
Should software developers be subject to professional standards of ethical conduct? The answer to that question is best answered with another question. Should software development be regulated? The second question matters because without regulation, there can be no cognizable and enforceable professional standards outside of a private contract. If, as a software developer, in a contract you sign you wish to be held to such standards, you're free to write those into the contact. Although your client would likely be thrilled to have a clear yardstick to measure contract performance, I don't know why any business-oriented rational-thinking software developer would voluntarily sign up for additional liability. It's important to separate the altruistic ideal of wanting to do a good job from business and legal liability.
There's also the practical aspect of whether software development can be regulated. You'd need a recognized standards-making body that would likely need some standards for admittance such as experience, exams, etc. The hard question you should ask is how many software developers would be able to measure up.
It's ironic that many software developers refer to themselves as software engineers. It's ironic because engineering is about applying mathematical and scientific principles to problem solving. Most software written today is more about trial and error than anything else. If you want to hold yourself to a higher standard, be professional and conduct yourself accordingly and be accountable. At the end of the day, that's what being a professional is all about.