Monday, July 19, 2010

5 Things You Might Forget During Estimation

Often times, a client will bring to me a great idea and ask for an estimation. The problem is, for me to make a good estimation, I need to imagine the product from the back: at the last day of delivery, looking back to the project start, what happened? I need to also be able to see the product on that day. "How many buttons on each page and where did they go." All of this gets put into the estimation. Of course, you can imagine that many things catch clients by surprise.

Here's 5 things that I estimate for that clients may not:
5) VISUAL DESIGN
Actually, most clients don't forget that visual design needs to be done. In fact, getting the pretty pictures is usually their favorite part of the project (BTW, everyone thinks they're a visual designer. I am, too, of course). What they forget, though, is that visual design needs to be converted into code: HTML/CSS. Throw, on top of that, the functionality (dynamic drop downs, anybody?), and you're talking about more time that you just didn't see.

4) TESTING
Some customers don't understand why testing is necessary. Why can't the developer just test as they go? The reason is that in every implementation, developers make assumptions. Having a tester validates these set of assumptions, as well as ensures that the assumptions link back to the business process. Plus, sometimes after you've drilled the 1000th nail in, it's hard to step back to see the whole wall.

3) PERFORMANCE TESTING
Not to be confused with testing above, performance testing/tuning requires a whole different skill set. It's one thing to push all the buttons in your car. It's a whole other thing to test how fast your car goes. For some reason, most customers prefer to pretend there's no such thing as performance testing. I'll concede that a "new" site might not need as much speed as a large-scale one. Nevertheless, if it's slow, the fingers point to me. So I have to factor it in.

2) TWEAKS IN FUNCTIONALITY
Every client/product manager forgets something. It might be "what happens when 'more' is clicked". Or it might be "what happens when a browser is closed in the middle of a process". Or, it might just be "oh! I forgot this!". Clients also hate to hear, "no. That's out of scope." So, there's a buffer for these tweaks. The amount can vary (but shouldn't be zero), but it should be agreed by both parties. It also reflects how flexible the project manager should be toward change requests.

1) DISCUSSION TIME (AND RAMP UP)
When an engineer makes an estimate, they're usually thinking "the customer has told me 100%. This will take exactly 4.5 hours to build". However, there's more to development than coding. (a) Customers soon figure out that they only told 80% and still need to clarify more. (b) Projects have daily scrum meetings. (c) Developers need to talk to testers need to talk to Project Managers need to talk to clients. (d) etc. I've seen projects where clients have said "I don't need discussion time in an estimation" and ended up chatting with developers 3 hours per day. The reality is, a construction worker can't build a building in a vacuum. He needs to talk to, if nothing else, other builders. The same principle applies for building websites.

Anyways, this list is by no means exhaustive, but it's just some of the things I come across. In the future, if you're asking for an estimation and you don't see these things, you might want to ask your estimator 'why'.

Tuesday, July 13, 2010

The Benefits of Corporate Polymorphism

Lately I've been having thoughts about polymorphism. Let's get this straight, I'm not talking about the Object Oriented principle in Programming. I'm talking about good old-fashioned Biology 1A - Polymorphism. It's been decades since we've studied it, so here's a summary:

Sometimes a gene mutates and you see two different variants in the same population. The classic example is the peppered moth. There exists two types of peppered moth: white and black. The white camouflages perfectly with white trees, allowing it to avoid detection by birds. However, during the Industrial Revolution, there was a huge rise in the black variant. Why? Well, nobody knows for sure, but scientists surmise that the black peppered moth was able to blend in better with the polluted air (now, with cleaner air, the white one is making a comeback).

So, what does this have to do with businesses?
Variation provides great survival benefits to a species.

For example, a large chunk of my job is recruiting and doing this for a global company in China has huge challenges. With the wide culture gap between Chinese and Westerners, it's easy to feel more comfortable with one group or the other. Chinese managers are always pushing me to hire more Chinese employees. Non-Chinese are pushing for non-Chinese. Sometimes I wonder if its even possible to make both sides happy.

But, the reality is, its best if my company has both. For the best companies, diversity is the key to survival. In 2009, with the unstable economies in Europe and the US, we found that we were able to lean more heavily on projects in the local Chinese market. However, now in 2010, with things picking up again, we're finding ourselves shifting back.

