Hacker News new | past | comments | ask | show | jobs | submit login
A myth called the Indian programmer (avinashsingh.wordpress.com)
146 points by signa11 on Feb 14, 2012 | hide | past | favorite | 88 comments



I might add another "myth" called "Indian blogger" too in this case. The linked article is a total copy of a news report by Times of India (http://timesofindia.indiatimes.com/home/sunday-toi/A-myth-ca...). Couldn't the blogger add a measly line of attribution?

Ok. Back to the topic.


This really is an interesting case of plagiarism since there are multiple versions of this article by different authors, each who has slightly changed the other.

February 17, 2007. Author: timesofindia staff?

http://timesofindia.indiatimes.com/home/sunday-toi/A-myth-ca...

February 18, 2007. Author: Brajeshwar (who does attribute "an article" in Times of India as "inspired by", but without a specific link)

http://brajeshwar.com/2007/are-you-a-programmer-or-a-coder/

April 5, 2007. Author: Avinash Singh

http://avinashsingh.wordpress.com/2007/04/05/a-myth-called-t...

2010. Author: Mohamed Sardhar

http://www.citehr.com/26128-myth-called-indian-programmer.ht... (exact copy of all 3 pages of the Times of India article, with no attribution to original, just a new byline added)


Fascinating, this seems to speak directly to DarkShikari's point. It definitely reads like a mishmash of different people's thoughts.


Or, maybe the newspaper copied the blogger? If Indian plagiarism exist reached the journalism too... :)


The dates seem to suggest otherwise: the TOI article is from February 2007, the blog post from April 2007.


India's college education system is broken, and the statistics bear it out. Comparing it to the United States' -- a system that really isn't so good either -- doesn't even begin to describe how serious the problems are in it.

Industry groups complain that 90% of college graduates (75% of college engineering graduates) are completely unemployable. Not merely untrained, but not even worth training. One of the major industry training companies has recently increased their training period to a full 7 months.

Plagiarism is endemic and encouraged on every level, from the Dean down, even in graduate schools. Most students write papers by copying off the internet and citing "Google". Many "programming" students assemble programs by begging for "the codez" or otherwise copying "the codez" from existing projects. Professors rarely bat an eye when the entire class turns in the same work.

By comparison, in America, plagiarism is looked down upon and stigmatized from as early as the start of elementary school. It's still a major problem, but it's not socially expected in the same way that it's become in India.

In this kind of environment, it's not surprising that "coders" are being trained rather than "programmers". Programming is about problem-solving, and it's hard to teach problem-solving in an educational system that revolves largely around copying other peoples' work in place of solving problems.

A few of the best students manage to succeed -- after all, even a broken system can't stop some of the smartest and most motivated from succeeding. But even for them, the soul-sucking nature of such a system can hardly be encouraging, and it does no favors for their job prospects -- since being "Indian" carries the stigma of being a product of that broken system, even if you managed to become a great programmer regardless.

HN often likes to demonize traditional education, but the most important role of education is not to teach skills, but to teach you to think. That is the purpose of writing a 10-page critical analysis of a theme in a Shakespeare play, or building a toy memory allocator: not because knowing Shakespeare or being able to write malloc is important, but because it teaches students to think and analyze. By plagiarizing papers and programs, students completely miss the point of the exercise -- to learn to think!

Indian colleges are by and large failing this primary responsibility of education, and their students suffer as a result. In true cargo cult fashion, they have adopted the trappings of education without understanding the real purpose behind it.


This is one of the most articulate summations I have ever seen on the Indian education system. I agree with everything, except the last paragraph which I somewhat agree.

A large shoulder of the blame must be placed on the Indian student himself. He revels in the 'plagiarism' culture. Due the the fact that he can plagiarize almost everything, he does about one-fiftiest that someone in an undergrad CS major in an US educational institution would do. He boasts about how he is able to game the system to his family, friends and relatives. He sails through four years of a CS degree and then he gets a job as a 'coder' in one of the outsourcing firms for 5000$ a year.

The smart ones of course, do their time and then they escape to graduate school in USA where they learn in 18 months what an undergrad CS major learns in 4 years and some more. They go from brink of working on coder jobs for $5000 a year to working for bigcos like Google, Microsoft, Amazon, nVidia for $100,000+ etc. A small minority with the entrepreneurial itch usually work for a couple years, save, head to the Valley or home and start their own startups.


In some sense, it's a case of "spare the rod, spoil the child": if from a very young age, students learn that plagiarizing and cheating are allowed and expected, that's what they'll do in college too.

Schools need to be responsible for enforcing academic discipline -- and to a large extent they reap what they sow. A similar, albeit lesser-in-magnitude problem exists at many schools in the US, where teachers are pressured by administration to overlook plagiarism or give students "second chances". Unsurprisingly, when you teach that cheating is profitable, people learn to cheat.


