Sometimes computer science, IT or electronic and communication
engineering students get placed in two or three major Indian IT
companies and they find it hard to decide which one to join. "Infosys,
TCS, or Wipro?" is one of the most common questions I have faced from such
students. The answer is much simpler than they think it is.
This blog post is not about how these companies are large employers
creating a lot of jobs in the market. I acknowledge their efforts. This
blog post is not about undermining the efforts of these companies. They
are probably good at keeping their customers happy.
This blog post is about a choice that freshers usually have to make and
the information they should have before they make the choice. This blog
post is about urging the freshers who want to make a career in
engineering to not make a mistake that I did because I did not have the
necessary information at the right time; a mistake that I could correct
two years later after I realized it. This blog post is about some very
unpleasant facts about these major Indian IT companies that you wouldn't
know unless you have been a part of it.
With the above disclaimer out the way, let me start.
Training: People think that these organizations are good for
freshers because they get a lot of training which they wouldn't get in
other organizations. I must remind such people that attending training
programmes is not equivalent to learning. Indeed these organizations
provide a lot of training to freshers but only about 1% of the trainees
actually absorb the knowledge. The 1% that do absorb the training do not
stick to the organization for a long time because sooner or later they
realize that they want to do some real engineering. The figure '1%'
isn't merely a guess. This is my observation across various
trainee-batches that have been trained in one of these organizations.
Think about it. Can you learn a new programming language in just 3
days? If your answer is "no", you shouldn't join one of these
organizations. If your answer is "yes", you shouldn't join one of these
Engineering: One can find engineering
problems in these organizations but no trace of engineering. This is
mainly due to poor guidance, high attrition rate of good engineers, and
a general lack of engineering culture. The next point elaborates
Engineers: The number of engineers in these organizations are
very very few; perhaps only 1 in every 200 is an engineer. This is a
guess, albeit not a wild one. This is why there is no engineering in
these companies despite the presence of engineering problems. "But isn't
the minimum qualification to get a job in one of these organizations
bachelor's of engineering?", you might ask. It is. Yes, all of them
have a degree in engineering or computers of some sort but only about 1
out of 200 is an engineer. The rest 199 do not understand why a bitcount
of A XOR B would give you the number of similar bits in corresponding
positions in both variables, why one can not create a POSIX compliant
regular expression to match only strings with balanced parentheses, or
how to find the shortest chain of connections between two friends in a
social network. Note that I have used 'or' as the conjunction and not
'and'. Now you might wonder why one should know these little things when
most of the things are done by libraries these days. I think such
attitude is dangerous in the world of software development especially
when robustness and security are concerns. Good understanding of
fundamentals leads to optimal and robust solutions.
One of the worst cultures you can find in the whole of software
industry. Very few are busy trying to learn a few things mentioned in
the previous paragraph. Some employees are busy figuring out ways to
impress their female colleagues using the resources provided by the
organization rather than learning and solving problems in better ways.
Others are busy cribbing. Here is a shocking piece of information for
those who have never worked for one of these organizations. One can also
manage to find mud-slinging in company forums once in a while.
Professionalism is at its worst here.
Onsite: Contrary to the popular belief, the number of trips to
foreign lands isn't a measure of one's technical prowess. Onsite
opportunities depend on a variety of factors including the department
you are working in, the nature of work, etc.
So, my answer to the question "Infosys, TCS, or Wipro?" is "None."
That's not very helpful. Here is a more helpful one. One can consider
applying for a job in an organization where he or she can get an
opportunity to solve some engineering problems. One cannot learn
engineering and programming merely by attending trainings. One has to
learn it by doing, solving problems, observing what experienced
engineers do, experimenting, screwing up a few times and reworking,
talking to good engineers, etc. One can try looking for an organization
where the leaders of projects are very good engineers. Start-ups are
more likely to have them. Some matured ones are
SlideShare, etc. New start-ups
come up every year. Software companies which develop famous and
successful products are more likely to have them. Some good examples are
etc. So, how does one
figure whether a certain organization is an organization of engineers or
an organization of good software users?
The clue is: Interview.
Remember the questions they ask in the interview. Think about them
later. Try discussing the questions with your friends who are known for
solving tough engineering problems. An interview is not only an
opportunity for an organization to evaluate an applicant, it is also an
opportunity for the applicant to evaluate an organization.
Update: October 28, 2011: This post got way more attention
than I wanted. It was discussed and debated at various places
on the web. As a result, here is a follow-up post: Re: Infosys, TCS, or Wipro?