The company was around 10 years old and transitioning from what one could term as a start up mentality into a full fledged product company.
Methodology: had formally adopted Agile around 2016-2017. A part of this adoption included some formal training by an experienced agile coach.
Code : I can probably speak for the entire country and say code is written in English. Most of the country learns English through highschool if not through kindergarten. Code and CS concepts are learnt in English too. Infact I've never seen code written in any other language.
Languages : Languages popular include but aren't restricted to Java, JavaScript and Python. Although I have observed that Java seems to be more popular or well known than C++.
Tooling: We used a majority of the Atlassian softwares to track the product lifecycle. Additionally we also had Docker, Kubernetes, ELK and Splunk Deployments.
Culture : This is where I'm probably not necessarily the best person to comment with respect to the whole country.
The work I did was valued and we were encouraged to understand why we were doing a particular task. You could discuss/debate over choice of technology or approach with your boss. Teams were empowered to make a majority of decisions.
Friends from fish-tin companies aka the outsourcing companies have drastically different views than mine. Run of the mill work - shitty culture.
Also, Java is ubiquitous. I only ever met one developer who was competent in C++. The rest think they know C++ but couldn't write a single non-trivial, idiomatic, correct program in it. (I don't know C++ either, FWIW). This leads to the bizarre situation where everyone writes in their resumes that they know C++, many interviews happen in C++, but few companies use it in development.
> Most of the country learns English
I don't think this is true. Certainly anyone working as a programmer would have been through 12 years of schooling in English with English textbooks for all subjects, followed by 4 years of college again in English. I have never seen a variable or any documentation in any other language. Before smartphone keyboards became a thing, I didn't know anyone who typed in their own language.
However, only a small fraction of the country learns English well enough to use it professionally. A significant proportion of the country, mainly in rural areas, don't learn English. Many of them don't complete school either.
(1) (Too far removed) Engineers in India / China mostly work on projects meant for Western markets. They do not always understand the problems that the project is trying to solve. They rarely get to see it work in the wild.
They can't feel proud of creating something they will never see in action. If the project is a huge success, the engineers who created it will almost never be rewarded.
Under these circumstances, it is hard to care.
(2) (Culture) The culture prioritizes seniority over performance. Manager is always right. If you are a 10x engineer and your manager is mediocre but always right, good luck navigating the potential issues.
(3) (Wrong incentives) Most software engineers work for outsourcing companies. These companies get paid for delivering projects. Size of project matters. The incentive is to inflate the projects and create as much work as possible, maintainability be damned.
If we look at the history India (as a whole subcontinents) produce one of the most advanced math in the world, China probably discover more thing in navigation century before Europe and now... We are all, easter and western in a race toward a new middle age...
Is this still true? I have heard that years ago it was prestigious to work for the likes of Infosys but now the best engineers work for Indian startups and the outsourcing companies only get average ones or worse. This seems in line with the people my company gets from outsourcing companies. They all seem pretty clueless but the direct hires are quite good.
Definitely not (maybe never) in China.
It is, even now. Walk in to any engineering college, and ask where most people want to work. Another dark untold truth of Engineering in India is, Electronics/Electrical branches have a lot better quality students, than CSE/InfoScience. Sometimes it's like night-day. This is because a degree in EE/ECE gives you a diverse range of career options once you pass out. So in the ascending order of ranks in entrance exams, first EE/ECE seats are full. In many cases there are situations where EE/ECE candidates even in tier 2/3 colleges are better than CS students in top colleges.
Outsourcing companies discovered this long back. There is no logic in paying 5x market salaries to CS candidates, when you get 2x better candidates at 1/5th the price.
Secondly, Indian product companies aren't exactly engineering intensive companies. If you get a job in something like FB or Google straight out of college, you are good. For any body else who has to go into Indian product companies, you work on ancient dinosaur era tech. When compared to this, many a times in outsourcing firms you are likely to find better quality of work. This happens all the time. Many times FAANG companies hire these CS top college people, and make them work as sysadmins/SDETs. While some EE/ECE whom they look down upon is working in a code intensive project in a outsourcing firm.
So as a safe bet, playing your cards well. And keeping a good outlook for a large section of crowd, outsourcing companies still work well. Also look at this, if you are optimizing for money straight out of college, and not skills. Then within a decade you will be beaten by those whom you look down upon.
Of course none of this applies if you get into management.
lots of wasted education and experience is basically pointless.
When it spread we cease to innovate, to really research, we only popularize and improve (a bit) per-existing techs being unable to really evolve them and create anything new. And the more we advance the worse situation became.
We start to have car's that exhibit astonishing absurd issue like top-line Audi's that lock their driver inside due to an unknown fault (banal things like classic internal door little rod, mechanically connected to the lock mechanism are not there anymore in many models or became a different beast), normally always-working machines that start to exhibit random behaviors and no one can really understand why, not counting big projects that nearly ALWAYS fails from fighter jets to ships to space industry project.
Education itself in terms of formal diplomas became meaningless: personally I "discovered" ancient books (lecture notes) that contains more information, more clearly explained and open a world of possible "evolution paths" that far bigger and expensive modern textbook fail completely to provide only at a fraction.
Bureaucracy is one of the most desired jobs in India. People spend their prime years in 20s, in coaching institutes to crack UPSC- India's equivalent of entrance exams for government civil services. The reason is you get infinite scope to take bribes once you are placed. Like imagine having a blank cheque all life. On top of it you get premium accommodation, cars, drivers, and an army of servants.
MBA, and managerial jobs are the remainder population's way of enjoying the above perks. And they resemble the same levels of inefficiency, waste and corruption.
I can bet nothing will change in India, even decades from now. Once you create such incentives at a social level, people just follow it for generations.
Before software, there was similar craze for Bank manager jobs and CA's. And for the same reasons. You do little to no work, and pretty much splurge in luxury.
Albeit a good chunk of CS people get into service companies too.
Most notable companies in China are doing their own stuff, focusing on the local market and not outsourcing. Some are truly innovative and leading the trend.
Here's a good channel to learn a bit about Chinese tech scene
This just isn't true in China. Just go to New Delhi and Beijing and you will find there is a vast different in IT culture in both countries.
The only company that ever sort of existed in New Delhi, was Snapdeal, and they pretty much shut shop as of now.
So from my point of view its a cultural problem in both countries where the likes of IIT graduates are preferred over a simpleton with great passion, skill and knowledge of the craft.
Oh yeah and when the genius group of "IITians" dont write good code, the definition of good code is changed. I have literally seen this shit. Highly unreadable C++ code from a bunch of IITians went through flawlessly and got merged. The code written had the same readability as the code which you seen in Topcoder or Codechef.
Not disagreeing. Natural programmers do exist in plenty outside the IITs. They need to be nurtured. The educational system does not help. Not that many companies, in the US too, put that much effort into grooming talented individuals anymore. But when they do, there's payoff.
Every educated programmer in the country, passionate or not, goes through the same education system. If you like the work and are good at it, you'll do it with love and care when you're a professional, no matter how you were educated. I went through it myself, and I like to think I've done all right career-wise.
> good natural programmers
I'm not even sure what "natural" means in this context. If someone is a good programmer, does it matter if they are naturally talented or attained their skill by grinding? (and most of the time it's a combination of the two anyway). To quote a popular Westworld meme, "If you can't tell the difference, does it matter?"
> where the likes of IIT graduates are preferred over a simpleton with great passion, skill and knowledge of the craft.
Evaluating programmer talent in the timespan of an interview is hard. Of course, hiring an IIT grad is going to be preferred over taking a punt on a random candidate - assuming both candidates are at the beginning of their career. It's not a cultural problem unique to India or China - hiring based on educational pedigree happens in every country in the world.
The vast, vast majority of programmers in the entire world work 9-5 then go home and don't think about work, same as the vast majority of accountants, lawyers, dentists, bricklayers, retail workers and everyone else in every other profession. HN, SO, GH are all tiny niches really, but if you're inside them they look like the whole world.
Software Development in China is more like the United States, not India. China now has several very big software development product or platform companies like Huawei(more than 80k engineers), Alibaba and Tencent(20k to 30k engineers), even the newer companies like Meituan-Dianping (market valued 30B dollars) with nearly 10k engineers.
These teams are learning closely what the counterparts in silicon valley or Seattle did and they learned fast. They also have built massive IT infrastructure.
Java and Python are the most popular languages for server side or other things, and JavaScript is the king for front-end. Newer languages like Go, Rust, Kotlin are gaining more and more adoption. It seems China has much more Go users than US!
Everyone wrote code and comments in English. There are viable programming language projects in Chinese keywords, but very, very niche.
The hottest buzzwords? K8s, Elastic, Flink, Vue (developed by a Chinese guy), deep learning, GAN, TensorFlow...
Agile is not very hot here, although Scrum stuff is often heard in office. Lean Startup(MVP) dominates.
I also work a lot with India and I definitely do agree it's far more western working with Chinese colleagues than with Indian ones. Both have their strengths and weaknesses though. If you have a rigid process that needs to be adhered to every single time in detail (ISO processes) then I prefer India for instance.
Edit: typo
Code quality and practices in Indian outsourcing companies are as good or bad as that dictated by US IT departments (out-sourcers), usually large non-technical firms.
Startups, however, are significantly different. I haven't seen much difference between US startups and Indian ones in terms of caring for your own code, jumping on the latest trends, and, generally, pushing the limits of what can be achieved. Indian startups, especially outside of Bangalore, do have to struggle to get proper funding. So they have to be practical on what they focus on.
Have no first hand experience with Chinese startups. But I would presume that they are no different.
And then there's also money. As someone else stated, rockstar engineers don't occur too often. Pay plateaus after certain years of dev work here in most places.
>> Pay plateaus after certain years of dev work here in most places.
One reason is what I mentioned in other places in this thread. India's socio-economic conditions in some way shoe horn a person's perspective to move towards bureaucratic work. But a big part of that is a lot of outsourcing firms grew 100% YoY, at some point in the 90's and early 2000's. They had to keep promoting people to ensure there was pyramid to run down a chain of command. That's when there was a complete emergence of layers and layers of career managers.
Companies had to also sell it as a viable option or no one would take it. So they created huge perks, visa advantages, money and all that, to lure people towards management. It sort of got amplified, because management is a low ball job, with big returns.
Now you have plenty of crowd, without skills, and hasn't done any engineering intensive work over decades. And they don't want to get run over, by engineering folks, so they keep that culture going, or everything ends for them.
The other part of that is, of course, India has tons of young people coming out of colleges every year, so they can keep hiring freshers at throw away salaries, while experienced peoples' salaries reach a plateau.
Still the same. Thanks to ridiculous salary differences in salary levels and perks.
For eg, if you are a manager you can apply for Green card in EB1 and get it in months. As a programmer, your wait time is an average of 14 years.
That's just one thing. To be a manager in India, is to do 0 work, and reap 100x benefits that of a programmer.
In other countries, it could be different. For eg, in the Bay Area, I saw similar behaviour, but it was not as intense or at the same level as I see in India.
Sure bad people, exist everywhere in the world. But the socio-economics context acts like a catalyst in the Indian system.
I really hate this. Maybe there are a few real 10x engineers but mostly it depends on the environment. I think I have been a 10x engineer myself in one company where I could work with autonomy and get needed support. Now I work at a place where they prefer many 0.5x engineers under tight control that do what they are told.
I think a lot of us could do much better if we were allowed to do so.
won't these engineers basically be replaced once someone figures out a way to automate menial dev tasks like wix for eg
Wait, is the “rockstar 10x engineer” a thing in real life? I get that people can be highly knowledgeable in a certain area or familiar with certain tools or highly effective at cutting to the core important details of a problem and making it clearer.
For the 10xer, it usually isn't that they do 10x more work, it's that they know how to make their org do 1/10th the work and get essentially the same results. They pay attention to business requirements and if you spot a senior engineer being listened to very closely by the people who make business requirements you've got reasonable odds of having found one.
The other type is the person who has an esoteric skill that lets you advance your business objectives by 10x-- for example, the optimization engineer who figures out how to cut server costs by 90% or whatever. These folks are usually viewed as wizards by other engineers. If you find an engineer being consistently handed all the 'crunchy' problems you've got a good candidate for this type, and again they aren't that rare.
Very, very rarely the two are the same person. If you ever work with one you'll probably know it pretty quickly, but odds are low.
To be fair, 10 people would write more code than a 10x engineer. But a 10x engineer can cut through complexity and deliver something simple that, by the virtue of its simplicity and brilliance in design, works (1) better, (2) faster, (3) has fewer bugs, (4) took 1/10th the time (5) requires less maintenance etc. etc.
maybe there are people who are 10x across the board, can't be ruled out.
I know Chinese mainly code in English but can have Chinese comments or occasional Chinese characters in their code but very very rare cos it can mess up the code. Not sure about India but presume its the same cos a lot of Indian programmers are fluent in English.
Agile is used in China and India as well but thats more based on company preference like the US.
For an example of Chinese tech company code, here's Alibaba's github: https://github.com/alibaba
Major Indian tech companies are basically the same US companies like Microsoft. I added Flipkart just in case cos that's the biggest one I know that isn't a consultancy but I'm not sure if it's that representative of Indian coding styles cos they're still at "extremely well-funded unicorn" stage: https://github.com/Flipkart
Note: I used Alibaba cos people know them so I don't need to explain their business and they're roughly the peak of Chinese coding style
EDIT: Found some extra reports that sampled developers in China and India
https://resource.alibabacloud.com/whitepaper/25-things-you-s...
https://www.thehindu.com/business/Industry/one-third-of-indi...
https://towardsdatascience.com/comparison-of-software-develo...
https://softwareengineering.stackexchange.com/questions/5088...
I'm from Europe , the only feedback I have about Chinese Software Engineers is Java.
My Feedback is based on GitHub Chinese's popular repositories , those repos are almost always written in Java.
> we are no different from other parts on the planet
Every part of the planet is different.
France is mostly PHP because it was free and it had a lot of commitment for open source.
UK is largely .NET because paying for MS tooling was never an issue.
India is more Java because offshore pushed the industry that way.
The trending page of GitHub for today contains a couple of Chinese repos[0]. They are all Java based except for one.
Try TiDB, it is in Rust and Go.
- The local language is not at all a part of the code. English is considered second nature for most people and that is what is used for all internal communication, documentation, and code.
- They have been using Agile for pretty much their entire lifecycle with daily standups and bi-weekly retrospectives.
- Languages: Most of the codebase is in Ruby/Rails and NodeJS. The FrontEnd is built on React and jQuery (for the static pages).
BrowserStack is usually considered one of the fine examples of an engineering-driven culture. Engineers are empowered and listened to.
Plus, since the product is a testing tool, we ended up being our own best customers. This provided very valuable insight on user behavior and helped navigate product decisions and keep function over form for the most part.
But as I have learned, BrowserStack is more of an exception in this matter as most other companies in India I have heard of rarely are engineering driven and.
Engineering culture has a lot similarity between the two, both are doing very innovative stuff and paying great attentions to quality of their infrastructures and both suck at building social network products. Notable differences include
1. Google engineers have a stronger say in their company and Alibaba pays more attention to the economic ecosystem. As a result, Google's products really shine as engineering 'miracles' while Alibaba's have greater impact to the society. Different DNA from their founders.
2. Alibaba engineers work much longer hours than Google's, at least 20% more. This has pros and cons.
3. Shorter product development cycle in Alibaba. This has pros and cons.
4. Higher pay growth in Alibaba. Fresh grads start around $30k/year, about 1/4 of that of Google. However, into 4th/5th year the former increases to one million yuan ($150k) per year including cash and RSU, on par with Google's. More seasoned engineers get tremendous respect and insane pay. Alibaba usually double or even triple people's total package when they left Google to join the company.
5. Alibaba pay more attention to the value of data and has better data infrastructure IMHO. This can be decisive for the future.
And now I'm into the 2nd year of my startup. As contrary to popular belief, the Chinese are true entrepreneurs and the society is generally very supportive for changes. And government's stimulus is insane. For example, my company got six million yuan (almost $1 million) fund from the municipal government when it's just established, with almost no requirement and absolutely no string attached. Free money and that's all. Probably the best place in the world to start a company and I'm greatly thankful.
I assume you are familiar with the particular notion of being smart. You are quick to think of solutions, the solutions are supposed to be novel, you have particular cultural knowledge, detailed opinions and a nerd sense of humor.
In contrast the practical person will put no emphasis on a novel way of doing things. As long as the solution works, you use it.
So in the US people may be excited by Haskell or whatever but in the sub continent they’re still using JAVA or PHP because it works.
This is a bit frustrating because of the emphasis on specs and features that are implemented exactly as written.
I also think the latter has to do with the distance and difficulty communicating. But the source of pride (practicality) is part of the cultural difference.
Needless to say none of this is true of everyone and all people are equally smart and capable (except Phil: I know about you Phil).
Whether code is practical or not is not a black and white issue, and a solution that "works" today - meets all specs, generally bug-free - doesn't mean it's maintainable. In fact, most of the code I've dealt with from people who basically only value the metric of "does it work?" completely fails at being maintainable.
What I mean by this is as soon as you start trying to add/change features, you quicky run into bad design and have rewrite huge chunks to get the new stuff to fit, end up playing whack-a-mole with endless bugs, or both. Sometimes you can hack on a fix with duct tape, but that only delays an even bigger rewrite or more bugs later.
I've run into this with mostly "job shop" places, both in North America and offshore, so perhaps the problem is the nature of that business more than the culture, but the mentality seems to align with your description of practicality.
I might describe an admin interface in terms of what it controls but implicitly I want large choice sets to have search functionality and dates to have calendars and so on.
A large choice set implemented as a massive drop down technically works but I don’t have to explain why it’s just wrong. The “practical” programmer may say hey it works and let’s move on. The “clever” programmer wants to impress with a new widget that is intuitive to use. In this particular case (interface design) I’d prefer the clever coder over the practical one.
Or probably because that’s what western counties pay for
It might make sense to look at the difference in culture between outsourcing shops and places where they do the whole project in house - rather than to do broad generalizations.
I guess any comparison depends on what you are looking for: when comparing software development culture I would ask about the work environment; are workers likely to help each other out or are they more likely to opt for cut-throat competition between peers? Are people encouraged and willing to share knowledge, or is that something unusual?
But I suspect that's not the way that these questions are approached; these are definitely not traits that we are picked out for during job interviews.
And, yes, that's often the reason parts of the world move to other things. Hopefully, someone saw an actual problem with the stack they were using, saw a solution elsewhere and moved. However, anecdotally, I often see people deciding emotionally that the Hip Cool New Thing is The Right Way To Go and that's what they use ... and then discover the warts are bigger, or the problems aren't actually solved, or the only thing different is the vocabulary.
unless you set out with the mindset of NO NODE/NO PYTHON, it tends to worm it's way into the project coz someone on the team thought it was convenient
This may change,though, what with Oracle's license changes.
I haven't done a lot of 'production' Python or Node, but I have heard people gripe about the need for some of these.
India still depends heavily on outsourcing.
It's rather expensive to look at Chinese outsourcing currently, India is still relatively cheap. Vietnam is the new hotbed of outsourcing.
Another question is regarding the economic position of developers, here in the US it seems like a path way to a solid upper middle class existence, is it the same in China?
One of the reason that they need to work long hours is because they need to constantly change requirements to cater to market demand. The competition is always fierce in a country with 1.4 billion population. If your competitor come out with a good feature that you can't duplicate in a few days, you bleed out user base really fast. IP laws are hard to enforce here, companies copying each other all the time. Tech giants like Baidu/Tencent have extremely low bar of integrity. If you can't grow you user base to the extent that it's cheaper to just buy you out. Those big boys will just copy your product and promote the shit out of it in a few months. You won't stand a chance against them with the uneven playground. On top of that, poor planning and the fact that PM often come from non-technical background definitely doesn't help either.
Because of the demanding hours, developers are expected to change career path when they pass 30. It's really hard to keep up with the pressure when you have a family. As a result, coding is not seen as a craft but rather a mere part of a feature development process. Quality is generally considered less important than feature completion. Copy pasta code is prevalant among smaller startups because they would rather spend money on marketing rather than on good developers. Users are to be blamed for this as well. Regular Joe's care more about features and who's advertising for your product(hiring celebrities to promote apps/websites are a common thing in China) rather than how polished and well thought your product is. These are definitely not issues unique to Chinese companies, but it's just much worse.
Saying all this, just like in western countries, if you know your stuff, you will be paid very well. Big companies like Alibaba/Tencent/Baidu can usually pay 50k USD or more per year for new grads. Not Silicon Valley good, but will definitely put you in middle class in China.
At the end of the day, it's all code. Not sure I would ever work for a company that makes you work like a sick man just to get even the with the uneven level field.
How hard is it to get into Tencent/Baidu?
Well,indeed ,developer have better odds of getting rich. but software engineering is a dead-end career,many programmers find that their employacility starts to decline at about age 35.
Most of the code base of this company was java, go and PHP. And the comments were on Chinese and they were doing a task force to translate to English.
[1] https://github.com/alibaba/jstorm [2] https://dubbo.incubator.apache.org/en-us/ [3] https://github.com/CodisLabs/codis [4] https://github.com/alibaba/canal
Programming Languages: We use heavy Javascript for our core libraries, VueJS and Angular for frontend (different projects), PHP/MySQL backend (legacy) with our own home-baked framework. We also have our own edge nodes with lots of OpenResty/Lua, and our data pipelines are in Python, Java and Scala.
Language: English predominantly, but discussions and meetings can be a mix of English and Hindi (we're based out of North India). I switch to English exclusively if there's a teammate who doesn't understand Hindi very well.
"Is Agile used": I think the question is broadly about engineering practices and yes, we do use Agile/Jira, doing 2-week or more Sprints in cross functional teams. It's not perfect and everyone has their own complaints with this model, but oh well. We do heavy code reviews and have a dedicated QA team - for both automated and manual testing, extensively E2E.
Culturally, we're pretty open and transparent. Everyone /broadly/ knows what everyone else is working on. It's not startup culture, but as far as mid-sized companies go, it's pretty good. Not a whole lot of politics, a "get the job done" attitude. We occasionally open source some projects via Github. Work from home/Vacation policies are decent. I'm currently on Christmas holidays actually ^_^
India: Hundreds of colleges offering basic professional computing education under the promise of acquiring a job. These are inevitably in outsourcing sweatshops or "MNCs" (read: insourcing sweatshops). Access to computing and the internet is very much class-based. The economy is essentially stagnant due to corruption, basic infrastructure such as electricity often fails, and only wealthier classes can afford to spend the time and money learning computing for interest's sake. Salaries are low.
2. Training was a thing a decade back. A lot of companies would spend a fortune on training people.
3. Even until a while back, and may be even now. Growth was high, and a lot of people got/are getting rapidly promoted. Sometimes this happens very early in career. You have a lot of managers who just haven't had any real programming or engineering experience. These people only survive by toxic politics and building cartels. So all your usual cartel politics apply. People close to bosses and butter their breads, get promoted, get to travel abroad, bonuses, raises, RSU's all flow in that direction. By and large, there is no merit. Appreciation or scope for talented people to get rewarded is very small or non-existent.
4. Networks matter when it comes to getting hired. Hopping jobs continues to be the only way you can good hikes. So a lot of interview gaming goes on. If you know people, you can hop forever. People hop jobs very often, until they can find a helping cartel boss. Until then 8 months - 1 year is what people stay. Barely work, learn or gain any experience and keep hopping. Even here if you have friends, the make the interview easy for you. If you don't have this, face 10 rounds leet code interviews.
5. Entire game is finding a boss whose bread you can butter, and get what you want.
6. Recently learning has become a thing. Thanks to internet, and interaction with the programmers in the west. Youtube, and MOOCs and all that. A very small, negligible minority of people focus on gaining skills. They are also not very liked in many places. The cartel bosses don't like smart programmers who could later become competition and take their jobs.
7. Moving to US continues to be the only way to get some decent out of one's career. Again it all depends on your relationship with the cartel bosses. Even here its often the wrongest possible who get to go. H1's L1's Green cards all flow in that direction. Which is why I often Laugh when, US claims its importing 'High quality talent' from India. You are getting the worst crowd from here. The real people are stuck. There are no managers to push their case, and mostly they have no network or time, to do a range of political ground work to move to the US.
8. Lastly skills don't matter. Its career suicide to learn and gains skills. Keep a stack of Machiavellian literature handy. That's the skills you need to gain to win in India.
Lastly your question is wrong. There is nothing like popular languages or agile or anything. Its just your usual thing as in the US. Except with the points above.
In India, its easy to arrive at such structures, because identities based on caste, religion, languages, state etc. Once you get a sufficient mass of 'your people'. You start to reward them, and build up your group(cartel), from there its dog eat dog. Heck even layoffs happen on those grounds.
I'm not really sure why, but that's how it is. With a few exceptions, the norm is to get a shit show every time something is outsourced to a team in India or China.
It is simply very hard to 'care' under the circumstances outlined above. And it is very hard to write quality code when they don't care.
btw, I've seen the same thing with code in the US that is done by an outside team, it's just not as good as the stuff that you're gonna see internally.
Absolute numbers, not relative. Discount team doesn't really need to care about your problems.
It was a combination of a culture that valued quantity over quality & long hours, management and time zones. When some staff moved over to the US office they got better. Mostly because they realized that the work style in the USA is much nicer as an employee than the one in China.
I had a much better experience later with contractor eastern european teams, who came from the start caring about quality. I didn't have to fight a cultural mismatch. I know other people have had issues with EE teams, but nothing is perfect.
I was a jr engineer back then, so I didn't have much power to change it. I eventually left for other reasons.
No, it's that an outsourcing company makes money on billable hours. If you can bill the client for fixing bugs, then why would you care about introducing them in the first place?
Most Indian IT workers work for service based companies. The lion's share of these, don't care about programming/CS at all. People having side projects are an exception. Very few people have proper CS knowledge other than that required to pass an job interview. Being a good developer is not incentivized in big service based companies also. The sooner you switch to a managerial position the better, otherwise you'll be stuck with a salary that is just disrespecting to you as an engineer.
Also outsourcing software from the US and the west to china is harder since since they don't speak English or use a Phoenician alphabet when compared to India. Also there are a lot of big high paying Chinese tech companies like tencent, baidu, alibaba, etc. I don't know if that exists in India.
Or a comparison between development in (India or China) vs a presumably western Dev centre like the US?
Seems a few answers here have assumed the latter.
Edit: corrections and clarity
Code/Comments are entirely written in English.
To answer your questions, > What programming languages are popular there
Java, C#, Rails, Python, JavaScript.
> Is code written in a mix of the local language and English (for the keywords)
No
> Is Agile used?
Yes. I can't say it is being used everywhere.
At my current company, which is in Navi Mumbai(a suburb), we program in Typescript.
> Is code written in a mix of the local language and English (for the keywords)?
No. Code(including comments, keywords, and variables) is completely in English.
> Is Agile used?
Yes. But I've met very few people who strictly adhere to it.