Hacker News new | ask | show | jobs
by startupdiscuss 2727 days ago
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).

4 comments

How does this relate to maintenance?

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.

There is also another issue with “just works” and meeting specs: specs are almost universally under constrained.

I might describe an admin interface in terms of what it controls but implicitly I want large choice sets to have search functionality and dates to have calendars and so on.

A large choice set implemented as a massive drop down technically works but I don’t have to explain why it’s just wrong. The “practical” programmer may say hey it works and let’s move on. The “clever” programmer wants to impress with a new widget that is intuitive to use. In this particular case (interface design) I’d prefer the clever coder over the practical one.

What you're describing is about end-user empathy than being "practical" or "clever".
> they’re still using JAVA or PHP because it works.

Or probably because that’s what western counties pay for

every contractor does what he gets payed for, hat's not something tied to any specific place or culture.

It might make sense to look at the difference in culture between outsourcing shops and places where they do the whole project in house - rather than to do broad generalizations.

I guess any comparison depends on what you are looking for: when comparing software development culture I would ask about the work environment; are workers likely to help each other out or are they more likely to opt for cut-throat competition between peers? Are people encouraged and willing to share knowledge, or is that something unusual?

But I suspect that's not the way that these questions are approached; these are definitely not traits that we are picked out for during job interviews.

Majority of us in India would also want to work on the latest and fancy tech. But unfortunately, most of us who work in the IT consultancy companies don't have that luxury. Most of the outsourced work are brain dead maintenance projects that are several years old.
I am not sure if Java is any more practical than say Node.js or Python.
I think it's more that existing projects are in Java, so I have experience in Java, Java works, so why learn something else? Just start the next project in Java and it'll just work.
That would imply that the world moved from Java to Node.js / Go / Python just because they are cool new technologies.
Can't tell if sarcasm ...

And, yes, that's often the reason parts of the world move to other things. Hopefully, someone saw an actual problem with the stack they were using, saw a solution elsewhere and moved. However, anecdotally, I often see people deciding emotionally that the Hip Cool New Thing is The Right Way To Go and that's what they use ... and then discover the warts are bigger, or the problems aren't actually solved, or the only thing different is the vocabulary.

But did the world really move from Java to Node/Python?
2 years ago i'd say no but increasingly every new concept/tech stack i encounter has npm embedded in it to access a js library. same with python being used for automation/low level scripting.

unless you set out with the mindset of NO NODE/NO PYTHON, it tends to worm it's way into the project coz someone on the team thought it was convenient

Npm is prevalent in client side for sure, many non trivial ui apps use react/redux or similar and use npm for package mgmt. On the server side, it's a different story. Java still is the go-to language in a lot of organizations. Python for automation, machine learning, and provisioning, yes, I agree. These areas were never Java to begin with.

This may change,though, what with Oracle's license changes.

From what I've seen, Java offers more tooling and handy utilities. Examples: Remote debuggers, thread dump utilities (and analyzers), byte-code injecting tools, etc.

I haven't done a lot of 'production' Python or Node, but I have heard people gripe about the need for some of these.

With python and node typically comes a different approach to developing which should mean those tools are less useful.