One of the first things to realize is that Indian developers, like in other countries, vary in skill levels experiences and there's no prototypical Indian developer.
There are many people in India who have found their way onto the software industry without adequate education (did a bunch of Java/Spring/Android/C# courses and YouTube videos vs. building and operating production systems) or passion for software engineering. With these people you can be sure to get shoddy work and spending lots of time micro-managing them.
At the same time, there are experienced developers and engineering managers who have worked at multi-national companies, built and operated large systems, perhaps even worked abroad, and have passion for the craft of software engineering. You need to find such people to form the core of the development organization. They are going to be more expensive than the rule-of-thumb "India salaries are 40% of US salaries". You will also need to ensure that they have sufficient autonomy and a seat at the leadership table so that they can independently move work forward and set the culture in India. Otherwise, they will lose interest and move on.
People have already mentioned the time zone challenges but those are mitigated by having strong/autonomous leaders in India. Don't assume that you can build an effective scrum team cross US-India time zones. Instead you need to be thinking of India org and US org with significant independent ownership of systems, and some dependencies between the orgs which will need periodic management.
Another factor to consider is the attrition rates of early-to-mid-level engineers in India which have historically been higher than the US. You need to manage this, through the leadership team in India, giving engineers appropriate growth paths and exposure to different responsibilities.
Great writeup. My fondest memories were of multiple multi-day compiles of KDE 4 on an ancient system (even for that time) back in the mid-2000s. Glad to see that there are people using Gentoo to this day.
There are many people in India who have found their way onto the software industry without adequate education (did a bunch of Java/Spring/Android/C# courses and YouTube videos vs. building and operating production systems) or passion for software engineering. With these people you can be sure to get shoddy work and spending lots of time micro-managing them.
At the same time, there are experienced developers and engineering managers who have worked at multi-national companies, built and operated large systems, perhaps even worked abroad, and have passion for the craft of software engineering. You need to find such people to form the core of the development organization. They are going to be more expensive than the rule-of-thumb "India salaries are 40% of US salaries". You will also need to ensure that they have sufficient autonomy and a seat at the leadership table so that they can independently move work forward and set the culture in India. Otherwise, they will lose interest and move on.
People have already mentioned the time zone challenges but those are mitigated by having strong/autonomous leaders in India. Don't assume that you can build an effective scrum team cross US-India time zones. Instead you need to be thinking of India org and US org with significant independent ownership of systems, and some dependencies between the orgs which will need periodic management.
Another factor to consider is the attrition rates of early-to-mid-level engineers in India which have historically been higher than the US. You need to manage this, through the leadership team in India, giving engineers appropriate growth paths and exposure to different responsibilities.