This is my humble attempt to articulate things that lead to a high quality code and then my analysis on where most miss out.

The above diagram works backwards from the requirement that is high quality code to various factors that contribute to it and then goes recursively from each node.

I am sure there are many other nodes that can be added to this but these are the factors that I think matter the most.

What needs to be done is pretty self-explanatory but now coming to my analysis on where most miss out. Seeing short term gains of having something out and jumping to the next one, most miss out on

  • good documentation of their solution and creating libraries out of their code
  • good testing as a whole
  • thinking about early discovery of problems and how to enable solving them quickly
  • creating reusable solutions
  • setting up infra to track state of testing

Writing solution to a problem is one aspect to coding in an organization, not solving for the other components creates long term losses.

Most organizations I have seen have a huge discovery problem. If a big problem is solved then it is found via published service descriptions but small problem solutions are seldom found. Things such as making an API call and getting the results are never made public, it stays as a part of a larger package, say it takes 30 minutes to do this for a developer, 10 different developers having to do the same makes it 300 minutes and 100 similar problems leads to 30000 minutes of dev time which can be reduced to 3000 + time to discover and integrate.

There are other nodes as well where small time consumed stack up to large loss for the organization. Therefore it is pivotal to create infrastructure to address everything given in the above nodes.