I have been thinking about the ethic’s of software architects for the past few months. First off, I am not under the magical spell of an architectural unicorn that leads me to believe the mixed bag of software architects is any different than the population as a whole. Nor am I convinced that there is a lifecycle of ownership beyond the creation of a solution. This blog and the others I’ve posted in the past represent an initial set of thinking. Hopefully this will evolve into a code of ethics over time.
When you consider ethics there are a number of interesting questions you have to ask. The first question is why ethics. Is your profession to the point that it needs a code of ethics? The other side of the why, does a code of ethics move your profession forward. In the case of software architecture I do in fact think it is time for a code of ethics.
The first question then is how do you create a code of ethics that isn’t so onerous people won’t consider it. Ethics is a higher order thinking set. You don’t respond to the fight or flight situations with ethical questions. You have to stop, consider and then act ethically.
The problem is that any one software architect is a drop in the ocean of all software architects. That means that a code of ethics has to be broad enough to touch all the disconnected water in the ocean and yet still be actionable enough that you can say – hey repeated violations of the code of ethics result in us kicking you out of the profession.
Ethics have to be the boundaries in which you operate. Not fenced guarded boundaries that cannot be crossed. Those don’t even work for entire countries. The problem with checkpoints is you have to have egress and entrances. You have have people checking documentation and verifying that things are the way they should be. Professional boundaries have to be self applied.
My grandfather always said “ethics are what you do when no one is around to see you.” So how to software architects act when no one is around?
The initial question has to do with the very selection of the solution they are building. The ethical selection of a solution is critical. Not everything fits into this box because this company pays me, but the solution you require maps to the requirements.
So, properly gathering and evaluating requirements is the first ethical responsibility of a software architect. Gather the requirements and then you have pick the right solution. The ethical response is rising above your bias to select the right solution regardless of your personal knowledge. IE just because you don’t know a technology
more to come….