The applet requires Java 5 or higher. Java must be enabled in your browser settings. Mac users must have Mac OS X 10.4 or higher. Windows and Linux users may obtain the latest Java from Oracle's Java site.
It is not clear that all versions of android or IOS will allow this to run, we are sorry for the inconvenience.
powered by NetLogo
view/download model file: PeterPrinciple.nlogo
The Peter Principle by Peter and Hull, a “humorous book”:
"Employees tend to rise to their level of incompetence.“
According to Wikipedia, “The principle holds that in a hierarchy, members are promoted so long as they work competently. Eventually they are promoted to a position at which they are no longer competent (their ‘level of incompetence’), and there they remain, being unable to earn further promotions”
While the ideas that 1) Random promotions are effective, and 2) older employees are more likely to have “petered” out are growing in popularity, both ignore the existence of recruitment, selection and training systems.
A recent simulation study (Pluchino, Rapisarda, & Garofolo, 2010) purports to demonstrate the validity of the Peter Principle, and this has attracted considerable press (including winning an “Ignoble Prize”).
Unfortunately, the Pluchino et al. model includes the problematic assumption that a promoted employee’s competence at former level evaporates, and they are assigned a new RANDOM competence.
Professional guidelines concerning personnel selection systems emphasize evidence-based practices aimed at selecting the most qualified individuals for the positions in question.
Promoting individuals who are qualified for a given position should yield some degree of competency transfer, and training should increase competence. Age (or time-in-grade) should then predict greater (or at least no worse) competence
5 levels in the organization
Employees (agents) have:
--AGE (light shade indicates older employee) “Older” workers defined as over 40
--COMPETENCE (more competent to the right)
Organization parameters:
--PROMOTE either the most competent OR a random employee
--COMPETENCE TRANSFER either the same (as next level) OR randomly determined
Procedure: Model populates an organization of 200 entry-level employees and four levels of management, and everyone gets assigned an age (initially between 25 and 50), and a level of competence that is drawn from a normal distribution with a mean of zero and a standard deviation of one. Competence is indicated by how far to the right the agent is, and those below a certain threshold of competence are terminated. Each model iteration is equivalent to a year, and whenever someone reaches age 65, they retire and are replaced from below (or with a new higher at the entry level). Every year of employment, competence can increase (a training/learning effect), but this rate is initially set to zero.
Previous models have to ASSUME Peter, it doesn’t naturally arise. The utility of random promotions for enhancing organizational efficiency is based on unrealistic assumptions regarding competency transfer. Professional guidelines advocate the use of evidence-based practices aimed at selecting and training the most qualified individuals for the positions in question. Under this more realistic model even imperfect selection systems will perform better than random promotion strategies, and modest training and experience will compound benefits for employees who have been in-grade longer (and thus are older). While the Peter Principle may have an intuitive appeal that resonates with our anecdotal experiences, the present model illustrates that employees do not as a rule “rise to the level of their incompetence” in the presence of even modest degrees of competency transfer, training, and selection accuracy.
Idea by K.C. Blackwell. Programming by D. Vaughn Becker. Narrative by K.C. Blackwell, D. Vaughn Becker, and Ronald Edwards.
globals [ temp efficiency myXcor myYcor mylist olderCompetency youngerCompetency ] patches-own [ my-row ;; the row of the position in hierachy counting from the upper part of the ;; world. -1 for non-intersection patches. my-column ;; the column of the position in hierachy counting from the left of the ;; world. -1 for non-intersection patches. ] turtles-own [ competence ;; how generally competent is the employee, future models will diversify this managerialCompetence ;; how good would this person be at the next level age ;; age beginning at 25 and ending at retirement at 65 ] to Setup ;; (for this model to work with NetLogo's new plotting features, ;; __clear-all-and-reset-ticks should be replaced with clear-all at ;; the beginning of your setup procedure and reset-ticks at the end ;; of the procedure.) clear-all ;; Now create the employees in the organization set-default-shape turtles "person" ;; president create-turtles 1 [setxy 0 10 ] ;; vice-presidents create-turtles 10 [set temp random-float 5 + random-float -5 setxy temp 5 ] ;; GMs create-turtles 40 [set temp random-float 10 + random-float -10 setxy temp 0 ] ;; Supervisors create-turtles 100 [set temp random-float 10 + random-float -10 setxy temp -5 ] ;; employees create-turtles 200 [ setxy 0 -10 ] ;; give the turtles an initial something ask turtles [ set age random 30 + 18 setRandomCompetence set color 125 + ( (age - 40) / 8 ) setxy competence * 5 [ycor] of self ] my-setup-plots reset-ticks end to my-setup-plots end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;; ;;;;;; ;;;;;; Procedures ;;;;;; ;;;;;; ;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to go retire-replace wealth-gen do-plots tick end to retire-replace ask turtles [ set myYcor ycor set myXcor xcor set age age + 1 set color 125 + ( (age - 40) / 8 ) if competence < 2 [set competence competence + expertiseRate] setxy competence * 4 [ycor] of self if age > 65 or competence < terminationThreshold [ ifelse ycor = -10 [ new-hire ] [ promote-from-below] die ] ] end to new-hire hatch 1 [ set age random 30 + 25 setRandomCompetence set color 125 + ( (age - 40) / 8 ) setxy competence * 5 [ycor] of self ] end to SetRandomCompetence set managerialCompetence random-normal 0 1 if managerialCompetence > 3[ set competence 3 ] if managerialCompetence < -3[ set competence -3 ] set competence random-normal 0 1 if competence > 3[ set competence 3 ] if competence < -3[ set competence -3 ] end to SetNewCompetencies set competence managerialCompetence set managerialCompetence random-normal 0 1 if managerialCompetence > 3[ set competence 3 ] if managerialCompetence < -3[ set competence -3 ] end to promote-from-below ifelse SelectionStrategy = "Best" [promoteBest] [promoteRandom] end to transition move-to myself ifelse CompetenceTransfer = "Random" [setRandomCompetence] [SetNewCompetencies] setxy competence * 4 [ycor] of self end to promoteBest if ycor = -5 [ ask max-one-of turtles with [ycor = myYcor - 5] [managerialCompetence] [ set color color + 20 hatch 1 [ set age random 30 + 18 setRandomCompetence set color 125 + ( (age - 40) / 8 ) ] transition ] ] if ycor = 0 [ ask max-one-of turtles with [ycor = myYcor - 5] [managerialCompetence] [ set color color + 20 ask max-one-of turtles with [ycor = myYcor - 10] [managerialCompetence] [ set color color + 20 hatch 1 [ set age random 30 + 18 setRandomCompetence set color 125 + ( (age - 40) / 8 ) ] transition ] transition ] ] if ycor = 5 [ ask max-one-of turtles with [ycor = myYcor - 5] [managerialCompetence] [ set color color + 20 ask max-one-of turtles with [ycor = myYcor - 10] [managerialCompetence] [ set color color + 20 ask max-one-of turtles with [ycor = myYcor - 15] [managerialCompetence] [ set color color + 20 hatch 1 [ set age random 30 + 18 setRandomCompetence set color 125 + ( (age - 40) / 8 ) ] transition ] transition ] transition ] ] if ycor = 10 [ ask max-one-of turtles with [ycor = myYcor - 5] [managerialCompetence] [ set color color + 20 ask max-one-of turtles with [ycor = myYcor - 10] [managerialCompetence] [ set color color + 20 ask max-one-of turtles with [ycor = myYcor - 15] [managerialCompetence] [ set color color + 20 ask max-one-of turtles with [ycor = myYcor - 20] [managerialCompetence] [ set color color + 20 hatch 1 [ set age random 30 + 18 setRandomCompetence set color 125 + ( (age - 40) / 8 ) ] transition ] transition ] transition ] transition ] ] end to promoteRandom if ycor = -5 [ ask one-of turtles with [ycor = myYcor - 5] [ set color color + 20 hatch 1 [ set age random 30 + 18 setRandomCompetence set color 125 + ( (age - 40) / 8 ) ] transition ] ] if ycor = 0 [ ask one-of turtles with [ycor = myYcor - 5] [ set color color + 20 ask one-of turtles with [ycor = myYcor - 10] [ set color color + 20 hatch 1 [ set age random 30 + 18 setRandomCompetence set color 125 + ( (age - 40) / 8 ) ] transition ] transition ] ] if ycor = 5 [ ask one-of turtles with [ycor = myYcor - 5] [ set color color + 20 ask one-of turtles with [ycor = myYcor - 10] [ set color color + 20 ask one-of turtles with [ycor = myYcor - 15] [ set color color + 20 hatch 1 [ set age random 30 + 18 setRandomCompetence set color 125 + ( (age - 40) / 8 ) ] transition ] transition ] transition ] ] if ycor = 10 [ ask one-of turtles with [ycor = myYcor - 5] [ set color color + 20 ask one-of turtles with [ycor = myYcor - 10] [ set color color + 20 ask one-of turtles with [ycor = myYcor - 15] [ set color color + 20 ask one-of turtles with [ycor = myYcor - 20] [ set color color + 20 hatch 1 [ set age random 30 + 18 setRandomCompetence set color 125 + ( (age - 40) / 8 ) ] transition ] transition ] transition ] transition ] ] end to wealth-gen let efficiencyTemp 0 ask turtles with [ycor = -10] ;;this is one of many ways to implement this [ set efficiencyTemp (efficiencyTemp + competence) ] ask turtles with [ycor = -5] [ set efficiencyTemp (efficiencyTemp + competence * 3) ] ask turtles with [ycor = 0] [ set efficiencyTemp (efficiencyTemp + competence * 9) ]ask turtles with [ycor = 5] [ set efficiencyTemp (efficiencyTemp + competence * 27) ] ask turtles with [ycor = 10] [ set efficiencyTemp (efficiencyTemp + competence * 81) ] set efficiency efficiencyTemp / (count turtles) end to do-plots set-current-plot "Efficiency" set-current-plot-pen "efficiency" plot efficiency if ticks > 100 [ if count turtles with [age < 40 and ycor > -10] > 0 [ set olderCompetency median [competence] of turtles with [age > 40 and ycor > -10] set youngerCompetency median [competence] of turtles with [age < 40 and ycor > -10] ] ] end