Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How is software development different in China and India?
183 points by baron816 on Dec 25, 2018 | hide | past | favorite | 137 comments
What programming languages are popular there? Is code written in a mix of the local language and English (for the keywords)? Is Agile used?



I worked as a Full Stack Developer with BookMyShow in Mumbai, India. We are a ticketing company somewhat like TicketMaster is in the United States.

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.


I find my experience similar to yours. The difference in culture between companies that developed their own products rather than doing outsourced work was night and day.

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.


I think most or all have English classes in school, but in addition to the drop-out/absenteeism even those that attend these classes often don't end up learning much of the language itself as the teachers either have little training and/or pedagogical knowledge or apply the sanskrit approach: a complex near-dead language that's taught through memorisation of grammar rules, similar to Latin.


I'll summarize my experiences.

(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.


Thanks for that summary, personally I regularly say that "productive Asia" and India gets, unfortunately not only for them but for the entire humanity, the worse of UK/USA business model and push it to the extreme, than someone always reply that I'm racist and do not understand when I counter-reply that I do talk about business models and imposed culture, not people and that's interchangeable with ANY damn nation and population...

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...


"Most software engineers work for outsourcing companies. "

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.


Is this still true?

Definitely not (maybe never) in China.


>>I have heard that years ago it was prestigious to work for the likes of Infosys

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.


i'd say most managers from india are pretty worthless if i talk from a purely experience based domain knowledge perspective, it's four years of college education they don't pay attention to followed by 2 years of a job they don't pay attention to and then ka-ching MBA PROGRAM followed by doing whatever the company that hires them wants them to do.

lots of wasted education and experience is basically pointless.


Please extend it to the world: most managers are pretty worthless or worse, a damage. Managerial culture is a damage to the entire society.

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.


>>i'd say most managers from india are pretty worthless

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.


Strongly dispute this ECE vs CS characterization. CS is preferred over ECE in India. Source: ECE graduate from India. There is some wierd kind of projection going on with parent post.


My point is about outsourcing firms. Service companies prefer EE/ECE above CS. Of course product companies prefer CS candidates, and often pay well too.

Albeit a good chunk of CS people get into service companies too.


When I was a Placement Coordinator at my college, a representative from TCS told me that a good thing about non-CS candidates is that you don't have to make them "unlearn" things.


That reflects badly on TCS, not on Computer science or it's students.


I concur. That's the reason I avoided TCS for placements.


What are examples of service companies?


Can you give some context? Around when and where did you work? I’m suspicious of vague answers that somehow apply to both China and India and don’t mention timeframe (China is very different now than 10 years ago or even 3)


All three are not true at least for China. I'm guessing your experience mostly comes from working with outsourcing companies from these two countries.

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

https://www.abacusnews.com/


You did not say it explicitly but your comment hints that indian devs are below mediocre. I will share my perspective as a native guy. My experience is 15 years in dev(mostly c++) experience worked in 6 different companies and have taken up contract gigs in erlang and android(writing ejabberd extensions). Infosys, wipro, tcs and other service based companies have really below mediocre dev's. But other than that the enterprise org's such as emc square, oracle, hp etc have dev's from mediocre to good. The Big Four company dev's (especially amazon) are definitely above mediocre. One observation is while working at enterprise org's i have never seen any 10x people(like the admiration type) on the US or European companies. Only read peoples blog posts. So it seems the 10x people only exist at Big Four or they move there quickly before.


True in my experience. US and Europe programmers from enterprise organisations complaning about quality of Indian programmers is not justified.


I'm in the UK and relate to all of this


This is definitely not the case for China.


Which part?


"Most software engineers work for outsourcing companies."

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.


New Delhi, doesn't have a very great tech scene. Blame pollution. You can die out of meditation in New Delhi. Beat that.

The only company that ever sort of existed in New Delhi, was Snapdeal, and they pretty much shut shop as of now.


They are many product(established and high paying) companies in NCR region especially Gurugram(cyber hub).


All 3. Biggest problem in Chinese software is ageism against the old, much less seniority.


Ageism is a huge thing in India too when it comes to hiring, especially in the IT consultancies. Since they want to ahow cheap rates to their customers, they hire a lot of 0-6 year experienced folks. It becomes harder once you cross 10 years.


Ageism and too much deference to seniority can coexist; for example, a 23-year-old giving in to a 28-year-old who's obviously wrong.


I'm too late to edit, but this is also incredibly common with just a difference of a single year in many Asian countries. You'll see it in the Japanese senpai/kouhai relationship, which affects not only classmates, but people who join a company in different years.


You may be right. My experience came from a rather famous and elite team that worked for me in China. It may not be a representative experience anymore.


Maybe true in China


"Maybe true in China" is not an argument. I find comments like these not helpful and disturbing. The amount of blind dislike for other countries without a proper argument makes me read less and less of hacker news.


"Other countries"? The person you're responding to is Chinese.


So he can't be American because he is Chinese? Think for a sec what you are actually saying. You are confusing ethnicity with country. Those two don't equate.


The profile says they work for Alibaba in NanJing. I'm pretty sure that's not in America.


I can speak of similarities. Both in India and China, programmers are basically 'bred' out of an assembly line like education system. Which means you find programmers with no passion or love of their craft. Which means it's rare to find good natural programmers, which you do in western countries because it's pretty much based on meritocracy rather than degrees.This shows in code quality and how projects are handled.

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.


> 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.


> Which means it's rare to find good natural programmers, which you do in western countries because it's pretty much based on meritocracy rather than degrees

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.


> programmers are basically 'bred' out of an assembly line like education system. Which means you find programmers with no passion or love of their craft.

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.


Which means you find programmers with no passion or love of their craft.

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.


I don’t think those networks you mention are good measures at all. Most of the great and passionate devs I know are not prolific on those sites. IMHO those sites are more often for new people to tech who like to showboat, and are likely to move on to something else that feeds their ego.


Native Chinese guy here.

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.


Where is that? I work with (a bunch of) companies in Shanghai and Shenzhen and the things that I find most interesting if I had to name differences are that my colleagues almost exclusively use waterfall as a process (they need complete specs) and they count more on books and specs than internet to find answers to programming issues. They can be stuck on issues I can answer with Google (which finds SO usually) in seconds. Baidu and others there are absolutely horrendous (in their and my experience; maybe there are people who are better at this).

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


What kind of Software Development shops did you worked? There are several tiers of companies. Developers in outsourcing shops are bad at lots of things everywhere.


To add perspective as someone with 10+ years in the US and 7+ as founder in India: You should really qualify as to whether you are looking for development practices in outsourcing companies or tech startups.

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.


What is the culture like otherwise? Do you guys do happy hours and stuff like that? I’ve thought about doing a short term stint in India, if only to learn more about my cultural roots/heritage.


haha that really depends on the company. if you work in a company that focuses on "stability" expect to be surrounded by people who think family and culture is the most important. if you work in a startup expect a collegial "brogrammer" attitude. if you work in an outsourcing company expect to be bored out of your mind working on relatively outdated tech and spend most of your time fixing the codebase


The culture is mainly collegial. We do all of those - birthdays, picnics, parties on the patio, etc. Ping me if you would like to discuss anything.


In those counties, hierarchical management tends to be the norm. Managers have much more power, and there isn’t the equivalent of these rockstar 10x engineers we see in the US. Respecting the hierarchy and the process of governing employees can be much more important than delivering a brilliant feature.


I think there is (was?) one difference (at least for some) between Chinese and Indian developers: Indian developers sometimes aim to be managers as it confers more prestige when it comes to considering marriage, compared to a contributor. Perhaps it's changed.


Not a lot though. I am still a junior dev, but a lot of senior devs have reminisced about how they wanted to continue dev work, but had to take up managerial positions for social reasons. Marriage is one side of it. Apparently, people look down on you here if you stay a dev for long because it appears as if "you weren't capable enough".

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.


>>Apparently, people look down on you here if you stay a dev for long because it appears as if "you weren't capable enough".

>> 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.


>>Perhaps it's changed.

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.


You are absolutely correct. If you are a 10x engineer reporting to a mediocre manager in these countries, it really complicates things and in the end you learn wrong lessons in life.


So, does that mean if one is 10x engineer under mediocre manager in other countries, things are better for that engineer compared to these countries?


It depends on the cultural context. India is a society of scarcity, and with an over population problem. So people try to endlessly optimize for themselves, regardless of the consequences. And then hoard for themselves.

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.


"10x engineers "

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.


>Now I work at a place where they prefer many 0.5x engineers under tight control that do what they are told.

won't these engineers basically be replaced once someone figures out a way to automate menial dev tasks like wix for eg


> isn’t the equivalent of these rockstar 10x engineers

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.


Rockstars and 10x engineers are both real and not terribly uncommon, but often are not the same people.

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.


perhaps one can say there are people who work with existing complexity well, and there are people who reduce complexity well. These two types of people don't necessarily overlap.


It is a thing in real life. You have to see it to believe it.

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.


"Rockstars" are real but I think the idea has been warped. Every field has an elite set of performers who outshine the others. I don't see why software development would be any different.


I think it helps to reformulate the question to "are there people at the tail ends of the distribution?"


i suspect that the 10x thing is highly dependent on problem domain and expertise in a specific field, a person may get to be very good at say frontend, but if he moves on to another domain he may be much less effective.

maybe there are people who are 10x across the board, can't be ruled out.


Rockstars are definitely a thing in real life. They may have long hair or tight clothes. They sing or play instruments and are often surrounded by fans. Unfortunately I’ve never seen one involved in computers.


Why wouldn't it be a thing in real life?


Popular programming languages used in China and India I find are roughly the same as the ones here: Java, Javascript, Python, C++, Go, etc.

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...


You can check also Tencent opensourced software: https://github.com/Tencent


I work at Tencent. From my observation: golang is extremely popular in China. Except that we are no different from other parts on the planet. Java, C++, python, js are popular too. Usually no Chinese will be used in the code, programmers try to use English, even if some of them wrote comments with grammar mistakes. Most internet-companies in China are using Agile dev mode by default.


> golang is extremely popular in China

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.

[0]https://github.com/trending


> My Feedback is based on GitHub Chinese's popular repositories , those repos are almost always written in Java.

Try TiDB, it is in Rust and Go.


Ex-Full Stack Developer BrowserStack in Mumbai, India. BrowserStack is a manual and automated web + mobile testing platform.

- 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.


Worked in Google US, then Alibaba China, then a startup founder. I'm comparing not your average companies but top notch from the two worlds.

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.


IMHO the big cultural difference between the sub continent and the US is an emphasis on a particular notion of being “practical” over what I would call a particular notion of being “smart.”

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).


