Message on Whatsapp 8879355057 for DSA(OA + Interview) + Fullstack Dev Training + 1-1 Personalized Mentoring to get 10+LPA Job
0 like 0 dislike
1,588 views
in Service-based-companies by | 1,588 views

2 Answers

0 like 0 dislike
  1. India needs IT services companies: The most popular argument by Indian commenters has been that India needs IT services companies because they make a lot of money and boost India's economy. This is a straw man. I have never said anything to the contrary. In fact, I agree with this point. However, in my opinion, students who have learnt their engineering well during the engineering course and who now want to improve their engineering skills in their professional lives should not work for one of these companies. They should join a startup or a company known for hiring skilled engineers.

  2. Business problems vs. engineering problems: Another popular argument has been that a software company is not a place to demonstrate your engineering talent. Many argue that it is a place to solve business problems, not engineering problems. I disagree with this very firmly. Business problems and engineering problems are not mutually exclusive. The reason why many employees of these companies feel that solving a business problem wouldn't involve solving an engineering problem is that they are not skilled enough to even realize whether a particular business problem has an engineering solution. I've mentioned in my earlier post that engineering problems are there in every software company. It needs the mind of an engineer to identify those problems and solve them correctly. Not all string parsing problems should be solved with a chain of string library functions stitched together. Some string processing and parsing work can be done more efficiently and reliably by coding a simple DFA. Not all data should be maintained as records in an array. Some need to be maintained as graphs. A superficial knowledge of regular expressions can be dangerous if one does not know what kind of patterns they cannot express.

  3. Business problems and engineering problems: If you want to solve business problems and keep your customers happy, Infosys, TCS, or Wipro might be the right place for you. If you want to solve business problems, keep your customers happy, and learn a great deal of engineering while doing so, you need to find another workplace where you can work with a team of skilled engineers who you can give you constructive feedback on your work.

  4. Engineering in Adobe, Amazon, Google, etc.: A popular myth that prevails among many is that there is no engineering work to do in the Indian offices of Adobe, Amazon, Google, etc. I'll reiterate that there is engineering work to do in every software company, even in Infosys, TCS, and Wipro. It really depends on the people whether they want to take engineering seriously or not. Some people would somehow develop the required software by stitching together library functions and give up or look for inefficient workarounds when a particular task requires inventing a new engineering solution. There is another kind of people who are ready to invent new engineering solutions with all the engineering knowledge they have. They do not hesitate to reinvent the wheel when the existing libraries do not meet the requirements of the particular problem at hand. Such engineers are more in number in startups like Gluster, Parallocity, SlideShare, etc. and companies like Adobe, Amazon, Google, Phoenix, RSA, etc. These companies also collaborate with universties to learn new techniques and concepts to solve business problems. These companies do not look for inefficient workarounds when faced with a brick wall. They challenge themselves and do everything possible to solve a problem in the best possible way. These are the places where fresh engineering graduates can hope to learn a great deal of engineering from people around them.

  5. Passionate people can do engineering anywhere: Another popular argument is that it doesn't matter where you work. One can do engineering anywhere, be it Google or Infosys. I agree with this. But then, given a place like Adobe, Amazon, or Google where the culture and the environment encourages good engineering and another place like Infosys, TCS, or Wipro where people are generally clueless about good engineering, where do you think you are going to learn more and improve yourself faster?

  6. But not everyone can join Adobe, Amazon, Google, etc.: Well, I never said that everyone should get into a reputed software product company. Not everyone wants to make a career in engineering. Some people have other goals in life. They just want a regular job. It sounds perfectly fine to me. My post was written for those who aspire to make a career in engineering. In my opinion, they should try to get into a reputed software product company or a startup that is known to hire skilled engineers. If they aren't well prepared, the only thing they can do is to prepare well to fulfill their aspirations. Some people say that they should join Infosys, TCS and Wipro to earn a living while they are preparing and I think it's a great advice. I'll suggest considering contributing some new features or bug-fixes they would like to see in some open source project. Apache Incubator has a lot of budding projects. They can also consider authoring their own open source projects. They can also try solving problems at TopCoderCodeChefSPOJProject Euler, etc. to improve their algorithm skills. These are good ways of preparing in my opinion.

  7. Infosys, TCS and Wipro have good engineers: Many people have told me that there are good engineers in Infosys, TCS and Wipro as well. I agree. I never mentioned that 100% of the engineers in these companies are clueless about engineering. I mentioned that the majority of them are clueless. In fact, drawing from my personal experience, I quoted a figure that only 1 out of 200 are capable of good engineering in these companies. Like most guess work, this figure could be wrong but I am pretty confident that the bigger picture I am trying to paint here isn't.

  8. Training: Many claimed that I am wrong about the poor standard of training programs in Infosys, TCS, or Wipro. I must tell them that I have attended some of these training programs myself. Among the many horror stories pertaining to training in these companies, let me share only one with you to make my point. In the training assessments, the instructors set question papers containing problems with code that invokes undefined behaviour and ask you to predict its output. "It invokes undefined behaviour" is not provided as an option you can select as the correct answer. Such training and knowledge is not only wrong but also very dangerous. This kind of flawed knowledge leads to the development of unreliable, fragile, and insecure software.

  9. Meritocracy: A few friends of mine expressed that I should have mentioned that these companies do not practice meritocracy. Anyone with sufficient number of years of experience can get a promotion in these companies. It didn't occur to me while writing the earlier post but this is true.

  10. Leaving Infosys, TCS, or Wipro: Some commenters commented that people like me just leave these companies and discourage others from joining them. They feel that we choose the easy way out. They would rather have us stay in these companies and improve them. Firstly, getting a job in a reputed company with a strong engineering culture is definitely not the easy way out. You have to be passionate about your area of interest in technology. You have to work hard and prepare yourself for it. Secondly, Infosys, TCS, and Wipro were made by their founders with a particular vision of providing IT services. They have achieved what they wanted with great success. The improvements that you want us to make in these companies may not be consistent with the vision of the founders. It makes more sense for us to join companies where the vision of the founders is consistent with our aspiration for doing good engineering work.

  11. Solving algorithm problems vs. editing configuration: This has to be the strangest argument I have come across. Someone mentioned that a person who solves algorithm problems earns no more than someone who only edits configuration files. After seeing both sides of the software industry, I find this false. Solving an algorithm problem is one thing. Solving an algorithm problem efficiently is an entirely different thing. I have seen people who can solve difficult algorithm problems efficiently in a company with a strong engineering culture earning at least three times to five times more than those working for Infosys, TCS, or Wipro

by
0 like 0 dislike

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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?

  5. 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 GlusterParallocitySlideShare, 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 AdobeAmazonGooglePhoenixRSA, 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.

by