Sachin Tendulkar is the greatest batsman ever. He has almost every
batting record to his name. I used to play cricket at college and
corporate levels. Sachin is a better batsman than me. Better than me by a
factor of, say, 1000 times. In short, Sachin is 10^N times better than
me. Sachin achieved this greatness by improving his batting skills. If
we were to assess the performance of a batsman (on an annual basis), we
can have the following aspects to consider:
Is it possible to have a Sachin Tendulkar among programmers? Is it possible that we have a programmer who is 10^N times better than an amateur programmer. If such programmers exist, how do we find them?
Unfortunately, the performance of programmers cannot be measured that easily. To me, a good programmer is someone who understands the requirements well, provides solutions, designs and architects systems really well, communicate effectively with other team members, and writes maintainable and high quality code. These things are not easy to measure. But, some folks try to measure all of this:
In cricketing terms, Team India makes an impact in the cricketing world. But, my corporate cricket team does not. It is upto the individual to ensure that he is part of an impact-making team. Apart from cricketing skills, Sachin has the talent to sell his cricketing skills. This is an essential part of excellence. But, BCCI (Board of cricket control, India) also has a part in identifying and grooming talent.
My informal topic of research for several years is: How do great companies set up their performance assessment system to hone talent within the company? Most companies fall into the trap of having a system that works within their culture, or having a system that maximizes benefit to the organization (mostly in the short term). My objective here is to articulate a performance assessment system that hones excellent programmers and rewards them.
Greatness and Excellence comes out of passion to do. If we have a system, where everyone is evaluated on what they are passionate about, it will bring about the best in people. How do we setup a system where measurement is encouraging, beneficial, and evolves talent? Here is my attempt:
Example of some ineffective feedback is:
- Number of runs scored
- Batting average
- Strike rate
- Man of the match awards
- Number of 100s
Is it possible to have a Sachin Tendulkar among programmers? Is it possible that we have a programmer who is 10^N times better than an amateur programmer. If such programmers exist, how do we find them?
Unfortunately, the performance of programmers cannot be measured that easily. To me, a good programmer is someone who understands the requirements well, provides solutions, designs and architects systems really well, communicate effectively with other team members, and writes maintainable and high quality code. These things are not easy to measure. But, some folks try to measure all of this:
- Number of hours logged (Utilization)
- Escalations or Feedbacks received (Bugs, Other personal attributes pissing the manager)
- Communication skills (Ability to talk politely, or fluently, Ability to write good English emails)
- Excellent skills in a programming language, and coding algorithms
- Excellent skills in enterprise architecture and design patterns
- Excellent analytical and problem solving skills (requirements, providing solutions)
- Quickly learn new methodologies
- Quickly learn new tools
- Proactively, suggest product features
- Quickly prototype features
In cricketing terms, Team India makes an impact in the cricketing world. But, my corporate cricket team does not. It is upto the individual to ensure that he is part of an impact-making team. Apart from cricketing skills, Sachin has the talent to sell his cricketing skills. This is an essential part of excellence. But, BCCI (Board of cricket control, India) also has a part in identifying and grooming talent.
My informal topic of research for several years is: How do great companies set up their performance assessment system to hone talent within the company? Most companies fall into the trap of having a system that works within their culture, or having a system that maximizes benefit to the organization (mostly in the short term). My objective here is to articulate a performance assessment system that hones excellent programmers and rewards them.
Greatness and Excellence comes out of passion to do. If we have a system, where everyone is evaluated on what they are passionate about, it will bring about the best in people. How do we setup a system where measurement is encouraging, beneficial, and evolves talent? Here is my attempt:
- Number of product features implemented
- Number of product features suggested (and found its way into the product)
- Number of prototypes developed
- Number of new things learned - products, tools, frameworks
- Number of projects implemented
- Number of new things learned - products, tools, frameworks, industry knowledge
- Number of features implemented / suggested within the project
Example of some ineffective feedback is:
- Productivity is low in the project. But, productivity may be good, if the programmer was involved in making unsuccessful prototypes or learning new technologies.
- There are too many defects. This is a bad metric because the complexity and dependencies in the project cannot be measured. Too many defects can also happen because of a good testing team. Defect detection and removal is an operational detail.
- Team work or Attitude skills are bad. This is a good indication of talent. Usually, people who specialize in honing a specific talent may be oblivious to a few. Mentoring or awareness can induce behavioural changes.
No comments :
Post a Comment