Software Peter Principle


Posted in: software | Save to del.icio.us | Twit This! 11 Jun 2009

Having to scrap a project after working on it for more than a year is not really an interesting way to up your morale. But it is one the most common things to occur in software development.

To take a real world example; A development company I know has been developing a shopping cart for the last 14 months ( beats me why anyone has to develop a shopping cart when so many free and excellent are already available ). But it is still nowhere near production ready. There is always something left to be added or cleaned. During the development period more than half a dozen programmers have worked on the project and left, producing a convoluted piece of software, which every new member dreads to touch in fear of breaking something somewhere. Salvaging the project is getting harder by the day.

The above episode is a perfect case of what is known in our field as the ‘Software Peter principle’. I first came across this principle in chapter 3 of C++ FAQs. Originally borrowed from management, the principle basically describes:

a dying project which has little by little become too complex to be understood even by its own developers.

Some reasons usually cited being :

Loss of Conceptual Integrity
Conceptual integrity is a measure of how well software conforms to a simple set of design principles. Conceptual integrity ensures that anywhere you look in your software system, you can tell that each small design is part of the same overall structure and not a mishmash of different designs.

Conceptual integrity is achieved when the software’s design proceeds from a small number of agreeing individuals, with a well defined but strong architectural team. In projects devoid of strong teams each individual favors personal interest over the common interest of the project. Adding his own coding style, altering earlier designs to suit his individual taste or deviating from the initial architectural design. Incidentally frameworks provide a means to achieve Conceptual Integrity

Incompetent & Inexperienced programmers
Not much can be done if the developers are not up to the project skills. All you can do is cross your fingers and pray, or at a little more price hire good developers. However hiring good programmers isn’t always enough. The experience of developing real world projects is way different than developing in an academic environment. Many times developers go about using complex language constructs in the code to showoff their proficiency, when a simple one could easily do.

Like diabetes, the Software Peter Principle is known as a silent killer; by the time symptoms show it is already too late. Salvaging becomes impossible and the only option left is to kill the project and move on. (Although not exactly the same with diabetes. Thank Heavens!)




Share this post

Share on Facebook
Share on Twitter
Share on StumbleUpon
Share on Delicious
Share on Digg
Share on Technorati
Share on Reddit
Feeds RSS Subscribe to site Feed

Other related posts



1 Response

1

chrisweb

June 12th, 2009 at 5:38 am

hehe nice post, i know the problem very well ;)

now we use zend framework and have agreed to use the zf coding standards, now this problem occurs less often, its still not perfect but lots better then before

Comment Form

Use the html <code> tag to insert small source code snippets

For longer code examples use http://pastie.org/.

Get latest updates by E-mail

About this blog

This site is a digital habitat of Sameer, a freelance web developer working from Pune.More

Recent Comments

  • sameer: Check to see if the 'IDE > options > format' is set to HTML. [...]
  • sameer: Google strips any newline characters form the text. Although it does accept it with the online trans [...]
  • Arjan: Fiddler is a debugging tool for IE (not Microsoft's Fiddler) [...]
  • Susan Martin: while creating a test for site, command icons on IDE greyed out and do not respond when selected. I [...]
  • Saar: Thanks for this example. helped me a lot. I have 1 problem, I am translating chunks of code, but I [...]
  • sameer: You can add extra GET variables in the options array as below: $pager_options = array( 'mode [...]
  • Martin: How can you carry over your own variables into the URL? I am using a form to POST a couple of var [...]
  • nancy: thanks very much ! first tools [...]

  • Users Online

    • 13 Users Online
    • 10 Guests, 3 Bots