Programming standards in India: Hard to find talent
We are trying to hire a few high quality developers for our India office and are having a hard time finding skilled developers. I feel sad to see so many so-called "developers" responding to our job posts, but in reality most of them do not even know the basic foundations of software development.
We have strict quality improvement guidelines, making developers aware of new technologies and how best to use them, besides creating an environment where everyone gets into the habit of code reviews. We already have a 3 point QIP in place, but still looking for more additions to it. Basically we want smart coders whom we can train on our platform and prepare them for the exciting challeneges ahead.
But during the countless interviews we have conduted till now, I realized that most developers here are simply focussing their energies on how to finish their work, even if they seriously "botch" the code with hack jobs. Mis-using ASP.NET Sessions, mixing layered structures, missing or flawed architecure, poor design, poor code management are just one of the few issues I have faced working with even experienced developers here in India. While interviewing them, we were shocked to know that even developers with 5+ years of experience did not know the fundamentals of design patterns, structured coding, proper commenting etc. Some of them even had the audacity to tell the interviewer that "all these are advanced things, these do not matter. What matters is how to get the job done and get salary hikes".
Code quality? Does it really matter?
Table-less HTML? "How can you create layouts without tables?"
Code repetition? "So what, I will fix bugs in two places, its my headache. Don't worry"
ReSharper? Never heard of it.
Do you know about the latest updates in technology? Do you read blogs, Twitter feeds etc related to your field? "Ummmm..."
Some of them even made weird faces when asked about what version control system do they use!
All such developers run after "tags", skills do not matter to them. Their only goal is to get 3+ years of experience in their resume and get the coveted tag of "Senior Software Engg.", 5+ years gets you the posh "Project Manager" tag. Almost everyone of them believes that there is no need to code after 5-6 years of industry experience, just enter the "manager" role and "guide" teams. And god forbid if you are still coding even after 5 years, they would laugh on you as if you are the dumbest programmer on Earth!
The problem lies somewhere in their mindset, which needs a major overhaul. In India, a senior software developer is one who has just 2-3 years of experience. One can become a Tech Lead if he has 5+ years of experience in his CV even though he might not know things as expected. I have seen Tech Leads who can't explain even a single design pattern and have 7 years of experience! But the demand is so huge that such people get placed easily, and also get huge pay packets! Whereas in countries like US, due to outsourcing there is a tremendous pressure on the developers there..they have to increase their knowledge, go deep into things and become real experts in order to save their jobs, or else they will get pink slips as all mediocre jobs will be moved to countries like India. This may also be one of the primary reason behind the growing failures of software off-shoring processes here. In near future, this bubble will burst soon, and only those companies which have strict quality control guidelines and best minds will survive.