Live data from Hacker News

Is a trillion dollars’ worth of programming lying on the ground?

blog.cerebralab.com

61–70 of 350 posts

Re: Is a trillion dollars’ worth of programming lying on the ground?

#61
I am Brazilian, I tried to get jobs in other countries multiple times and many times it failed due to reasons not related to my competency:

1. Rejected from working in a gamedev in Europe because I am not EU Citizen.

2. Lots of companies on USA have to follow some crazy tax rules or general regulations that make them not allowed to hire foreigners, don't even need to be military stuff. Noticed some companies won't even hire out of state.

3. Military, healthcare and many other industries for obvious reasons don't accept foreigners.

4. Several companies have some for reason or another have all employees working on the same time, meaning they refrain from hiring outside their timezones (thus no California companies for me, and no Europeans either)

5. A bunch of times had problems because mismatch of required education and how education work in different countries.

Re: Is a trillion dollars’ worth of programming lying on the ground?

#62
post #57
post #13

It seems to be missing a very big factor: culture. If your goal is to implement some code for, say, healthcare, it is a lot easier to explain the business process to someone who is already familiar with how stuff is done on a higher level. Whenever you hire someone from a different culture / country, you need to start from the basics by explaining the very core of your society. An American programmer might not be too…

This is definitely it. The best markets for selling software are the wealthy countries with their cultures. You need people in those countries that are part of those cultures to develop that software. So your employment market is limited by people within that culture that have that skill, which is why there is still a software development skills shortage. For purely technical things like kernel, database, network or…

But by this hypothesis, countries that have a different culture, but have similarly good programmers, would be able to produce a product suited to their own culture and thus out-compete the imported english version.

But this rarely happens, if at all. So there's something that's still amiss.

Re: Is a trillion dollars’ worth of programming lying on the ground?

#63
post #8

Earlier quoted context omitted.

Turns out, the hard part of software is figuring out what to build. The rest is cheap in comparison, whether done in SF or Bangalore.

Yes. And how to build it. I worked with a brilliant but rather lazy contractor once. His code was unmaintainable despite him being obviously competent. His rationale was very explicitly that maintainable code doesn't make for good job-security. You don't want to be held hostage by your own code.

> You don't want to be held hostage by your own code.

If your code is unmaintainable you become hostage to your own code because making changes breaks things, causes frustration, etc

I totally get the idea of job security if you’re maintaining a codebase that only you understand but that is very likely to bite you back quite badly, especially if you’re a contractor: you may not get any new work, the code you write is very visible and can be judged quite quickly by a qualified person

Re: Is a trillion dollars’ worth of programming lying on the ground?

#64

> 3. Most "good" programmers move to the high-income countries > Again, fairly hard to find data on this I'm surprised it's hard to find data, but yes, this consistently matches my observation over the past 30 years and four different geographic locations: very few American programmers are American at all. When I did my master's in CS 15 years ago, I was almost always the only person in the room born in the United St…

> When I did my master's in CS 15 years ago

At most schools the CS master's program is overwhelmingly international students. That's not the case for undergrad.

Re: Is a trillion dollars’ worth of programming lying on the ground?

#66
"enter image description here"

With all the talk about Google abusing its monopoly to force sites to reduce their load time and whatnot, I have to admit I am eagerly waiting fot the day (it will never come, but why not be hopeful) when Google starts to penalize insufficient or missing accessibility.

Re: Is a trillion dollars’ worth of programming lying on the ground?

#67
post #13

It seems to be missing a very big factor: culture. If your goal is to implement some code for, say, healthcare, it is a lot easier to explain the business process to someone who is already familiar with how stuff is done on a higher level. Whenever you hire someone from a different culture / country, you need to start from the basics by explaining the very core of your society. An American programmer might not be too…

Another aspect of culture: how one-sided the communication is. Silicon Valley and Scandinavian cultures are very flat, so it is possible for "the man on the floor" to tell management that it doesn't work to put diesel into a gasoline car. In authoritarian cultures this would be a mistake as it's seen as embarrassing the management by saying they made a mistake. If you want to continue being employed then it is much b…

An authoritarian culture, however, can get work done much quicker while staying with a razor-sharp focus. The whole "democratic" decision-making process takes time and leads to a sequence of decisions spread throughout the time domain, which, taken together, might lead to a suboptimal result compared to what might be achieved by following the steps of an "enlightened benevolent dictator".

Re: Is a trillion dollars’ worth of programming lying on the ground?

#68
I've worked with outsourced programmers before.

Most of them are talented and a joy to work with. However, giving them work is often a form of programming... they will do exactly what you tell them to do, no more and no less.

For example, unless you describe the tests you want them to write, they may not write tests. If they see a possible refactor or optimization, they won't volunteer to do it. One of the frequent side-effects of this is that the project develops more tech debt and slows down with time.

From the perspective of an outsourced programmer, this makes sense. You're optimizing for efficiency. You're in contractor-mode by default because odds are, your career has been heavily contractor work. You haven't been hired to look at the bigger overall picture and you've never been encouraged to develop the agency to make independent decisions.

The most successful teams with outsourced engineering teams have found ways to better integrate them into the team. For example, I know a few startups with engineers domestically in the US whose main purpose is to interact with large teams of engineers in countries like Belarus. This hybrid approach comes with its own challenges but the cost benefits are huge.

