I've been programming in my current job for 18 months, now, and that's more than long enough for me to have seen exactly what you mean. The core problem with the way our Indian contractors programmed was their inability to abstract. At one extreme, they cut-n-pasted code instead of making it an object or even a function; at the other end they didn't want to tinker with our own API...

We almost had a similar problem with our latest recruit. I hadn't quite seen it, but my colleague noticed that he had trouble coding without fully documented interfaces. His current learning curve is appreciating how configurable a lot of our code has to be... and how many things accomodate simple changes in the configuration area. :-)

Wade.