The Story of Engineering Education in India
jnaapti.com
jnaapti.com
I interviewed one candidate several years ago, and the question was: "How do you ensure that your program works as intended?". Hoping to get answers like "I write unit tests, integration tests, test scaffolds" or even "I exercise it with different inputs", what I got was "I use Visual Studio". After rephrasing my question a couple of times and getting more or less the same answer each time, I came to the conclusion that the candidate felt that Visual Studio doesn't allow you to write bugs.
Crank the handle, produce output.
Even for "crank the handle, produce output" type of jobs, it's a bad strategy to hire idiots since they will not be doing such jobs for the rest of their lives. Projects change. clients change. Technology changes, and only people with at least a minimal amount of adaptability wlll thrive.
And to answer your generic interview question: By running it. If you probe further, things like unit test coverage, integration test coverage, debugging, seed data etc can come into the picture but that depends on your specific question.
As a potential employer, I'm happy to help them learn, but I'm not going to spoon-feed them. If someone is profoundly incurious, maybe they'd be better off working somewhere else. Or in another career field.
Good to go with open ended questions. It's hard for candidates to memorize answers.
Sadly i see lots of these kinds of idiotic strategies on their part :-)
When i started my first company in 95 or thereabouts, i remember a person who just would not open his mouth during the entire interview. I didn't know what to make of him. I then asked my receptionist to talk to him, find out if i was being too rough or intimidating etc.
Turns out that the interviewee did not trust his own command over english enough to answer back.
Once i learned that, i just handed him a free PC, told him to try writing whatever program he wanted in the next few hours and did not set any time limits.
When i came back after lunch, i saw that he had written a complete game ( This was in the DOS days where writing a game was really difficult since there were no high-level game engines around )
The guy eventually turned out to be one of my best programmer.
I am certain there are both bright spots and bright futures ahead for the Indian IT economy (and education system), but for now I'm either putting my creative work in other countries or hiring [much higher cost] consultancies to augment the local skills in my captive team there. The cycle mentioned by other commenters here and in the blog post of finding employment solely for the sake of certification or learning a new skill to support jumping to a new employer is a huge turn off for two reasons: 1) a lot of the incoming freshers literally have zero skills and it's a huge time sink for the experienced folks to get them to the point where they can contribute, and 2) by the time someone is contributing they're already either looking for a new job or expecting promotions and salary hikes in the 20-50% per annum range. This is untenable and quite ridiculous, even with the recent inflation/currency issues. My company, like many others, have a different job code/title scale for India than everywhere else in the world, just to support the concept of having a dozen steps in between fresher (literally zero skills) and senior engineer/architect... not to mention similar things on the management side.
I could write a book on this crap and, frankly, I'm already feeling riled up just thinking about it so I'll stop here. I'll just leave it at this: I truly hope the Indian education system and cultural issues surrounding employment, family, corruption, and financial stability are worked out in the coming years, but the stress dealing with this mess through the past ten years has put me off enough to abandon ship. The cost savings is just not worth the productivity hit (not to mention subjective issues like time difference).
1) Hire people for their interest in programming, their core problem solving ability and the fun they have with the process.
There are lots of such people, just learn to look beyond what everyone else does. For instance, i once hired a person who could not speak much english, and who did a BA or something like that. He, later on, turned out to be one of the stars of the organization writing a core part of a VoIP solution.
2) Invest in long-term training. By that, i mean don't hire some crappy institute to come and train your people. Here from experienced folks in other organizations to come in over the weeke-end or other timings to help your team.
I remember having to train almost every member of my team in assembly, c, win16 and later on win32 among others. Some of my team members then went on to train professors in IIT, chennai. :-)
3) Mentor your team members. Show interest in them beyond what they can deliver today. Build good relationships with them and help them, both technically and otherwise. When they see you sincerely reaching out to them, they will do the same.
4) Be patient with people. If they know zilch, be frank with them and let them know that they are currently not contributing anything to the organization. However also lay out a plan for them, along with HR, to bring them up to speed in core areas; viz problem-solving, algorithm design, data structures etc Don't allow them to waste time on fancy courses from idiotic institutes. Make your senior programmers take classes some of the time. That's also part of their job.
I don't buy the crap that they have not been taught in collage. In the age of the internet, there are so many damn resources on every language possible on the internet that a person claiming that they know how to code in c should have a much, much higher bar set.
Also it is not about deep understanding of pointers and stuff like that. The sad part is that most of them can't even write it in pseudo code.
As for the question of you not buying it, I can't convince you except that there are other commenters in this thread who have pointed out the same problem. This problem does exist.
1) When i said, "i don't buy that..." i was referring to people blaming the collage or university for their own lack of knowledge.
In today's world where the internet is available to everyone with a net connection, i would expect people to use some initiative, go online, search for C sources or tutorials, download free compilers and linkers, learn them thoroughly etc. ie The real blame for their lack of knowledge is with them not with their collages.
2) Why would you claim, on the one hand, that the blame for kids is with their collages and poor teaching, and then claim that i expect everyone to know c cause that's the first thing they learn in engineering?
And, lastly, don't get huffy with me, dude. If you make generalizations like "Any engineering grad in India should know C" good for you. I don't care. I really don't give a damn.
I guess you are entitled to your own imagination.
If you have something useful or even your own opinion to contribute, do so. I see that you have nothing to contribute except with your imagination
A big assumption.
When I finished my engineering, I was pretty good with assembly language programming. I could do anything with 8085 and 8086.
It took a good deal of time to learn ALP, and I'm glad I did it before learning C as I got all necessary low level details correct and complete.
But I agree your point on pseudo code.
Going further the students who were pressurized to take up engineering are now using these jobs as stepping stones to reach a point where they can pursue their real interest. The good engineers are seen as capable to lead bigger teams and pressurized to enter project management (which is, in reality, resource management).
At least on the open source front, there seems to be a real community of interest in India, who seem to involved due to their love in the area. The way I see it, getting into engineering was an 'arbitrage opportunity'. That window has closed and people will slowly move on.
In which company does this happen?
Because nearly everywhere that I have seen, and especially in big IT services companies. Managerial aspirations happen as people find coding to be too much of intellectual work and would like to settle down in a desk clerk sort of work accounting job.
A middle manager in a large company these days is basically a guy who fills up forms for work accounting purposes.
They don't even know that there is something called "Open Source Technology". Absolutely no one has hands on experience with Linux. And they haven't even heard of technologies like ROR and Node.js.
I had to invest in their training. But even after 3 months of rigorous training, they still fail to grasp basic concepts.
I am not blaming parents for their child's failure. Of course, they pray that he should have a better life than themselves. That's why they pay for his education.
I will blame these petty colleges with their petty engineering degrees.
Paid projects are killing "problem solving attitude" of entire engineering generation.
The internet is the biggest teacher of all. With institutions like Khan Academy and MITx and Google and coursera and other MOOCs, the availability of free knowledge is plentyful for people with an ounce of interest.
And never invest in a person who does not love programming or problem solving. No amount of training can fix a character flaw.
Here are some very recent examples.
Pseudoscience unchallenged at IIT Kanpur: http://nirmukta.com/2012/08/06/pseudoscience-unchallenged-at...
Hall of Shame: On a Hindutva Apologist’s Recent Lectures at IIT Madras:
http://nirmukta.com/2012/09/05/hall-of-shame-on-a-hindutva-a... """ Gravity was not discovered (sic) by “Newton or Oldton”, but by Bhaskara II and is described in his work Siddhānta Siromani.
The spherical shape of earth was not discovered by “Copernicus or Silvernicus” but Indians knew it well in advance and is mentioned in Bhagavata. """
One can imagine what is going on in other less reputed colleges?
Granted these are off-school activities, but it would be better for them to seek entertainment in better ways.
Interviewer : Name some data structures in Python Interviewee : Same as C, C++
Interviewer : Can you name some specific data structures? For example, have you heard about lists? Interviewee : I haven't heard about lists in Python
Interviewer : What is the key difference between Python and C? Interviewee : Python requires indentation, C doesn't.
That was the final straw in my colleague's patience.
btw Python's indentation requirement is a difference with C though whether it's a key difference or not is debatable.
But i have to admit that most python programs are a joy to read ( thanks to guido's insistence on indentation as part of the specs ) whereas most real-world C code is just horrible ( even code i had written a few years back )
It started to happen pretty frequently and would consume a great deal of my time- It was reaching a stage where I had to stop my work to do her's. After a time she would just show up at my desk with her laptop, I had to write the code while she chatted with some one on her mobile. One afternoon I had, had enough and I asked her why she couldn't do it herself. She then mentioned she only knew C and C++. Then I asked why couldn't she parse the XMLs in C or C++? After a few questions back and forth, she understood I wasn't going to her homework after all.
She shed enough tears to convince our project manager, that I wasn't a good team player and I was the reason why the productivity in the project was falling down.
Thankfully one afternoon our clients had her removed from the project when I was on leave, and they made her write programs in a war room while the whole team was watching her screen on a projector.
I see no sign of passion, creativity in 9 out of 10 people. For the remaining "one", there is no stopping them to what they want to become. People want to shrug off their shoulders blaming they were forced to do engg.. without knowing what would they be doing if not it.
There are a few things that I think requires serious change in India :
1. We need to develop a culture that supports, encourages and rewards innovation - which means we need to develop a startup culture that is akin to US. We should make it damn easy for people to start companies in India (Hopefully you are listening Mr.Modi and Mr. Manmohan Singh ). So far all I have heard is that its hard. With a labor force like ours we can surely go far ahead.
2. The second part ( and the part that is addressed by this blog post ) is training or bringing this large labor force to a level that is usable by the companies that are thus created. This is a much harder problem but perhaps there is a way this too can be disrupted and changed. Changing the mentality of people towards something is not really that easy. But considering how people flock towards all those Indian Idol, Saregama etc.. maybe something similar ( I dont know what that is ) might help.
FWIW, I see a lot of competent people in the United States with this mindset (different numbers, but the same mindset.) They work hard in college and learn what they're supposed to, and after college they keep up with the technologies required for their work. They are rarely superstar coders, but they are competent and productive. People like that end up exactly where society guides them. In the U.S., the society turns them into valuable professionals; in India, apparently the outcome is not so good.
>>I am sorry to say this, but parents come with an “old generation” mindset ... Because they think that if he gets a job he has settled in life ... Unfortunately, what they don’t realize is that there is no such thing as “settling” in IT jobs.
They come with a very correct mindset. For many people here. Including my own family, getting to a IT job was a long drawn battle against very tough financial conditions, social pressures and all other kinds of problems. There are people, including few of friends where they were the first people to enter a Engineering college. Imagine having to drive a taxi, or an auto rickshaw, or pushing a vegetable cart, or a small time farm worker practically working 18 hrs/day and then sacrificing every small desire of yours to save every single paise and doing this for decades you can so that your child can study. And imagine the kid, having to wear only two shirts and two pants a year. Traveling in near-to-explode crowded buses in a city starving all afternoon, and practicing math problems on a newspaper just to get a decent degree and a job.
From their perspective, they are really reaching a milestone, when they get a full time job. At least that is how I felt I when I got my full time job at a Call center here in Bangalore. You might think that's a disaster for an engineer. But from my perspective, the analogy is similar to a person dying out of thirst in a desert getting a glass of cold water, and you criticizing him for not aiming for Apple juice.
Its extremely difficult to understand this, unless you have suffered the same fate. Even if you think you do, you don't. You really need to suffer from it, to understand what it is.
Remainder of your post has some nice insights. But I believe our society suffers from a crisis of honesty. Throughout my entire childhood, teens and now in a job I see rampant corruption. I don't mean bribery. But unfair play of all kinds. Question papers in exams getting leaked, seats in colleges being secured through 'high influences' & capitation fees, Seats denied to general category students due to reservations.
And now in the corporate job, I don't see things as any different here. In fact this is the worst I'm seeing in my life. Even if you are the best programmer out there, you will be slaughtered in the resulting office politics. I've seen some super idiots being promoted, sent to onsite locations, and given amazing hikes just because his manager happens to be speaking the same language as him, or belongs to same state from some part of India, or is because of some religion. At the same time, the entire industry is full jumping jacks, attrition in nearly every company is record high. Because every one wants to be a manager, thanks to the IT services companies and the mess they created in 90's. Now every one joining this industry thinks programmers are losers, and climbing the corporate ladder is all that is sole measure of one's success, or how many time one has visited the US.
Meritocracy is dead in the water, when it comes to the programming scene in India. If you want progress, you need to be some managers's pet and "suck up" to him. Playing political games, and being in manager's power structure is all that counts. Else find your self a manager who is of your state or speaks your language.
This has nothing to do with engineering education. Its about being honest and playing fair. Besides I chuckle every time a guy gives 'engineering education' as a reason to not do something. A 20+ year old with Google at his disposal, has 0 reasons to complain when it education and knowledge these days.
Start up's and bootstrapping are our only hope at this point of time.
WRONG
Totally
Where would a 20 year old learn about a driver code written 15 years back , with no documents? This job would feed him And it is hard.
But, they get good enough help on writing device drivers and troubleshooting them. That is all you need, and you have to take it from there.
There is nothing like copy-paste if your are solving a new problem. You have to incrementally work your way to a solution.
If you think that is not possible for a person, they must rethink and chose a different profession instead.
It also indicates that companies hire people and then throw problems at them without training them or mentoring them or providing adequate tools for them.
First, the author was making a generic point. Your contribution is to point out some silly exception.
However, if a 20 year old had the driver's code, he can learn to look at the code of similar driver's or failing that learn to read the code, and run them through a kernel-level debugger. If he doesn't know how to do that, there are resources available on the internet to show him how.
Here's a link to the open source linux version: http://linux-iscsi.sourceforge.net/
Also check out this site for more info: http://www.open-iscsi.org/
The Windows DDK is a good source of sample driver code. If you are a MSDN subscriber, you would be able to find it as part of your collection ( or available for download online )
Beyond that, i suggest contacting MS tech support.
my point is how do you deal with the pain of supporting code written by someone else years ago?
I am really trying hard to take you seriously and not treat you like a troll.
As far as supporting code written by someone else years ago, that's just the nature of programming. If you find it too painful, get out of this industry, find something you truly enjoy and do your best in that area.
Life is too short to be struck doing something you really don't enjoy.
'naive' and 'mischievous' don't mean what you think they mean, and the author of the parent post did not claim anything of that sort. It's just that your opinions differ and you want to throw some idiotic words at the author's post.
It is _naive_ for a person born into low caste, to believe that the reservation system is corrupt.
On the other hand it is _mischievous_ for the elitist to claim that it is corrupt. Indian popular media and the justice system which are disproportionately occupied by the elitists, have been successful in their propaganda to make the younger generation think that it is wrong to utilize the reservations.
And, by the way, the constitution of india enjoins every indian to be treated equally. If you don't understand that concept, and only view life through casteist eyes, then you are in for a sad, bigoted future.
There are two people, Person A works very hard, Person B doesn't. In a exam, because of the registration number system both are anonymous. Now if Person A scores above Person B. I don't see why B must get a seat above A? For what?
Social justice is to give people what they deserve corresponding to their efforts.
>>Indian popular media and the justice system which are disproportionately occupied by the elitists
By elitist you mean people who work hard and make it big in their lives?
And 60+ years of reservation system hasn't changed anything which says volumes about the problems with uplifting weaker sections of our society. If you give some one an option to get something for free, they take that rather than working for it.
Net Result? You get people who only look progressive but are actually not.
I am too old for the product companies and I am not from a top tier college. So its game over for me, however the only hope I have is that someday I will manage to build something on my own that will free me. This is what I have been dreaming of ever since I passed out of college. You may ask me why I did not do it then, but for a guy from a lower middle class background, it was not an option. I needed to survive.