Indian students do not learn from a young age that plagiarizing and cheating are allowed and expected. Plagiarism and cheating is taken seriously at a high school level (although I'm sure there are a couple of bad apples in the bunch) and even, ironically, at the college entrance examination level where being caught cheating will cause you to be banned for several years from taking the entrance examination.

The problem with plagiarism in college is that it goes way beyond the graduate level. Most professors will have several published papers - all plagiarized from prominent journals. They will have published several books - all rehashes of standard CS literature which they will set as course textbooks to their students to make money. In this case it is a judgmental error on the part of the students. Most of them have had a fine education up till the high school level and are now adults, and they should realize the scam in front of the eyes.

There are alternatives. In my day, there was no Khan Academy. No open courses at MIT and Stanford. No Udacity.com. No iTunes University. And of course, they always have the option of graduate school in US which doesn't burn a $100k+ hole. I am not exonerating Indian schools of their responsibilities, they are certainly broken and need to be fixed as soon as possible. But at the same time, you don't need to be an outlier to beat the broken system and avoid becoming a 'coder'. I just have this strong suspicion (which of course I have no way of verifying) that all these 'coders' would be dropping out of CS programs if they were studying in an US educational institution instead of an Indian institution.


I do not think rod alone can produce the results you want.Teachers promote plagiarism because they themselves are sub par. Teachers have enough power to use rod to control student in other area of school, college life i.e. discipline, relationship between sexes,proper dressing etc.They do use rod wherever they feel confident.

Biggest problem I have seen during my schooling days is of Guru culture. Teacher is expected to know everything so they behave as such. They are never open to discussion or criticism.

So unless teachers becomes collaborator and work for the fun of it rather than respect or guru status, I have little hope.

PS: I agree with your analysis but your solution is not agreeable.


Even the regular "Computer Science" stream is filled with incompetents. How is it that you can go through four years of education which, as you say, is supposed to teach you how to think, but can't even puzzle your way through a simple Fizz-Buzz problem?


Based on what I saw at University in the UK it goes something like this:

Plagiarism at UK universities (the good ones at least) is extremely frowned upon and the staff will happily fail you if you hand in identical coursework. In fact in many cases they will fail everyone involved without trying to figure out who did the original work.

However, in the CS dept you would get many bright students who were excellent academically but couldn't really program worth a crap.

You would also get other students who were actually decent programmers although many of them might not have been as strong academically (although many excelled at both).

This meant that a concept would be introduced in class and the bright students would easily understand the idea behind it and rush off to implement the coursework. Of course since they couldn't program all that well they're code would be full of stuff like off-by-one errors and poor indentation/code design etc.

They would then enlist the help of other students who were good programmers who would be happy to help them (basically fix their code for them) and felt it was justified because the person seeking the help clearly understood the problem area but was just having "minor" problems with semantics etc and it was usually just a case of "oh, do your while loop like this" etc.

This meant that all students submitted different code thus no plagiarism, however it was entirely possible to pass the course without the ability to right a solid program.

I know people who graduated the course with strong programming skills but got mediocre results compared with the people who they helped.


I believe you, but these are pretty fantastic claims. Source(s)?


Much detail on this is expounded on (with at least some sources) in the discussions on Wikipedia about the recently terminated India Education Program.

Postmortem: http://en.wikipedia.org/wiki/Wikipedia:Wikipedia_Signpost/20...

Talk page: http://en.wikipedia.org/wiki/Wikipedia_talk:India_Education_...

The IEP was much like similar programs in other countries -- the idea being to get writing Wikipedia articles as a class activity for students. In the past, similar programs have had various successes and failures, but the IEP is notorious for its sheer size and consequences. It was a total and utter failure in which around a thousand students ended up flooding Wikipedia with plagiarized content, forcing mass-reversions and auditing of the entire program, and eventually shutting it down.

Much of the problem was bad management and insufficient planning/mentoring, but there's lots of useful detail in the discussions about issues in the Indian education system, why so many students assume it's okay to copy-and-paste, and so forth. There's some good perspectives from Indian editors, particularly the "ambassadors" who were serving as liaisons for the program.


FWIW: I'm Indian, studied at a prestigious Engineering school, and can confirm _everything_ DarkShikari said.


I'm Tunisian, and it's actually the exact same problem. (with the difference that we don't have these 'coding' jobs. We don't have jobs at all)


I beg to differ. The ability to think is an essential byproduct, but knowing Shakespeare is inherently important.


Why?


So that one may build and seed Shakespearean insult servers.

http://www.pangloss.com/seidel/Shaker/


I think OP was saying that knowing Shakespeare is inherently important because it transforms your ability to think. For example, take a case where someone knows how to think, and has read relatively easy children's authors like Enid Blyton. This person would still have learnt to think from writing a a critical analysis of whatever novel they've read.

However their ability to think is still limited to merely the thought processes of an author for children ( Disclaimer: I have no intention of belittling Enid Blyton here).

By just reading Enid Blyton you can't think in terms of metaphors or similes or puns etc. By reading Shakespeare you gain an inherent ability to think in a completely new way. This is also perhaps very similar to what PG says in ANSI Common LISP about LISP's unusual appearance, to quote PG: ' You have to think in a language to write programs in it, and it's hard to want something you can't describe. When I first started writing programs-- in Basic-- I didn't miss recursion, because I didn't know there was such a thing.' Similarly if you didn't know there was such a thing as personification, you wouldn't miss it!


I appreciate the support, but I actually believe that literature in general, and Shakespeare in particular are important enough to be studied for their own sake. We are the stewards of our cultural heritage, and it is our place to keep it going. Knowing about and thinking about books makes people better in other ways than just giving them skills and tools to apply to other problems. Good art enriches life and humanity.

And having some common points, like all studying Shakespeare, is good because it means we can all talk and think about it together.

Studying the humanities is not necessary for a person to learn to think. I didn't mean to imply that. But studying the humanities can certainly help in that direction, and should be done anyway.


I asked because from the perspective of mental self improvement it seems to me that any sufficiently intricate and well formed literature ought to do as well and I was wondering if there was any reason for it to be Shakespeare in particular.


I've never read Shakespeare and have the ability to think, so it's obviously not essential. And people thought before Shakespeare. Shakespeare had to think to be Shakespeare, after all.

I understand why people hold it up as essential: it's how they learned to think, and they can't think of another way to learn to think. So they call it "essential." It's still wrong. But understandable. Learning to think comes from having diversity in experience, not reading Shakespeare.


India is just an extremely high-variance country. It has produced people like Google's Amit Singhal (Search Quality), Sanjay Ghemawat (MapReduce), Vic Gundotra (Google+), Sundar Pichai (Chrome), and Krishna Bharat (Google News). And it has also produced many people who aren't worthy of the title coder, let alone engineer.

Rather than wringing one's hands, just ask programming questions in interviews and let the code do the talking rather than the nationality.


I didn't read the article as saying that the nationality is what matters so much as the corporate system and possibly the education system pushing to develop "coders" which industry there wants instead of "programmers".

All of the people you listed above(except possibly Vic Gundotra) moved to US universities to continue their studies.


4 out of the 5 you mentioned are from IITs. The education quality of IITs vs other institutions matters a lot in India.


You are getting it in the reverse order. People who make it to IITs are driven; they do well in every field not just IT. Most Indian coders are in it just for the money, they hardly have concept of basic business or functional concept to do better and the sad part is they don't want to learn. You need to love what you do excel.


As someone who went to IIT, I kind of disagree.

Most of the good things I got out of college there had little to do with the quality of the education and more to do with being surrounded by other smart, hard working people who managed to get in.


First: The thinking and problem solving required in programming is not taught enough at universities in North America, nor overseas.

Second: Being groomed to do specwork is the big problem of most institutions.

Third: Many developers thinking they don't need to learn anymore. Or, that they are done learning and ready to pursue a job/career. This is as evident in NA as it is overseas. Constant self-learning and self-development as a programmer is something that simply doesn't happen enough. Overseas, and in North America.

Fourth: The cultural differences. Done doesn't always mean done and it's entirely a societal/cultural thing. It's helpful have to define done as 'tested and ready to launch', etc.

Fifth: Outsourcers: Paying weekly helps a lot in a land where people get paid monthly, if on time at all..

Sixth: No sense on hating on overseas developers taking jobs. IT's the people paying the bills in NA that decided to take away all those jobs. And I guess they pay the price in the long run for better, or worse.

Seventh: Job, let alone career opportunities in India seem to suck. Every job posting gets hundreds, if not thousands of applications. Imagine trying to pick out the quality, let alone trying to stand out.

Disclaimer: I've outsourced to India. I've hired developers newly moved to North America from the Indian Subcontinent and had good luck and bad luck, like any employee.

I have been told I share some heritage in with the Indian subcontinent a in the past few generations. I'm not an apologist or out to offend. We all can do better and we should all be supporting each other to become the best we can be.


The thinking and problem solving required in programming is not taught enough at universities in North America, nor overseas.

Having been an undergrad, grad student, TA and instructor in two Computer Science departments in the US, I have to disagree. Good CS programs stress problem solving, and I think the US does indeed have good CS programs.


I won't disagree with you either. Nor will I reply with my academic credentials. There are exceptions to every norm.

I have hired CS undergrads, graduates, TA's and instructors as employees.

I do believe, based on what I've seen, that not enough institutions teach problem solving in general enough of a way to be applicable to building applications.

Understanding how all the pieces of algorithms, propositional logic, technologies come together in a solution that means something to the end user is something that our CS education fails in many ways on in too many programs.

Instead of strategic, spatial thinking, we are taught to focus on the same algorithms over and over in a dozen or two languages. That teaches us coding, not programming, let alone software development. Too many just learn to recognize the design patterns, let their eyes glaze over and get it done.

I'm not knocking education, I had some of my greatest memories and years and experiences in Academia. It just didn't prepare me for the real working world of finding the dots, and connecting them in the way that doesn't douse or kill the business. I didn't learn to communicate with different business units in CS. I didn't learn to help people communicate what they need in a clearer enough way. I wasn't taught to market or sell my ideas to the other stakeholders in my workplace, and instead consider just having fits of rage relating to Dilbert or XSCD (?) cartoons. This is all the responsibility of my formal education; to help prepare me for the real world, and it didn't. I was given a limited set of tools to interact and interface with the real working world. But man, I sure know what an O(n) function looks like.

Understanding how those details work, fit, and come together to amplify an organizations' competitive advantage, instead of dousing it in cold water is something we know far too many programmers, CS grads included, really, truly, suck at. CS grads have to go and learn that in the real world.

I wasn't taught when to use agile (when the outcome is unknown) and when to let waterfall in a little (when you're doing something very familiar, standard and predictable to reach your goal).

