Monday, October 24, 2011

Culture and Software Outsourcing for Provincal Americans who Know more About Carbon Frame Bikes Than Shiva

Unequivocally, my favorite topic....

I'm visiting Bangalore, the center of the software outsourcing world, and have had the opportunity to work with and explore some software businesses in China and Vietnam.  I own and operate a (great!) software consulting business in the improbable locale of Chiang Mai, Thailand.  So, by way of argument from authority, I'll step up on my soapbox.

I think most of us try to do due diligence when interacting with other cultures - typically there's a book or some wikipedia articles to peruse and most of the important materials can be covered in a few paragraphs - something at first vague, about family and circles (China, Thailand),  hierarchical relationships (India), and obligation (Japan).

I think it's taken me nearly 10 years to really start to get those paragraphs.  Some people get it right away - anthropologists are actually trained in how to get it.  I wonder if any anthropologists are plying their trade in Silicon Valley, or if there are any companies smart enough to hire them.

The gist of my 10 year realization, is not only that you have to digest those paragraphs, but you have to factor out your own cultural habits, in many cases.  Those paragraphs are steel girders of civilizations, not trivia notes on behavior.  (I think we ironically focus on the behavioral recommendations because they're so concrete - but ultimiately I don't think they count for much as few people hold foreigners accountable by their own culturally-tight behavioral standards.   I still put soy sauce on my rice in Japan, put my feet on my desk in Thailand, and eat with my left hand in India).

Things get done in India, and things get done in Thailand.  Both places are top-down management to a fault.  Interestingly, the responsibility and the work in Thailand hovers pretty close to the top of the heirarchy and that heirarchy is less well deliniated.  In India, it's push, push, push, kick, kick again, done.  In Thailand, there's many people working hard to cover the weaknesses of those under them, and Thais tend to be less effective at kicking down. Broad brush-stokes, but geneally true.

The ramifications... In a meeting, don't genuinely solicit junior people for ideas.  It won't work.  Also, there's no reason to be an ass, but our niceness is not some univeral obligation - it's probably more a function of where you're from than what's correct.  This list could go on, but basically your not in Kansas anymore.  I need to read those paragraphs again.




Monday, October 17, 2011

Why it's so hard to do business in Asia...

I had a crazy philosophy instructor in college who leveraged the thesis of incommensurability to justify a radically conservative, post-structural, Roman Catholicism - about the time he wrote this article - Lance Simmons (1994). Three Kinds of Incommensurability Thesis. American Philosophical Quarterly 31 (2):119 - 131.  In not so many words, his argument was, there's no way to rationally or otherwise adjudicate between claims, so look for historical consistency, and become Roman Catholic, preferable an opus dei members.  You have to make a choice, so choose us.  There's no rational-basis for selecting a religious, cultural or ethical correct position - cultures are incommensurable like the hypotenuse of a right-triangle to it's legs.


While that was interesting for about a semester or two, and I still find many thoughtful people saying that, "you have to choose, so pick one," some mutation of the thesis of incommensurability comes up everyday, doing business in Asia, Thailand in my particular case.  Specifically, in Thailand, in most circumstances, it is ethically wrong to publicly humiliate someone.  That wrongless trumps the wrongness of say, lying or, more commonly, giving unclear or misleading information.  In almost any meeting of people, the primary appropriate thing to do, is to save-face, or keep-up appearances.  It makes it nearly impossible to have accountability or information sharing, because that entails fault (loss of face) or a suggestion of unknowing or ignorance (loss of face again).  Importantly, we are wrong when we aggressively push those concepts forward and jeopardize causing someone to lose face.  We're savages.

So, we get daily doses of real incommensurability:


American diplomat to Thai Gov't official:  "We're deeply concerned about IP theft and piracy in your country, illegal copies are traded openly everywhere."
 z
Thai context: [booboo - wrong: already inappropriate because it's a direct criticism]
Western context: [excellent - super-clear way to articulate your concerns so that you can begin to work toward a solution]


Thai Gov't official: "We're doing everything we can to improve the situation."
Thai context: [right, divert criticism, show concern, and save face]
Western context: [wrong, I've just been lied to - they could close the place tomorrow if they had the resolve]

The same oddness must play out in the human-rights discussions in China.  Lance had a point.







Thursday, September 29, 2011

A Nice AppEngine Starting Point

HTML5 Boilerplate, Appengine, MemCache, static file compression and optimization, JQuery, intelligent scaling to smaller device screens, and a clean highly-customizable architecture that looks something like this diagram.  Fork it on github: https://github.com/metachris/appengine-boilerplate
















Saturday, September 24, 2011

Web Frameworks

I've been poking at some different web frameworks over the last month.  After 3 or 4 days on variety of frameworks, here are my unsubstantiated thoughts:

1) ASP.NET MVC 3+  Syntactically clean Razor view engine, nice language options, the best IDE ever, templates, quality documentation, massive community and market.  If I'm a CTO of a 5 million + company, I'd say, "just use this, everyone - otherwise, bring me good business reasons for your alternative."  Microsoft makes developers productive, but some of the wrappers make developers Microsoft developers more than web developers.  There's a trade-off there.

2) Ruby on Rails 3.  All goodness.  I spent the least amount of time here, but the community is the best.  The framework is simple.   The no-sql movement has taken a bit out of the wind out of the sails, as much of the power was in the baked-in ORM, and generally, I prefer configuration over convention.

3) Java Spring Framework with Roo and Maven.  Although I feel really comfortable in Java, there were 62 jar files in Eclipse when my smallish project was loaded.  I'm really just doing GETs and POSTs, so this feels heavy.  I'm certain it doesn't have to be such, but that's what I had out of the box.  

4) Django non-relational / Python.  A little unintuitive in architecture, but easy to get productive, fast.  Python is beautiful.  Appengine is a great hosting platform.

5) Web2Py - the ultra-skinny Python framework.  I was doing configuration through a UI, though, which made me really uncomfortable.  I like the idea of being close to what I get in Fiddler/Firebug.  I need to spend more time here.  I'm not sure if I'd let my hospital IT staff go with this one, but I'd love to spend a few weeks of development in this one.