Working at a cable company where they contracted out to vendors most of their software development. They had a few internal systems that they developed in-house and would only hire 'senior' developers. I was curious how they expected to have a steady supply of 'senior' skills without ever hiring, training, and promoting a junior.
I also saw they had no idea how to manage their vendors, partly because they didn't have in-house skills to serve as a sanity check on what vendors were charging. As a result, their vendors profited hugely from the company's ignorance (I know because I also switched to work for one of the vendors).
I've seen exactly the same thing at a couple of companies I've worked at in the past too. One specifically outsourced all of their development because it was deemed to be cheaper (which it was), but after a few years without any in-house technical expertise to oversee development they'd run into all kinds of issues with bugs, outages, slow load times, etc.
For a period when these issues occurred the business could say that they wanted the issues patched, but they never understood why there were so many issues to begin with. It was only until they brought a few people in house to try to bridge conversations between the business and the team of outsourced developers that it was finally raised that the code was completely unmaintainable. And following this an in house team was recruited to bring development back in-house. Of course, when we sorted 90% of the problems the business started questioning why we were needed again and we were all outsourced for a second time...
But this same thing obviously happens in a lot high-tech industries. Without people who are technically competent overseeing what's happening you can only dictate requirements at a high level. You cannot dictate all of the NFRs because you simply do not have the knowledge or ability to oversee them. So what you have is something that at a surface level does what you wanted, but the execution is so horrendous that it's unsatisfactory and no amount of saying "please fix this", "please fix that" will actually resolve the fundamental issue at play.
And the problem is even worse when you want to be an innovator because innovation is impossible when you don't know what is and isn't possible. To push boundaries you first need to know where the hard limitations are and what's just a engineering problem.
> You cannot dictate all of the NFRs because you simply do not have the knowledge or ability to oversee them
This is a key point, and I believe the reason why software projects are always late and why it’s impossible to estimate them generally, in a non-domain specific way.
You cannot aggregate all the estimates and recorded performance of past work and use regression towards the mean to have any predictive capacity of how long a new project will take or cost, even when it has similar high level requirements.
This is why 10xers exist, or the perception of them exists. There are people who have seen similar pitfalls in the implementation stage enough times to know how to avoid them and they don’t need to redo things as much.
This is why rewrites are dangerous, even when existing code bases are cumbersome to deal with and expensive to develop. The deep magic of low level NFRs will ruin attempts to replace them.
Some are clever and try to use linters and static analysis tools to avoid this, but these will always be opinionated, domain specific in some way, and incomplete. They can frustrate development when taken outside their domain.
I think what you're saying is true, but a slightly broader issue around why software development is difficult more generally.
What I'm touching on here is more related to how outsourced teams typically lack the ownership and motivations that internal technical teams will generally have.
The specifics will vary depending on the outsourcing model, but outsourcing to a remote software development agency is typically the worse of all possible options. The reason for this is that code quality and maintainability is rarely ever a priority for an agency because they're typically judged purely on whether they can deliver what they promised to the client on time. It's very hard to tell a client that a feature is coming 3 months late and will cost extra, but that time is needed to ensure the developers are happy with the code quality.
Additionally, if there are any bugs that's often a good thing for a software development agency because not only will you now be paid for the initial feature development, but you'll also be paid for any subsequent bug fixes.
If outsourcing is done directly then the results are typically better because the remote team tends to have more agency. The business might still ask for a feature as soon as possible, but now the remote team isn't going to receive extra work for bug fixing the crappy code they deliver. They also don't have multiple clients and are going to be working solely on that single codebase so can't just hand off any issues to the next guy who comes along. With direct outsourcing the incentive to deliver crappy code no longer exists so typically the quality increases. Additionally the business might trust the remote employees enough to judge their own performance for which they can include NFRs instead of judging performance purely on the speed at which features are delivered.
However, even if directly outsourcing employees are rarely seen as equal to other employees at the company. The business basically just sees them as cheap code monkeys and the code monkeys know that's all they'll ever be too. Employees working at head office on the other hand might be motivated to go above and beyond because they want to be recognised by their bosses, and if they do a good enough job they might even get a promotion. This just never going to happen to a code monkey in India who can barely speak English no matter how competent they are.
Additionally, a team at head office is also likely to have more influence on business decisions and be able to feed technical input into the decision making where useful. This increased influence also means employees are more likely to care about the company since they feel closer and more involved in decision making.
The reason outsourced teams are bad isn't necessarily because they're not hiring enough 10x developers (although they're often not incentivised to do that either), it's more that there's usually little real reason for anyone to produce anything of quality. No one is going to be promoted, no one has any influence, developers are mostly just being judged on how fast they can deliver features because that's the only metric non-technical individuals can assess their productivity by, and finally they're disconnected in just about every possible way (location, culturally, hierarchically, etc).
I think what might work is have a great development team in house who can make all right high level technical calls, then outsource the grunt work while assessing them both on speed and on quality. A almost every company I've worked for there are talented people wasting time on nonsense like bumping project project dependencies and replacing deprecated code. I'd guess that work could be outsourced with near-zero downside and a significant cost saving.
I feel like the executive business class of this country has this dystopian vision: that the future of American business is just a handful of CxO and SVP people running around making $xxM dollars a year with all the actual labor doing the actual products and services being done by as-cheap-as-possible, expendable offshore workers. This is the end game they are shooting for: They want us in an Elysium hellscape with a few of them enjoying everything and the remaining 8 billion people in squalor.
I agree with the perception, but I don't think that's the reality at all. In general I think they simply are not thinking about much of anything except how to increase next quarter's margins or hit their contractual benchmarks to unlock their options. They have no big picture thinking, whatsoever. It's all just 'make number go up' mentality.
You can also see this in their personal behavior. Those at the top of the top have enough money to do anything. And what they end up doing tends to be work until they drop dead, in some cases literally - with 93 year old Buffet being the poster boy there, engage in mundane hobbies and activities - same as anybody else, and then start directing lots of money towards philanthropy. But the myopia tends to again strike there often making the philanthropy awkward and largely ineffective in effecting any sort of meaningful and lasting change -- unforeseen and unintended consequences, alongside a simple mixture of inability, abounds. The philanthropy ran exactly as they ran their businesses.
That's exactly the problem. It's purely a status play, in the narrowest and meanest sense.
It's unthinkable and insulting that some of the lower orders might have actually have valuable skill or important agency.
The primary product of corporations has always been hierarchical status for the owners.
But sometimes there's been some sense of generosity and mutual obligation. Now there's none - just myopic selfishness which often leads to disastrous consequences, sometimes affecting those afflicted by it.
Most of them are going all-in for automation of everything these days, either classic robots or some fancy iteration of "AI". Chinese labor got too expensive, even Apple is fleeing, most of Asia is too unstable politically given the potential for multiple hot wars in the entire region (most involving China, but there's also India and Pakistan), Southern America is too unstable as well with either lunatic politicians or drug lords running the show, most of Africa just doesn't have the infrastructure required for either low-skill industry work or IT offshoring plus the looming effects of climate change and, again, multiple hot wars going on. Oh, and machines don't go on strikes or demand market wages.
So, the result will be even worse, with people not even having jobs and left to fight for scraps instead. Or maybe one of the hot wars will eventually go global and humanity will be nuked down to 1% of the population, Fallout style. Who knows.
A worldwide famine would cause nukes - people don't quietly sit around and starve, they revolt. Meanwhile, if you're a head of state that needs more food (because you don't want to be lynched) then you go acquire more farmland.
It's not the C–suite that’s the problem, they’re just doing the bidding of the “shareholder activists” and stock market geniuses who are so brutally focused on extracting every last cent of value from enterprises that sacrificing anything longer term than the next quarter is perfectly acceptable.
I've worked in a major company ( global - 10s of thousand of employees ) where the chairman and CEO were changed and it was like night and day.
The company changed from one that was driven too much by short term pressure from money men investors, to one that took a much longer term view and invested in R&D and inhouse skills.
Note the change in management was instigated by some of the larger, longer term investors ( pension funds etc ) - ie not all capital is short term.
The new CEO put together that long term vision - said investment now ( and so lower EPS now ) will result in substantial longer term bottom line growth - had to persuade the markets etc.
They were successful, and it's sort of self-fulling - the short term capital leaves and you get more longer term investors that matches that longer term vision ( obviously the spiral can go the other way ).
However - that's the easy bit - delivering growth - at some point it's not possible to sustain that level of growth - then selling the idea you need to invest to standstill is much harder.
The CEO - also have to fight-off opportunists - where the problem is the maths is often in favour of buying a company, stripping/milking the assets and sacking the people.
Note sometimes it's only capital efficient because the capital doesn't need to pay the full social costs of the company destruction - it's governments job to make sure they do.
"Shareholder activists" are just following their own incentives, though, just like the C-suite. At a certain point, you have to either blame the people doing the things or blame it on capitalism in general.
Companies usually do better year after year until they reach market saturation or until the competition kills them.
Once one of those things happens, they start to squeeze blood from the stone. The quality of the product drops, the prices are inflated, jobs are outsourced or eliminated, they pivot into providing other goods and services (which will also get worse later), etc.
None of these things are mutually exclusive with that "next quarter" mindset.
I actually blame the stock market for a lot of this. Private companies can, in theory, settle for just making a nice profit year after year. As long as they come out profitable they don't need to expand. Once you're publicly traded though, you have no choice but constant expansion.
The boom and bust cycle has been happening for a long time now.
Stockholders are owners. If they suspect the company is sacrificing the long term for the next quarter, they are going to dump the stock as soon as they get a whiff of that.
The value of a stock is base on its long term value, not its short term value. Sabotaging the future of the company to drive short term results is something you'd have to keep secret.
> The boom and bust cycle has been happening for a long time now.
Is part of the problem, that people making the decisions have asymmetric incentives - the gain from the boom is greater than the penalty from the bust?
Bro this isn't a vision, it's been happening, as fast as the global economy could allow, since the 1990s.
there have been some clawbacks -- government regs, realizations that low-cost means you get what you pay for -- but it was going hard before, and will keep going.
a significant portion of HN is either automating, offshoring, or else working next to these trends (if they're not making them happen).
> I was curious how they expected to have a steady supply of 'senior' skills without ever hiring, training, and promoting a junior.
You can do it, but since you're relying on others to build the pipeline, you're going to have to pay a lot more salary to the seniors than you would if you promoted them.
Maybe that makes up for the salaries of juniors and the portion of time spent by seniors on mentoring juniors. But then some seniors want to do mentoring, and you're not providing that opportunity, so more reason for them to demand more pay.
IMHO, it's workable, if not necessarily desirable, if you want a small team. If you want a big team staffed with only seniors, I think it's going to be a challenge.
> You can do it, but since you're relying on others to build the pipeline, you're going to have to pay a lot more salary to the seniors than you would if you promoted them.
Not really, because people aren't loyal to companies, it's not the 1980s.
If Company A trains a junior to a senior and fails to pay senior rates, what stops that new senior moving to Company B?
Company A and Company B thus have to pay roughly the same, who did the Junior->Senior transition doesn't matter
Inertia helps. It's common knowledge that you'll get paid more if you switch jobs. Which means Company A gets a discount until the person leaves (but maybe they'll take a matching offer)
That's the normal stickiness of a job, but if you are a junior and you've levelled up to senior you'll likely be looking at a wide number of roles far more than a senior staying still.
Some things are easy wins for retention -- my company gives extra holiday as tenure extends for example, and people of a certain age still have a defined benefits retirement plan which has significant value. The extra holiday costs companies nothing, but an extra day each year really helps, start with say 28 days, but after 5 years you're on 33 days. It's harder to put a monetary value an extra day off, so harder to make the jump-ship calculation.
This has been my pet peeve for a long time now. Just about every job listing insists on seniors only and they companies complain there aren't enough developers.
In software in particular, thresholds have fallen. Maybe "Senior" today is like a junior 15 years ago. (Some interns out of college are really sharp, and some can basically work at the "senior" level immediately. Basically, they think logically, and they know how to write software, which they've been practicing through high school and some college.)
Put another way ... most companies just really suck at hiring software engineers, and the ones they hired before weren't good enough, so it seems they need to hire at a higher level ...
> I know because I also switched to work for one of the vendors)
Is that legal in the United States? In many European countries, you can't just leave your employer and go work for a client/partner due to the potential of you using the business secrets to disadvantage your former employer
Absolutely. You can leave your employer any time you want, and there is nothing they can do about it. You don’t even have to give notice, although it is polite to do so. And you can go work for their competitors too, unless you signed a contract ahead of time in which you promised that you wouldn’t. Even then, that may not be enforceable.
> "About one in five American workers—approximately 30 million people—are bound by a non-compete clause and are thus restricted from pursuing better employment opportunities. A non-compete clause is a contractual term between an employer and a worker that blocks the worker from working for a competing employer, or starting a competing business, typically within a certain geographic area and period of time after the worker’s employment ends. Because non-compete clauses prevent workers from leaving jobs and decrease competition for workers, they lower wages for both workers who are subject to them as well as workers who are not. Non-compete clauses also prevent new businesses from forming, stifling entrepreneurship, and prevent novel innovation which would otherwise occur when workers are able to broadly share their ideas. The Federal Trade Commission proposes preventing employers from entering into non-compete clauses with workers and requiring employers to rescind existing non-compete clauses. The Commission estimates that the proposed rule would increase American workers’ earnings between $250 billion and $296 billion per year. The Commission is asking for the public’s opinion on its proposal to declare that non-compete clauses are an unfair method of competition, and on the possible alternatives to this rule that the Commission has proposed. "
Even in Europe it can be legal, depending on exact contracts. Especially moving along outsourced "trusted" companies, sometimes it's seen as essentially divestiture of business unit into another company, etc.
Working at a cable company where they contracted out to vendors most of their software development. They had a few internal systems that they developed in-house and would only hire 'senior' developers. I was curious how they expected to have a steady supply of 'senior' skills without ever hiring, training, and promoting a junior.
I also saw they had no idea how to manage their vendors, partly because they didn't have in-house skills to serve as a sanity check on what vendors were charging. As a result, their vendors profited hugely from the company's ignorance (I know because I also switched to work for one of the vendors).