| IMHO the big cultural difference between the sub continent and the US is an emphasis on a particular notion of being “practical” over what I would call a particular notion of being “smart.” I assume you are familiar with the particular notion of being smart. You are quick to think of solutions, the solutions are supposed to be novel, you have particular cultural knowledge, detailed opinions and a nerd sense of humor. In contrast the practical person will put no emphasis on a novel way of doing things. As long as the solution works, you use it. So in the US people may be excited by Haskell or whatever but in the sub continent they’re still using JAVA or PHP because it works. This is a bit frustrating because of the emphasis on specs and features that are implemented exactly as written. I also think the latter has to do with the distance and difficulty communicating. But the source of pride (practicality) is part of the cultural difference. Needless to say none of this is true of everyone and all people are equally smart and capable (except Phil: I know about you Phil). |
Whether code is practical or not is not a black and white issue, and a solution that "works" today - meets all specs, generally bug-free - doesn't mean it's maintainable. In fact, most of the code I've dealt with from people who basically only value the metric of "does it work?" completely fails at being maintainable.
What I mean by this is as soon as you start trying to add/change features, you quicky run into bad design and have rewrite huge chunks to get the new stuff to fit, end up playing whack-a-mole with endless bugs, or both. Sometimes you can hack on a fix with duct tape, but that only delays an even bigger rewrite or more bugs later.
I've run into this with mostly "job shop" places, both in North America and offshore, so perhaps the problem is the nature of that business more than the culture, but the mentality seems to align with your description of practicality.