Friday, April 5, 2013

Offshoring and Immigration

What it's like to work on an offshore project

I have seen some articles that suggest that the trend of offshoring IT projects is coming to an end. I celebrate this end but want to be clear that this is not because I am racist, xenophobic, or fear competition for my job. I am happy to see it end because it didn’t work, in my humble opinion; based on my own experiences with multiple companies, in multiple countries, and over the course of several years. That combined with common sense dictates that offshoring was never a good idea.

It seems like a lot of ideas are like a swinging pendulum. The pendulum goes out a certain direction, seems to pause, and then goes swinging the exact opposite way. For most things, the ideal position would be in the middle, but the pendulum swings for a long time before it eventually settles there, going too far in both directions for too long a time. So, why did anyone think offshoring was a good idea?

Once upon a time, I worked for Big Consulting. I really had no qualifications that made me useful to a client, but for some reason, they hired me anyway. On my first day on the job, I was handed a phone sheet with everyone’s name, phone number, and bill rate. Seriously, our bill rates were right there in plain view! Why we should all be aware of our bill rates - I don’t know. I had a BS degree and no practical experience and Big Consulting charged $140 an hour for my time. I was paid a pittance off of that bill rate, but I was in my twenties, happy to have a job, and was getting some experience.

On my first project for a healthcare company, I did nothing. I wanted to do something because I was all about getting some experience, but this was a “bill first and ask questions later” kind of project. We were given a directive straight from the lead partner from the Big Consulting firm that we were to work a minimum of seventy hours a week. Peon analysts, such as myself, would spend hours crafting decks to take to meetings with other peon analysts simply because we had way too much time on our hands. “This is bullshit!” I thought. And then I planned my escape.

I had heard rumors of people making $100 an hour doing SAP work. “I could do that,” I thought, “programming is easy!” Except simply saying I can figure it out wasn’t going to get me a higher paying job. I needed the stamp of Big Consulting’s legitimacy on me. I had some orientation coming up and some training time, if I pushed for it, and I decided to make the leap out of the healthcare project. I set a daily task and called (this was back before email was the main form of communication) a Senior Manager at the firm asking him if he would put me on his SAP project. For weeks, I left the same basic message. “Hi, this is Evan Zlotnick, and I am an analyst with the firm. I am currently on a healthcare project, but I have been hearing nothing but great things about the project you are managing for the utility company. Coincidentally, there is an SAP programming class coming up through the firm. If you would take me on your project, I think it would make a lot of sense for Big Consulting to make that investment in me and I promise I won’t let you down!”

I was relentless. Just when I almost gave up, I received a voicemail. “Evan, this is the Senior Manager. I get it. I would like for you to come on the project. Now stop leaving me the daily voicemails!” I was so happy. I literally jumped up and down in my girlfriend’s living room while I played the message on speakerphone. My evil plan was all coming together. I got myself off the healthcare project billing lots of hours for making PowerPoint presentations that were not needed or read by anyone and got myself enrolled in a class that would give me some mad skills. For my efforts, I won an all expenses paid trip to Foster City for a month.

Located somewhere between San Francisco and San Jose, Foster City is not the greatest place in the world, but then again, it’s not the worst. Big Consulting paid my salary and I went to four weeks of training to learn SAP’s proprietary programming language, ABAP. Our instructor was horrible at teaching and simply read PowerPoint slides to us. All of my bad habits from college came out. I walked into class each day, read the lesson plan, did all the programming exercises, ignored the instructor, and was done by noon. It was awesome.

I got myself on a project and picked up a whopping six months of experience as an ABAPer. I wrote some conversion programs and saw a project through to the first go-live. Then I bailed. With one month of low quality training followed by six months of writing some conversion programs, the market saw fit to pay me for a specialized skill set. Except ABAP is not as specialized as everyone thought it was - it bares a striking resemblance to COBOL. At the time, there were plenty of COBOLers out there who could have been converted to ABAPers in about a week for a fraction of the price.

I had my foray as a professional developer and it was cool, except I kept coming to the conclusion that the coding was not really the hard part. Understanding the business needs and priorities and getting the “real” requirements was the challenge. Also, the times were a changing and the market rates that were so high for SAP pre-Y2k slumped. Now companies were looking for a different trendy set of skills and I no longer had Big Consulting to fund my training excursions and throw me on projects to gain experience. I wandered out of the developer wilderness and into project/program management.

