Problem: You want to satisfy your customers. You want to do
the best possible job you can with your product, and thus win
fame and fortune for yourself.
Forces: Programmers have big egos. Customers don't always know
what they want. Programmers often miss the distinction between
what's needed and what's "neat".
Solution: You get all of the programmers and designers together
in a big room (aka DesignByCommittee) and everybody adds into the
product what they want. This process feeds off itself and everyone
starts adding new features as the process continues.
CreepingFeaturitis can begin, or continue at any stage in the software
development process. It's most common in the Analysis stage, where it
results in either an unending Analysis stage (see AnalysisParalysis?)
or in an unrealistically ambitious specification. In the design phase
CreepingFeaturitis is characterized by adding more bells and whistles
than were called for in the Analysis, or by trying to abstract everything
before anything is ever made concrete. In the coding stage, it is
characterized by coding that never ends as programmers continue to add
"one more feature".
-- KyleBrown with inspiration from JimCoplien