A system is really the data. No software system has any meaning, purpose, value, or impact without the data it works on. Teaching a data-centric and an experience centric approach to software development, in addition to what is already taught is critical, and I'm afraid it's simply not happening enough from the false positives from the people I've tried to hire in my business.


I think it's not just a matter of "exceptions to every norm." There are significant differences in the teaching philosophies of different countries, and this article argues that India's priorities are even worse than those in the US with regards to encouraging creativity and the like.

I moved to the US at a fairly young age, but talking to many friends and family members in India, I'd tend to agree.


I do believe, based on what I've seen, that not enough institutions teach problem solving in general enough of a way to be applicable to building applications.

That's a different statement than your original. Your complaint is that people aren't leaving school as fully trained software engineers. I think you will find the same is true in all engineering disciplines: school teaches you the fundamentals, but you have to learn on the job how to be a practicing engineer.

Also, none of my programming projects were anything like focusing "on the same algorithms over and over in a dozen or two languages." Programming intensive courses focused on how to design programs, while introducing new concepts that allowed us to design a larger set of programs.


Real thinking and problem solving tends to contradict "constant ... self-development", which often (not necessarily from you but from many) seems to be a code-phrase for "learning every new fad framework that comes along."

Example: web development is so damned faddish that after almost 4 years of its prominence, I have only now settled on picking one damned framework and learning it (Play 2.0 in Scala). I fully expect my newly-acquired "skill" to become obsolete within about a year.