Meanwhile... The dual shock of the dotcom bubble had collapse and the 9/11 terrorist attacks had the economy of the United States in pretty bad shape. A lot of companies reacted to decreased demand with cost cutting. After years of paying Big Consulting and its brethren several hundred dollars an hour for consultants to do systems integration work, a lot of companies decided to try something new - offshoring.

Now, instead of paying someone $200, $300, or more per hour; a company could pay someone in India, China, Vietnam, or Thailand $20 - $40 per hour and cheaper is better, right? Except here’s the thing, for each programmer/analyst that was working onshore, they were replaced with four or more offshore resources. Then the projects took significantly longer. Even worse, if a system actually did get delivered, it was usually unmaintainable unless you forked over a lot of money in change requests.

This is not a racist rant. I have worked with a good many Indian and Chinese folks. The vast majority are extremely hard working and very intelligent. There is absolutely no reason that good professionals in another country cannot do quality work. Except here are some of the factors that prevent it:

1. Language Barrier. I grew up speaking English. I may be semi-coherent and inarticulate, but English is my first language. I took several years of high school Spanish and managed to satisfy my foreign language requirement at my university, but there is no way I could sit in a business meeting held in Spanish and contribute. Reading Spanish requirements would take me significantly longer. I would get frustrated and contribute less. Americans, British people, Australians, New Zealanders, and Canadians all have tweaked the English language a bit and we all have different accents. However, we can all understand each other’s accents - idioms and slang aside. Part of the offshoring myth was that Indians speak English. While some do speak English with a high degree of proficiency, there are a lot that are sold onto projects that do not. This is not racist. Again, I could not perform on a Spanish speaking project even though I have a few years of Spanish under my belt. Functioning in a second or third language is extremely difficult.

2. Geography. We live in an awesome time. I have worked with people across town or across the country and shared my screen and the distance did not seem to make much of a difference. We were able to have an extremely productive conversation, look at the same information, and make informed decisions using technology. It’s not really the distance that makes offshoring a colossal pain in the ass, it’s the time zones. Mumbai is 12 and a half hours ahead of the West Coast of the United States. No matter what time a meeting is scheduled, someone is miserable. I left a contract role at Microsoft because there were three weekly meetings that I was leading scheduled for 5AM. In order for me to function at 5AM, I had to wake up at 4:30AM. In order to get up at 4:30AM, I had to go to bed at 9:00PM. At the time, “Lost” was in its last season and I remember going to bed thinking, “I’m a grown man and I can’t stay up until 10:00 to watch ‘Lost’?” Due to the geographic distances and the lack of overlapping work hours; there are calls in the early morning to catch the offshore team as they finish their day, then there is work all day long in your own time zone, followed by calls in the evening to catch the offshore team as they start their day. It turns every work day into one long, unproductive drag with the same information being disseminated and rehashed over and over again. It invades every spare moment of your personal life. Spouses feel neglected, but even worse, kids need to be on a less flexible schedule and the morning and evening calls really cut into family time. Everything is out of synch. Decisions are made and the offshore team runs with them as best they can, when it’s 3:00AM and no one is around to ask questions, the offshore team starts making assumptions. Sometimes the assumptions are brought up the next day, but often times they are not until it’s too late. I worked with SAP China based in Beijing when I was in Melbourne. The time zone differences were not nearly as much of a problem because Beijing was only two hours behind Melbourne. We had a lot of overlapping hours during the day and I knew that I could schedule meetings with them throughout the day on a moment’s notice.

3. Travel. Wait, wasn’t offshoring about cost cutting? With SAP China, I spent a few weeks talking to them on the phone. My extremely direct style was a bit baffling to them at first. Then, the entire team assigned to us came out to Melbourne for a week. We spent the better part of every work day locked in a conference room off of St Kilda Road. Amazingly, our calls, emails, and updates got a lot better. However, this improved communication did not come cheap. Five people got on airplanes in China and stayed in hotels in Australia. There were taxi rides, meals, and incidentals. While we did manage to get together in person, hug, and sing “kumbaya”; the good feelings would have eventually tapered off which would have necessitated another trip every six months or so. That’s part of human nature. Even the most vocal supporters of offshoring advocate doing some kind of joint kickoff in person. Do these non-trivial travel costs get considered when talking about overall project savings?

