Sometimes computer science, information technology, or electronics and communications 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 I have for them is much simpler than they think it is. My answer is,

"None."

Before elaborating my answer further, I should first clarify what this post is not. This blog post is not about how these companies put food on the table for hundreds of thousands of engineers. This post is not about undermining the efforts of these companies. They are probably good at keeping their customers happy. This post does not intend to offend the employees of these organizations although that is going to be hard to avoid due to the nature of this post.

This blog post is about a choice that fresh engineering graduates usually have to make and the information they should have before they make that choice. This post is about urging these students who want to make a career in engineering to avoid making a mistake that I did because I did not have the necessary information at the right time; a mistake that I corrected 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.

Note: If you are not interested in making a career in engineering, lack the confidence to do so, or you are very content with working for one of these three companies for reasons that are valid to you, this post is not for you. It may not make any sense to you. You might want to stop reading this post here.

Let me now dispel the different myths that exist about these organizations one by one. I am not going to mince words while I do this.

Training: People think that these organizations are good for new engineering graduates because they get a lot of training which they wouldn't get in other organizations. I must remind such people that attending training programs does not necessarily amount to learning. Indeed these organizations provide a lot of training 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 work. The figure "1%" is not 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 organizations. Engineering: One can find engineering problems in these organizations but no trace of engineering. For those of you who work in one of these organizations and are offended by this claim of mine, please revisit your engineering textbooks again. Try to remind yourself what you studied then. Consider what you do now. 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 a degree in engineering the minimum qualification to get a job in one of these organizations?", you might ask. It is. Yes, all of them have a degree in engineering but only about 1 out of 200 is an engineer. The rest 199 do not understand why the bitwise operation bitcount(not (x xor y)) counts the number of bits in x and y that match in their corresponding positions, why one cannot create a POSIX Basic Regular Expression (BRE) to match only strings with arbitrary number of 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, not "and", in the previous sentence. They may be good software users or good "software-tailors" who can create software by stitching together many library functions but they aren't engineers. Culture: These organizations have one of the worst kinds of culture you can find in the whole of software industry. Very few engineers are busy trying to learn engineering. Many employees use the company resources such as corporate blog, bulletin boards, etc. to flirt with their female colleagues. 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 the corporate forums once in a while. Professionalism is at its worst here. But they convince themselves that they are professional because they speak English fluently and know how to wear a tie. Employees feel their salaries are pathetic. I feel they are overpaid. How much should such unprofessional people earn? Onsite: Contrary to the popular belief, the number of trips abroad is not a measure of one's technical prowess. Onsite trips are usually driven by project requirements. As a result, they often depend on luck. The work done during onsite visits can range from technical support to firefighting. In fact, some of the smartest engineers I met in these organizations were not eager to go for onsite trips due to the stressful nature of the work involved. Most of them left these organizations, joined a better organization where they could put their knowledge and skills to better use and then flew abroad to work on good problems where their knowledge and technical skills were actually required.

Therefore, my answer to the question "Infosys, TCS, or Wipro?" is "None." That's not a very helpful answer. 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, reworking, talking to good engineers, etc. One can try looking for an organization where the leaders of projects are very good engineers. Startups are more likely to have them. Some matured ones are Gluster, Parallocity, SlideShare, etc. New startups come up every year. Software companies which develop famous and successful products are more likely to have them. Some good examples are Adobe, Amazon, Google, Phoenix, RSA, etc. How does one figure whether a certain organization is an organization of engineers?

The clue is: Interview.

Remember the technical problems they discuss in the interview. Think about them later. Try discussing them 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 on 28 Oct 2011: This post got way more attention than I had anticipated. It was discussed and debated here in the comments section as well as on Hacker News and Reddit. Here is a follow-up post that addresses some of the points discussed in these debates: Re: Infosys, TCS, or Wipro?.