This is not fundamental problem-solving. Hell, I would say that the over-reliance on "frameworks" and "web-applications" to build all modern software on the "thin client" paradigm is itself a fundamental problem that requires more serious thought and problem-solving than most people seem willing to put in.

Hypothesis: Despite the high cost of doing so, backwards compatibility must sometimes be broken.


I think your criticism is of a matter so small that it can barely be seen. Some self-developmental things to learn that will almost never be obsolete in one year (or ten years:)

- Patterns and ideas in languages that you haven't been exposed to before (e.g. continuations, or pattern matching, or actors, or dependent types, or STM, or...)

- All about time-tested tools and protocols or software or media or files or hardware that you work with or on, of which there is no shortage.

- Interesting data structures and algorithms, and related math.

It all feeds into fundamental problem-solving, you can work in a way such that you are learning it as you go along, and it's more than a lifetime's worth.


Is web development really that faddish?

With the phenomenal modern "web" frameworks (2005 onwards) available in all "web" languages that are equally as old (mid to late 90's), there are some common qualities emerging, wouldn't you say?

I mean, it is if we're looking to others for validation of what toolset we're and how we're doing it -- both are largely matters of preference.


There are definitely some common qualities by now, but nobody seems to actually treat the common qualities as principles, as things unto themselves. "We want 3 years in Ruby on Rails." "I've done Django for 5." "Nope."


edit: I was replying to DarkShikari, so adjust accordingly

I'd argue whether copying is a bad thing. Copying or getting others to do your work is what great businesspeople and managers do. The system of cheating you describe above might be actually creating a great stream of entrepreneurs/networkers. If they could channel that talent to pfoductive use, like getting 3d printers or robots in their hands, or selling through telephones, it could be a huge resource for everyone.

On a related note, everyone disparages Nigerian scammers. Yet these are highly entrepreneurial individuals that western companies should be hiring as salespeople.


Just wow.

A great manager does not get others to do their work. They lead or, let's see what's another word I know, "manage" other people doing their own work assigned to them. The system of cheating described can only create a stream of entrepreneurs/networkers who will ultimately have to cheat to attempt to succeed but the real world doesn't support that in the long run. They cannot be a good resource if they don't know how to actually work.

I agree, Nigerian scammers would make great salespeople for industries that specialize in stealing from people.


I think part of the problem is we in the programming/engineering communities have a high notion of doing things right/ethics etc. However, in the real world, where money changes hands and fortunes are made it's the cheaters who get ahead/make things happen. Do you think most successful politicians, used car dealers, industry titans are not cheaters. Did Bill Gates or Steve Jobs ever cheat? (yes, all the time).

The question is, who do you want to hire as your salesperson when you're struggling and have to pay rent. Mr. Ethical (cs nerd) or Mr. Cutthroat (nigerian scammer/used car salesman)?


I agree that being unethical can give you an advantage over others in some cases, but ethics (or lack of) is not the issue here, it's the fact that these people are completely useless. Most of the formal education is pro forma anyway and won't give you enough knowledge to be useful in a production environment - if you choose to cheat at that level then you aren't Mr. Cutthroat you are Mr. Deadweight and your only hope of survival in any company is a dysfunctional corporate environment.


Well, I would say based on various cultures around the world being ethical is the praised method while the cheater is despised. You are correct that many cheaters do get ahead in life but, on the other hand, many of them get caught and are punished accordingly. Just because some get away with it doesn't support the notion it should be an accepted form of work habit.

And many of the people in the categories you mention are honest and are doing quite well thank you very much.

Did Jobs and Gates ever cheat? I know that they did. How do I know? Because they got caught and often paid whatever price was deemed appropriate at the time. But that does not mean that both their entire careers is based around cheating, which you are implying.

To answer your question; if it were my business I would choose the ethical salesperson over the scammer every time for various reasons. He's more unlikely to steal from me, he's more unlikely to steal from my customers, he's more unlikely to ruin my business, he's more unlikely to cause me to be sued, he's more unlikely to cause me to go to jail. If those answers aren't good enough for you, I wish you luck in the real world.

By the way, I think you are being a bit dishonest yourself comparing a used car salesman with a Nigerian criminal. I think you are confusing being aggressive with being a criminal.


To be clear, it is indeed your stance that both Bill Gates and Steve Jobs lacked any sort of legitimate skills, talent, or work ethic?


While I can't speak for the author of that comment (And for what it's worth...) it's a well known fact that Steve Jobs had Wozniak do his job at Atari for him on multiple occasions. (Including the famous breakout incident. LINK: https://en.wikipedia.org/wiki/Steve_jobs#Early_career)

