Software Peter principle

Software Peter principle

The software Peter principle is used in software engineering to describe a dying project which has little by little become too complex to be understood even by its own developers.

It is well known in the industry as a silent killer of projects, and by the time the symptoms arise it is often too late to do anything about it. Good managers can avoid this disaster by establishing clear coding practices where unnecessarily complicated code and design is avoided.

The name is used in the book "C++ FAQs" (see below), and is derived from the Peter Principle — a theory about incompetence in hierarchical organizations.

Causes

Loss of Conceptual Integrity

The conceptual integrity of software is a measure of how well software conforms to a single, simple set of design principles, according to "The Mythical Man Month" by Fred Brooks. When done properly, it provides the most functionality using the simplest idioms. It makes software easier to use by making it simple to create and learn.

Conceptual integrity is achieved when the software’s design proceeds from a small number of agreeing individuals. For software to maintain conceptual integrity, the design must be controlled by a single, small group.

In projects without a strong software architecture team, the task of design is often combined with the task of implementation and is implicitly delegated among the individual software developers. Under these circumstances, developers are less likely to sacrifice personal interests in favor of the interests of the product. The complexity of the product grows as a result of developers adding new designs and altering earlier ones to reflect changes in fashion and individual taste.

Programmer Incompetence

The best software developers understand the importance of communicating with people over communicating with the computer, according to "Code Complete" by Steve McConnell. On average, 85 percent of a programmer's time is spent communicating with people, while only 15 percent is spent communicating with the computer. Maintenance programmers spend 50 to 60 percent of their time trying to understand the code they have to maintain and a software program will have, on average, 10 generations of maintenance programmers in its lifetime.

McConnell states that less competent developers favor code with advanced programming language features over code that is readable. Code written by these programmers tends to increase software complexity.

Programmer Inexperience

Inexperienced programmers sometimes make implementation choices that work but have unintended negative consequences. The most common of these mistakes are cataloged and referred to as "smells" in the book "Refactoring" by Martin Fowler. Over time, many such implementation choices degrade the software’s design; making it increasingly difficult to understand.

See also

* Software development process
* Project management
* Peter Principle
* Anti-patterns

References

* "C++ FAQs" by Cline, Lomow, and Girou, Addison-Wesley 1999 ISBN 0-201-30983-1
* Brooks, F., "The Mythical Man Month", Addison-Wesley Longman Inc., 1995.
* McConnell, S., "Code Complete", Microsoft Press, 1993
* Fowler, M., "Refactoring", Addison-Wesley, 2000


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Look at other dictionaries:

  • Peter Principle — For the BBC sitcom, see The Peter Principle (TV series). The Peter Principle states that in a hierarchy every employee tends to rise to his level of incompetence , meaning that employees tend to be promoted until they reach a position at which… …   Wikipedia

  • Peter J. Denning — Peter James Denning (By Louis Fabian Bachrach) Born January 6, 1942 (1942 01 06 …   Wikipedia

  • Software patents under United Kingdom patent law — There are four over riding requirements for a patent to be granted under United Kingdom patent law. Firstly, there must have been an invention. That invention must be novel, inventive and susceptible of industrial application. (See Patentability) …   Wikipedia

  • Software patent — Computer programs, software and patent law Topics …   Wikipedia

  • Software design pattern — In software engineering, a design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. A design pattern is not a finished design that can be transformed directly into code. It is a… …   Wikipedia

  • Software bug — To report a MediaWiki error on Wikipedia, see Wikipedia:Bug reports. A software bug is the common term used to describe an error, flaw, mistake, failure, or fault in a computer program or system that produces an incorrect or unexpected result, or …   Wikipedia

  • The Dilbert principle — refers to a 1990s satirical observation by Dilbert cartoonist Scott Adams stating that companies tend to systematically promote their least competent employees to management (generally middle management), in order to limit the amount of damage… …   Wikipedia

  • The Dilbert Principle — refers to a 1990s satirical observation by Dilbert cartoonist Scott Adams stating that companies tend to systematically promote their least competent employees to management (generally middle management), in order to limit the amount of damage… …   Wikipedia

  • Outline of software engineering — See also: Index of software engineering articles The following outline is provided as an overview of and topical guide to software engineering: Software engineering – application of a systematic, disciplined, quantifiable approach to the… …   Wikipedia

  • List of software engineering topics — This list complements the software engineering article, giving more details and examples. For an alphabetical listing of topics, please see List of software engineering topics (alphabetical).Influence on societySoftware engineers affect society… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”