Flickr Badge

Tuesday, August 09, 2005

Skill based promotions

I wrote mentioned a skill based promotion system in my essay yesterday. I've fleshed it out a bit more. Here is my current thinking on this topic.

When deciding whether to promote somebody, ignore past performance. This sounds like a radical idea, but it's not.

A promotion usually signifies some change in role. The best person for a project management role is not always the best programmer in the team. Past performance shows that they have the skills to do well in their current role. What is important is that the person has the skills required to perform well in the new role.

Instead, consider a skill based promotion. Establish the skills required for different roles in the organisation. Promote people when they acquire those skills.

Such a system is also transparent: Everyone knows where they stand and what they need to do to achieve a promotion.

Here is a plan on how to implement skill based promotions -
  • Write down a list of skills required for each role - apart from promotions, these lists of skills will also help in hiring
  • Provide resources to enable employees to acquire those skills
  • Promote them when they have acquired the relevant skills


How can we come up with a list of skills? Here is one example -



Developer
Key Skills Required -
  • Thorough knowledge of the programming language
  • Refactoring
  • Knowledge of a unit testing framework
  • Project architecture and design skills
  • Estimation methods
  • Design patterns
  • Understanding of algorithms
  • Code reading skills


Project Manager
Key Skills Required -
  • Identifying and managing project risks
  • Estimation methods, formal and informal
  • People and communication skills
  • Knowledge of at least one traditional process and one agile process
  • General management skills
  • Good technical knowledge to understand problems faced by the team (Although this is not strictly required, programmers do respect their managers a lot more if they are technically oriented)
  • Some amount of domain knowledge
  • Basic understanding of the target end user - this is needed because the project manager is the user advocate in the team
  • Understanding of the technical environment - source control, testing methods used etc




Once the lists of skills have been written down for various roles, the next step is to help your employees acquire it. There are three ways to do this -

  • Allowing them to attend seimnars, workshops and conferences
  • Filling up the company library with relevant books and magazines
  • Enabling them to form ad-hoc learning groups


For my views on these three points, see my previous posts on creating ad-hoc groups and modes of learning.

One problem with this method is that there are only about 2-3 different roles available in project development, and thus reduced scope for promotions. It will also take a long time to acquire all the required skills from scratch.

The solution is to create intermediate positions when a part of the skills have been acquired. For example the above list says that a developer needs 8 key skills. There could be an intermediate promotion when 3 skills have been acquired, and another one when 6 skills have been acquired. Here is an example of such a ladder:

  • Developer [0/8 skills]
  • Senior Developer [3/8 skills]
  • Technical Designer [6/8 skills]
  • Senior Technical Designer [8/8 skills]


And for Project Manager:

  • Project Lead [5/9 skills]
  • Project Manager [9/9 skills]
  • Program Manager [9/9 skills + sucessful completion of at least two projects]


The above are just examples, and should be tweaked as required.

In my opinion, such a skill based promotion system is superior to a performance based promotion system.

This post is a part of the selected archive.

2 comments:

Gaurav said...

I cant say I agree with that. Wouldn't being skilled in a task translate to better performance in that task? Skills are usually 'soft' (you can't quantify knowledge of design patterns or ability to manage project risks) but performance is hard core. "Skill based" promotions can often come across as unfair to others. Performance can not be disputed.

Siddhi said...

You bring up a very valid point. One of the problems with skill based reviews is that it is very hard to quantify. You cannot attach a number to it. How do you know when someone really knows design patterns as opposed to simply claiming that he knows it?

However, performance is rarely as undisputable as normally thought. Most promotions as based on a nebulous 1-5 ranking that is given out at the performance reviews annually. The score you get is usually highly subjective and most people enter the review with high expectations only to find out that they didn't get as much as they thought they should.

The other option is to use some kind of performance metric. This provides hardcore data, but it also leaves the metric open to manipulation (everyone will attempt to maximise the metric at the expense of everything else), which really isn't a good thing. Then there are those who are vital to the team, but do really badly on the metric. Joel says: Many of my friends, especially the ones whose talents were very significant but didn't show up on the traditional scales, tended to get lousy performance reviews. For example, one friend of mine was a cheerful catalyst, a bouncy cruise director who motivated everyone else when the going got tough. He was the glue that held his team together. But he tended to get negative reviews, because his manager didn't understand his contribution. Another friend was incredibly insightful strategically; his conversations with other people about how things should be done allowed everyone else to do much better work. He tended to spend more time than average trying out new technologies; in this area he was invaluable to the rest of the team. But in terms of lines of code, he wrote less than average, and his manager was too stupid to notice all his other contributions, so he always got negative reviews, too.

As I see it, both depend on the skill of the manager to identify skill/performance and to manage expectations.