I've read multiple times from material written about both of them that their skills were in management and vision, not necessarily code and electronics. Honestly though, to extrapolate no legitimate skills (Let alone talent or work ethic.) from that is a stretch at best.


Of course copying can be good. Code reuse is a good principle. Generally we want people to most efficiently utilize the resources available. Failure to do so is even dubbed Not-Invented-Here syndrome. Ethics aside whatever you can use to get the job done faster is advantageous.

The problem is that programming is not a cut and paste job. To me the difference between a good programmer and a mere coder is that the programmer has the confidence to solve any problem and debug any issue. Even if you are just doing maintenance work and not working on new features, you need to be able to synthesize and refine an increasingly subtle understanding of the system you are working on. People who don't understand this end when asked to debug something end up just poking at it until they get the output they want. They have no clue whether their "fix" will break 100 other things because they are not forming a proper mental model. I would like to believe that this is inherently obvious to any working programmer, but I can see how it's not if you are under the impression that original work is only done by a few super geniuses, and the vast majority of people in the field are just searching around for something to copy. I certainly have seen this mentality both online in forums, but also in my undergrad CS degree where there were a handful of students who spent extraordinary energy trying to find someone to copy and didn't ever appear to give a rat's ass about any of the material.


Funny that this article makes it onto the front page this week , because I just so happen to be in Bangalore India right at this moment on a business trip training malware researchers we have here.

I can't speak to India's education system, but what I can say is the team I'm working with here - even though while earning a fraction of what their US companions earn - are doing a great job and have a lot of excitement and enthusiasm for their work.

Bangalore India really isn't that bad. I have had a great trip here, and I've been very impressed with the professionalism and level of intelligence of everyone I've met. If anyone else gets a chance to visit - I highly recommend you do so! You will not regret! Just get your shots before coming over, and make sure to bring Cipro/Azithromyacin just in case!


In my experience working with contractors from India, it was not excitement and enthusiasm which was lacking. It was the quality of the end product.


Just a nitpick on an otherwise largely accurate article. IIT Mumbai and IIT Powai (though commonly used in media) are erroneous ways of referring to IIT Bombay which still retains the old name of the city Mumbai in which it is located. Powai is a suburb of Mumbai around the Powai lake where the IIT Bombay campus is located.

http://en.wikipedia.org/wiki/Indian_Institute_of_Technology_...


On that same subject, I'd say there are rather few "large programs" that "run into billions of lines" (of code, I presume). By comparison the Linux kernel, one of the largest monolithic "programs" I know of, would have to expand by almost two orders of magnitude to fit into that category. :)


Meh. I think India makes a lot of great programmers. I've worked with too many good guys (and gals) to know that the country is capable of making talent.

But, I think that it also produces a lot of mediocre ones, too, but that might be because programming is perceived as a respectable "default" profession for smart but rudderless people. In the US, those people go into law, or try out medicine, but coding is seen as deeply unsexy. This stigma is unfortunate but I believe it also acts as a filter as well. Of the people that exit CS programs with a degree in hand, perhaps a higher percentage might be of the caliber that goes on to do great impactful things.


There's also a fundamental difference in the way we (at least try) to teach our kids. We "strive" to have kids who are creative, energetic, and capable of critical thinking. We may not succeed, but that's our goal.

In India, successfully raising kids is almost always a matter of income. There's just a much greater gap in socio-economic status for most Indian families that "creativity" and "critical thinking" aren't really as useful as a salary.

In the US, nobody strives for a job that doesn't require some level of creativity or critical thinking. In India, it doesn't matter to many people, because food on the table is more important.


So basically they are lower in Maslow's Hierarchy of needs.

This leads me to think that the 2nd generation of Indian programmers will be better since they will grow up with a middle class lifestyle.


It may not be really true. Indians are a "greedy" lot, always looking for ways to improve their lifestyle. So, the 2nd generation Indian programmer will be looking to work lesser than his (or her) parents and make more money.. and the software industry will always have slots for people who just understand instructions and not think.


