We dont need no steenkin' domain knowledge
"Domain Knowledge is what makes you a player"
Very recently, a colleague of mine was told this by a visiting client: "This C++ and java knowledge is all fine. But to really be a contributor, you need to learn about the domain you work in. Learn Domain1, and Domain2, read the mailing lists on those topics, ask questions and help drive those areas! Only then will you become a player in this profession."
Which is all fine, my colleague tells me, except that in the space of the past year or so, he's worked on three different projects, in three different domains. This was because the first project shut down suddenly (the clientside team's budget was exhausted) and the second project was a pilot that didnt find any customers. And there are any number of factors that could go into him changing the current project too. Which has left him with no inclination to study the Domain areas pointed out by the client.
This sort of thing happens if you were working with a product company, too. People working at, say, Microsoft do get shunted to different projects. But I dont think the way this sort of thing is handled at outsourcee companies is anything like those transfers. In a product company, there is some guiding principle on the kind of work you do. Microsoft is unlikely to make you work in Solaris. Oracle isnt going to make you write Image Processing tools. Even when moved from one project to another, the business principles that guide the movement are consistent across the company. They reflect some broad policy changes and focus shifts. In fact, your shifting has a lot to do with the domain wou work in.
Your typical outsourcee company has nothing like a guiding policy, or (if they can swing it) nothing like an area of specialization. It takes on whatever work comes its way. In whatever domain, platform, language, or duration. It knows that the relationship is going to be built up slowly, with simple work coming its way to start with. There is enough time for its employees to grow into the work. And when an employee is shifted, what usually happens is that the shift is because of budgetary constraints of the client, or urgent needs of some new client. There's no guarantee that the domains of both projects are the same... or even the platforms, languages, anything at all! The only requirement to join the new project is usually good analytical skills, computer science theory, and familiarity with the new programmming language.
So given that he could be shifted out of the project at any time, and that the domain knowledge he gets might never get used in life again, what incentive exists for an outsourcee employee to acquire more than the projects requirement? If he's lucky and stays in one project for several years, working his way into the core of the product, he'll pick up the domain skills. But at the outset, there's no professional motivation to be anything more than a code monkey.
A boss I worked under, years ago, once told me to develop domain skills in some area, any area I liked. It neednt be project related. It would give me some satisfaction as I went on. I followed his advice for a while. Today that stuff I learned is hardly ever used in my current project. I could, of course, continue to update myself in my chosen area, but that would have be done on my own time - my client wants every minute of my productive time for their work. And I do not ever see domain expertise being a reason for my getting some work (remember my point about about only easily-learnable work coming to outsourcee companies?). So why should I be putting in time into learning anything, when I can work overtime for my client, and get a promotion by fixing his bugs faster?
I'll say this again for those people who've done it : It is possible to become a domain expert here. You might be in one project for years. You might decide to put in an hour a day into following the mailing lists. You might really love some field enough to keep track without telling your boss. But all these are your own efforts. The company doesnt gain from them, so the company will not invest in them. Your average employee of an outsourcee company is not a domain expert on anything, except maybe some programming languages. Nor does the work that comes to him require domain expertise, mostly, so it fits fine.
A friend of mine recently realized this while on assignment at a client's site. He came back and told his boss, that it didnt look like we were ever going to get any core work. Him and his team mates would be doing only peripheral work that required no domain skills. The boss's reply was, "That works for us - keeps things manageable." Q.E.D.
P.S. Thanks for all your good wishes when I was off sick. This article was written partly before and partly during my off period, so it might be a bit disjointed. Still makes the point clear, I hope.
Very recently, a colleague of mine was told this by a visiting client: "This C++ and java knowledge is all fine. But to really be a contributor, you need to learn about the domain you work in. Learn Domain1, and Domain2, read the mailing lists on those topics, ask questions and help drive those areas! Only then will you become a player in this profession."
Which is all fine, my colleague tells me, except that in the space of the past year or so, he's worked on three different projects, in three different domains. This was because the first project shut down suddenly (the clientside team's budget was exhausted) and the second project was a pilot that didnt find any customers. And there are any number of factors that could go into him changing the current project too. Which has left him with no inclination to study the Domain areas pointed out by the client.
This sort of thing happens if you were working with a product company, too. People working at, say, Microsoft do get shunted to different projects. But I dont think the way this sort of thing is handled at outsourcee companies is anything like those transfers. In a product company, there is some guiding principle on the kind of work you do. Microsoft is unlikely to make you work in Solaris. Oracle isnt going to make you write Image Processing tools. Even when moved from one project to another, the business principles that guide the movement are consistent across the company. They reflect some broad policy changes and focus shifts. In fact, your shifting has a lot to do with the domain wou work in.
Your typical outsourcee company has nothing like a guiding policy, or (if they can swing it) nothing like an area of specialization. It takes on whatever work comes its way. In whatever domain, platform, language, or duration. It knows that the relationship is going to be built up slowly, with simple work coming its way to start with. There is enough time for its employees to grow into the work. And when an employee is shifted, what usually happens is that the shift is because of budgetary constraints of the client, or urgent needs of some new client. There's no guarantee that the domains of both projects are the same... or even the platforms, languages, anything at all! The only requirement to join the new project is usually good analytical skills, computer science theory, and familiarity with the new programmming language.
So given that he could be shifted out of the project at any time, and that the domain knowledge he gets might never get used in life again, what incentive exists for an outsourcee employee to acquire more than the projects requirement? If he's lucky and stays in one project for several years, working his way into the core of the product, he'll pick up the domain skills. But at the outset, there's no professional motivation to be anything more than a code monkey.
A boss I worked under, years ago, once told me to develop domain skills in some area, any area I liked. It neednt be project related. It would give me some satisfaction as I went on. I followed his advice for a while. Today that stuff I learned is hardly ever used in my current project. I could, of course, continue to update myself in my chosen area, but that would have be done on my own time - my client wants every minute of my productive time for their work. And I do not ever see domain expertise being a reason for my getting some work (remember my point about about only easily-learnable work coming to outsourcee companies?). So why should I be putting in time into learning anything, when I can work overtime for my client, and get a promotion by fixing his bugs faster?
I'll say this again for those people who've done it : It is possible to become a domain expert here. You might be in one project for years. You might decide to put in an hour a day into following the mailing lists. You might really love some field enough to keep track without telling your boss. But all these are your own efforts. The company doesnt gain from them, so the company will not invest in them. Your average employee of an outsourcee company is not a domain expert on anything, except maybe some programming languages. Nor does the work that comes to him require domain expertise, mostly, so it fits fine.
A friend of mine recently realized this while on assignment at a client's site. He came back and told his boss, that it didnt look like we were ever going to get any core work. Him and his team mates would be doing only peripheral work that required no domain skills. The boss's reply was, "That works for us - keeps things manageable." Q.E.D.
P.S. Thanks for all your good wishes when I was off sick. This article was written partly before and partly during my off period, so it might be a bit disjointed. Still makes the point clear, I hope.
8 Comments:
The company is never actually interested in helping you build your domain knowledge. Ask them to sponsor for a professional certification by a certifying body, then the fun would follow. You make valid point and quite strongly. Domain knowledge is a big joke.
The company where I work started having domain competency center of excellence and we were asked to consolidate and build our competency in knowing our domain. I asked HR if I today start learning, in general, about my vertical, and tomorrow when I am on bench, and some other vertical wants my x-skill set, I will be shunted to that vertical. Whats the point in really understanding the domain, esp when domain hardly is interesting to me. HR told me not to be cynical. Well, knowing the oddities and stupidities where such outsourcee (dis)organizations thrive, how can I not be cynical?
Best part about the doamin CoE is that instead of extracting doamin knowledge from projects and coumenting them, they started floating 10-page questionaires and asked people to fill up. One of the persons filed a B2C project under content management domain. Only that much was his knowledge. CoE never knew about it and never made an attempt to knwo that. After 3 years, what are they doing today? One of them is doing project delivery )can you believe it?), another one is billing as business analyst - body shopped at client place, and their head is doing Biz Dev and Marketing in a newmarket. CoE head was a shopfloor person in his earlier avatar in his domain.
Another experience of this domain joke is one of the nurse recruited into healtcare domain is the project delivery manager for a project and stting onsite. ANother HR admin who was able to butter VP nicely is a Peoplesoft consultant because he is from HR domain.
Give me a break!!!
The company is never actually interested in helping you build your domain knowledge. Ask them to sponsor for a professional certification by a certifying body, then the fun would follow. You make valid point and quite strongly. Domain knowledge is a big joke.
The company where I work started having domain competency center of excellence and we were asked to consolidate and build our competency in knowing our domain. I asked HR if I today start learning, in general, about my vertical, and tomorrow when I am on bench, and some other vertical wants my x-skill set, I will be shunted to that vertical. Whats the point in really understanding the domain, esp when domain hardly is interesting to me. HR told me not to be cynical. Well, knowing the oddities and stupidities where such outsourcee (dis)organizations thrive, how can I not be cynical?
Best part about the doamin CoE is that instead of extracting doamin knowledge from projects and coumenting them, they started floating 10-page questionaires and asked people to fill up. One of the persons filed a B2C project under content management domain. Only that much was his knowledge. CoE never knew about it and never made an attempt to knwo that. After 3 years, what are they doing today? One of them is doing project delivery )can you believe it?), another one is billing as business analyst - body shopped at client place, and their head is doing Biz Dev and Marketing in a newmarket. CoE head was a shopfloor person in his earlier avatar in his domain.
Another experience of this domain joke is one of the nurse recruited into healtcare domain is the project delivery manager for a project and stting onsite. ANother HR admin who was able to butter VP nicely is a Peoplesoft consultant because he is from HR domain.
Give me a break!!!
This comment has been removed by a blog administrator.
This comment has been removed by a blog administrator.
I agree that if a person changes projects rapidly on different domain, he/she won't learn a thing. I feel that knowing a domain is like knowing an algorithm. Without the domain knowledge, you are like a C/C++ coder out to implement say a bucket sort or whatever and the first thing the coder has to learn is the algorithm for bucket sort etc. Knowing the domain/backgound/algorithm helps. It gives you that edge over other code monkeys.
Considering the fact that there are loads of programmers in India, why would some one hire a guy with 5 years of work experience who almost cost 2-3 times more as compared to a freshie? Agreed a freshies code may not be very good, but after 2 years of work experience I believe almost everybody codes at the same level. After 2 years, you know all the common mistakes etc etc...so what do you do now? 1. Learn another language?... What for??? or 2. Learn about a domain...I hope you will agree that if a project say Google's AdSense came to your company for some work, then having your background of having worked on projects regarding determining user-preferences and profiling them would help. However, the company's HR operate with the following motto: "If there is a resource requirement, plug it withwhatever is free". Who wants to do a background check on skills and area of expertise in this small big company? :) When someone tried to put you on a new project on a new domain, state clearly that you want to work on XYZ domain only. I guess a guy of your calibre can pull that off without endangering your job. And given the thriving job market in India, you don't have to worry...you got friends all over the country waiting to have you in their new companies. :)
All companies would like to grow, but to pick whatever comes your way is sheer madness. I am sure you can recall some project that the company lost due to false claims and code monkeys struggling to live up to those false promises. What image does it project? A partly postitive and partly negative, I guess.
When you are asked to develop your expertise in an area, chose an area you are really passionate about (for me it was search engines and hence LANScan)...or some area that coincides with your area of work (say testing ;)). Yes, building this domain expertise comes at your own effort. Please also note that the false claims and promises that the Biz Dev people make also has to be achieve by you and that takes a lot more effort because you have to learn a lot in a short duration of time. Isn't it better to develop your expertise at your own pace, then claim to company that you are the expert in say Telecom and any new project in Telecom, you are up for the challenge, willing to face a potenial client to convince him that our company is your best choice in seeking a Telecom outsourcee.
You say,"That works for us - keeps things manageable". As you pointed out, IT companies are grabbing any thing that comes their way. When we Indian are used to working like that do you really think such companies can develop world class products of their own. We offer services which barely classify as services. I don't know how many of you may agree, but Indian tend to do patchy work...just plug it and move on. The 'chalta hai' attitude is too prevelant. Why would someone want to give the core work unless we consistently demonstrate excellence? The trust will come after persistent efforts. The old clients who have been with us for long, know our capabilitesa nd we do get core work from them.
Aditya
Aditya
The point is the outsourcee companies are nowhere closer to actual domain knowledge application in projects. Barring a few projects, mostly its only the periphery one is subjected to. Having had 5 years experience, let me tell you, customer doesnt want to hear about all domain knwoedge coming out of outsourcee company. Their mindset is blocked. As long as Indian companies are seen as sweatshops, the domain knowledge building and all is a crap.
The HR incident I narrated happened 3 years back. With just 2 years exp, no one wants to listen. Next, to fgure out what client wants from business point of view, so as to understand solution better, the detailed domain building exercise is not needed - except out of own initiative to take interest and understand domain - a simple google search, few Gartner analyst reports and accessing journals would do.It is only at that level does the solution to implement focuses at -- the periphery thats it! To understand what I mean, just take a survey of how many Indian companies are working on general motors' onstar project. Almost all top indian outsourcee companies. Figure out their scopes, and you will be surprised that none directly dlves deep into the OnStar, but develop work for support or peripheral activities.
Its good to have a positive outlook like you have, but then we also know the truth.
Outsourcee companies are like hardware stores vendors who are willing to provide a customer with tomatoes/hotel reservation or any other weird thing which a customer wants, as long as they can make some money out of it. I agree that most outsourcee companies do not really possess any true domain expertise. This is because of two reasons:
1. Companies never say NO to projects even when the project is of a another/new domain. They take it up an another new oppurtunity of making money and placing this challenge on to developers.
2. Flux within the company - for better salary in another company or for a change in work ie. to find more challenging work.
Now, when you have companies doing everything and anything that comes their way, then these companies don't really have any expertise. If I had a project to be outsourced, I could never trust such companies completely (who often bloat and say they have done similar projects in the past - liars!) and would give them unimportant work, low risk tasks or generic taks that anyone can do (at least to being with until they have demonstrated and proven their capabilites. Without expertise you are not going to get core work, only peripheral work.
Having prior knowledge certainly helps. I would classify a company XYZ to have domain knowledge of say Telecom etc if that company, on its own, can build broad ranged telecom "products" on its own. Which then brings us to the point that most of the outsourcee companies are services companies and not products companies...so they'll never get to the core areas.
Aditya.
Precisely Aditya. Unless the companies start seiously investing in products and R&D, the magic might not last. India might just remain World's backoffice's back office.
Post a Comment
<< Home