How does this relate to maintenance?

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.


There is also another issue with “just works” and meeting specs: specs are almost universally under constrained.

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.


What you're describing is about end-user empathy than being "practical" or "clever".


> they’re still using JAVA or PHP because it works.

Or probably because that’s what western counties pay for


every contractor does what he gets payed for, hat's not something tied to any specific place or culture.

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.


Majority of us in India would also want to work on the latest and fancy tech. But unfortunately, most of us who work in the IT consultancy companies don't have that luxury. Most of the outsourced work are brain dead maintenance projects that are several years old.


I am not sure if Java is any more practical than say Node.js or Python.


I think it's more that existing projects are in Java, so I have experience in Java, Java works, so why learn something else? Just start the next project in Java and it'll just work.


That would imply that the world moved from Java to Node.js / Go / Python just because they are cool new technologies.


Can't tell if sarcasm ...

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.


But did the world really move from Java to Node/Python?


2 years ago i'd say no but increasingly every new concept/tech stack i encounter has npm embedded in it to access a js library. same with python being used for automation/low level scripting.

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


Npm is prevalent in client side for sure, many non trivial ui apps use react/redux or similar and use npm for package mgmt. On the server side, it's a different story. Java still is the go-to language in a lot of organizations. Python for automation, machine learning, and provisioning, yes, I agree. These areas were never Java to begin with.