Re: Is a trillion dollars’ worth of programming lying on the ground?

#69
post #46
post #13

It seems to be missing a very big factor: culture. If your goal is to implement some code for, say, healthcare, it is a lot easier to explain the business process to someone who is already familiar with how stuff is done on a higher level. Whenever you hire someone from a different culture / country, you need to start from the basics by explaining the very core of your society. An American programmer might not be too…

This remind me of the recent Microsoft AI that can write code demo. You give the AI instruction and explanation in English, preferably as clear and as detailed as possible and you get back code. Essentially its very similar workflow when working with offshore developer, in the future you could in theory replace the offshore dev with AI, except with much less latency.

The issues we have with any code development; whether through on-site employees, offsite employees, contract shops, or integrated contractors, would also apply to AI.

Those of us that have been doing it a while, know that the single biggest issue in any commercial code project is bad input to the process; otherwise known as Requirements. No one knows what they want, or, even worse, they know what they want, and what they want, sucks.

Steve McConnell wrote about how projects mess up, and how much the damage can propagate throughout a project lifecycle; with bad requirements being the nightmare scenario. This was about a quarter century ago. It is not new (https://stevemcconnell.com/articles/software-quality-at-top-...).

The best requirements for a software project is code. Even an AI will need extremely high-quality, detailed, and well-considered requirements that are likely to require their own language (so AI requirement-generation will look a heck of a lot like "coding").

What AI gives us, is (maybe) speed between requirements and executable, so, theoretically, we could have a really high-power, effective iterative process, where bad input results in bad output, and we see that quickly, then refine the input; much like we already do with code, and run the build again, to see how that results in executable.

I learned development back in the "big iron" days, where CPU time was the most expensive part of the process, and we were required to debug our code in the design phase. If we borked during our slice, we were penalized.

Nowadays, I tend to just write some junky "strawman" code, fire up the debugger, and step through until it breaks.

Working with separate contractors, whether domestic or offshore, needs really good requirements, and some kind of fast feedback and a flexible, iterative lifecycle process; which is frog-fur rare.

If we don't have a fast feedback cycle, then we can't iterate effectively. In-office staff helps to make feedback fast, but it's quite possible to have fast feedback in a distributed environment (I used to work for a Japanese corporation, so I can tell you about "feedback lag"). It's just that we then need some kind of process to afford and regulate that feedback loop.

I think that the process of software development is fundamentally broken, and that the industry is still thrashing around, trying out all sorts of "silver bullets" (See Brooks, Fred).

I also believe that overbuilt process is an enormous issue. I call it "Concrete Galoshes" (https://medium.com/chrismarshallny/concrete-galoshes-a5798a5...), and it affects new-fangled, agile shops, as much as it does old-fashioned waterfalliers.

Unfortunately, if we want to reduce "tribal knowledge," and treat our engineers like interchangeable LEGO blocks, then we need a pretty heavy process. It's still a heavy process, even if we call it "agile."

"Tribal knowledge" is a bad term in the software development industry, but it is the most effective way to have a light-touch process.

It also requires treating engineers well (not just paying them well), so they stay around. I'm not sure that foozball tables and on-site beer are doing the trick, as the average stay at a corporation seems to be less than 2 years.

I do not have the answer. If I did, I would own a private jet for every day of the week. I have my own personal process that works quite well for me, but I don't think it scales particularly well to others.

Re: Is a trillion dollars’ worth of programming lying on the ground?

#70
post #13

It seems to be missing a very big factor: culture. If your goal is to implement some code for, say, healthcare, it is a lot easier to explain the business process to someone who is already familiar with how stuff is done on a higher level. Whenever you hire someone from a different culture / country, you need to start from the basics by explaining the very core of your society. An American programmer might not be too…

    Whenever you hire someone from a different culture / country, you 
    need to start from the basics by explaining the very core of your society.

    An American programmer might not be too concerned if a body temperature
    measurement returns 45 degrees Celcius. Similarly, a patient height of 
    95in probably wouldn't immediately raise alarm bells for a European 
    developer.
This is so key and has been overlooked for decades.

In addition to what you wrote, I think it may actually go beyond that?

There's a certain "team unity" that binds good teams together. It's that extra "something" that helps you get through those tough moments and really work together.

I've worked on remote, international teams that HAVE had that kind of esprit de corps. And I've worked on local teams inside the same building that haven't.

But, overall?

In my experience that kind of unity and teamwork is MUCH harder to build across cultures and/or remote work arrangements. And the difficulty is often multiplied by the "mercenary" nature of consulting work in which consultants obviously aren't really incentivized to worry about that sort of thing - in fact you kind of need to form emotional armor and avoid it to an extent.

It can be done, and is absolutely worth doing. (And, in my opinion, it's a form o institutional racism not to...)

In my experience it's often as simple as giving employees some space to banter and chitchat and get to know each other. Can be as simple as a #random or a #chitchat IRC/Slack channel sometimes and/or a company culture that allows for some chitchat and getting-to-know-eachother during daily standups. And if you are working cross-culture, at an absolute bare minimum, do some homework to at least understand each others' holidays and intangibles like differences in etiquette and so forth.

Thing is, in typical offshoring arrangements, much of this is impossible.

Post reply on HN