Personally I think 'coder' conveys better engineering skill than 'programmer' (though I prefer 'guy who makes web apps' to either).

Programmers are often enterprise types, who don't code in their spare time, have a degree but don't learn anymore, and love the hours XML generates.

Many Indians-in-India code because their parents want them to be engineers, not because they love coding.


I look at those definitions pretty much exactly in reverse. I cringe when somebody calls themselves a "coder" because my mental image is somebody who just throws it at the wall and stops as soon as it's good enough. (Many "enterprise types" certainly qualify.) "Programmer", to me at least, implies a greater level of methodology--not something that guarantees better code, but probably doesn't hurt.

I call myself a software developer, because I don't just write code. I build (develop) software. I hate the term "software engineer", because we're not engineers.


> I hate the term "software engineer", because we're not engineers.

I don't buy that. We're building software in a time before we have a universally accepted engineering doctrine for software, but you can hope that somebody calling themselves a "software engineer" is going to be using some kind of engineering-like doctrine.

A good presentation about the future of software engineering: http://confreaks.com/videos/550-scotlandruby2011-real-softwa...


Very, very few of us follow any sort of engineering-like practices. "Engineer" has real and meaningful connotations that almost no software developers follow or can follow.

Engineers have certifications and legal consequences to turning out a complete turd. If a PE signs off on something that catastrophically breaks, they can be legally culpable. With very rare exceptions, "software engineers" just file something in Bugzilla.


The distinction between developing software and writing code seems a bit weak to me.


To me, developing software defines the entire process of delivering a software product. Looking at it this way, "writing code" is the only non-nebulous aspect a developer is tasked with. Domain knowledge and managing systems are very much part of a developer's role. Anyone abstracted from this is most certainly just a "programmer" or "coder." Real developers do a whole lot more.

Writing code is certainly part of it, but so is designing the overall software architecture, using the right library (when it already does a better job that your own "code"), keeping everything stable, and putting out a proper release. Each of these steps, and the dozens of others not mentioned, require one to "write code."


I'm somewhat nervous about posting this due to its somewhat sensitive nature, but I'd like to share my own experiences with Indian programming students, and perhaps some of you who are more familiar with the education system in the country could provide some background info for me. As in, the following is definitely not meant to be any sort of judgement, because I'm relatively clueless and there is significant selection bias to the data my perspective affords.

I'm involved with programming mentoring program in a large open source community, KDE. A significant percentage of the mentoring requests I receive, I'd say about half of them, are by Indian CS students, often in their second or third year of college education. On average, they share the following attributes:

* They're nice and polite people, and, a sometimes significant language barrier aside, nice to work with.

* Unfortunately, their education level as pertaining to the programming practice tends to be far below that of Western students who have spent a similar amount of time in CS college education. They've had, say, C++ classes, but their understanding even of OOP basics tends to be lacking, not to mention groking something like an event loop. This is not necessarily a fatal problem considering that receiving programming mentoring is the point of the mentoring program, but we don't quite have the resources to make up for it all -- the idea is more to focus on helping with KDE specifics than general programming.

* Many of them seem to have been explicitly encouraged to participate in international open source projects by their institution. Some appear to do it in order to receive credit from the institution.

* Most of them expect to be told what to work on, and there is a distinct edge of subservience to their communication style with us that you don't see from non-Indian mentees. Often, the first step is to explain how the nature of our community really allows them to choose to work on what they find interesting, or where they perceive a project could need their help the most after making social contact with the developer and user communities and observing the existing pain points. Unfortunately, no matter how gently this is laid out, this is also the step after which we never hear back from many of them: The agency to self-select and self-motivate seems to be lacking.

Of course, for completeness' sake I should also mention that there definitely are exceptions. I've also mentored Indian CS students who are exceedingly bright and who have later become valuable contributors in the community. Our first conference in India was also a great success: http://dot.kde.org/2011/03/10/confkdein-opens-bengaluru and http://dot.kde.org/2011/03/12/confkdein-talks-close-kde-lege...


> Many of them seem to have been explicitly encouraged to participate in international open source projects by their institution. Some appear to do it in order to receive credit from the institution.

Working on an open source project is sufficient to receive credits for an internship or a co-op in most Indian educational institutions. So, unfortunately most of them are not there for the love of open source but because they need the credits and something to put on their CV.

> Most of them expect to be told what to work on, and there is a distinct edge of subservience to their communication style with us that you don't see from non-Indian mentees.

This is a cultural thing. Even though you are their mentor, they expect you to play the role of a boss.


> So, unfortunately most of them are not there for the love of open source but because they need the credits and something to put on their CV.

Why "unfortunately"? Many people (me included) working on Linux, MySQL, Android, or any other corporation backed open source project do not contribute because they want to, it's just what they're paid for. Nevertheless, their contribution is real and useful.


>The agency to self-select and self-motivate seems to be lacking.

This is dead on.Independent thinking is strongly discouraged by institutions and companies alike.


> This is dead on.Independent thinking is strongly discouraged by institutions and companies alike.

