We love patterns in software development. Codifying patterns is an attempt to acknowledge good principals for designing and delivering software. We have so many types, for example:
- Design Patterns
- Enterprise Architecture Patterns
- Database Design Patterns
- UI Patterns
- Development Process Patterns
Development Process Patterns typically include the following:
- Continuous Integration
- Test Driven Development
And so on…. There are also so called “anti-patterns”. These are patterns which happen repeatedly but have a negative impact. My least favorite Process Anti-Pattern is “The Clean Up Crew”.
The “clean up crew” manifests itself in the following manner:
- Team “A” develops a product and delivers to production
- The code is bug ridden and difficult to work with
- Team “B” is brought in to clean up the mess.
Team “B” is the “Clean Up Crew”.
The problem is that Team “A” never has the opportunity to learn from their mistakes. They should be responsible for refactoring and improving the code. Refactoring poorly written code is an important skill that every developer should have.
Good code is easy to learn. Poor code is very difficult to learn. Much of the knowledge-base is lost by excusing Team “A”.
Lastly, this punishes Team “B”. They’re basically having to eat someone else’s dog food. The missed out on the excitement and joy of building a product from scratch.
I usually propose just changing the technical leadership of the project. A more experienced hands-on technical lead can bring order to a messy codebase quickly and impose professional software development practices.
Sorry for the rant…. I’ve seen this so much lately…