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.

Download a printable version of the poster HERE: PETERposter_Final.jpg

Learn more about Arizona State University's new Industrial/Organizational and other Applied Psychology degree programs HERE: ASU Applied Psychology

Learn more about Arizona State University's new Simulation, Modeling and Applied Cognitive Science PhD program HERE: ASU SMACS PhD


powered by NetLogo

view/download model file: PeterPrinciple.nlogo

WHAT IS IT?

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

HOW THE PRESENT MODEL WORKS

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.


Running this model with the “Common Sense” settings (Promote those assessed as most competent, and that competence transfers to new level): Result is an efficient organization and many competent older managers.

Switching to the absurd assumption that competence at new level is random results in a dramatic drop in organization efficiency, but older managers no less competent.

Only now does a random promotion strategy not have catastrophic consequences, and still older managers are in the majority and are no less competent.

Conclusions

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.

CREDITS AND REFERENCES

Idea by K.C. Blackwell. Programming by D. Vaughn Becker. Narrative by K.C. Blackwell, D. Vaughn Becker, and Ronald Edwards.

CODE

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