Only 36 Percent of Indian Engineers Can Write Compilable Code, Says Study (itwire.com)
New submitter troublemaker_23 quotes a report from ITWire: Only 36% of software engineers in India can write compilable code based on measurements by an automated tool that is used across the world, the Indian skills assessment company Aspiring Minds says in a report. The report is based on a sample of 36,800 from more than 500 colleges across India. Aspiring Minds said it used the automated tool Automata which is a 60-minute test taken in a compiler integrated environment and rates candidates on programming ability, programming practices, run-time complexity and test case coverage. It uses advanced artificial intelligence technology to automatically grade programming skills. "We find that out of the two problems given per candidate, only 14% engineers are able to write compilable codes for both and only 22% write compilable code for exactly one problem," the study said. It further found that of the test subjects only 14.67% were employable by an IT services company. When it came to writing fully functional code using the best practices for efficiency and writing, only 2.21% of the engineers studied made the grade.
What percent of Slashdot Editors can spot a dupe?
My code rately compiles correctly on the first attempt.
Sure, I could carefully inspect it before clicking "build," but it's faster to go through the build-fix-build cycle a few times than to scrutinize it for compile-time errors beforehand.
As for the rest of the test, I would fail too, especially since it is a one-hour timed test.
Now, show me a problem where the obvious/naive solution is something any decent programmer can get right in half a day but finding an ideal- or nearly-ideal solution will take a great programmer a few hours to find, a very good programmer a day to find, a mediocre one 2 days to find, and a lousy one a week to find if he could find it at all, and I will show you a problem that *might* be worth considering if you are trying to "rate" programmers on coding skill.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
It would be extremely useful to know how this compares to college students around the world. Without that but of information, this article is nothing but anti-Indian-IT propaganda.
By the way, I did read the article but couldn't find this information. It's it available somewhere else on the interwebs?
Am I to infer that these are newly minted software people fresh out of college?
What's the comparison - how would a set of grads from US universities, or British, or Ukranian fare? Frankly, lots of people make it through educational systems without being able to do whatever their degree says - I'm not clear that the percentages here are any different than anywhere else in the world.
I'm pretty clear that without more context this is useless. And there's no mention of the report containing that context.
A thousand pounds of wood moving at 300 feet per minute. Don't get in the way.
At the end of the 60 minutes if your program doesn't compile then you aren't part of the 36%. You could be finishing a statement or part way through a function or have just forgotten a semi-colon and you are part of the 64%.
The title is very misleading by saying such a low number can write compilable code. Through any other group of students at it and I'm sure that you would get similar results.
That's complete bullshit. Screenwriters don't need to be able to act. Actors don't need to be able to write. Beethoven was deaf. Einstein couldn't do simple arithmetic. RFC authors who design protocols don't need to be able to implement them. Coders who implement algorithms don't need to able to invent them.
Type a code sample with your big fat dick.
You want that in big endian?
Exactly this! I think I've yet to go a single day where I have not missed something as simple as a semicolon or I used an arrow instead of 4-dots syntax, or brackets instead of curly braces for different array syntaxes while jumping between languages. The intended meaning was very blatantly there in the code, and a simple "F5" to compile+run (or refresh browser in case of web apps) would have caught the simple mistakes. If this were not an issue, keyboards would never have a backspace key. This is one of the oldest aspects of computers, period. There is a reason why 0x7F is "DELETE" in the ASCII table, because in the days of 7-bit punch cards, if a "typo" was made, punching down all 7 bits was the way to clear it!
There is a reason why 0x7F is "DELETE" in the ASCII table, because in the days of 7-bit punch cards, if a "typo" was made, punching down all 7 bits was the way to clear it!
That makes perfect sense, fits with how a programmer would think, and I've never heard any competing theories. Thus, it's most likely totally wrong.
;)
Freedom to fear. Freedom from thought. Freedom to kill.
I guess the War on Terror really is about freedom!
they just do what they're told without argument
Not exactly. They tell you they understand even if they don't. They tell you they'll do something even if they have no idea how. They'll agree to any schedule without any clue how to meet it. Then they deliver code that's been written to look like it actually does something close to what was asked for.
Some argue quite a lot actually. I've been on the other side of some forcefully defended wrongness.
One gets the impression that the managers of these outsourcing companies get them to believe their own lies--that nobody in the US, the home of modern computing and inventor of (but not mass producer of, thanks free trade) just about everything useful involving it, understands anything about computing.
Know what? They're kind of right. The IT industry, the whole of it everywhere, is absolutely full of people who have no idea what they're doing being managed by people who are even more clueless. This is human nature--most of us are idiots and a small number are more productive than 10 others and understand more than 20. Subjects of expertise vary of course. Computing is pretty rigid--do something stupid and bad things will happen. The feedback you get from technology is pretty immediate and on occasion devastating because despite attempts to dress it up, this isn't a soft skill field. The tech does not care what you feel or who likes you or anything like that. It'll react the same way to a pretty, very social female as it does to the nerdiest nerd dude. It only cares what they know and what they do. It's what so many of us find attractive and why we resent too much interference from people who don't understand this. Stupid people can cause a lot more trouble a lot faster in IT than they can in a lot of other industries.
Indians, being people too, also have this situation. A small number are brilliant, most are absolutely useless with technology and, like Americans, it doesn't stop them from charging headlong into crap they know nothing about.
The difference is that in America we have a huge industry devoted to pushing the myth that Indians are somehow better than they are for the express purpose of using them to lower wages and nothing else.
I want to stop H1-Bs. I want to send most of the ones here home even as I feel bad for the abuses they have to put up with here. That said, the sooner we all figure out who the real enemies are and do something about them--American and Indian tech companies who perpetuate this bullshit, the better off we'll all be.
The report says that it "is based on a sample of more than 36,800 students from 500+ colleges across India". It doesn't say what degree they're in, how much experience they have, or a variety of other factors to conclude the 36% of Indian engineers can't code. This is just a racist hit job piece.
Fast Federal Court and I.T.C. updates
I've worked (and work) with talented Indian developers, and ones who are frigging hackmasters, not in the good sense.
When you hire a team of developers into a position where you treat, pay, and support them (in terms of infrastructure, equipment, etc.) like cheap drones, the devs you attract (or at least the ones who stick around) will tend to be ... the drones.
Food for thought.
Even if only 2.21% of Indian new college graduates made the highest grade, Indian universities graduate about 1 Million engineers every year. In contrast, in the USA, we get about 100k engineering graduates every year and 100% of them don't make the highest grade.
On the other hand, this company Aspiring Minds has a specific agenda...
However, the need of the hour is to find these pockets and scale them up to make an exponential impact on employability. This is crucial for India to continue its growth story and achieve the vision of India becoming the human resource provider for the whole world.
Interesting to note that one of the sales pitches they use to sell this testing product seems to be bringing up the spectre of a shortage of Indian talent causing salaries for talent growing out of control decreasing the advantage India might have in this area.
Although I understand the Indian culture seems to worshiping testing, but if I were and engineer asked to sit for this, I think I would simply just be offended by such a company. Not just because of the fact that they are trying to create a test whose end goal is to keep salaries down, but also by the audacity of a company to think that a computerized test could substitute for employment screening and job aptitude.
Then again maybe I have options. If I didn't I might just suck it in and take the test. After all, Einstein when his back was against the wall and no professorship was forthcoming, signed up to be a Patent clerk. Compared to him, in a pinch I probably should be happy with a job as a Walmart greeter, so taking this godforsaken test wouldn't be the worst thing in the world.
This summary does not mention how people from other nations fare in the same test, so it is impossible to tell whether the results are particularly bad - they could even be better than average, for all we know. Of course, the reason for bringing it up here is not to present a real, scientific result, but only to confirm people in their already well-established prejudices.
So think about the scenario - you have 60 minutes to produce a program that compiles and runs, and the test tries to evaluate "programming ability, programming practices, run-time complexity and test case coverage" - that certainly sets a minimum level for the complexity of the problem; this is well beyond the "hello world" type of programs. How long would it take a person to first understand a moderately complex problem, then decide how to design the code? This depends heavily on whether you have done something very similar before, but I know that I don't in general understand the complexities of any given problem straight away and then rattle off a good design - I prefer to think out the concepts, try to put it into a context and build a design that is open ended enough to be easy to extend etc. I would have spent 60 minutes before I even got ready to write a bit of code.
Then there is the writing of code - which language are we talking about? Most compiled languages that I have worked with - and I have worked with a lot - require more than just the code; to take C as an example, there's all the includes, for one thing. How many people remember off the top of their head exactly which header file to include for every function they use? I certainly don't, and I don't need to - I look it up in the man pages. I have been presented with some of these automated tests from time to time, and I have walked out of the interview every time, because I simply don't work like that, and I refuse to work for a company where the level of understanding of what code development is as crude as that.
So, all in all, is it right to judge the skills of any engineer based on this sort of test? I have lived on my skills for several decades, and I have proven over and over that I can produce compilable code - and very good code too - but I would certainly not do well in a test like that, and I doubt many American or European programmers would fare much better than the Indian ones in this sort of test. All it can test is whether you happen to have a ready cooked solution to the problem they present you with; if you don't, you fail. It is about as reliable as using a horoscope.
I write code in C, PHP, Python, Pascal, VBA, Common Lisp, Prolog, Assembler (z80, 6502, x86). I can help people with their code in C#, C++, Java, Smalltalk. From a language user point of view I am a Jack of all trades, master of none. I am very reliant on the compiler/interpreter to highlight me where I made syntactic errors or passed the wrong parameters to a function or API because in that language, the order of the parameter is different than all the other languages.
But you will not get me on the evaluation of the complexity of an algorithm. I have written programs/libraries from a wide range of domains (robotics, biology equipment, domain specific compilers, pay, stock management and ordering, automatic packing of orders, display of industrial process parameters, expert system, machine learning). You can really thrust me in software design and algorithmic, but I am still very reliant on my IDE and the compiler/interpreter to help me about typos and showing me that the construct I use is not the correct one for the language I am currently using (my black sheep is the switch/case/select construct).
Some composer were bad at playing instruments like Mahler, Berlioz, Schoenberg, Ravel. Mahler and Berlioz were just good enough to play their own composition to help them in their creative process but not in public. Schoenberg and Ravel used the help of assistants to play them what they have composed.
Here in big international corporation's subsidiary in a huge EU country I am not allowed to comment on this subject by corporate ethics rules. It is in fact impossible to mention problems with our subsidiaries in foreign domains because racism. I therefore conclude that these problems actually do not exist.
Best example I've come across personally:
Their proof-of-concept JSON used floating point numbers for dollar amounts. Floating point numbers for currency is a beginner mistake. I flagged it as an issue straight away and asked them to use cents in integers (which would be appropriate in our use-case). They agreed. Sure enough, the final product used floating point numbers for dollar amounts and started charging people incorrect amounts.
As it turns out, they had a data store that was actually using decimals behind the scenes, so it was just a conversion issue. Dollars to cents - simple calculation, right? Just multiply by 100, right? Nope. They converted to a string, replaced the period with the empty string, then parsed the string as an integer. So the specific price in question went from $4.95 to "4.95" to "495" to 495. Which worked right up until the client reduced their price by five cents. Now it went from $4.90 to "4.9" to "49" to 49. They were now charging 49 cents for a product that was supposed to be almost five dollars.
They literally couldn't understand multiplying by 100 to go from dollars to cents, but every step of the way agreed to do it and either didn't bother or completely fucked it up.
Take it from someone who regularly interviews on campus -- a lot of seniors in CS (and related fields) can't code their way out of a wet paper bag. I actually had one kid tell me, "Well, nobody codes without Google these days!" That may be true, but I do expect you to be able to write a basic 'for' loop in your preferred language without having to look it up. It's not a trick question or obscure trivia.
A lot of students are very good. They're the reason we keep recruiting on campus. But the others... Hoo boy. What the hell have they been doing the past four years?
Chelloveck
I give up on debugging. From now on, SIGSEGV is a feature.
Computer science is about computers in the same way that astronomy is about telescopes. You don't have to be a decent programmer to be a good computer scientist. It does help, though.
"When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes