We have highlighted many areas of quality software development.  However, the stovepipe enterprise is a maintenance anti-pattern.  This situation occurs when we build a system that has a high maintenance cost.  Even worse, maintenance often requires to be done quickly and more as a patch than a build.  Therefore, we produce a house of cards that becomes more fragile as time goes by.

Stovepipe Enterprise Defined

Stovepipes are historically a form of a kludge.  Wood-burning stoves needed a way to get rid of the exhaust, and it goes through the pipe.  However, the material often wears down a stovepipe quickly, and it is patched with whatever materials are available rather than replaced.  We see this in software solutions when we have high maintenance areas of the architecture.  That frequent touching of the system can introduce bugs and reduce the overall quality.  Stable is better today, but it also makes it likely we will have working software tomorrow.

The Anti-Pattern In Action

There are a few typical results from this anti-pattern.  One is the constant requirement for coding (bugs or enhancements) to an area of the solution.  Another is a form of fire-fighting approach to parts of the system.  In the latter case, we regularly see issues in code sections and have to do a quick fix rather than refactor or redesign.  The solution itself is essentially flawed in this case, even though it does the job.

 

Avoiding The Anti-Pattern

Shortcuts are a leading indicator of stovepipe enterprise.  We make design decisions or craft solutions that are suitable but not ideal.  Sometimes a less-than-ideal solution works out fine.  For example, in an 80-20 approach, the “eighty percent there” portion of it supports our needs.  On the other hand, that last twenty percent is needed to provide a complete solution.  The missing pieces change maintenance and stability in many solutions.  That is where the anti-pattern starts to show.

Rob Broadhead

Rob is a founder of, and frequent contributor to, Develpreneur. This includes the Building Better Developers podcast. He is also a lifetime learner as a developer, designer, and manager of software solutions. Rob is the founder of RB Consulting and has managed to author a book about his family experiences and a few about becoming a better developer. In his free time, he stays busy raising five children (although they have grown into adults). When he has a chance to breathe, he is on the ice playing hockey to relax or working on his ballroom dance skills.

Leave a Reply