Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??

Recently, samizdat wrote a nice post on Retaining Top Developers. In that post, samizdat presented some strategies for employee retention. In the same post, samizdat requested links on “the costs of letting good people walk away”. After doing some research online, I found out that it is not easy to quantify the cost of employee turnover in the case of good developers. So, I did some academic research and found an article by Aharon Tziner and Assa Birati titled “Assessing employee turnover costs: A revised approach”. The article appeared in the Volume 6, Issue 2, Summer 1996, Pages 113-122 of the journal Human Resource Management Review. In this article, the authors made a case that losing top performers causes:

(1) erosion of the performance level of the remaining work force due to a drop in morale; (2) customers lost to competitors because of the inability to supply them with services or products on schedule; (3) excess over-time compensation to inside employees or substitute outside workers to temporarily try to make up for the loss of strong performers; and (4) the additional cost paid to supervisors and coworkers to integrate new hirees.

Later in the article, the authors identify the following costs as being associated with losing a good developer:

  • The direct outlays to the firm incurred by the replacement process: recruiting, hiring, training, and socializing new employees including the extra effort by supervisors and coworkers to integrate them;
  • The indirect costs and losses that relate to interruptions in production, sales, and the delivery of goods and services to customers; and
  • The financial value of the estimated effect on performance as a result of the drop in morale of the remaining work force following on dysfunctional turnover.

Based on these costs, the authors developed the following formula that allowed them quantify the cost associated with the lost of a top performer:

$cost_associated_with_lost = ($cost_differential + $cost_of_acquiring_new_employee + $cost_of_training_new_employee + $cost_paid_to_integrate_new_employee + $cost_of_excess_overtime_payment_to_compensate_temporary_performanc +e_downfall + $cost_of_loss_of_production_or_loss_of_customers + $monetary_value_of_loss_of_morale_of_remaining_employees) * (1 + $turnover_rate_of_newcomer_to_organization)

with $cost_differential being the cost differentials during the entire period (in years) in which the departing employee was expected to perform efficiently if he or she did not leave. This cost can be computed by:

foreach (1..$total_number_of_years) { $cost_differential += ( $annual_remuneration_of_new_employee - $an +nual_remuneration_of_person_leaving ) / (1 + $interest_rate_paid_by_ +employer / 100)**$_ }

In the article, the authors provide an example using probable numerical figures based on their experience as consultants (the values should be adjusting according to the particular industry in which the cost is computed). The values they used were:

$total_number_of_years = 10; $interest_rate_paid_by_employer = 10; $annual_remuneration_of_person_leaving = 64800; $annual_remuneration_of_new_employee = 60380; $cost_of_acquiring_new_employee = 3150; $cost_of_training_new_employee = 10000; $cost_paid_to_integrate_new_employee = 48600; $cost_of_excess_overtime_payment_to_compensate_temporary_performance_d +ownfall = 1000; $cost_of_loss_of_production_or_loss_of_customers = 55440; $monetary_value_of_loss_of_morale_of_remaining_employees = 3000; $turnover_rate_of_newcomer_to_organization = 0.1;

with those values, $cost_associated_with_lost would be 103434. See code below

#!/usr/bin/perl use warnings; use strict; my $line = <DATA>; chomp ($line); my @data = split /\s+/, $line; my $total_number_of_years = shift( @data ); my $interest_rate_paid_by_employer = shift( @data ); my $annual_remuneration_of_person_leaving = shift( @data ); my $annual_remuneration_of_new_employee = shift( @data ); my $cost_differential = 0; foreach (1..$total_number_of_years) { $cost_differential += ( $annual_remuneration_of_new_employee - $an +nual_remuneration_of_person_leaving ) / (1 + $interest_rate_paid_by_ +employer / 100)**$_ } my $turnover_rate_of_newcomer_to_organization = pop( @data ); my $cost_of_losing_good_people = 0; foreach (@data) { $cost_of_losing_good_people += $_; } $cost_of_losing_good_people += $cost_differential; $cost_of_losing_good_people *= (1 + $turnover_rate_of_newcomer_to_orga +nization); $cost_of_losing_good_people = int( $cost_of_losing_good_people ); print "Cost of Losing Good People = \$$cost_of_losing_good_people\n"; __DATA__ 10 10 64800 60380 3150 10000 48600 1000 55440 3000 0.1

Cheers,

lin0

In reply to Assessing the cost of losing good developers by lin0

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (3)
As of 2024-04-20 02:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found