Being on time is one aspect of ethical behavior

Ethics are the moral principles that govern behavior.  The principles that underlie ethics help us judge what is right or wrong. Team members on a project team are presented with a nearly continuous stream of choices to test their principles. Over the years I have seen choices that were clearly unethical, some that might be in a gray area and the majority have been ethical or at least neutral. An example of a clearly unethical decision was when a project showed a project as having a green status when it was clear that it was in deep trouble. I was recently asked why not unit testing code when the organizations standard process called for it to be unit tested was an ethical issue rather than just a failure to follow best practices. Unit testing is an expected behavior for most coders. There are at least two reasons this behavior is an ethical issue. The first is when a developer does not unit test the code they have written they are making someone else responsible for finding their mistakes. The second reason is because unit testing is the expected behavior in their methodology (and 99.9% of the coding methods I am aware of).

Here are four general attributes of ethical behavior:

  1. Reliability: A person’s actions should match the behavior they have committed to follow. Many organizations spend substantial time and effort defining techniques and methods with policies to ensure they are followed.  Deciding not to follow the standard process is generally not ethical behavior. In our unit testing example, most methodologies specifically call for developers to unit test their code. When a coder doesn’t unit test they are damaging their reliability. They can no longer be trusted to behave as expected by others following the process.
  2. Responsibility:  Responsibility is about the duty to deal with your actions. In our unit testing example, not unit testing makes someone else responsible for finding and removing your mistakes.
  3. Respectfulness:  Team members must be aware and have regard for the feelings of those around them. Respectful does not mean avoiding tough decisions or conversations, but rather being aware of how deeds, actions and words affect those you and doing your best to help deal with those effects. Making someone else clean up your code is not respectful to the next developer or tester.
  4. Fairness: Actions and decisions need to be objective, evenhanded and consistent. Not following a mandated or agreed upon process does not represent  consistent  behavior.

Why do these four attributes matter when discussing ethics of project team members? It can be boiled down to reputation. In most Agile teams, being able to be counted on to do the right thing is essential for long-run influence.  Self-organizing and self-managing teams which are core feature of Agile need team members to perform within ethical boundaries and to be able to influence each other to do the right thing and to do the right thing right.