I write code for a living. I have been writing code for the last 10 years to earn my bread, butter and cheese. In these 10 years, the software industry in India has come a really long way. When we were passing out as comp sci engineers, we weren’t the first, no, there had been several generations before us. All of whom had seen really good times in the tech world. We started out just as the first tech bubble had burst and the industry was in a reconciliation mode. Onsite trips(a mainstay of IT crowd) were on the downturn, companies were cutting cost in every possible corner, which meant no more free lunches, snacks, transport or any other perks. But I am not going to focus on the monetary side of the industry. I want to shine a spotlight on how the job of an IT engineer has changed.
Indian IT industry is defined by its pillars of outsourcing, Infosys, Wipro & TCS. These are companies known for mass hiring & a world of onsite opportunities. Any college friends on mine placed in these companies are now well settled onsite(i.e. outside India). But what is IT outsourcing? Lets take a simple example. Lets say you have a small business and want to put yourself “online”. This would mean having a webpage that will be your portal to the world. Now you need someone who knows “computer stuff” to design, build and deploy your webpage for you. You will scope out people(like the said IT companies above) and ask them how much money they would charge you to build a working website. You may also want to know who will help you if this site breaks down(tech support) and the likes. Now, when there weren’t so many IT folk around, it would cost you a pretty penny to get such a job done. These big outsourcing companies made life easy. Are you a big government still in the dark ages and want to be computerized? Sure, we will do it, for cheap! But how do you go cheap?
The answer is generalized solutions. You build a solution suite(say a generic banking platform) that supports all standard banking operations. When a customer wants such a solution, you simply need to customize this generic solution with your customer’s colours & livery, support any special requirements that they have & then roll it out. If you are a customer, you are happy! If you are an engineer working on this solution, you are not. Why not? Working on such a project, your activities will be doing a set of pre-defined, well documented steps. You may get lucky and work on a few bugs, maybe even a new feature, but most of your life will be spend doing a very boring task. In a mature software industry, upto 75% engineers will be working on supporting old, crumbling applications that clients don’t want to get rid of, or will be supporting frameworks. Both these tasks provide little intellectual stimuli and get boring real soon. Your desire to be an engineer fades and you start looking for fancier titles like team leads, managers and the like.
Each of these titles takes you into a world where the only skills you will use are people management, email management and excel sheet management. Powerpoints will become more important to you than IDEs, and you will hear yourself telling your developers why they must do a 4 day task in 1 day. This is a very pronounced problem in every IT company in India, there are people who have just stayed in the company long enough to be promoted upwards, without having skills needed for those positions. Most HR deal with this problem by throwing training courses at such people. Now its not their problem anymore, they’ve given the “necessary skills required for the job”.
There is very little innovation coming out of the Indian IT industry. And no, startup success stories like Flipkart etc are not innovations. We can blame the outsourcing model for this too! Every company that outsources its software development to India makes sure there are people sitting in US, UK or some other western country who are responsible for the “innovation” phases, i.e. requirements interpretation and design. Most developers in India don’t even have an option of challenging these designs, they are encouraged to give their inputs of course, but that almost never gets anywhere. They can try to innovate themselves, but that will soon cause a management creature to descend on them with a menacing threat of do what you’re asked or get lost. Every single line of code they write must be reviewed and approved by someone in SFO. It is a modern form of slavery, where your ideas are held to ransom.
I have lived in situations many times where changes were made after I raised opposition to them, then those changes causing major production meltdowns and then I was expected to sort it all out! I told you so doesn’t work, because they treat you as a bad team player if you even mention it. In my first job, the client send 5 of their engineers to sit in our office space with us to keep a watch on what we were up to, under the pretence of having local presence for quick issue resolution.
Back to the issue of incompetent managers. Most leads and managers have taken themselves far away from the technology their teams develop. Getting into meetings with these guys is like having your brains pulled out from your nostrils! Even the most basic detail has to be explained to them, and once you understand they haven’t done their job of understanding the requirements, you must keep your temper in check, otherwise who knows when a layoff might happen. They like giving unrealistic estimates, because they are far away from the reality of the engineers. They want to do as they are told by their managers, because that helps them get promotions, even if it is at the cost of their team suffering multiple late nights.
Late nights. The staple of Indian software industry. If you aren’t working over 50 hours a week, your performance is poor. Only because everyone else is willing to sit till midnight and then come back in the morning at ten. One of my colleagues once said that it is very important for software engineers to have kids, otherwise there is nothing to keep the wife busy at home while you are pulling late nights. This has become such a culture that even clients and counterparts abroad expect late nights. I once had a US based lead tell me that 9pm was “normal work hours” in India(work day started at 9am) and no one should be complaining that it is late.
So what do we have? Massive lack of innovation because innovation is not outsourced, only headcounts are. Out of touch managers making life hell for any engineer with a working brain. Forced upon late nights. We do not have software companies anymore, we have software sweatshops. In a place where there is no lack of people willing to do your job for cheap, your own colleagues willing to sell you out at the first chance and your managers giving a damn.
Things are not looking good. If you are joining the industry today, try not to become what you hate. Unless of course, you just want a title. And money. And an onsite trip to buy that expensive flat!
Let me be candid. The Indian software industry is in deep shit! And with all the exemptions it enjoys from labour laws, this will not be changing for a very long time.