Thursday, August 24, 2006

Creating a work culture

I'm trying to figure out what the best way is to create a positive work culture for three People Goals:
1) Hiring: People should want to join.
2) Retention: People should want to stay.
3) Growth: I should be able to scale up manpower and still maintain 1 and 2 above.

The business goals we have involve Productivity and Quality. Essentially this means profits - higher revenues, lower cost.

So how does one build a work culture that addresses the "people" goals, and at the same time maintains business goals?

A few things I've considered, but will not do:
1) Get tons of money and throw it at people. Won't work. Firstly, it's very difficult to scale, and secondly, you don't get the business goals => paying more salaries does not mean more productivity or quality.

2) Do "cutting edge" work and get phenomenal talent. The gaming industry works this way; some of the best programmers work in this field because it's dynamic, exciting and cutting edge. You can pay less; programmers will work to be part of such a team and product. Does not work for me; for our work is quite banal - bug fixing, spec writing, database development and the like. Personally it's worse - my job involves a lot of Microsoft Word and Excel. So my edge is as "cutting" as a hammer.

3) Huge Infrastructure, CMM/ISO etc, Lots of HR, Mass Recruitment. The Indian Software biggies do this - you basically get cogs in the big wheel. One cog goes away, replace it with another cog. The overall infrastructure promotes retention: Having a Pizza Hut in the campus, getting little cycles to roam around, Gyms and swimming pools etc. - the poor cog won't get this in most other companies, so he'll stay. CMM/ISO processes add lots of resume glitter. A huge HR force and mass recruitment makes sure you have enough low cost bench resource ready to replace the exiting cogs. If you have constant inflow and constant outflow, the net result is stability.

I can't do this - Don't have the money, and won't get it.

What I choose to do instead is to approach things in a piecemeal but integrated manner. (Whatever that means). Here's the story.

Make them want to join

Create a solid pitch to every candidate, with our business focus in mind. Each person should be aware of where the company is, where it's going and most importantly what they will be doing to take it there. Talk about growth, rewards, performance assessments and everything else mentioned below.

Create good infrastructure that's attractive but not expensive. A clean and quiet office, enough whiteboards and pinboards to write or pin stuff, high end machines with awesome monitors (no they're not that much more expensive) Etc. Impress them when they're in for the interview.

Make them stay

Provide a well defined career path and skill credits for both technical and leadership levels. Every individual can obtain skill credits by going through courses or passing certain tests.

Set up internal training programs (online) with certain skillsets and Assessments with internal certification and skill credits. This ensures they have an objective way to assess where they are and where they can go.

Give employees exposure to conferences, presentations and user group meetings: Not very expensive; definitely cheaper than getting a corporate trainer - and builds technical strength.

Organise a company wide meeting every quarter in a resort or such: The cameraderie will build over time. Ensure that employees can be frank with you here, and tell them where you are and where you expect to be by the next quarter.

Infrastructure: Small things matter. In India an employee is happy to wear a company T-Shirt - don't skip that, ever. Get more company branded merchandise: Pens, Pads, Diaries and the like. Get a coffee machine; people like to have coffee when they stay late.

Measure their performance

Set up internal skill assessment metrics to see what level of skills each person has, in order to see what technical or leadership level they can be on.

Set up business goals: Ensure that people get their estimates right with respect to actual work done. Measure this. Divide work into templated tasks that have internally set estimates - and have employees enter their timesheets regularly so that you can check how well they've done.

Measure project performance with objective input on time and quality: Set up measures for number of bugs thrown back by customers with causal analysis of individual defects (whether it was a bad spec, lack of understanding, bad code etc.). Measure the time taken to fix issues during development, and post deployment.

Note non-project contributions: If people help with setting a process or tool that addresses your business goals (productivity/quality) - note this and reward them.

Set up objective measures, not subjective ones - so that you can scale appropriately. Subjective measures are prone to interpretation, involve too many inteperson dynamics and often are rubbished for not being fair or honest. Objective measures need to use and collate data - rate stuff from one to 10 or as a percentage. Rank employees within your company so everyone can see who's the top and more importantly, who's the bottom on the leaderboard.

Reward their performance

You have metrics in place; now assess your savings when people perform better than the internal metric, and give people hard cash for such savings. If it costs you Rs. 500 per hour to develop something and it's done faster than your metric estimate, you've saved some money. Share it with the employees in question, in proportion to their contribution to the saving.

“Pool” rewards: For things like bug fixes, you can't reward people for bugs or for fixing them. Keep a pool of money as a reward for a project; this pool reduces in size with the number of customer reported bugs that were avoidable. Bad coding or insufficient QA, for instance, reduces the pool size and in the end, the remaining money is shared with all involved.

Let people go
When you find that people are underperforming consistently, let them go. Define the process - for example, an employee is given three warnings, one of each time that he comes in below the acceptable metric of estimation, task performance and quality. After three consecutive warnings, the employee is let go.

People will complain about a productivity based performance system - and will tell you how unfair it is. It will be partly unfair because of a certain bit of subjectivity that is required; but it will only be unfair to those that underperform, or are scared of doing so. Give everyone the option of leaving if they don't like it. (Don't backtrack on this; if you do it no one will respect you anymore)

That's all I have so far. Thoughts?

3 comments:

Mohit said...

Effectively, what you seem to be saying is:
1. Sell transparently
2. Measure things that matter
& 3. Be consistent

Did i miss something?

Mohit said...

Oh btw, what's the deal with only blogspot-users being able to comment???

Deepak Shenoy said...

Ah - fixed that blogspot users bit, thanks for the heads up, Mohit!

Actually I don't at all mean "Sell transparently" or "Be consistent". These are admirable qualities but a pitch or a policy need not be transparent or consistent to be effective. I would prefer not to over-simplify, for it expands the horizon of what one really means.

There are specific things you need to do when you grow; measurement is one thing, but the larger idea is to reward what you want most, allow people to grow and recognise it, and give new folks an idea of how it is so they are eager to join.