This may change,though, what with Oracle's license changes.


From what I've seen, Java offers more tooling and handy utilities. Examples: Remote debuggers, thread dump utilities (and analyzers), byte-code injecting tools, etc.

I haven't done a lot of 'production' Python or Node, but I have heard people gripe about the need for some of these.


With python and node typically comes a different approach to developing which should mean those tools are less useful.


China used to heavily depend on outsourcing perhaps a decade ago; there's been a marked shift to serving their own audience and building for that marketplace.

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.


I'm really interested in hearing more about this, especially when it comes to software development in cities like Beijing and Shenzen. The stories make it seem like China's developer culture is really harsh, almost absurd in the intensity level and hours worked.

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?


Disclaimer: Although I come from China, I never worked for a Chinese company. All of my opinions were gathered from internet and friends. And definitely not all companies are like this.

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.


Interesting. You are right not new to China but the IP laws make it harsh.

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?


The only question I have about this is _who is doing the thinking part of their coding_? Someone has to be working just a furiously architecting and concepting for all these programmers hammering out code for 14-16 hour days.


There are tech/team leads to do it, but their approach is different. Tried-and-true solutions are picked out from what's already been built at the company, and that cuts down on time consuming brainstorming and planning phases and the debates between devs and product managers. It's in some ways more conservative than what we see in the West with more copy and pasted byproducts of the planning process


