Friday, August 19, 2005

Ethics and Software Development

Mr. Ed has posted another thought provoking essay on Hacknot. The Crooked Timber of Software Development asserts that software development is more of an occupation than a profession:
The key concept in any profession is that of integrity. It means, quite literally, "unity or wholeness." A profession maintains its integrity by enforcing standards upon its practitioners, ensuring that those representing the profession offer a minimum standard of competence. Viewed from the perspective of a non-practitioner, the profession therefore offers a consistent promise of a certain standard of work, and creates the public expectation of a certain standard of service.
In other words, unlike the medical profession, we have no residency system, licensing board, or code of ethics. Therefore software development is not a real profession.

I suspect Mr. Ed is using a rhetorical flourish to make his point. In any case, I don't agree there is one standard for all professions. Software development, as a profession, is certainly at a much earlier stage in it's evolution than medicine. But I do agree with his main point:
If we are ever to make a profession of software development, to move beyond the currently fractured and uncoordinated group of individuals motivated by self-interest, with little or no concern for the reputation or collective future of their occupation, then some fundamental changes in attitude must occur. We must begin to value both personal and professional integrity and demonstrate a strong and unwavering commitment to it in our daily professional lives.

Mr. Ed closes with the story of David Parnas, a software developer who resigned from the Department of Defense over his objections to the Strategic Defense Initiative (SDI). There might be a hint of politics masquerading as ethics in Parnas's story, but you can't argue with his code of ethics:
  • I am responsible for my own actions and cannot rely on any external authority to make my decisions for me

  • I cannot ignore ethical and moral issues. I must devote some of my energy to deciding whether the task that has been given is of benefit to society.

  • I must make sure that I am solving the real problem, not simply providing short-term satisfaction to my supervisor.

Good stuff.

No comments: