This is something I have never been quite able to resolve. Logic says (hey the IIT BTech guys apparently work through
SICP early and if that doesn't upgrade your programming skills I am not sure what will) they
should be better programmers. And Google India apparently hires only IIT Grads, so there is probably something to that argument.
On the other hand, in my
experience, this "superiority" of IIT grads never really showed itself as a real world phenomenon. Most (but not all) of the
really good programmers I see, seem to have a BSc (or other non-BTEch-CompSci) background, and are almost uiversally self taught programmers.
While I was in Thoughtworks, I even went through this strange phase in which TW interviewed about 40 IIT Grads after a company that used to hire
only IIT grads went bust, and ended up making an offer to
one guy (and he was very very good. I knew him from my Aztec days. He eventually went to July Systems)
It is all very puzzling. Because I do know many bright people from IIT but they are almost all in the USA. So maybe that is one explanation? The best folks from IIT go to the USA and the people a Bangalore based company interviews are probably the "lesser" ones of a batch? Especially in the "enterprise" space? I really don't know. But is there really such a huge difference in the capabilities of people who studied in the same batch?
Of the 40 or so people TW interviewed,(and didn't hire), one interview really stands out. There was this guy who claimed a lack of knowledge of "enterprise" coding but was, in his own words, a "specialist in Compilers and Mathematical/Scientific Programming". The interview team consisted of me(very very interested, and fairly knowledgeable in compilers) and a colleague,
JK Werner who graduated in Mathematics.
Those days, In Thoughtworks, one of the guidelines for interviewing was "If people don't know something, that's fine but what they say they know, they better know and know well". So the candidate not knowing "enterprise" stuff was fine(It is all fairly simple anyway and an otherwise competent programmer can pick it up fast).So JK and I proceeded to have a conversation about compilers and math and the interview was .... terrible. This person was just mouthing "buzzwords" without having any deep knowledge.
question(me):- "Ok so after lexing and parsing you get an AST what do you do then?"
answer:- "hmm... I am not sure.." (his cv claimed he'd written a full fledged "parallel compiler")
question (jk): "Your cv says you have worked extensively with Vector Spaces, so here is simple question to start off. What is an Eigen value"?
answer:"hmm well I never got that far" (!!). (as per his cv he did all sorts of fundamental Linear Algebra related stuff)
This was the most disappointing interview in my
life. Other interviewers narrated horror stories of "Senior Architects" who didn't know what "classpath" was!
So I am forced to conclude, being bright, and getting through IIT(those entrance exams are
tough) and even working as "Lead" or "Architect" or whatever on large projects does not necessarily make you a good(forget great) programmer.
Also "enterprise" work and that too in India is probably not attractive to the average IIT graduate who has so many more interesting options.
So these days I just dismiss the educational background and look at coding skills exclusively.
Still, it is all very strange. If anyone has any insights, please enlighten me!
Update
Joe Williams was kind enough to point out a possible misinterpretation (you can see Joe's comments in the comments section).
What I
am saying
- I used to think IIT graduates (and students) were way above average in programming ability.
- I expected, given a fair (but tough) interview, about 35 (of 40) or so would get through. When only one did, I was forced to re examine my belief (see above)
- When I examined the best programmers I knew and their schools, I found that most(but not all) were BSc/non comp-sci graduates.
- This is possibly a perception issue. I am asking for clarification
- Logically , I now believe that programming ability and schools are not correlated
What some people
think I am saying
- TW(India) is an uber cool company
- Anyone who doesn't get through in TWI is a poor programmer
- Most IIT folks we interviewed didn't get through
- Therfeore IITs suck and any IIT ians are poor programmers
Needless to say what I am claiming is the first list of assertions. Anyone who claims the second list as "true" has no clue.
Thanks, Joe.
Now I have more questions, if 40 MIT graduates interviewed (say in Google), how many would get through? The question remains, does your school have a correlation with the number of people who are excellent programmers?
Hopefully now things are clear.
28 comments:
An "anonymous" person made this comment on Kevin Barnes's blog
. I didn't want to take up Kevin's space anymore. so Ima quoting here.
yes I have heard of TWI. But it's not the solution to all ills. this 'we do things right' is used by so many companies that it has become a hype on its own.
Not all IITians make great programmers, because they are trained as engineers, and not all engineers might end up good programmers - it is a myth perpetrated by India Inc that Engg graduates are capable software pros. From what I have seen for the last 10 or so years, the *chances* of running into a candidate with better stills and vision are high when the samplespace is IIT and in some cases some RECs. More than likely the chap who went to thankayya memorial college did it not because he had any innate aptitude for math/engg, but because he was pushed into a field in which he is more than often disgustingly mediocre a performer.
And also rememer that folks who go in BSc etc are *generally* people who did not get into Engg colleges, after taking standardised tests. Sure there are exceptions, but when I see a PhD in biology from some average Indian univ, I see a reject of so many med schools and job hunting process of 5-6 years. Sure there are exceptions, but you have to agree that compared to other countries, the Indian system allows a mediocre person to go through the educational institutes and emerge with some degree stamp which more than often they might not truly deserve.
So the author's original comments stand. What you mentioned are exceptions. By going against the IITians almost as a matter or personal policy, I doubt if you are doing TWI any favours.
Ravi, not to blast you personally, but after seeing your
"I am not denying that folks from IITs RECS are not bright." comment .. I hope that TWI code does not end up having the double negatives like this :)
ok.
first we'll deal with the personal insults and then get onto teh points(and they are good ones too) that Mr A makes.
1."Ravi, not to blast you personally, but after seeing your
"I am not denying that folks from IITs RECS are not bright." comment .. I hope that TWI code does not end up having the double negatives like this :)"
This is quite feeble.
I didn't know there was a rule in english against a double negative.
2.How one writes English and how one writes code, are (as I am sure Mr A knows VERY well :-) ) two different things. :-)
3.Anyway defending TWI or my expertise or lack thereof was never my intention.
As I have consistently maintained in this blog, ad hominem attacks (attacking the person instead of the argument) are not the best way to counter an uncomfortable hypothesis.
So let me repeat my main point. I am *wondering* (NOT concluding) why the average IIT person is *not* wayyyy better than the "average" non IIT programmer. Given the rigor o the entry inot and very high intelligence of the IIT folks, this is what I would expect to happen.And in *my experience* this does not happen. I have no answers to this. I am willing to learn. If it is a perception problem on my part, please educate me.
Let me repeat. I am not "trying to do TWI a favor" (hah!) or "going against IIT ians asa matter of personal policy"
(huh? are you crazy? some of my best friends are IITians.I related ONE incident from MY experience. How is that "personally going agianst" IIT?).
If you feel threatened , examine your thoughts. Don't blame me . Please?
Anonymous makes some good points (beyond this R"Ravi doesn't know what he is talking about" style thrusts).
I'll examine those n another comment or blog post.
now to examine Mr(MS?) Anonymous's more rational arguments.
"Not all IITians make great programmers, because they are trained as engineers, and not all engineers might end up good programmers - it is a myth perpetrated by India Inc that Engg graduates are capable software pros."
yeah maybe. I don't know. I am interested in *exploring* this idea. Do engineers have a bias towards being better programmers?
I once thought so. But I find many counter examples, too many to make me very confortable.Hence this post.
"From what I have seen for the last 10 or so years, the *chances* of running into a candidate with better stills and vision are high when the samplespace is IIT and in some cases some RECs."
ahh this is a good hypothesis. so Mr A does claim that IITians do make better programmers *in general*.
And why ?
"More than likely the chap who went to thankayya memorial college did it not because he had any innate aptitude for math/engg, but because he was pushed into a field in which he is more than often disgustingly mediocre a performer."
So... There seem to be a few claims being made here (if we ignore value laden words like "disgustingly" applied to non iitians).
1.The "standardised (entrance) tests" to IIT do filter out people who don't have an "aptitude for programming" (and thus are forced to go to "disgusting" "thankayya" :-)) thus improving the "sample space" in the IITS.
2."And also rememer that folks who go in BSc etc are *generally* people who did not get into Engg colleges, after taking standardised tests."
This strenthens the claim that doing well on a standardised tests positively correlates to programming ability?
"The Indian system allows a mediocre person to go through the educational institutes and emerge with some degree stamp which more than often they might not truly deserve."
I assume the contrast is with a "non Indian system" and the "mediocrity" of these Indian systems are not applicable to IITS but only to the non iit "thankayya" type colleges.
Two question.
1.Is the USA system(all colleges not just IVY league) better than ALL Indian colleges by that great a margin?
2. Does a person who goes to IIT "deserve" his degree more than the "thankayya" Indians?
" What you mentioned are exceptions" .
Ok this is plausible. What makes me uneasy is that there are too many of these non iit excellent programmers a(and imo anyway, too many IIT *programming* mediocrities -note the emphasis) to
make this a very clear conclusion.
I could be wrong. I hope teh readers of this blog, both IIT and non IIT take the time to weigh in.
I have no conclusions (as I mentioned CLEARLY nin my post. Please do not attribute "personal enemity to IITS " etc.
Do take the time to post your thoughts. Much appreciated.
Thanks
I have never been to an IIT. From what I read on the web, they are India's equivalent of MIT or STanford.
I read Ravi's post on Kevin's blog and his blog entry here .
Ravi pointed out one instance where his expectations of the "elite" did not match reality.
This was relevant on Kevin's blog, since he (Kevin) explicitly mentions a shift to such a strategy to avoid the inefficiencies in recruiting.
And this mismatch between expectation and reality is an interesting issue which Ravi is trying to explore on his own blog. I think it is a fair question. (I couldn't care less if Thoughtworks is agood company or not.That is irrelevant)
Why does this threaten "Anonymous"? (Do feel free to post under your own name , we won't eat you ).
I have yet to see where Ravi is leading some kind of personal crusade against the IITs. Far from it he has admitted his own uncertainty and put forward the possibility that the error could be one of perception.
As I read it, he is asking for evidence of this alleged superiority of programming skill, at best , and at worst, questioning the very validity of this idea.
I think this is very thought provoking.MIT, Stanford and other Ivy League Universities generally have demonstrable examples of very high quality programming(The MIT Robotics lab or Stanford's Autonomous Driving Vehicles). Do the IITs do similair things? (any links?)
Even if they do, as an "average" programmer, while I can accept that MIT's best programmers(say Richard Stallman) can crush an "average" programmer(say Joe Williams) in terms of sheer programming skill, does that apply to the "average" MIT graduate? I somehow doubt it. Too many variables in play.
I would have thought that this is a very interesting question. There is no need for anyone to lose his temper.
Hopefully "Anonymous"'s rant does not represent the typical IIT student's thinking.
Let us have some honest thinking here folks.
Is Ravi's hypothesis right? Does the "average" IIT graduate leave India as soon as possible, leaving the "lower end of the bell curve" behind?
What about the Open Source world? If we make a list of the Indian contributors to Open Source Software, will IIT graduates be represented disproportionately in terms of number of programmers or quality of code written? Is this a valid test?
I wandered in here from the original article posted on sulekha.com. Wow, Ravi feels that another chap's comments are worth a word-by-word analysis. I shall not go into the topics discussed, for they are not much my domain. I shall however say this :
<<
"I am not denying that folks from IITs RECS are not bright."
I didn't know there was a rule in english against a double negative.
>>
Ravi, you are wrong on the above. You meant that you are not denying that IIT/REC folks are bright. But your words ended up saying that you are not denying that they are stupid. I agree with Anonymous here, I sure hope you do not write programmes like this.
I do not see how not going to IIT makes anyone an expert on IITians. from a third-party POV, I think you are still trying to get over the IIT entrance rejection by concentrating on if IITians are good or not compared to you and others. Shows a lot of insecurity, IMO, which I hope a reasonably successful professional career will remedy at some point. As for Anonymous, if he's from an IIT, he seems to exibit the (in)famous arrogance of some IITians, which is not too good either.
Other than that, I wish everyone well. Being in another but related field (sciences), I will tell you, from where we stand, all this programming debates are pointless - those are just tools to get the job done, and does not matter if you do it 100% perfect or 90%, as long as the results users seek are fine.
I have seen a number of these programming companies which concentrated too much on almost-academic perfection and not enough on getting the job done - and ended up fantastic failures in real world. I hope that you do not do that in your career. about 75% of all software is a service, serving other areas. It's best not forgotten.
Ravi,
I am positively shocked that you dared to question your superiors. IIT grads ARE superior. Every IIT grad knows that!
In case you have forgotten, the scale looks like this:
IIT Grads (Bachelor's Degree) > REC Grads (Bachelor's Degree) > IIT Grads (Master's Degree) > REC Grads (Master's Degree) > Government Colleges (all degrees) > Private Colleges (all degrees)
But I will let you that the last two steps of the above ladder are not always in that order.
Don't you dare forget ever again!
Manoj
I did 2 years in IIT Chennai 11 years back. I did Masters in Physics and not engineering. Yes, I did not clear the IIT JEE and went to Physics (though I got some engineering admission), later landed in IIT for Physics. In my experience the non-engineering species was not considered "core IIT guys". At the same time there were lot of sensible engineering and non-engineering guys.
Coming to the topic at hand, most of the IIT grads that I met were always (in the last two years or so) on the run for their US admissions. Most IIT grads that I have interacted with left for US universities. At that time (1995), companies like Infosys and TCS were considered biggies. Most of engineering grads will have one or two job offers *and* some US university offers. The people who did not get university admissions settled for MTechs or IT jobs.
IIT Chennai was considered good for Computer Science education (if my Memory serves right). I did not get to meet anyone doing CS at that time.
Anyway, I did not find many people who were passionate about the particular field (EEE, Naval, Chem) they were pursuing. Yeah, there were lot of intelligent guys. For most of them (with whom I have interacted), getting into IIT was to ensure their seat on the plane to US universities.
Interestingly I visited IIT chennai website to see whether they have any open source code or frameworks to offer. I did not find any. May be I did not figure out how to search. Searching IIT Bombay site provides some listing. I was not able to find much at IIT Delhi too.
Dear anonymous2,
I didn't know that skill in grammar and code are correlated :-)
Having said that, I hope that I don't code that way too ;-) .And if I do, I should correct it :-)
"Other than that, I wish everyone well. Being in another but related field (sciences), I will tell you, from where we stand, all this programming debates are pointless - those are just tools to get the job done, and does not matter if you do it 100% perfect or 90%, as long as the results users seek are fine"
there are some good points in there.
However these are spoiled by
"I hope that you do not do that in your career. about 75% of all software is a service, serving other areas. It's best not forgotten."
The sciences too (mostly) often are services to others (business, government,"society") etc.
This is fairly irrelevant to the topic at hand.
Like there are software companies who forget clients, there are (some) scientists who forget those they serve? So what? :-)
Oops! I pressed save too early.
Anyway, I see some comments that indicate that people are misinterpreting the purpose of this particular blog post. It might be better to ask for clarification, rather than to assume.
Rajesh,
don't worry.
I am immune to those who snipe about my coding ability, "inferiority complexes" (heh heh) etc etc, that too from the cover of anonymity.
What I try to do, is leave these insults where they belong and extract the core of any valid argument and try to open up a discussion on that.
Having said that, it would be nice if people came out and asked if I had any malafide intentions.
The answer is "no".
1.Some of my best friends are from IIT.
2.I have seen brilliant programmers (non-programmers too) who were IIT ians (and others who were not)
3.My present thinking is that "college you studied in" vs "your programming ability are two orthogonal axis and individuals are evenly distributed in the space defined by these.
4.I am willing to be convinced that this is not so, but insulting me personally is *irrelevant to the argument*.
I have no problems ignoring these and sympathising with those who are driven to such tactics. Dear "anonymous" posters, I bear you no (zero, zilch, nada) ill will.
If a positive correlation can be shown between studying in IIT and superior programming skills, I will accept that unreservedly. My ego (small puny thing ) is not tied to a notion of being a superior anything. I am who I am.
My alleged lack of grammatical skill, coding skill, failure in professional life,mental stability, deep unconscious motivations coming from my scraeed and troubled childhood, etc etc are irrelevant to point 3 above .
5.I find it curious that a mere *questioning* of a correlation between studying in IITs vs being a good programmer generates so much angst.
Very very interesting indeed.
Hopefully some rational, non anonymous IIT ians will soon pass by.
Just out of curiosity, are MTech students "proper" IIT ians? Or are only the BTech folks "true" IIT ians? This might be important to judge the "relative worth" of people like Rajesh ;-)
Ravi,
why don't you just ignore these guys who make personal attacks? I am sure a majority of the readers of this blog would welcome a rational discussion.
You raise good points and your blog is a pleasure to read.If people find that their prejudices are being triggered or threatened, that is their problem.
You keep writing.
(No I am not an IIT grad ;-).I am not even a programmer)
Ravi,
I am surprised at the vehemence of some of the "anti" comments.
I put on my psychologist hat and I think I have a hypothesis on what is happening .
What *you* are saying is
"When 40 IIT graduates attended an interview and none got through an admittedly fair interview, I was forced to re examine my beliefs about the correlation between being an IIT graduate and being a good programmer. Now I believe that there is no correlation"
What I believe *some people* are hearing is "TW was so awesome that we interviewed 40 IIT graduates and no one got through. IIT Sucks!" .
Now I believe you are very clear in what you are saying but you seem to have tapped into some kind of fear/complex/attitude problems.
Interesting :-)
Joe,
I have updated the post to make things clear.
Thanks,
Hello Ravi,
it's always a pleasure to read your blogs for the issues or concerns you raise and the way they are presnted.
Having said that, I just wanted to know about the "interview" at TWI.
Was that guy being hired for a programmers profile? this is surprising to me!
regards
dear anonymous(3?)
yes the positions were for programmer profiles. (In TW the techs are all developers. "Architect","lead", etc depend on expertise only They are not formal positions, Anyone could put anything they want on their visiting cards.There were(are?)4 positions internally dev, analyst, tester and manager."Seniority" is more on reputation than naything else).
yeah the one guy selected(he was very very very talented. I had worked with him in aztec before) was being looked at for a dev position too.
As for surprise, you are right :-( I was flabbergasted.
My observation is that programming skill is independent of the school you graduated.However I have noticed that people from reputed institutes like IIT and RECs ( exceptions could be there)have superior logical and analytical skills when we take the mean average .Since programming is not the *mission of life* stuff, IITians could, just as other people move to and excel in other roles. The person whom I acknowledge as the best programmer I have seen is from the lowest rated engineering college in my state. He solves programming problems ten times faster than the people out of the RECs in the same team.He started programming at a very early age and most solutions come to him intuitively.( so the practice theory applies...)I guess he is a master.Now he works in the US along with people from prestigious ivy league schools.Here too he is acknowledged as the Best Programmer that Company has seen till date. So it is like this for me -> genuises have no time and place...He/She could be from an IIT , MIT or a thankayya memorial college ....
Wow. I landed up here from Rajesh's blog. First, let me say that I hold a B. Tech. degree from IIT Delhi.
In my experience, there is no corelation between studying at IIT and programming skills. In fact, there is no corelation between studying at IIT and being good at what one is doing.
I have seen smart/skilled people coming from all colleges and all grades (deparatment rank). And I have not observed any particular ratio in terms of X smart people come from ordinary collegs and X + Y smart people come from IITs.
Every place has all sorts of people. Considering the difficultly level of the entrance exams, some colleges may have higher probability of having better smart/non-smart ratio. But that's where it stops.
When I meet someone, I just don't care about which college that person went to and what grades he/she got.
The criteria of getting through a college entrace exam is different from the criteria of doing well in one's job.
Ravi,
I was surprised to see this post of your's today as it was only yesterday that i started reading the book "Five point Someone" by Chetan Bhagat.
You might want to go through it as it gives as insider's view of an IIT life.
regards,
Sarath
I have deleted two posts castiagting poor Manoj.
Dear anonymous(4), Manoj's posts are meant to be satirical and NOT to be taken seriously!
And even if he were serious, I will NOT allow name calling/abuse on my blog. Let us all cool down !
Life is too short to take these things too seriously.
Thanks in advance
Apologies for my posts and putting you through the trouble of having to delete them.
I only wish Manoj and the like could understand your perspective (since as he claims - he is superior :-)
-Anonymous(4)
Dear A(4),
I think what you miss is that Manoj is satirizing the IIT folks!
See "Of course IIT guys are superior... every IIT grad knows that".
Manoj is not an IIT grad (he was my juinor in college) and has a very subtle sense of humor.The whole comment is written with tongue firmly attached to cheek.
Th people offended by Manoj's post should be those IIT grads who believe that being part of IIT automatically confers better than average programming ability.
I think you may very well get along well with him if you ever meet him and instead of "bashing his head in" (heh heh) you may want to share a pitcher!
Regds,
OOPS! I'm sorry I take back all that I said. Didn't know Manoj's background, and yes I could buy him a couple of pints ;-)
-Anonymous(4)
I saw what Kevin's firm looks for in a developer. I ventured there expecting some outstanding/different requirements than other Indian firms. But sadly this is how it reads for a Bangalore based Custom Developer at StorePerform.
"The Custom Developer is responsible for documenting and/or reviewing business and technical requirements for integrations and/or customizations requested by customers
· The Custom Developer creates a detailed design document and implementation plan
The position is responsible for ongoing maintenance of the resulting customization and for providing technical support to the Technical Consultant and/or the end-user customer of the customization."
These were the top 2-3 requirements unfortunately. Wonder why are we fussy about getting great developers when most of the work is still like mentioned above
Dear anonymous(5?)
Your point about Kevin's organization and why IIT ians may (not)want to work there maybe more appropriate in Kevin's blog than here.(be prepared to be flamed by "anonymous" folk if you ever ask something like that though :-))
As I see it, anyone can choose to work at anything. No one puts a gun to anyone's head. Maybe Kevin's firm pays 5 times the market rate?
Maybe the work is somehow tremendously interesting even if the written description is boring. Who knows? :-) I don't.
That (why people work where) may not be for others to judge.
What *I* find interesting why anyone from IIT works in the "offshored enterprise" space at all.
If a relatively less intelligent person like me found it boring, I would imagine the IIT folks would be bored out of their skulls by the typical "offshore" work and would run to MIT/Stanford/Google wherever.
All very interesting.
For the record, I am doing my masters in IIT-Bombay.
A bad joke has it that in IITs - bachleors are the main product, masters are by-products, and PhDs are waste products.
The issue at hand seems to be whether IIT students are good at programming or not.Here are a few factoids before I start opining.
1 - The last Google codejam had 4 from IITB in the top 50, and my estimate is that there were around 12-15 from all IITS combinted in the top 50
2 - IITKGP conducts a programming test as a part of its tech-fest, and I have seen IIT teams in the top 3 each year.
3 - I personally know IIT students who have great TopCoder ratings.
4 - I know many CSE undergrad students in IITB who detest programming, and consider it to be an inferior facet of Comptuer Science.
5 - I know great hackers from IITB who are from non CS/IT departments - the likes of whom build and maintain medium to large multinode Linux clusters for scientific applications, weather forecasting and the like.
6 - A signficant chunk of IITians covet management/consultancy jobs from the likes of McKinsey, BCG, Lehmann Brothers, etc.
7 - Students applying to the top US universities for either masters or PhD programmes is on the decline. According to one of the applicants I know very well (who, incidentally, went to Stanford) - in the Fall2005 application season, around 50 IIT students (across all IITs) applied to the top 20 universities in the US/Israel. The rest of them, which is about 250 of them, took normal jobs in India, or took up CAT or something.
I have seen many undergrads in IITB, and one thing is certain. The best of them are very good. They are really very good: At almost anything they set their mind on. The rest of them are as good as their Indian counterparts from other colleges. One theory that attempts to explain this great mediocrity in IITs is that most of the JEE "crackers" tend to cool off for 4 years after having slogged for 2-3 years preparing for JEE. But I digress.
One possible reason why not all IIT passouts are not great programmers (as many would expect them to be) is that programming is not emphasised upon in the IIT curricula unlike Math, Theory, and overall analytical skills.
Some of them (who are intrinsically above average in terms of logical thought, reasoning, etc.) get into serious programming, and are as good, if not better than their regular non-IIT counterparts.
If you were to measure programming ability of fresh IIT graduates and compare that to that of fresh non-IIT graduates, you can probably see the difference. A few years after graduation, unless individual efforts are put in, the first mover advantage which IIT folks get due to better faculty, infrastructure, and peer, is lost.
Teju,
Excellent Points, especially #1.
if Google Code Jam is taken as a vlaid test of programming skills and it is true that qualifying Indians are dominated by IIT, then that is a very strong indicator of correlation.
Good comment!!
Post a Comment