4. Maintainability. With offshoring, IT is treated like a commodity. No one questions anything so long as the software delivers what it supposed to. Little things like design get thrown out the window to do things as quickly and cheaply as possible. Developers are under enormous pressure to get things working and really bad designs like hard coding get thrown into systems and products. If the business changes their mind later on? Then new projects have to be created to find all the hard coded lines, change a few things, and then thoroughly retest and redeploy everything. If a little thought, design, and review were put into the system; there would be much lower maintenance costs and headaches going forward.

5. Culture. Again, not trying to be racist, but... We have different ways of doing things here in America. This is neither good nor bad, it simply is. However, in the States, we want to know the truth. In India and China, there is a tendency to not want to deliver bad news. I have been successful in getting real information out of offshore teams, but I had to learn how to ask the right questions. I have never had information volunteered to me and I had to develop a script to ensure that I asked each question, the right way to continue to get quality information.

6. Blended Rates. Here is a little Big Consulting trick... Most clients don’t like the idea of spending several hundred dollars an hour for a consultant. So for every manager billing $300 per hour, Big Consulting throws on a heap of junior developers offshore billing $20 per hour. Then they present the client with a “blended rate” which takes the manager’s $300 bill rate and the offshore resources much lower rate and averages it out. Why anyone should care about the average rate instead of the total dollars spent per hour is beyond me, but this “blended rate” is talked about quite a bit. When I worked for iSoftStone (Chinese offshoring company), we had an offshore team of 20 people who did little to no work, but there sole purpose was to bring down our average rates so our “blended rate” looked better. All the real work was done right here in Redmond by higher priced, more experienced onshore resources.

It’s not that Americans are somehow naturally better coders (although we, as a people, are pretty awesome), the real problem is that there is a constant push, pull, and communication rhythm between developers and the business that is completely disrupted by the offshore model. There have been plenty of top-notch Indian and Chinese folks who have come over to the US and done a fantastic job. I have the utmost respect for immigrants. It takes a lot of courage to say, “I’m going to move halfway around the world and drive on the right side of the road. I’m going to take my family away from my support network, make all new friends, and figure out everything all over again.” Seriously, it’s hard. This country was built on immigration. Personally, I am only the second generation in my family to be born in this country. My ancestors were kicked out of every decent nation in Europe before arriving on these blessed shores.

My children’s classrooms are filled with the sons and daughters of immigrants and it makes me proud, as an American, to know that so many people want to be here that they will make that level of change. I’m happy that my children are exposed to this level of diversity and have a greater awareness of the world around them, unlike my upbringing in Arizona where I never spoke to a black person until I was in college.

Lots of companies currently say, “We need more immigrants. We need to increase the quotas on H1b’s!” And here is where I have a serious problem, because as much as I love immigrants, I hate the H1b program. What is not discussed when companies scream about needing more H1b’s is the way the program works. Big companies pay a decent amount of money to sponsor an H1b. The visa is then attached to the company that sponsors the immigrant. The immigrant is then tied to the sponsoring company. Should the immigrant be fired, they are then deported back to their home country. Here’s the worst part, the immigrants are often times paid significantly less than their American counterparts. If they had a green card or citizenship, they could look for another job if they felt like they were getting a bad deal, but legally, they can’t as an H1b. It’s nothing more than indentured servitude. Big companies love it because they get cheap, very loyal labor that will do whatever they say or face deportation. It’s not cool to the immigrants who come over and it distorts the market in the labor pool.

Here’s an alternate approach. Eliminate the H1b completely. Set some kind of limit on sponsoring immigrants and charge a boatload for it, say $50k per sponsorship. Then give the immigrant full work rights similar to a Green Card. If a company truly needs an immigrant with a very specialized skillset, they will still pursue this path. However, since the immigrant will have work rights and not be deported or have any issue changing jobs, the company will be forced to treat them pretty well. Their pay will be commensurate with their skillset and will not artificially depress the labor market.

My personal take is that it will force companies to invest more in their own people. From my example of spending a month in Foster City to learn ABAP, that tiny investment paid huge dividends. In tech, things are not as specialized as they seem. A good programmer with experience in C# can be productive in Java in days - it’s practically the same damn language. A little training and/or a little coaching would go a very long way. It would end the exploitation of immigrants through our existing H1b program and it would still allow us to welcome some of the best and brightest into this country. Meanwhile, I am hoping some sanity will be placed into cost cutting initiatives. The focus of cost cutting should not center around dollars per hour, but the overall cost of systems development. Offshoring makes no sense when it increases the amount of resources on a project, takes longer to deliver, often cuts corners and uses worst practices, and injects a huge amount of risk into an industry that is usually risk averse.

No comments:

Post a Comment