Independent thinking is never embedded in a classic "Indian" setup. Asking questions is considered an insult - right from the time one is a child. And it continues way past - schools, colleges.


None of this is really specific to India. The same observations can be made anywhere.

The fact is, most enterprise software development doesn't require much in the way of thinking, the challenges are cultural or organisational rather than technical. But that is fine. The majority of programmers (I will avoid my thoughts on coders vs programmers vs software developers here) are quite happy to convert a spec doc into code and throw it over to QA day after day.

Those that want to get more out of their work life, and enjoy some more freedom to decide not just how to do things but take part in deciding what should be done, or perhaps want to involve themselves across the wider business of delivering software solutions have a lot of options open to them. They can be leaders, or start startups, or become ScrumMasters or coaches. They can move into customer facing roles if they so desire, or take part in developing tools that other developers use. They can involve themselves in academia or open source. They can become architects or help design the frameworks that encapsulate a lot of the technical complexity so that less engaged developers can get going quickly.

I think it is all good. There is enough work of the right kind for everyone. We will always need lots of people happy to just do what they are told for 8 hours per day, and we will likewise need a fewer number of people to step up and take on more advanced tasks.

This is not specific to India, it is fairly universal in our profession.


Actually, outside of software startups, several software houses I can think of and the established tech giants, what has been described here is pretty much the rest of the world.

I guess to use something that I saw on HN the other day, it's the dichotomy of the creative film crew versus the sterile manufacturing line.

Note that business people can't help themselves. After all, this is what business school has taught them in how to become managers.

The keyword is "manager". Note that it does not mean leadership. We are sorely lacking in leaders. At every level.


This article feels dated for sure. The body shop mentality was just a result of market forces, and yeah culture probably played a role, but this situation is not providing great ROI for international clients. The nature of programming is to automate drudgery, and Indian living standards are going up all the time, so the economics of this just weren't sustainable. What is happening and will continue to happen is that Indian firms will grow into higher and higher market segments while this body shop stuff plateaus and then starts to decrease. Increasingly Indian firms will find that the real money is serving their local markets which are HUGE, and which they have cultural knowledge to produce a superior product. Initially this is done by copying successful products from innovation leaders worldwide, but eventually the competitive advantage will come from targeting the differences of the local population. I believe this will happen regardless of culture, but I do feel bad for people who were sold on the idea that being an unthinking code monkey would provide a secure and lucrative long-term career.


May be it's got something to do with this? http://www.youtube.com/watch?v=TlrzzeFsMXo&feature=relat...


First, this article is 4/5 years old. Second, this highlights another unfortunate Indian tendency to revel in cynicism.

Well, I am a programmer based in India, and know many others who also are. And although I also prefer to use the 'programmer' word, but believe you can substitute it withe 'coder' without taking away any respect (remember there is the elite topcoder.com site )

India is a land of billion people. So you can find all various kinds of people here. So certainly, you will find a lot of people who may be close to the stereotype described in the essay.

But if you actually see there are lots of guys, who are doing their best to try and be world class programmers.

And not just programming. They are taking full advantage of the Internet to learn the silicon valley best practices to create a similar environment within their own Startups. I know quite a few of such people, actually.


This blog post is a result of "Blame culture". The intention here is just to find faults and exaggerate, but not to do anything constructive. In the end the blog post does not state anything constructive.

The post is too narrow minded and focuses only on negative aspects. Poor quality is ubiquitous, its every were. Can you name one country which has only highquality programmers? Author just assumes people are bad and things are exaggerated. Blog post creates "panic" which is unwarrented.

Its true that education system needs improvement, but it does not mean that most people are useless. Also this blog post assumes that everyone must be a programmer and not coder. Its like expecting everyone to become a CEO of a company. Expecting everyone to beome CEO and bashing that most are useless is stupid. There are many great programmers and innovators from india.


I would imagine that the best Indian programmers are every bit as good as the best American or European programmers. It's just that at the low end, people who are not good programmers in first world countries will gravitate towards something else as there are plenty of other ways of a making a similar level of income whereas in India options are more limited so people will stick with a career to which they may be ill suited.

From what I've seen Scandinavian countries seems to have a very good track record for creating innovative programmers. A disproportionate number of highly original languages , frameworks , software and games seem to come from there.


This is a painfully accurate article. I can say this as an Indian Coder.


Most of the Indian Software Engineers work in Software Maintenance business, production support, database administration, network maintenance etc. They are all challenging jobs. Some companies perform custom software development for large clients, and they perform on par with "in-house" software engineers in US and Europe. Google, Microsoft, Facebook, Zynga and other coll companies also have offices and they hire the best and brightest programmers in India. India does not have a startup culture like US.


I think this is the natural result of "programming" or "IT" being perceived as a comparatively lucrative career.

I believe it happened in North America, too, just not quite to the same degree.

I first had access to a computer (an Osborne 1) in 1983, at the age of 8. I think it was inevitable from that point that I'd become an electrical engineer or computer scientist. As luck would have it, it turned out to be a reasonably lucrative career choice, but monetary considerations literally never figured into my choice of university program. I had no idea how much an engineer made. I think that most of my contemporaries were similarly-minded. Entering University in 1993, I had never had an email address, and it wasn't until second year that I first saw NCSA Mosaic and this thing walled the World Wide Web.

