Coding Standards Are Overrated
Code reviews help developers focus on larger concerns such as architectural issues and provide a forum to offer other coding suggestions. Performing intermittent code reviews covers the key aspects of coding standards while avoiding most of their pitfalls.
As a development team grows, so does its complexity. This complexity manifests itself in many areas including team member interactions, increased project administration, and evolving communication strategies. At some point in every team the question of coding standards is broached. Unfortunately, most teams agree to compile coding standards under the false pretenses of only their positive attributes. It's important to consider the unintended ramifications before introducing a new process. Start by defining what are "coding standards?" They are commonly a series of guidelines which include recommended programming style, practices, and other various aspects of developing. The most common benefits outlined are:
- Coding standards encourage good coding habits.
- Coding standards help prevent bugs in known problem areas such as memory issues.
- Standards can be a helpful guide to junior developers.
- Standardized coding makes more maintainable code.
- Code is more legible through standardized formatting and comments.
- Some team members equate coding standards to a lack of confidence in his/her abilities. Others find standards such as spacing and/or comments to be micro-managing.
- Coding standards stifle and discourage coding creativity. Some of the best code comes from an unfiltered mind.
- They create unneeded stress within a team as members disagree with various standards. These discussions can spiral into negative, unproductive debates.
- Each new rule adds to the overall complexity of implementation, enforcement, and maintenance of coding standards.
- Each concession to a rule devalues the overall purpose of coding standards.
- Coding standards distract from the larger goal of building, testing, and releasing functionality in a timely manner.
- Deciding how to handle existing code that pre-dates the creation of a standard is a winless battle.
- When a coding standard is not followed, what happens to that code? Must it be fixed immediately? How does that effect its testing, retesting, or release time lines? Some consider this code to be technical debt. That is a difficult label to apply to code if the violations are simply style related.
- Proper enforcement of coding standards can consume an unreasonable amount of time.
- The decision to enforce coding standards and its consequences must be embraced at all levels within a company. Most companies struggle to embrace doing something twice.