The 26 biggest enemies of software development

The 26 biggest enemies of software development 

When it comes to writing software, there are a lot of things that can go wrong. Some of these things are easy to spot, but others are not. In this article, we will look at the 100 biggest enemies of software development.

  1. Rigidity. The software is difficult to change. A small change causes a cascade of subsequent changes.
  2. Immobility. It is difficult to move the software from one platform to another.
  3. Viscosity. It is difficult to understand the software.
  4. Needless complexity. The software contains things that are not needed.
  5. Needless repetition. The software contains multiple similar elements.
  6. Opacity. The software is difficult to explain.
  7. Shotgun surgery. A change in one part of the software requires changes in many other parts.
  8. Divergent change. Many different parts of the software must be changed for a single change in business requirements.
  9. Parallel inheritance hierarchies. The software contains multiple parallel class hierarchies.
  10. Speculative generality. The software contains elements that are not used.
  11. Base class knowledge. Base classes know things about their derivatives.
  12. Incomplete hierarchy. The class hierarchy is not complete.
  13. Feature envy. One class uses another’s data more than its own.
  14. Data clumps. A group of variables is always passed around together.
  15. Primitive obsession. The software uses primitives instead of small objects.
  16. Switch statements. The software uses switch statements to select behavior.
  17. Alternative classes with different interfaces. The software contains multiple classes that do the same thing but have different interfaces.
  18. Lazy class. A class does too little.
  19. Data class. A class contains only data and no behavior.
  20. Refused bequest. A class overrides a method but does nothing.
  21. Comments. The software contains comments.
  22. Duplicate code. The software contains multiple copies of the same code.
  23. Centralization. The software contains centralized components.
  24. Fragility. The software breaks in many places when a change is made.
  25. Inappropriate intimacy. Two classes that should not know about each other know about each other.
  26. Message chains. A series of method calls are used to access an object
Read more here:


Popular posts from this blog

Top 36 effective ways to collaborate with other technology companies or developers to create innovative and high-value products or services

[PYTHON] Top 29 best practices for writing efficient and effective code in 2023

LinkedIn Apply Bot 🤖