Something that comes up quite a lot in my current work is that there is a generalised process that needs to happen, but then the odd part of that process needs to happen slightly differently depending on the value of a certain variable, and I’m not quite sure what’s the most elegant way to handle this.
See a few different approaches -> stackoverflow
An anti-pattern is a common response to a recurring problem that is usually ineffective and risks being highly counterproductive. The term, coined in 1995 by Andrew Koenig, was inspired by a book, Design Patterns, which highlights a number of design patterns in software development that its authors considered to be highly reliable and effective.
Stovepipe or Silos: An organizational structure of isolated or semi-isolated teams, in which too many communications take place up and down the hierarchy, rather than directly with other teams across the organization
Circular dependency: Introducing unnecessary direct or indirect mutual dependencies between objects or software modules
God object: Concentrating too many functions in a single part of the design (class)
Silver bullet: Assuming that a favorite technical solution can solve a larger process or problem
When I was in college a professor told us a story about an architect (Developer) who would build all of his buildings, but put down no sidewalks. He would just plant grass. 6 months later he would come back and put sidewalks down where all the paths were worn. In this way, he assured that the walks would be where the people were mostly likely to walk. The point of the story was that we should observe how people do whatever it is we are trying to model in software and then build it to work that way, thus creating “user friendly” software.
I am told that when they built the University of California at Irvine, they did not put in any sidewalks the first year. Next year they came back and looked at where all the cow trails were in the grass and put the sidewalks there.
via straighdope message boards