Like many companies outsource to India, my company come to realize outsourcing is not as effective as the business magazine claims. No one can escape from the fundamental law of economics, what you pay is what you get. Yes, going to India seems cost saving on paper, but it really sacrifice the quality of work, which often don’t show up in any project management matrix until it’s too late. This week, I doing code review for my Indian team. Their code is so bad that it is driving me nuts.
In the project status meeting, one of them claim his code is done, all the tasks are completed. However, when I review the code, it’s all garbage. The code is not doing anything, not testing what the program suppose to test. It is pretty much a glorify print statement that prints “PASS” at the end. I have tell him rewrite the code from scratch. Maybe we forgot to tell him on top of meeting the schedule, the program also has to work.
I review other code pieces from other Indians programmers. Well, the code works, but it is the ugliest code I have seen in a long time. Instead of writing a for-loop, one guy copy and paste the code 4 times and change the index in each code segment! Instead of using a single if-else statement, another guy split the code into a dozen if-else statements having exactly the same if condition. Maybe they were paid by the number of lines of code they write, so they purposely inflate to make the program look larger.
To be fair, a few of them are quite decent, but I found the majority are just simply annoying. I wonder is it a cultural problem that Indians are sloppy in general or I am just (un)lucky enough to work with mostly incompetent people?
I am back in India for two weeks. I am not very excited, but work is work. This time I am taking dragon air and make the transfer in Hong Kong. The new 777 from Air Canada is pretty comfortable, the seat is wider and it has power sockets. I can keep my laptop charged and use it for the whole trip. The wait for transfer is 4 hours, so my dad came to the airport and I went outside of the restrict area to have dinner with him. On my flight from Hong Kong to Banagalore, I think I am the only Chinese on the plane, except the air hostress. I can’t believe a flight flying out of HK, running by a HK airline has no Chinese passenagers.
I touch down on the new Bangalore airport. It is much better than the old airport. From afar, it is pretty up to world wide standard. Although things still a bit shady when you look closer. Like the roof is not properly sealed, the door is kinda flimsy. There are no hawker trying carry your luggage and charge you a ridiculous fee. The custom has more counters, compare to only 2 counters in the old airport. No more tuck-tuck waiting outside trying to fish passengers Any how, it is still quite impressive. The new airport is far away from the city, so there a nice highway going into town. The highway is lit and has line on the ground. Other than occasional speed bump in the middle of no where and stop signs that everyone ignores, it is on par with newly developed countries like Taiwan or Korea. As I was praising the construction and though Indian has finally start getting better, the highway just ends. Yes, the highway ends abruptly and become a grave road right before entering the city. The airport highway is not connecting to any major road in the city, it just ends on the outer skirt of the city that goes no where. Ok, India is still India. It’s still not quite there yet.
It always seems work is extra busy right before you are about to take a long vacation. I will be away 3 weeks for my wedding and honey moon. There is only 1 week of work time left before I take off. Although I have planned the vacation many months ago and schedule all my tasks around my vacation, according to Murphy’s Law things usually won’t line up nicely as expected. In a team work, you depends on other people’s work and other people depend on your work. I planned my deliverable to other team members around my vacation so I won’t be the bottle neck when I am away. Somehow everything I depends comes in late, my time ended up squeezed significantly. If I am not going away, I could just finish my work a bit later. However when I am going away for 3 weeks, delay is not an option. Other people are depending on my work, if I don’t deliver, they will be sitting idle. Luckily I take a week off before my wedding to recover form the pre-vacation work stress.
I am reading an article on business week about the ethics of taking vacations. In the article it says some people will feel guilty for taking vacation. They think they are stealing from the company and should work non-stop everyday. Are they nuts? Vacation is part of the compensation of your hard work. Why would you feel guilty for exercising their hard earned vacation. In a modern cooperation, any employee is replaceable. If the work load is structured right, absents form work a few weeks should not have much impact to the company. If you are so important that you can’t leave work for a few weeks, it implies the company will be in deep trouble without you, then why don’t you get the hefty pay raise you asked for? Taking vacation is not only good to your mental health, it also good for you career. The company will not know how important you are and appreciate your work until you disappear form the office. The ideal scenario is that company can feel the pain and inconvenient of your absence, but not bad enough it things start falling apart.
Today we have our department quarterly update. The director flew in town to give us overview of how the department is doing. My project is the only project in the department, so it has very high profile and no room to fail. Thanks to the stupid decision of close down two design centers in Canada, lay off many experienced engineers and outsource the work to India, the project is quite behind schedule. Now the management finally wake up and realize the problem, they are all scrambling and try all means to pull the schedule in. They try to add more resource in India, but they simply could not find any qualified engineer.
They try to hire back ex-employees from the closed design center as contractors. It is pretty much admitting last year’s decision to close down the site is stupid. One desperate measure to they try is by making us work hard and longer hours. This idea won’t work if they use the stick because it would only demotivate us and further lower our productivity. They try to use carots and lure us to work overtime. The director said if the project is finish on time, the whole team will have a special bonus as incentive.
This idea sounds great, the only question is how much is the bonus. The director did not give us any number or percentage, so the incentive won’t work. No one would work harder if they don’t know roughtly how much we will get in return. After the meeting, some of us did a rought calculation, we all agree that the bonus has to be at least $10k to be attractive. Judging from previous record of the company, the so call special incentive bonus could be merely a few thousand dollars, which won’t worth working your ass off.
In this project, I am supervising 3 team members in our India office. This week, I am really disappointed by their lack of productivity. I have assigned them some tasks for the week and they are very behind in completing the tasks. It would take me two days to finish those tasks my self and I already take the difference in experience into account and gave them a week of time. It turns out their deliverable is still late, it looks like that will take them another half a week to get to done. It seems I have over estimated their productivity. I am quite unhappy about their work. How can I finish the project on time with these three not performing grunts?
On a second thought, maybe I should be happy about their lack of productivity. The company should know the gold rule: what you pay is what you get. The Indians get a 1/4 of my salary, it is quite obvious that they are as good as me. If they cost much less and still work almost as good as me, then I should start worrying about my job. Finish the project on time and drastically cut the cost by outsourcing is a mission impossible to begin with. The deadline is expected to slip. As long as it is not my fault and there is nothing I could do, I cannot be blamed for the failure. Failure is the mother of success, as long as we learn the lesson. I think the lesson I learn from this outsourcing experience is that I should never over estimate the productivity of the Indian contractors, especially the junior guys.
The schedule of the project at work is really bad. My part has been slipped for almost 3 weeks already. I suppose to have 1.5 months to verify my block before I take off for vacation. However my work depends on the deliverable from other team members. Both the RTL design and the testbench components are late and cause a cascade effect to my schedule. Now I only have a little more than 2 weeks before my vacation and those parts are still not working. Today I got another release from Saskatoon, but it turn out the code is so buggy that it is unusable. It seems the first milestone of flushing out the datapath has to wait until I come back from Germany. The managers keep saying my block is not on the critical path so it can slip a bit. I hope the schedule will not get out of control and put me in the hot seat when it’s time to tape out.
In the quarterly design analysis meeting, the manager of a cancelled project blamed the failure partly on the delay in verification. In that project, the verification schedule is underestimate at least by a factor of four. I think his comment is not totally fair to the verification team. One of the problem rooted from the myth of reuse. When there is some existing infra-structure available, the management just assume there is zero effort in reusing them in a new project. The reality is most of those so-call reused component are not structured nicely for reuse, and worse many of them lacks proper documentation due to schedule pressure. A true reuse component should have the quality of verification IP purchased from 3rd party vendors. Anything thing short of that quality should use a different term instead of reuse to stop confusion in project planning. Most of the time that falls into the port category, which require complete understand of the original code in order to use it with the new device. Sometimes that should be categorize as salvage, which is marginally better than writing fresh code. Mislabel salvage as reuse will only spell disaster later in the project
There is another round of layoff today in the company. We had already lost track of the number of layoff, it maybe the fifth or the sixth round. It is not affecting the Headquarter in Burnaby at all. Over 60 engineers are let go in the Santa Clara design center, which is over 2/3 of the design team down there. It’s mainly due to the company decided to exit the custom MIPS core business, therefore we no longer need their expertise. We can foresee the closure of that division when we use the licensed core from MIPS instead the custom core in our own product. Upon hearing the news around lunch time, our usual group have a concern on the fate about Suzanne. Lucky that later in the day, she sent an email to all of us saying she is safe. From my experience and what I heard from other companies, it’s always more secure to work in the corporate headquarter or at least the regional main office. Tiny remote sites often become the first victim of downsizing.
Today during lunch Bob Bailey, the CEO of PMC, sat with our table. I knew this is going to happen when we picked his usual table in the first place. This is the first time I had ever talked to him since I joined the company. He is pretty much up to my expectation, a typical CEO. Can’t really say I like him or dislike him, he just exists, so my concern is how to make him most beneficial to myself. Most of the conversation are weather talks, nothing much other than bragging long hours or questions about the prespective of our products. His response is pretty typical too. At last I put up my courage to bring up the idea of giving two monitors to every engineer to increase productivity. He seems quite interested in the idea and asked me to give him follow up information. So I wrote up a memo in the afternoon and send it off to him together with the reseach paper I had. I don’t know what this will lead to, probably he will just throw it away without looking. If he indeed like the idea, then finally I will have dual monitors after trying so many times. I have nothing to lose anyways.
Tonight our project team had a team building dinner with the leaders from Saskatoon. The food and beer are great, and most important the expense is covered by PMC. In the dinner, we had talked about how expensive it is to file a patent. It costs tens of thousands of dollar to hire a lawyer to word the patent using those legal terms. Then I came up with an idea, why don’t we have software automating this process? Legal language is a subset of normal language, and each word has a specific meaning, which is similiar to logic statements understand by computers. The goal is to create a software that will translate contracts and patents written in daily english into a legal document. It would be a great idea for inter-discipline research among the liguistic, CS, and law departments.