My Experience Working in India's most popular IT company (Not TCS)
The company with the best campuses...
I thought to do something different with today’s post and recount my experience working at India’s most popular IT company that does not happen to be TCS. Despite TCS being the largest and most successful IT company in India, there is something about Infosys that seems to make it stand out.
For those of you from outside India, who may not be aware of the company, Infosys is the second largest IT services company in India established in 1981 by a group of seven engineers. It is based out of Bangalore and at the time of writing, it has a workforce of around 276,000 employees. The majority of work Infosys does is in application development, maintenance, and consulting. And yes, it is one of the most respected companies in India.
Even after more than a decade has passed, it seems like a fresh memory from yesterday when I walked through the enormous gates of the Infosys Mysore campus.
For a moment, it felt like I had walked into a modern-day palatial complex. Wherever I looked, I could see buildings with exquisite architecture. Some of them looked Roman. Some Greek. Frankly, I couldn’t tell the difference.
Only when I saw a building covered with a glass exterior and designed to look like paper-art, I realized that this cannot be a palace. The track and field stadium next to it helped solidify the understanding.
Of course, one week into the training programme, it was sufficiently clear that all of these wonderful buildings were just for clicking those occasional pictures. Life in Infosys training programme was a mixture of hectic studies and sudden bouts of social interactions.
Here we were in a technology campus with folks from the entire country and yet, there was barely any time except rushing to classes and worrying about an exam every week. Though there was a vast sports complex with facilities we could only dream of back in college, spending too much time over there was like actively trying to sabotage your grades. Within the campus, there were almost 6-7 cafeteria (each with a unique menu), but we would always be in a rush to finish our meal and get back to classes.
The one good thing was the abundance of bicycles in the campus. Since the campus was huge (almost 350 acres), you had to use these bicycles to get around anywhere. This meant that you can’t ruin your general fitness while undergoing training.
Nevertheless, the proverbial sword hung above our necks all the time. If you flunk more than a couple of tests, you could actually be out of the training programme and the company itself.
No one wanted to go through that type of humiliation.
The tests themselves were not that tough but they had just the right amount of complexity and speed requirement to punish you if you didn’t watch out. I realized it in an early module on C++ where a bit of carelessness ended up giving me a B grade or something. The world was shattered.
It seems childish to even think about it now after spending more than a decade in the industry and realizing that none of it mattered as much as I thought.
Of course, the training was useful from a knowledge point of view, but the tests and the eventual CGPA or grades made no apparent difference to how we were eventually treated within the organization.
Since I finished the training in the top-band, I got maybe Rs 1500 ($18 in today’s rates) per month more in salary than the one who finished one level down. The posting location and the choice of project was totally a game of sheer randomness. And there was absolutely nothing I could do when I got a posting location much different from what I had wanted.
The Real Life in Infosys
Once the training ends, you are eventually exposed to the real life in Infosys.
The campus and your extravagant room (with room service) is gone. You are now one of the 200,000 plus employees expected to arrive office at a certain time, do your assigned tasks and clock 9 hours 15 minutes each day.
Sure, the tradition of great campuses continued. Even when I was posted in one of the smaller Infosys campuses in Bhubaneswar, it was still an amazing place to work - with a large cafeteria, a couple of strange looking buildings, a bunch of tennis courts, a gym and a swimming pool.
And of course, just like last time, none of it mattered much in the long run.
One of my good friends always used to say that Infosys takes more care of its gardens and buildings than its employees.
After clocking your daily quota, you would more likely want to leave the campus and go out with your friends rather than hang around within the campus. Most of the time, production issues would mean that you’d end up staying more than 9 hours. This meant that you’d simply want to head home, cook something, play some video game if there’s enough time and go to bed.
The biggest lesson for me during this phase was that one should not worry about the architecture of the workplace in any significant manner. It it’s good, that’s fine. If it’s okay, that’s also fine. It won’t matter in your professional growth unless you are a photographer.
The Day to Day Work
From a work perspective, Infosys wasn’t any different from any other Indian IT company such as TCS and Wipro.
Teams and projects were assigned to you by the Resource Manager after some initial discussion that did not take into account your personal aspirations. Once you were in the team, you would report to a Team Lead or a Senior Engineer or a combination of both.
Since I was a literally a fresher, I was expected to start by assisting the senior members with whatever task they deemed fit. Your CGPA did not matter in the least bit. The technology also depended on the project you got assigned to.
In my case, I got some great mentors in the initial days. Though I didn’t learn anything significant about software engineering from them, I got to learn how to work within a team, how to interact with other stakeholders and how to handle issues. All of these were valuable lessons for my career.
Of course, the work was as bland as it could get. For no reason of my own, I was assigned to the Application Support team of an ancient application. My job was to check support tickets raised by the always-disgruntled users of the application and analyze those issues to provide some resolution. Most of it meant checking why a user got a particular type of error message and how to resolve it.
There was one major upside of this type of work. Over time, you develop the ability to analyze significant amount of code in a short amount of time. This certainly helped me later in my career as I was able to quickly scan large amounts of code and understand how it fitted in the big picture.
Moreover, the application support work imparted a high amount of system and business understanding because I was able to get first hand information of how the actual users used our system. In my experience over the years, this happens to be a big problem for software developers when they don’t usually know how the actual users utilize the application.
Since I was quite naive back then, I thought this is quite cool. In a few months, I knew the application quite well. I started to think of myself as an important member of the team.
Well, this was true to some extent. But as I realized quickly, this was a huge pitfall.
Yes, I was certainly an important resource. However, this meant a couple of points that were not so good for my growth:
First, though I had good application knowledge, this knowledge was not generalized enough. This meant that whatever I knew was useful only within that particular team or project. Basically, I was turning into a sort of SME for the system (or at least, that was the selling point from the management)
Second, most of the knowledge I was gaining was domain related. While domain knowledge is important, it started to clash with my actual aspiration of becoming a software engineer. After having secured a great CGPA in training, a couple of years had passed since I got the opportunity to write significant amount of code.
In software industry, the above two points can be rewarding but extremely risky as well.
The only rewarding prospect in this type of work is the chance to go onsite. Once you are deployed to the client location, you are considered kind of successful. The problem is that since this is the only claim to success, virtually everyone within the team is trying to achieve the same target. No matter how good your programming skills are, it is not the only factor that decides who goes onsite in the next rotation.
On the downside, the two points I mentioned earlier are also very risky for your overall career prospects.
If your project closes down for whatever reason, you basically go back to zero. The application knowledge you acquired over the years is basically useless.
But the real harm is the actual knowledge of software development that got eroded over the years you were doing nothing but analysing small pieces of code. More the number of years you spend in this situation, the greater the harm. To make matters worse, when you get to another system or team, you are once again a fresher of sorts.
The real kicker is that if your current organization decides to lay you off because of lost projects, you are much less employable outside. No one cares about your immense application knowledge in a previous organization if they are hiring you for churning out working code for their application. In my view, this is the most dangerous situation a software developer can find himself or herself in, specially in the early parts of their careers.
Anyways, long story short, I found myself heading towards that situation. There was not a great chance of onsite any time soon (at least, for my patience level). Since I had become an important resource, there was no chance of moving to another team or project without causing a conflict with the current manager.
Therefore, I decided to look out for a change based on my knowledge of programming. Whether this turned out to be a good decision or not is a matter for another time. The point is that it made perfect sense for the time. And that is mostly what matters.
Infosys in Hindsight
I would still say that Infosys is a remarkably good organization. Infosys tries to sell you on the dream of joining a world class organization with world class facilities. Their processes and standards are top notch. Most of their internal systems are automated. They are pretty ethical in terms of their paperwork and those sort of things.
Of course, Infosys also has all the trappings of an Indian IT organization built on the promise of keeping the overseas clients happy. Their whole model is built around the service of a client with very little room for innovation or personal aspirations.
Personally, I feel that Infosys is a company that you will end up outgrowing in a few years if you join as a fresher. Unless you had the luck of going onsite, you’d end up feeling a little left behind in Infosys in terms of personal development as well as compensation terms.
However, Infosys is a great place to settle down if you are above the mid-level employee tier (also known as the masses).
So you could actually enjoy joining Infosys at a senior level provided they are able to pay you according to the market standard. By the way, Infosys is not a great paymaster and that’s why they have pretty high attrition rates.
Even in my circle, those who had managed to cross 9-10 years in Infosys were significantly happy in terms of their work profile. They had a great amount of influence within the department and they were generally able to make decisions that can bring in real difference. Of course, it was also hard for them to go elsewhere as their skills had become extremely specific to the system or department they were working for.
Has anyone worked in Infosys or similar companies before? If yes, what were your experiences like?
Do share your thoughts in the comments section below. And do let me know if you would like similar posts on my experiences working in other organizations.