Another question is regarding open source tools, maybe it's a US bubble but I don't think I've heard of any Western companies adoping Chinese open source tools.


Harbor was originally made by VMWare China, thats one of the few open source tools I know of.


The path of least resistance is contributing to English languages tools would you know if some of the commmits to insert tool here were written by someone born in China?


Vue.js could be one open source tool that many US companies are adopting.


A lot of Chinese contributors to many Hadoop projects


Working overtime has become routine for developer, especially first-tier cities , such as Beijing,Shanghai,Shenzhen,there is a term called "996", which means employees start at 9 am, finish around 9 pm and have to work on Saturday.

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.


We have a term “996”, which means working from 9am to 9pm per day, 6 days per week. It’s common in many tech companies.


I hate how this is a thing. Mental health be damned. The only way this could be stopped if there was country-wide protests or walk-offs, but I doubt that would ever or could happen.


it isn't sustainable, people end up either moving to a less strenuous industry or pursuing higher education so they aren't devs anymore. it's really weird


I think it's largely marketing bullshit used by VCs, specifically GGV.


I've heard about a well-known tech startup in China called "Pinduoduo" where the standard hours for devs at their office are from 11am-midnight on weekdays and I believe most of them work a day each weekend too. It's fairly common for small tech companies to operate like this


I wonder if they picked that schedule in order to reduce rush hour/commute time.


OT: I visited a Chinese company last year in Beijing and what impressed me most was the richness of open source solutions there. To mention a few tools they were using that I haven't heard before: jstorm[1] (storm inspired stream processor) , dubbo [2] (grpc like for Java), codis [3] (redis clustering/sharding solution), canal [4] (mysql to Kafka forwarder).

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


India follows the "Sheep Herd" mentality. The whole country's economy is based on people getting into "Profitable" domains mostly following the success of a pioneer in the field. The most recent example of this ideology is the "Business Process Outsourcing" industry. New BPO units are propping up here and there at a dime a dozen leading to a quality deterioration in the final deliverable. This process will continue till a saturation level is reached and then they will wait till another "Killer" domain picks up momentum. Till then India will be in a so called "Calm Period" where nothing great and major takes place.