Diversity is needed in the individual. I have found, that the more diverse in abilities an individual is, the more likely he/she can weather through fluctuating times. Take language, for instance. I've been quite strict about only hiring bilingual Chinese engineers - an unpopular decision with most at my company. "If their English is good, they probably didn't spend enough time studying technology!" "If their English and technology are good, they'll be too expensive!" "A Chinese project doesn't need English speakers! They just need developers now! I'd rather have a non-English speaker tomorrow than a bilingual one next month!"

Now, in 2010, I'm thankful that we focused on both. Having the diversity means that I can have an engineer working on a Chinese projects this week, and in Europe working with clients the next. Employees also recognize that having diverse traits, be it language skills, life experience, even hobbies, afford more opportunities more diverse experiences. A win-win to all.

More importantly diversity is needed in the company. The reality is, having a lot of different traits isn't easy to cope with. I'm Asian-American. That means, when I'm in the US, I'm Asian. When I'm in Asia, I'm American. In neither place do I completely fit.

Similarly diversity in a company is painful. It means that there's a lot of arguing, a lot of unexpected viewpoints, a lot of misunderstanding, and often times, a lot of hurt feelings.

However, diversity is also incredibly powerful. It enables us to generate innovative ideas. See things that we couldn't otherwise do alone (or even within our close community). And finally, humble us to realizing that even our most basic assumptions about how people think and act could be wrong.

Building a diverse company isn't for everyone. Authoritarian managers need complete control, and having wildly ranging viewpoints could slow things down. 'Mom and Pop' shops don't need a wide variety of skills.

However, if you can manage it, a polymorphic company fosters an environment where employees trigger one another to think differently. Long term, this not only stimulates its people, but also challenges the company to grow to unforeseen heights. A win-win situation.

Thursday, April 29, 2010

Inefficiencies of imitation

The other day, I saw a mobile phone application. It rolled dice. Basically, you shake the phone, the screen shows a pair of dice rolling, and then they lands on a number.

From a coding perspective, this is a project for a high school kid. It's super easy: create an application that randomly selects a number from 1-6 on each dice. Show that number on the dice.

Now, here's how the imitator sees it. "Application shows a total of 7. Then a 6. Then an 8. Then a 7. Oh! Simple!"

So what do I get? An application that consistently rolls 7-6-8-7-6-8-7-6-8-7-6-8-7.

I won't say that that this little mobile application did exactly that, but... it did have enough 6-7-8's to be statistically possible, but highly highly improbable.

Which brings me to my conclusion: it's better to learn the why behind the application, than just the what.

Wednesday, April 21, 2010

You don't buy me flowers...

I'm learning that what I can do as an HR Manager is quite limited. In my case, I'm actually not limited by my management team or company bureaucracy. I'm limited by what I have come to term as the "you don't buy me flowers" syndrome.

This is how the skit plays out.
2 actors... a husband and a wife
Scene 1:
Wife: You never buy me flowers
Husband: (huh.)

Scene 2:
The next day, the husband buys the wife flowers. He thinks his wife will be pleased.
Wife: You only buy me flowers when I tell you to.
Husband: Huh?
Wife: Why don't you do anything nice without me having to tell you?

Scene 3:
The next day, the husband cooks dinner for his wife. He thinks his wife will be pleased.
Wife: You only cooked for me because yesterday I told you that you don't do anything nice without me having to tell you...

Scene 4:
repeat Scenes 1-3.

Sometimes all you can do is try your best. Any good situation can appear bad when attacked by a negative frame of mind and, as a manager, sometimes you just can't do anything about that. Recognize it, revisit your vision, set it and move on.

An HR Manager's job isn't to make an employee happy. Only an employee can control that. An HR Manager can build a comfortable and supportive work environment where the employee feels 'safe'. This includes being transparent on the issues - both good and bad - and being genuine so employees know your veracity. Listen when people have problems, but don't go seeking problems - especially from the wrong people. Don't let them hold you back.

For those few employees who keep asking for flowers, if it's a strong problem, let them go. Remember that for every one of them, there are probably 10 positive people who want to focus on moving forward. As the HR Manager, you need to tend to those guys as well. Supporting them will also help them support others.

This isn't to say point-blank 'ignore criticism'. Remember, he did buy her flowers....

Monday, November 9, 2009

Performance Metrics & Bonus

So I'm working on a new Performance Measurement system. There's a lot of 'articles' about it out there, but not many actual 'real life' examples. Maybe it's too confidential.

Really liked this site: Work911
Good place to start.

Also liked this example for setting up a bonus system. In China, a bonus is a MUST. Most employees expect one month salary around Chinese New Year.

Similarly, after CNY is a good time to recruit.