When Good Code Goes Bad

By Matthew Dublin

Paul Seibert over at Hub Tech Insider has a blog post on managing a software development project if you're not a developer using the common sense approach of a shared vocabulary to describe issues with the code. The need to quickly evaluate the quality of code and describe issues are of obvious importance for researchers working on a slim budget or without a lot of resources, where efficiency is key. Seibert has a list of terms for improving communication with a group of computer programmers discussing a section of code or an entire application.

1. Fragility: When changes in the software code cause the system to break in places that have no conceptual relationship to the part that was changed. This is a sign of poor design. The opposite of fragility is known as robustness.

2. Immobility: When the code is hard to reuse. The opposite of [immobility] is known as re-usability.

3. Needless complexity: When the design is more elaborate than it needs to be. This is sometimes also called “Gold plating”. The opposite of [needless complexity] is known as simplicity.

4. Needless repetition: This occurs when cut-and-paste of code segments is used too frequently. The opposite of [needless repetition] is known as parsimony.

5.Opacity: When the code is written in such as manner as it is not clear. The opposite of [opacity] is known as clarity.

6. Rigidity: When the design is hard to change because every time you change something, there are many other changes needed to other parts of the system. The opposite of [rigidity] is known as flexibility.

7. Viscosity: When it is easier to do the wrong thing, such as a quick and dirty fix, than the right thing. The opposite of [viscosity] is known as fluidity.