This is a slightly edited version of my answer to the following question on Quora:
Short Answer:
The Indian IT Services industry has optimum-quality software engineers, neither low- nor high-quality.
Long Answer:
Before I launch into my long answer, here are a few assumptions:
- “Software engineer” refers solely to coders employed by mainstream Indian IT Services companies at their offshore facilities for development and support projects. If the term also includes software engineering graduates that are employed in sales, marketing, design, architecture, testing, and other non-coding functions, I’ll immediately declare that the Indian IT Services industry employs fairly high-quality software engineers, and end this answer right here. Therefore, for the purpose of this blog post, “software engineer” means coder unless noted otherwise.
- Higher salary means better quality.
- I’m excluding the hundreds – if not thousands – of boutique IT services companies in India that have high quality coders.
With that bit of housekeeping out of the way, I distinctly remember that TCS, Infosys and Wipro were coveted jobs when I graduated from IIT Bombay in 1985. In sharp contrast, these giants of the Indian IT industry do not participate in placements at IIT Bombay nowadays. That’s because their starting salary for fresh software engineers (INR 3.6 lakhs ~ US$ 5200 per annum) is well below the minimum required to qualify for placement at the #1 engineering college in India (INR 8 lakhs ~ US$ 11500 per annum) and any of the other old IITs (IIT Delhi, IIT Madras, IIT Kanpur and IIT Kharagpur).
It’s not as though these companies can’t pony up the few extra lakhs required to qualify for placement at the premier engineering colleges.
It’s that they know they don’t need the crème de la crème graduating out of these institutions.
(I say that on the back of my personal experience of selecting the list of colleges from which to recruit software engineers at many Top 20 IT Services Companies in India.)
Before I amplify my above assertion, let me touch upon one gross misunderstanding of the role of the Indian IT Services industry in a typical software development project. At once, this misunderstanding is the source of both praise and criticism of the industry.
On the one hand, some Indians look at the Indian IT Services industry and claim, with a sense of faux patriotism, that Indian IT Services companies run the whole world’s systems and wonder why they can’t fix Bangalore traffic, alleviate farmers’ stress and produce the next Google.
Why hasn’t India produced apps like Facebook, Twitter, Whatsapp etc, despite having the technological base and the market?
That’s a good, important question.
— Nitin Pai (@acorn) February 10, 2019
On the other hand, other Indians look at the Indian IT Services industry and lament that it employs low quality software engineers.
Both cohorts are off the mark.
The first group of people miss the fact that the industry is involved mainly in coding, whereas end-to-end software development and maintenance projects involve many other activities that fall outside the purview of coders.
The second group’s contention is somewhat disingenuous because, for the bulk of the work done by the Indian IT Services industry, the caliber of the software engineers it employs is just right.
Coming back to why top IT services companies in India don’t need high quality software engineers, the answer speaks to the very nature of “software development”, the process by which a business process is converted to working software.
Software development goes through various steps of the so-called Software Development Lifecycle, as illustrated in the following diagram.
SDLC comprises several activities like defining the business problem, selling technology as the solution, fleshing out requirements, writing specifications, designing the software, coding, testing, systems integration, deployment, training, and so on. Out of these activities, coders do only coding.
As we can see, software development involves many roles beyond coders. However, coders are also called “software developers”, which is a big misnomer.
IMO, this misnomer is at the root of the severe misperception among the common man about the real role and capabilities of software engineers – somewhat akin to the confusion that would ensue by equating a bricklayer with property developer in the construction industry.
In a typical SDLC, only coding and architecture require engineering capability.
The other activities – “non coding” – are as integral to software development as coding but don’t require software engineering capabilities. Instead, they need consulting, communications, people management, stakeholder management, immigration management, and other non-engineering skills. I say this after working with several excellent program managers and workstream leads from Big 4 consulting companies who come from science, arts or economics – not software engineering – backgrounds.
A typical software development project requires more coding (~60%) than non-coding (~40%) inputs, but only when measured by person-months of efforts. By dollar value of output, the ratio is skewed towards non-coding activities, because the cost of non-coding talent is more than that of coders. At the risk of over-generalizing, the ratio of $ value of coding versus non-coding output is typically 20%:80%. In other words, the typical buyer of a software development project spends $80 on non-coding activities for every $20 spent on coding.
When the Indian IT Services industry entered the global stage in the early 1990s, it focused exclusively on coding. Over the years, it has made progress in project management, third-party product implementation and systems integration. But, even as its doyens lament from time to time, the industry still does not have a strong presence in consulting, program management and other more lucrative services. Which is perhaps why, despite entering the American market over 25-30 years ago, the Indian IT Services industry still has only a 5% share ($150B/year) of the total US IT services outsourcing market ($3T/year).
Money Quote:
The biggest challenge that the Indian IT industry has faced in the last 40 years and has still not solved is the inability to move from being "reactive problem solvers" to "proactive problem definers and solvers".
– @Infosys_nmurthy pic.twitter.com/000o4YT6vJ— Ketharaman Swaminathan (@s_ketharaman) August 18, 2018
As a result, coding still remains the sweetspot of the industry.
Coding involved in development and maintenance of customized software is not rocket science.
In the early days, maybe because coding was a new field, the Indian IT Services industry sourced higher quality of software engineers from the old IITs and other Tier 1 colleges.
But once it reached global scale in the late 1990s, the industry has been able to fulfill its requirement of coders from software engineers in Tier 2 and Tier 3 colleges in India.
When a Toyota can do the job, you don’t buy a BMW.
That’s why I believe the Indian IT Services industry has the optimum quality of software engineers.