Search This Blog

Showing posts with label blame. Show all posts
Showing posts with label blame. Show all posts

Monday, August 17, 2009

The developer's blame hierarchy

Having worked on a reasonable number of software projects, I come to realize that a sizable chunk of productivity loss is due to inappropriate placement of blame. In a team setting, it is natural to have confrontations and consequently, the mentality to be defensive, even if everyone is working towards the same common goal.

As a result, I developed a blame hierarchy that I normally mandate to my team before the start of a project and ask them to follow the hierarchy before raising the issue further. While it's true that there are some exceptions where the hierarchy fails, it works more often than not.

As per the hierarchy, if a developer finds an issue, the blame should be placed at a step only after clearing all the previous steps.
  1. Your module
  2. Your automated tests (especially if you didn't update the tests when the logic changed)
  3. Your team mate's module
  4. Stable custom framework
  5. 3rd party framework
  6. 3rd party libraries
  7. Network connectivity/Firewall rules
  8. Database
  9. JVM / Virtual Machine
  10. Operating System
  11. Infrastructure / Environment
Failure to follow this hierarchy, mostly because of "My code cannot be wrong" mentality, will result in significant loss of productivity, not to mention irritation, annoyance, and outright anger.

Also note that the hierarchy should be followed only after due diligence has been performed, such as checking logs and looking for error messages.