"Simpler" Is Subjective: How Bad Assumptions About Architecture Kicked My Ass

I'm doing some heavy refactoring on a project that I've recently joined but that has been underway for months. The code is a mishmash of different styles and an uncertain architecture, so my task up to this point has been to make it more consistent, testable, and readable. One of the issues I was tasked with was improving the data access layer. The system was using a pattern known as Repository for its data access layer, and the individual Repositories... Read more >

The Lean Waterfall: When Waterfall Looks Like Agile

I met a new team member (we'll call him Jerry) in our department today, and he offhandedly mentioned something that blew my mind. We're on the verge of a sea change in my organization, and only now am I becoming aware that the Agile process I thought I'd been doing was actually just a illusion, a mirage in the distance that obscured a regular Waterfall. And I didn't even realize it. Elakala Waterfall, West Virginia by ForestWander, used under license... Read more >

What is the Golden Hammer Anti-Pattern?

The Golden Hammer anti-pattern (formally and originally called the Law of the Instrument) is an over-reliance on a familiar tool. The gist of this anti-pattern is summed up as "If all you have is a hammer, everything looks like a nail." Generally, people fall into this anti-pattern if they try to use a particular tool, architecture, suite, or methodology to solve many kinds of problems (especially problems that could be better solved by alternate means). They are often... Read more >

What is the Big Ball of Mud Anti-Pattern?

A big ball of mud is a software system that lacks a perceivable architecture. The term appears to have been coined by computer scientists Brian Foote and Joseph Yoder in a 1996 paper. A system that is a big ball of mud can be said to be held together by duct tape, sweat, and time. It is haphazardly structured, and as such attempting to modify it may be an exercise in futility. Any modifications that were made to the system... Read more >

What is the Inner-Platform Effect?

The Inner-Platform Effect is the tendency of software engineers to design systems that need to be "customizable" to such an extent that: The system becomes a poor imitation of the platform it was designed with AND The system becomes so complex that any modifications to it must be made by a knowledgeable programmer rather than a customer. This phenomenon was named by Alex Papadimoulis in a 2006 post on The Daily WTF. Give Me An Example! Let's say... Read more >