Friday, November 18, 2011

Retaining Senior Staff (Software)

One of the biggest issues facing many companies is resource retention.  I don't believe many companies understand the long term cost of losing a resources, especially senior resource that have been with the company for years.

Product development is simple, write some code and make it work as expected, right?  No!!! if your a company that is developing a product that you intent to market and update for years to come, then it's not that simple.  Version 1 of the product development cycle is the easiest, there is no existing code base, no existing issues, and time pressures are not customer driven.

Now fast forward 5 years since the release of version 1, with a quarterly release cycle you now have released 20 versions of your product (5 major and 15 minor revisions).  In additional to this you have responded to customer demand and released 50 patches of various versions.  The source code has been modified by a team of 10 developers (2 seniors, 5 intermediate, and 3 junior). However, it's not the original team you started with, you have had 3 senior, 4 intermediate, and 6 junior developers come and go since you started.

Now you only have 1 senior and 2 intermediate developers that were part of the original team, one day your last senior resource puts in his notice, shortly afterwards 1 of your intermediate resource also gives notice. Unless you have well defined processes and clearly defined resource roles and procedures then your in trouble. 

Your long term resources have likely taken on additional work because they loss the resources they trained and depended on for various tasks.  They have created scripts, custom exe's, and utilize 3rd-party tools to complete their work load on time, these tools only exists on their computer, the source is not checked into source control and only they know the procedures to use them. 

You try to offer your last senior resource some more money to stay but it's too late, the job they are going to has more money, a smaller work load, and more benefits.  Your other resources try to hold down the fort while you get another senior resource, you change your release cycle to annual and can only manage minor releases and patches.  Your team is struggling and pressures are growing, resources beginning to leave more frequently.

Your company is starting to get a bad name due to turnover, you have to increase your salaries way above your competition.  You let your junior resources go to cover the increase in costs.  Now with your increased salaries you manage to hire 3 senior and retain 2 intermediate resources.  Your new senior resources complete a review of the source code base and inform you that a rewrite needs to be completed.  How could this be, the source has been maintained and updated for 5 years.  You allow the rewrite because you have no other choice.

You begin to think that your previous senior resources must have not know what they were doing.  However, they were not the problem, you were!!! You allowed this to occur!  Do you know what happens on a daily basis? What activities are each resource is responsible for?  What procedures to they use to complete their assigned tasks? 

You should have required all resources to document each activity they preformed!  All source code should be well documented! Main activities such as builds should be preformed on separate and controlled environments!  Developer documentation of frameworks and products should be maintained so that new staff could understand existing code and not have to rewrite new code!!!

On the human resources management side, when you conducted your annual reviews with your employees did you really listen to what they were saying?  Did you ask the right questions? Have you improving the work environment? Do you allow time flexibility?  Ability to work remotely?  Is vacation time enough for changing employees who now have families? Did you allow salaries to remain stagnate?

Employee retention is not about always increasing salaries, and companies that operate REAL pension plans have a massive advantage over other companies.  As employees grow older they have families, expenses grow, they begin to plan retirement.  There was a time when companies treated employees like family and looked after them, this created very loyal employees. Over the years many companies focused on rapid and massive growth, employees became numbers and when growth slowed the work force was cut without a second thought. Employees in turn became less loyal and no longer stay with a company for very long.

Not everything is about money, employees who are treated with respect, given help when needed, and have their long term objectives supported will likely remain with that company for years.  If they move on for other reasons you may find them returning.

The most critical task is to not let your company fall into risk, don't let risk build.  If you lack the knowledge then hire a right hand man and treat him as such.  Capture what your business does, who does what tasks, how do the tasks get completed.  Define and document your processes and procedure, store & version them in a document repository, and stay on top of your businesses daily operations.  Once you have all the information, use it to remove risk, automate major activities, host them in environments that you control, take away the guess work when completing task so that employee turnover has less of an impact.

No comments: