Apparently Bill Gates is calling for the cap on H1B visas to be lifted because there's such a serious demand. And yet... there are no shortage of people who come to interviews. There are still plenty of people out of work. So what gives? How can there be not enough people and not enough jobs at once?
The blunt truth is that most people looking for a job really suck. I've interviewed people who literally couldn't write a for loop from memory. You would think that this situation was caused by the dot-com boom sucking up all the talent... well, sort of. The boom sucked in everyone. But the bust dropped the least experienced people first. As a result, you now have even more minimally trained people looking for positions.
Joel Spolsky goes into this situation a bit. His rendition of the interview process is dead on, and I've seen a number of people get into trouble by picking the resumes with the right buzzwords, instead of one with all the words spelled correctly. There are a ton of people out there, if you're not picky. Even if you are picky it still not be enough to save you: after looking at 200 D-list developers, a C-list developer starts to look pretty good.
But still. If there are so many people out there, why call for more visas? Why is there so much demand if there's a limitless supply of mediocre talent?
It has something to do with the amount of work that these people do. Steve McConnell mentions "problem programmers" in a paper citing ranges in programmer productivity. He points out that a number of programmers couldn't finish the project at all, and theorizes that some programmers may have negative productivity, "because eventually someone else will have to redo the work of programmers who can't finish their assignments."
But David Parnas lays it out flat in this interview:
Q: What is the most often-overlooked risk in software engineering?
A: Incompetent programmers. There are estimates that the number of programmers needed in the U.S. exceeds 200,000. This is entirely misleading. It is not a quantity problem; we have a quality problem. One bad programmer can easily create two new jobs a year. Hiring more bad programmers will just increase our perceived need for them. If we had more good programmers, and could easily identify them, we would need fewer, not more.
Parnas's Law of Hiring: The more incompetent developers you hire, the more you need.
Software Engineering studies tend to put the cost of poorly designed software in terms of "maintainence". I thought for a while that meant how much work developers had to do to add a new feature to an existing product. But there's another meaning behind the word, and that's how many developers need to be hired to fix and keep running the broken software.
This law explains why no matter how many H1B visas companies get, they always seem to need more, and why software projects have been having a "crisis" for over three decades. I wish I could say that H1B visas and offshoring would fix the problem, but from what I can see it's about cheap labour, and only that. The industry is digging its way into a hole.
2. One newly married programmer was looking for a fake MS(account) from Hydrabad so that her wife can go to CPA claa here.
3. One of the programmer at a global technology firm was writing trigger and failing because he was trying to fetch it without opening it.
4. If you go and look and chekc the papaer of foreign programmer 30 to 50% are with inflated credentials.
5. One of the programmer suggested to write a XML script to capture th variable value instead of writitng in simple file.
So it is not just American it is all across the board.
Yes, many applicants are poor but many are equally brilliant. Sorting out who is good or can be made good with a bit of tutoring takes quite a bit of experience. If all you do is ask candidates to regurgitate the details of handling a trigger in oracle or performing some arcane type conversion manuever in C++ then you will never hire adaptable creative problem solvers and efficient implementation engineers ... just coders. In my opinion coding is best left to a machine, not a person and this solution is nearly feasable with todays tools.
It's very easy to recognize an untrained smart person. They're the people that walk into an interview, tell you straight out that they don't know anything, and then proceed to tell you how they would go about finding the answer. Someone like that is pure gold, because they show honesty and self-reliance.
Your statement that "coding is best left to a machine" is just plain wrong. "Coding" is the translation of human-level requirements and design into a machine readable format. There are no tools that do this. Even the worst 'coder' cannot be replaced by a machine at present, much as I wish they could be.