Working in software development in India after working in bay area for 5 years. I cant speak for China, but the work Indian companies get is singificantly less critical than what their US teams are working on. As a result, there is much less emphasis for best practices and good coding culture here in comparison to US. However, considering how many of my Chinese colleagues have returned back to China to code with local startups there, I would like to bet that the Chinese coding culture is far more closer to bay area than to India.


This doesn't apply to product (Flipkart/Alibaba/Zoho/Chargebee) companies in India/China, they are at par with West in their workflow/culture.


Depends entirely on your company. The most important distinction I've come across is whether someone is from a Service-based company or a Product company. Unfortunately, the service industry leaves a lot to be desired in terms of quality. I work for vwo.com (a Product company) and I can speak a bit about my workplace:

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 ^_^


China: Many embedded programmers. Lots of Windows platform derived language choices. Code is typically discussed and documented in Chinese, but very often with English variable names. There are many companies so there must be agile shops, though I've never seen one. Access to computing and the internet is cheap and ubiquitous, the economy is good, many people learn for fun or interest. Salaries are high.

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.


1. Most work is still from outsourcing. A lot of that work is good. It depends on your preferences, and what you want out of the job.

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.


What do you mean by cartel in this context? Like a mafia type network or something ? Or drug cartels?


Its like, imagine a mini people structure within a company. Within that structure, people who exist, get like all the benefits, raise, RSUs, travel opportunities, Visas's etc. Of course you also get shafted if your out of it.

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.


There is one thing I'm completely sure about. Code quality is an order of magnitude worse.

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.


The reason is simple. They don't 'care'. They don't get rewarded for writing great code. They are not responsible for maintaining it. They don't get to see it work in the wild. Most probably, they don't even understand the problems that the project is trying to solve.

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.


I've seen the same thing with eastern eu/west asia outsourcing, where arguably they have fairly strong programmers overall, and can put out great projects, but the outsourced ones just suck. I believe it comes down to the same thing as in asia, if you don't really understand the problem and don't think you're gonna be maintaining the code you have no incentive to make it nice.

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.


It happens even when they are part of an internal company office and not a contract shop.


Are they paid better than burger flippers in California?

Absolute numbers, not relative. Discount team doesn't really need to care about your problems.


They were paid better than the typical tech company in beijing, so definitely not a discount team.

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.


Again the same thing. Rewards don't flow in the direction of merit, so there is no incentive to deliver quality stuff.


The reason is simple. They don't 'care'. They don't get rewarded for writing great code.

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?


I think this is a symptom of outsourcing rather than the skills of people. When outsourcing they don't own the product or have any pride. My company has previously experimented with outsourcing to a European nation, and we get back the same shit show.


When you hire lowest wage coders, bad ones won't care, good ones will jump ship midway or once it's done.


I'll skip your questions as they've been already answered by the majority here and go straight to a fundamental difference in mentality here in India:

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.


Most Chinese programmers not working for outsourcing. China has a very big market it own,the current hottest topic is AI,so many startup company looking for develops.The previous hot one is app developing for Android and iOS.


I don't think you can really compare India and China at this point. China is competing with the US as biggest economy in the world. India's GDP is the size of California. There is just more money to go around. Also government policies in China strongly tilt toward homegrown companies.

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.


Are you asking for a comparison between development in India vs development in China?

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


Java, .Net/C#, C++ are popular with large sized Indian IT (Services/Consulting)companies. The choice of language is purely based on customer requirements. One of my friend was working to maintain legacy systems written in BASIC. Product companies or startups get to work with new programming languages/technology that are popular.

Code/Comments are entirely written in English.


I work for a SaaS firm in Chennai, India.

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.


Node.js along with ReactJS/Angular seems to quite popular at least in Mumbai. I've been working on Node.js since I graduated in 2016. I could also find a few companies that have their backends written in Django. I also interviewed with one company that uses Erlang for their Chat apps.

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.


Talk about Pakistan too. Software industry is pretty strong in Pakistan too.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: