This month, Chris Shaw (Blog | @sqlshaw) is leading the charge on the T-SQL Tuesday. This event is basically a blogging party where a number of us in the SQL Server community gets together to discuss a central topic. The topic that was chosen for this month was ethics. And more specifically:
Should we have an ethics statement?
To get an answer out there right away, I do not think we should have an ethics statement. In fact, I probably would not participate in an industry-wide code of ethics if one were proposed and adopted. There are a number of reasons for my position; which the rest of the post will delve into.
The first issue is the purpose for the ethics statement. When I developed an ethics statement in college, the point was to define what I valued and how I incorporated that into my life. As such, it stated who I was or perceived myself to be. It did include some values that I strived to achieve but these were driven by my values, as well.
When it comes to a larger ethics statement that many people prescribe to, the intent changes. The initial purpose will be to define how we, as DBAs, want to interact with the data and people that we encounter in our profession, it will invariably include text meant to change behavior. In this way, ethics statements become more of a tool for social engineering that laying out the difference between right and wrong. The Code of Ethics that Chris talks about in his post is a clear example of attempting to change behaviors.
Can we honestly agree with the following?
“I will adhere to Industry Best Practices (IBP) for
system design, rollout, hardening and testing.”
Now, I don’t know what the IBPs are but will assume that they are something similar to the Kimball methodology for data warehouse design. Can you really say that deviating from a best practice is unethical? It might be stupid, but not unethical. And time and time again, I suggest to people that they challenge long held beliefs, or best practices, because they may no longer be applicable to the scenario or the current situation.
Now suppose we were able to agree to a small, but meaningful, ethics statement. For brevity, let’s pretend that we followed doctors and had to following code of ethics:
“First, do no harm”
At first glance, this looks like an easy statement to follow. But think about it for a moment. Does the statement define what harm is? How would you define doing “harm” to a database?
Backing up a database doesn’t harm a database. It actually is designed to resolve the result of harm on a database. What about on very busy servers? If I run full backups continuously, is that harm? Likely, it would be causing harm, but at what point is the impact on the server, not harming the environment? If just a single backup causes waits, is that then harm to the database?
Now consider this same argument when looking at defragmentation. Or an insert into a table that always results in fragmentation. While these scenarios are ridiculous, I am sure we have all had a manager at some point where these types of disagreements are common place.
The more simple the ethics statement, the more likely that there will be room for miss interpretation. But then the more verbose it is, the more likely you get into the issue from above with ethics being tied to behaviors and not values.
Lastly, if we get through the first two areas, we are left with the need to enforce the code of ethics. Would a code of ethics be enforced by your employer or the SQL Server community?
If enforced by your employer, how do you decide between your manager (the enforcer) deciding when you’ve violated the code of ethics or when the same manager asks you to violate the code of ethics. Which do you choose? Your manager, and employer, do not have an objective position to judge whether you followed an industry standard ethics statement. Their own values and needs will override the ethics statement in the pursuits of the organizations goals.
We would then want to have an external organization, such as PASS, be the judge of ethics within our community. While the organization may or may not be PASS, it would be PASS-like. Now using an outside organization, a number of questions would open up. Such as:
That last one is the kicker. If we would really want to implement a code of ethics, we need a way to identify people that knowingly do not follow it. I’m not sure that I’m prepared to start blacklisting or flagging DBAs that don’t follow best practices that I prescribe to. Everyone on occasion has a lapse in their ethical stance (see my blog for more on this tomorrow), but how and when do we decide that it is too much?
Ethics statements are best when derived from a person perspective. They state your values and how others can expect you to act. As others join in and a code of ethics is applied to a group, the likelihood increases that ethics statement represents not the values of the individuals but the behaviors desired by the group. There are a lot of complicated issues involved in having industry-wide ethics statements. I’ll admit, I’m not providing a solution, just pointing out the problems that would be entailed. For now, I rather solve performance issues with clients, rather than wrestle with ethical debates.