Sunday, September 21, 2008

Do code-generators have domains?

When I was doing my first job change, I was interviewed by the employees of a particular IT company. From their body language, I understood that the guys interviewing me were new to interviewing people. During the course of the interview, one of the guys asked me what I had done in my previous employment.

Now in my previous job (a software product company), I was involved in the support and development of a code-generator that generated web applications. Users would specify their requirements as pseudocode and our code-generator would generate the code in the language of the user's choice. We gave the users three choices in which he could generate the code: Java, Struts and .Net.

So I told the interviewer that I was involved in the development of a code-generator.

Interviewer: OK, in which domain?
Me: Domain?... (A few minutes of confused, frantic thoughts) What do you mean by domain?
Interviewer: Surely you must have worked in some domain!!

Actually, I hadn't even heard the word 'domain' before!! What were these guys talking about?

Me: Sorry... I don't know!!

The interviewers moved on to the next question.

But that question has stayed in my mind ever since. The company in which I later joined was a software services company, and a few months later, it slowly became clear to me what the interviewers had meant.


What is a domain?
In India, there are mostly only software services companies. There are software product companies, (I am not going to deny that), but what you hear more talked about are the services companies. These companies provide IT solutions to various clients. The client can be from any industry - manufacturing, health care, travel, etc. etc. Hence to provide better services to the clients, any IT company generally divides itself up based on the industries it is servicing.

So in effect, you find the IT services companies grouping the clients they are servicing into these divisions. As an example, let us take a fictional IT company. It has 3 clients - two make cars, while the third is a hotel chain. Thus, this fictional IT company would group the first two into its manufacturing division, while the third would be grouped into its hospitality division.

It is this concept of a 'division' that is given the name 'domain' by the IT industry. But why should they do this? Simple... so that they can provide better services!! A guy who was worked for a significant amount of time in a particular domain begins to understand its intricacies. This means he can provide better value to the clients.

So when a guy from another IT company interviews for your IT company, it is logical to ask him which domain he worked for. This is so that in case there is a vacancy in that particular domain, you can place him there. This would ensure that he continues his growth career-wise, while also ensuring that you reap the benefits of his knowledge!!


Unhappily...
Code generators don't fit the bill!! The main purpose of a code generator is to generate code. Given an input, it generates the output for it, and that's it. Hence, they can be used in any industry!! Nobody can mandate that a code-generator must be used only in the automotive industry, for example. It just cannot be done!!

And that is the reason why the interviewer shouldn't have asked me that question. Plainly said, it is foolish.

Repeat to yourself: Code generators do not belong to any particular domain!!!