Professional ethics in software development may not be talked about as much as in other professions. At least not in a formal sense. When we make a decision to write a unit test for the bug we're fixing; when we consider how a visual change will affect the usability of the product; when we choose to be transparent to our stakeholders on the completion progress of the project; are we as software professionals guided by a set of ethical standards?
If your answer is "Yes!" with certainty and fortitude, then good on you and go forth with purpose.
If your answer is more along the lines of "Yes?", conveying a bit less certainly and perhaps an air of reluctance to even tackle such a loaded question, I encourage you to read a little further...
Here's a thought to chew on. Living by, being true to your own software development ethics can be very meaningful. This allows us as professionals to be proud of what we accomplish. But publicly holding ourselves to an external ethical standard may also have great value. "In what ways?" you ask.
First, we are stretched and challenged where an ethical standard upholds values we don't feel as strongly about. This helps us grow professionally.
Second, a published ethical standard can serve as the vocabulary for what we stand for. This is very helpful in communicating who you are to employers and colleagues.
And third, holding yourself to the standard makes a statement to others that its values are important, encouraging them to consider its values important as well. This promotes the betterment of the software development professional as a whole (more on that below).
Still reading this article all about ethics? Ok, we'll continue.
A great ethical standard to align yourself with is the one published by our professional society, the Association of Computer Machinery (ACM) in joint effort with the Institute of Electrical and Electronics Engineers (IEEE). The Software Engineering Code of Ethics and Professional Practice was published almost two decades ago but remains a high standard for professionals working in our field. It calls us to value the people that our software affects in addition to valuing the quality and intent of the software itself. This is an ethical standard that the two associations encourage you to align with whether or not you are a member.
Perhaps your team can make the decision to hold to the ACM Code of Ethics together. Perhaps your team can take it another step further...
A public standard of ethics does not have to be as globally public as the ACM Code of Ethics. It could be a simple list of values communicated within a company or department. Each development team, made up of a variety of professional skillsets, may choose to agree on and publish their own ethical standards. This can go far beyond the broad concepts of the ACM standard and become a team manifesto that holds deeper meaning to the team that created it. It describes the team's identity to the rest of the company, to newcomers, and it holds the team accountable to that identity.
It is always important to remember that the document to which you and your team agree to is the means, not the end. It is simply a communication tool. What's truly important, as it always is, is the people. What matters is that you and your team (and the rest of the software professionals out there) are working and treating each other ethically. But doing this in a commonly agreed upon manner will continue to keep us striving to improve and encouraging others along the way.
Where do you go from here? Might it be worth discussing professional ethics with a friend or trusted team member? Could your team benefit from discussing what the shared values are?
Oh, and thanks for reading all the way through.
A Note: ACM has also published their own ACM Code of Ethics and Professional Conduct as well. This was put together before the joint IEEE/ACM effort that produced the standard discussion above and is intended for a broader audience than just practitioners of software development. Keep your eye on this, however, because it is actually being updated right now.
What is Quantum Computing? How do we start taking advantage of Quantum Computing right now?