While I was in university, a revolution quietly, but incredibly rapidly, took place. By the time I graduated in 1998, I was using the web to book travel, buy stuff in online auctions, and my mum was handy at email and finding things on the web.

In my department, a huge shift took place in the incoming demographics - the new frosh were there because Computer Engineering was the hot program to be in. The Faculty halved the Electrical class and doubled the Comp class, and it was noticeable, even years later, when this younger blood graduated and was now in the industry, that many were of a very different mindset to my peers. Far fewer had followed a genuine passion and fascination with computers, and had pursued it for what seemed to be far more pragmatic and material reasons. As one acolyte put it, to my barely-contained amusement, "I'm in software engineering! Bling Bling!"

I mean no disrespect to younger generations. I recognize that there are many fine folks here much younger than those I describe who are as passionate about computer science and engineering as I am, if not more. And there are some gray beards laughing at this young fool who thinks he was the last of a pure breed. But to me that brief period represented a very sudden and very sharp switch in the mentality of those entering the field.

Now take that sudden demographic change, time-shift it a few years to where the global network infrastructure is in place to enable this work to be outsourced just about anywhere, and scale it appropriately considering that this lucrative new field could mean the difference between fabulous (comparative) wealth and a life of poverty. Add an economic crunch that pushed companies to reduce costs, and government initiatives to promote that industry.

That's what India's IT industry has developed - a massive work force that has been suddenly conjured into being and drawing an even lower common denominator than I ever saw at school.

[EDIT: disclaimer- I also mean no disrespect to many very fine Indian engineers and computer scientists; I mean only that the low-end of the spectrum has lowered dramatically]


a huge shift took place in the incoming demographics

Hence, "brogrammers".


This is a post from 2007?

Its all about the relative scale of numbers. India has a ton of programmers and a trillion ton coders. There is a place for both.


“In the last 20 years, 13 students from China have won the International Mathematical Olympiad,”..."and India hasn't won the prize even once.” http://www.thehindu.com/news/national/article2889936.ece There have been occasions of scientific and intellectual glory, an Amartya Sen here or a Venkataraman there, but almost all are, as Indian media fondly tags them - 'India born'. Unless we realize and accept that we have a serious problem, of which the lack of truly great Indian programmers and product companies is just a manifestation, we are not even going to attempt a solution.


I got my bachelor's degree from a college where in one course we were supposed to learn Java. The teacher use to write the example code from the textbook onto the board and then dictate short notes on concepts like "Inheritance" , "Encapsulation" etc. According to her Interfaces in Java existed because they enabled programmers to overcome the lack of multiple inheritance. You can implement as many interfaces as you want but you can inherit only one class. That was her argument. My college was ranked 60th best college in the country that year.


The projects that are offshored don't require programmer. They require people who can understand and follow instructions.


Honestly there is some truth, but if you want to be a programmer(not a coder) no company, no person can stop you. I agree that companies like TCS etc. get mainly maintenance work but nobody is forcing you to stay there only, if you don't love a job, don't do that job..


Is this still true? This article is five years old.


Yes,Its still relevant.This article will be relevant for next 20 years ,unless some thing dramatically changes(like creating world class products) the Indian Software industry.


That's it, I am going to break this myth.



I agree ! There are people exploiting lack of face to face interviews and back ground checks (particularly for contractors) to end up at jobs they aren't qualified for. I don't if this is a recent trend, or if it is already known in the software industry, though.


one question to hackers here, how do you think of the Chinese guys in IT? coder?programmer?good engineers?


LAME article


Would someone Please kill Indian MBA degree(IIM (These clowns take freshers for Managing Company wtf)). These guys still live in industrial Age. And being an Indian i can tell most of them are still in colonial age (Indian Administrative Service Wannabe which is created to create clerks (now a days nobody knows what clerk is) for East India Trading Company)thinking industrial age is new century thought or something.

After 40 years of software Evolution such as Internet, Social Network is creating Revolutions (Arab Spring) and OpenSource Software is running in Mars etc.. these guys still haven't got clue about what is Software and How to Create it.

And M.B.A degree is killing common sense in these people and they are effectively making dinosaurs such as media company executives who's riding Titanic and thinking themselves as Titans.

As per Calling Programmers Coders please don't listen to these clowns. They live in way past and accessing future with knowledge created by East India Trading company(before 1857).

As per my knowledge and my experience The Best way to predict future is by creating it.

So Please Get yourself openSource Unix Box. Learn PHP,JavaScript,C++,CommonLisp,Python, Bash etc.. Create Something futuristic such as TheMatrix etc... That way we can control future.

Please please don't listen to These TCS/Wipro/Infosys Solution Architect's limited knowledge. And Fellow Indian Engineers please don't ask any advice from these clowns. If anybody is offering advice ask github Link before listening to them.

Man is Tool Making Animal. Make Innovative Tools and make a better future. Evolution will take care Rest.. Sorry for the ranting I can't stand some MBA wannabe calling me Coder. I really want to be called as a Programmer.

FYI (http://programming-motherfucker.com/)




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

Search: