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