Second-system effect
Encyclopedia
The second-system effect refers to the tendency of small, elegant, and successful systems to have elephantine, feature-laden monstrosities as their successors. The term was first used by Fred Brooks
in his classic The Mythical Man-Month
. It described the jump from a set of simple operating systems on the IBM 700/7000 series
to OS/360 on the 360 series.
People who have designed something only once before, try to do all the things they "did not get to do last time," loading the project up with all the things they put off while making version one, even if most of them should be put off in version two as well.
Fred Brooks
Frederick Phillips Brooks, Jr. is a software engineer and computer scientist, best known for managing the development of IBM's System/360 family of computers and the OS/360 software support package, then later writing candidly about the process in his seminal book The Mythical Man-Month...
in his classic The Mythical Man-Month
The Mythical Man-Month
The Mythical Man-Month: Essays on Software Engineering is a book on software engineering and project management by Fred Brooks, whose central theme is that "adding manpower to a late software project makes it later"...
. It described the jump from a set of simple operating systems on the IBM 700/7000 series
IBM 700/7000 series
The IBM 700/7000 series was a series of large-scale computer systems made by IBM through the 1950s and early 1960s. The series included several different, incompatible processor architectures. The 700s used vacuum tube logic and were made obsolete by the introduction of the transistorized 7000s...
to OS/360 on the 360 series.
Explanation
Although expressed as a problem of software design, the second-system effect is observable throughout all human design effort. It is somewhat akin to the idea of "fighting the last battle."People who have designed something only once before, try to do all the things they "did not get to do last time," loading the project up with all the things they put off while making version one, even if most of them should be put off in version two as well.
See also
- Anti-patternAnti-patternIn software engineering, an anti-pattern is a pattern that may be commonly used but is ineffective and/or counterproductive in practice.The term was coined in 1995 by Andrew Koenig,...
- Feature creep
- Inner-platform effectInner-platform effectThe inner-platform effect is the tendency of software architects to create a system so customizable as to become a replica, and often a poor replica, of the software development platform they are using...
- Software bloatSoftware bloatSoftware bloat is a process whereby successive versions of a computer program include an increasing proportion of unnecessary features that are not used by end users, or generally use more system resources than necessary, while offering little or no benefit to its users.-Causes:Software developers...
- Sophomore slumpSophomore slumpA sophomore slump or sophomore jinx refers to an instance in which a second, or sophomore, effort fails to live up to the standards of the first effort...
- Unix philosophyUnix philosophyThe Unix philosophy is a set of cultural norms and philosophical approaches to developing software based on the experience of leading developers of the Unix operating system.-McIlroy: A Quarter Century of Unix:...
- Zawinski's Law of Software Envelopment
External links
- Things You Should Never Do by Joel Spolsky, about the Netscape project.
- Rewriting Software, in Notes on Haskell.
- Rewrites Considered Harmful? by Neil Gunton
- The Big Rewrite by Chad Fowler.