Hacker News new | ask | show | jobs
by dagss 1093 days ago
In my career I have seen almost identical systems being built by a) 6 developers in a startup in 1 year b) 100+ developers in a big company with a much much larger budget in 2 years.

Almost the same specs, but the one in the startup had better scalability and fewer serious bugs...

So, spend 10-50x less and get higher quality?

Worst is I now consider case b) quite lean and efficient compared to what I see tech consultancies doing towards public sector, banks, etc...

-- My point being: There definitely IS a room for "rockstars" (don't like that term, but interpret this as developers competent enough to carry a lot of weight on their own and work in a smaller company) to deliver a lot of value.

The problem with the model is the lack of predictability (what if the few developers you trust don't deliver), the bus factor if one of the few devs quits, etc

In a sense inefficiency is a goal, because otherwise you loose redundancy. It costs a lot to hire 100 to produce the output of 10, but much lower risk.

18 comments

In my experience you can always count on a team to do in just an year what a single developer takes an entire week to finish.

What absolutely does not mean that teams are useless. But that choosing the correct size and composition for them is one of the most important decisions for a project (right there with "are we solving the correct problem?"). And "more is better" is a completely wrong way to decide on it.

Also, this doesn't make that one developer a "rockstar" or whatever else you call it.

The best teams do the most because they have the most trust. The worst teams are usually spending time paying down technical debt, or busy generating it to meet a deadline.

Same goes for "rockstars", only its easier not to "lose your groove" if there are fewer people pinging you. You still run the real risk of two "rockstars" playing out of sync, and causing a mighty mess down the line.

It's never the individuals. It's always the team culture.

I've seen 5-person teams of raw bootcamp grads run rings around conventional dev teams with a broader experience base, repeatedly. Part of it is that there are no bullshit status games going on when everyone knows everyone else is just as in the dark as they are, but (in my view) an equally large factor is that the grad teams know they're going to have to learn whatever tools the problem needs. A more tenured team is far more likely to waste time on trying to build java in python, or fighting over not being able to use their favourite libraries.

But then there's also the wider situational context: an environment that has 100+ developers in a big company will have governance tarpits and coordination overheads they almost certainly haven't measured the cost of; 10x wouldn't surprise me at all just from those two factors.

Grad teams in the same org are more likely to have standalone, lower-risk projects to work on so they're going to be more insulated from those effects.

We had a huge project with about 20 devs that went on for a year and a half. We brought in a bunch of consultants. The leads basically spent all day herding cats, and all night coding. We all agreed we probably could have done it in half the time with just the 5 leads.
This is a problem across many job functions. It's always faster for "just the pros" to bang out a project or deliverable but it's usually in the company's interest to also be training more pros.

Every more junior person on a project is going to be less efficient than a senior person but they need to level up and go through the apprenticeship phases to become a senior person.

Very small companies or teams can tactically choose to pay more and only hire top talent but most places will need to develop internal talent due to budget, recruiting, or bus factor (business resiliency) constraints.

The problem is most of these pros were high-priced consultants who left as soon as the project finished. On top of that some of the stuff they built was a huge dark gray box to us for years.
"but it's usually in the company's interest to also be training more pros"

That's not really my experience.

The reason companies hire lots of people is not because of bus factor, but because they're trying to "make 9 women give birth to a baby in 1 month".

The fact that development doesn't scale linearly is very well known to developers today, but product people barely heard of Mythical Man Month.

Companies big and small need better training both in the initial phase and continuously.

It astounds me that we don’t see more investment in this because it pays off quickly

the problem is the quality of training, i can't see lots of high quality training (it exist) but isn't available like in other areas, 1 most training is buzzword centric learn this new tool, we have "methodologies" but most of them are trash, and optimize for managers convenience and feeling of control, not output, they are books out there who teach you basic of system design, and fundamentals (even this is full of bullshit like, java architects), but they are scarce and is harder for manager to justify spending in this instead of this new tool who will revolutionize the world in the next 5 year and give the manager and increase in responsibilities.
Why don’t companies have pros make things and non-pros maintain those things after they’re made?
Then the non-pros never have the opportunity to learn from the pros and the pros never get a break which leads to employee morale and retention issues + tacit knowledge loss.

Pros get burnt out being constantly called on to crank out new features under pressure and never get to leverage their deep understanding in the maintenance phase.

Non-pros have no upward mobility (career progression) and get burnt out struggling to understand and maintain unfamiliar code without any guidance.

I've experienced a different situation where I was one of two pros – pillar may be more appropriate – in a team of around 15 devs – and wasn't recognized as such. I was working 70h/week on average (I never was paid for those overtime hours and my actual hourly wage was under the minimal wage), taking in charge every and any issue that may pop up, I was a reference when it came to knowing how our system worked and people would come ask me questions about the inner working of some part even when they had designed it ! I left disgruntled, and the other piller followed course because I wasn't here anymore to buffer the conflict he had with the CTO. In spite of the new hire and organizational restructuration to fill the gap, what should have taken 2 weeks to implement (a few hours to a few day in the redesign I had reimplemented at home in the weekend following my departure), took them 6 months. They had to distribute overtime hours to every dev, and in the end I received a call from the guy in charge of HR who told me the company was considering rehiring me at the condition I should behave ! Dude was fired eventually and replaced by a manager from the holding company.

As for pros needing training by other pros, I think it's more a question of culture. Once I was tasked with adapting a microservice to also run as a library, the challenge being we used JSON fields and now also had to store them in a mysql database that did not support them natively. I wrote an adapter that could have been released as a separate library because it was that generic, it took me 1 day of work, a 15 files long PR. But because it used a postwalk traversal on tiny json data triggered lazily upon accessing the specific field, cached in the ORM object for repeated access, it smelt funny to the CTO who proceeded to ditch my work away, spend the 3 following days adapting 350 files to try to get a highly specific solution then gave up, and decided in the end we'll have two separate versions of that system, in concurrent use, one as a lib and one as a microservice, hence multiplying by two the time it took to do changes to that highly repetitive codebase because "it was simpler that way".

You don't need to train pros, they have been training on their own since they are twelve.

Reasonable argument, I like it, however would add a bit of salt:

I've seen several times so far that people maintaining things are actually doing a much better job, while those who were granted honor of doing a new thing because hey they are "pros". And once they did the prototype, they are _considered_ even more "pros", because hey, they wrote it. The people who rethought and rewrote the thing later were real makers, but didn't get the appreciation of "pros".

The worst thing is that "pros" status keeps working for itself, even while delivering worse job. I wouldn't have a problem if the system could fix itself over time.

Kinda related: "Confession of a so-called AI expert " https://huyenchip.com/2017/07/28/confession.html

I've been on both sides of this fence. As a maintainer, you have all the time in the world to understand the system, as it is, and improve it. You have the benefits of hindsight.

As a producer of the mvp, a lot of times there is 'exploratory code' where you're not actually sure how it will work yet; or scale. So you bang out a few approaches and pick the best one for the constraints you have. And basically never touch it again.

In one case, I was working on the mvp and the team who would be maintaining it where the one's doing code review. The code turned out way better than either of us would have come up alone. It ended up being one of the coolest projects in the company and some internal secret-sauce for making money. For example, I remember one code review where they asked to add a configurable callback in. I was like 'why?' and they answered, "we're already being asked if it can do X, if you add a callback here, here and here, we can already start building that feature so you can focus on the core."

Yes, but when a "pro" takes too long to deliver something, then that thing is considered hard, because even the "pro" cannot make it quickly.

Re. scaling -- probably, agree, just I never seen myself (working in distributed systems). On my personal experience it was always more-less clear, depending on what software/database/data types we intended to use. So before implementing an MVP, I could roughly answer what price/scalability it would have. But I can see it might have, especially in fields of statistics/ML/new algorithms. E.g. "try using SIMD for this new sorting algorithm" -- only tests could show if it's any better.

But in that areas, usually managers shouldn't judge by outcome anyway, but rather by how fast they make and test hypotheses.

Wow, that blog post post was a breath of fresh air. Can you believe it was written almost six years ago? She is really seeing into the future. Unbelievable.
Because you'll end up with pros great at cranking out un-maintainable MVPs.
Maintenance is development, unless the system is being kept on life support. If pros build V1, will non-pros be capable of building V2?
Maintenance benefits from "pro" skills as much as creation does; you can break something just as easily with maintenance work as with new features if you're not good at it.
To me that's a wrong way to look at software maintenance.

What do you think leads to a better result?

- I create software that I _want_ to maintain and _will_ maintain.

- I create software that I think someone else wants to maintain, I leave the project after.

At least in open source, some of the most praised and successful software was built _and_ maintained by the same people at least for a substantial amount of time.

Thinking about it, this pattern of "I, the rock star will build it, you the code monkey will maintain it." Is a red flag.

That's not a good way to predict how maintainable software is.

I've seen plenty of "software that I _want_ to maintain and _will_ maintain" that is complete shit from a maintainability point of view.

I've seen one-offs left by a consultant that are pretty amazing.

The main difference in both cases was that more experienced developers made better and simpler code.

I struggle with that all the time. We have a lot of offshore people and I am pretty sure that 3 experienced people could take on a project that requires 50 offshore people and get it done in less time at higher quality.
20 years in industry. Typical Offshore people have almost always been a waste of time and just slowed down getting anything useful done.

Now, I’ve also hired internationally from all over world and that has usually been fine.

Question in good faith, from a non native English speaker...

What would be the difference between offshore and hiring internationally?

Offshore generally means you're trying to slash costs. Say, hiring $10/day devs from India. Now, there are great devs in India, but they don't work for $10/day.

It's the same term that was used for transitioning textile and other factory work to third world sweatshops.

Hiring internationally is just that. You might get someone for a bit cheaper (somewhere in the neighborhood of 20ish percent), but that's usually in exchange for the extra hassle of managing a remote team and dealing with timezone issues. You don't usually crank through these people every quarter, they're hired for the longterm (or, as longterm as anyone in a software job is hired for).

I worked on a team with two other engineers. I was in the EU, one was in Australia, and one on the west coast of the US.

We had very, very little overlap to have meetings (unless one of us wanted to wake up early or have a late night meeting, which happened a few times). We did everything async, even meetings and decisions.

The best part would be learning how to open a WIP PR, with enough detail that someone else could understand what you were going to do. You'd wake up in the morning to find a team member had contributed to your PR, either by fixing nits (we didn't have time to go back-and-forth on shenanigans or it would take weeks just to merge a single PR), or by actually implementing some idea they had. So, if you didn't like it, you'd just remove that commit from your PR.

It was fun, but it takes a lot of trust!

When you offshore cost is the main factor and the companies optimise for it. As an example you may have an offshoring contract with Infosys where you pay around $20/hour/head and they provide mostly freshgrads (some times referred to as "commodity developers") with dubious qualifications. But you can say you have 100 engineers on the project. When hiring internationally you usually hire and interview a specific person and pay them well through Deel (or equivalent). All of the former engagements have been a disaster, the latter have mostly worked out.

Both have their benefits. In my experience offshore teams are basically an army that you need to train and provide a lot of direction. It can be very frustrating but if you have code generators, Sonarqube, linters and they are only working on CRUD applications it sometimes works out. Whereas international hires are usually very competent because you personally selected them.

To me, "offshore" means acquiring developers from international shops that bid for US contracts, whereas hiring internationally just means hiring outside the country on an individual basis.

Speaking very broadly here, my impression is that those offshore development shops bidding for US contracts often don't have the greatest working conditions. Those talented enough to know their worth and find better options will do so if the opportunity presents itself, which could mean either applying for international positions on their own or immigrating to where the jobs are. Thus there's an outflow of talent away from those offshore companies.

Offshoring is contractors. They (usually) will code exactly what you tell them, and no more. They are not "product oriented" and won't push back on things if they make no sense -- they'll just shake their heads and get it down in the fastest way possible. They are not here "for the mission" and often don't care about maintainability. It's not their fault, they know they could be let go at any time, and any personal relationships they might build in the company won't save them come budget time. So you know, they're kind of checked out. On top of that you have timezone issues and potential language barriers.

Hiring internationally, you might have TZ and language issues but none of the other stuff. If you do your hiring right that is, you'll get somebody who actually wants to be part of the team and is product oriented.

It's mercenaries vs. paladins.

I think the poster is hinting at skill level, where "offshore" is low skill in a cheap location, and "hiring internationally" means high skill in any location (or provide visa to move to high cost location).

One thing that I have found with "offshore" hiring: The very best have _mostly_ migrated to high cost locations because they get a huge salary increase (far more than cost of living increase). There are _some_ exceptions where the candidate is very high skill, but needs to live in a developing country. Usually family or cultural reasons. However, they are very hard to find and harder to keep.

The difference is only implied in their comment. They are using "offshoring" to referring to relying on a completely outside team to deliver a product.

In comparison to hiring individuals internationally to work with an internal team.

In the first case the entire project is "offshore." In the second case only individual team members are not in the primary country.

The poor state of technical education in India.
I struggled with this a lot too. I came to the conclusion that an offshore developer who as good as a good onshore developer costs about the same, just due to supply and demand, so it's a wash. If a company can't find or retain talent, hiring a not great developer offshore is cheaper than hiring a not great developer onshore. It's an "I give up" strategy; you can build the same mediocre, buggy crap cheaper offshore. Plus, off shore sales people are very good and promise the world. Many traditional executives are gullible when it comes to technology, but they're pretty good at turd polishing, so that's also part of it too. I also think OpEx vs CapEx accounting has a lot to do with it as well.
Ed Yordon I think said you can't make a baby in one month with 9 people. More than six on a team and communication overhead goes through the roof.
That was Fred Brooks, in "The Mythical Man Month".

As relevant today as when it was first published, in 1975.

And it never ceases to amaze me that people think "dev-day" is any less mythical.
Only quote points.
s/Yordon/Yourdon/

I consider him a giant in software, but because he was "IT Focused" he was not as loved as others.

> We had a huge project with about 20 devs that went on for a year and a half. We brought in a bunch of consultants. The leads basically spent all day herding cats, and all night coding. We all agreed we probably could have done it in half the time with just the 5 leads.

20 developers is a lot, but could in theory be worthwhile. I'd really try to get all 20 be very-effective ones and structure the responsibilities and communication so that they don't get bogged down. If you do it a naive way, and aren't lucky, it'd be easy for 20 1x..10x developers to become 0.01x developers.

Or, if you get people who just want to call themselves a "dev" and grind concrete task assignments in a straightforward way, then I think you either need to be doing something bog-standard and naturally amendable to just going through the motions (e.g., scalable Web CRUD, or yet another forum/chat app), or you need a brilliant approach to structuring the work.

> 20 developers is a lot, but could in theory be worthwhile. I'd really try to get all 20 be very-effective ones and structure the responsibilities and communication so that they don't get bogged down. If you do it a naive way, and aren't lucky, it'd be easy for 20 1x..10x developers to become 0.01x developers.

I don't think it makes sense to talk in terms of absolute numbers. It depends on the size of the company and what they're trying to build. It's more like "n good developers are faster than 10*n shit developers". If you have enough essential complexity in what you're selling to your users you could realistically have 50s or 100s of developers where every single one of them is like "startup grade" and has their own projects with their own responsibilites, their own autonomy and low communication overhead.

The problem isn't companies that have 200 devs. It's companies that have 2000 devs that could run with 200 (or companies that have 200 devs that could run with 20, or companies with 20 that get outcompeted by 2 people in a garage). I've seen all of them at some point in consulting.

The hardest thing, as noted by others, is managing the auxillary complexity -- which is often introduced by excess, sometimes underskilled, developers.

The 'good' (whatever that means) devs will waste more of their time hacking around the above... so more devs are added to compensate... repeat a few times: Fred's prophecy becomes manifest.

Consultancies could hire all the "rockstar" developers they want, but their culture is around generating billable hours, not building great software. A developer on the Scrum/Jira treadmill, working on one ticket at a time, will not have the leeway to step back and look at solutions holistically and come up with a better approach.
> In a sense inefficiency is a goal, because otherwise you loose redundancy. It costs a lot to hire 100 to produce the output of 10, but much lower risk.

The problem is the velocity hit you take by doing this is its own risk that's not tracked in the same way predictability and bus factor are. I'll bet one of the core reasons OpenAI was able to release a ChatGPT style product so much faster than Google, despite Google coming up with the fundamental Transformer breakthroughs, is this difference in velocity. And when a startup begins to erode a calcified, highly redundant larger company, then the larger company has the risk of becoming irrelevant along with all of its internal redundancy.

> The problem is the velocity hit you take by doing this is its own risk that's not tracked in the same way predictability and bus factor are.

I think there's a better way to think about risk here.

There's lower risk with the predictable team. Those are so common, especially in established business, that we can even treat this as the default state.

If you so wish, you can take on more risk and seriously slim down and get work done faster. And it will almost certainly be faster on a large enough time scale, but because it's less predictable, you're now playing schedule chicken.

The kind of risk that you bring up, risk of being less risky and going slower . . . is really just opportunity cost. And it's ok to take that on as a tradeoff for something else, too, if you do it with eyes wide open.

Risk is not a thing to be avoided. It is a thing to harness to gain an edge on competition. After all, without risk there is no profit.

> The problem is the velocity hit you take by doing this is its own risk that's not tracked in the same way predictability and bus factor are.

Yep, this is known as McNamara Fallacy - https://en.m.wikipedia.org/wiki/McNamara_fallacy

I think this is more specific than just the McNamara Fallacy (thanks for the link, I knew of the fallacy but didn't know it's name.) Big tech businesses usually optimize for risk reduction in the core business. The specific untracked metric here is that of competition. Big tech seems to go around it by trying to acquire promising competitors, but with a higher anti-trust appetite in the current administration, that's becoming less effective. And even with huge acquisition offers, it just takes one breakthrough competitor to bring a calcified risk-obsessed big tech company to its knees.
>b) 100+ developers in a big company with a much much larger budget in 2 years.

Mythical man month in play. In my experience, teams working on a single project peak at around 3-4 people, depending on how well you can silo the responsibilities. You can have 200 developers on a massive project, but the planners need to be able to silo the pieces off properly and define interfaces very well early on, which requires a massive planning phase. That usually doesn't happen the way people want it to either.

https://en.wikipedia.org/wiki/The_Mythical_Man-Month

Currently on my team, we have one guy responsible for the schema, back end webapis and automation. Another guy does exclusively UI, those are the two main people. We have another guy responsible for auth and misc stuff and the third guy is a full stack that came in after major development was complete who can add features pretty quickly. We have a completely separate team that handles billing operations/applications of 2 people. Our team members communicate directly with business for requirements and understanding their needs, so nothing gets convoluted passing information down through middle channels.

It's not the only way to do it, but it works pretty well for us. We write all the programming required for operations of a pretty complex medical company. This was a complete Greenfield project and we have about 10 major and minor applications so far. We also have to adapt to incoming partner companies who have their own special needs and changing regulations, so the system and team is very flexible. We're about 4 years in and we had a working system up and running from "File -> New" after about 6 months. All this during COVID.

Another problem with big companies that I've seen is that everything is done by committee and about 10 people need to sign off on any little thing. It turns into an administrative nightmare.

> In my career I have seen almost identical systems being built by a) 6 developers in a startup in 1 year b) 100+ developers in a big company with a much much larger budget in 2 years.

The Microsoft Band golfing on device UI was built by 1 developer in 2 or 3 months.

The entire notification experience was 2 or 3 developers on and off again for the product's lifecycle.

The onscreen keyboard was a couple ML engineers and a software engineer for a few months.

The runtime it ran on was ~8 engineers, including all drivers, board bring ups, custom file system, everything.

Small teams can do amazing things, but they rely on good leadership and on every member on the team being able to pull their own weight. We had 1 person design+code the entire file system, and as you mention, that put the bus factor at 1.

Me too. I've seen teams of 2 or 3 up to 10 do things in half the time of a team of 100. It's the real power of life startups. If you get the right people with the right experience in the same room and align their motivations you get amazing things like the Apple II. If you put hundreds of not the right people, but close, in the same room you get a job factory.
Perhaps some day someone will invent a way to get 20 to produce the output of 10 + redundancy...

One theory is: If you have just a little too many developers (redundancy), they become bored and find ways to introduce auxiliary complexities to keep things interesting, thus things explode to 100 developers being needed...

Nothing more dangerous than a bored committer.
Have 2 teams of 10 develop the same thing and pick the best one?
The result would still not be guaranteed and one of the teams would have terrible morale at the end. (The other one too probably since there's a 50 percent change they are working for nothing)
teams of 2 or 1, self selecting. sometimes double up and compete on the same project with multiple implementations.
Or this isn't about "rockstars" at all but a straightforward application of the "too many cooks" principle (and its refinements via The Mythical Man Month et alia).

That is, the first project wasn't 15x as productive so much because the developers were so (intrinsically) -- or even when they were objectively all above average. But because beyond a certain optimal team size, per-developer productivity drops substantially -- even plummets precipitously (due to the factors articulated in TMM: communication, politics, etc).

Plus there's a huge survivorship / selective bias example involved here (we're not look at pairings of other projects where the smaller team failed, even with better developers, because it was just too small, etc). I also suspect that if one were on the "inside" of both projects (which of course no one was) one would see a host of other factors involved (from knowledge of the requirements to market conditions, etc) not visible to an outsider.

We can definitely see how anecdotes like these help promulgate the 10x myth at least. People hear about the fates of the respective teams and think "Of course, it's because those developers were individually that much more productive. I better start making my interview process 10x more difficult now ..."

(BTW, no need to drill down on what I just said about the "10x myth", please. It's not that awesome developers don't exist or aren't important. It's just that for a whole lot of reasons, it is both incredibly overhyped, and objectively wrong in its fundamentals -- especially when we look at the original studies whence it supposedly derived).

What happens though that the team of 100 still has the bus factor of 10: those ten people who are doing disproportional amount of work.
> So, spend 10-50x less and get higher quality?

This is why I say "rockstar" is a synonym for mug. Why won't they pay those 6 developer 10-50x more?

I've seen it many times. Young developers working their bottoms off, creating a product that makes millions only to earn average developer salary and then being laid off when company gets new investment round.

At the same time, through progressive taxation, taxman takes (depending on the country) majority of earnings, so you won't be able to amass capital to start your own business.

This is the way how the rich captured the means of production (developers) in wage slavery.

You won't make it, unless gatekeepers let you.

You will make it. Screw the gate keepers and build something for you and your own people. Sounds hard because it is, but that’s life, either way it’s challenging, so keep your head up and move forward.
It's not even a matter of competency: the consultancies are there to oversell - you could have 100 great SWEs on the bank project but it's doomed all the same if the internal only SPA blog has its own nest of microservices.
As I’ve moved into bigger companies over my career, I’ve become more held back by the processes in place and I am certainly way less effective than I could be. Code reviews take longer, there are political games to play and far too many meetings, managers want you writing lots of excess documentation for documentations sake instead of coding, spending lots of time on peer review discussions of those useless documents where the reviewers nitpick just to leave comments for their performance reviews, needing to jump through multiple layers of sign-offs from stakeholders for simple changes, etc. I mean, yes, small teams without that cruft will be more effective for the most part. I will probably move back to working for smaller companies soon and it will be a relief.
This sounds like Parkinson's Law applied to software engineering organizations. I also wonder if the larger organizations actual goals have anything at all to do with efficiency in software engineering / practices. I've been inside of some very large teams (400+) and the stated goals are never the real goals, they just happen to be aligned to some degree and so it sort of works.
Are you measuring only functional requirements? Plenty of people can code it up, but who can maintain it afterwards?
Actually for both systems I was among the core maintainers for 3 years after the initial build. System a) was more maintainable.
> In my career I have seen almost identical systems being built by a) 6 developers in a startup in 1 year b) 100+ developers in a big company with a much much larger budget in 2 years.

I spent a decade in the public sector of Denmark and I've since got into helping non-SWE startups transition into enterprise organisations as far as digitalisation goes. So I've seen quite a lot of this. I've also had the pleasure to be on basically every sides of the table, from developer, architect, manager to buyer and consultant. I think it's always down to the business processes and the management.

Sure "rockstars" are a thing in SWE, I'm frankly one of them. However I don't think the difference between a 10x and a 1x/rockstar/whatever buzzword developer is necessarily too much about our technical abilities or talent. In my opinion it's often mainly defined by your organisational prowess. If you're the type of developer who can get things done, make an impact and create business value, you're going to be given a lot of freedom and you're eventually going to settle into "rockstar" roles. This is soooo much easier in smaller organisations where the restrictions you face on how you can work are often small-non-existant. Maybe you're even going to build some of the restrictions yourself, by defining how your organisations wants to lint, which techs you want to use and so on.

As things grow, more and more people are going to enter the work processes. Some of them are going to be hired to work on the work processes themselves, and eventually you're going to end up with this quagmire of bullshit red-tape. It's there with good intentions, of course it is, nobody goes to work meaning to make the world a worse place, but all the control and the business intelligence is usually an illusion of sorts. At least in my experience. Now, if you have good managers they'll build teams and manage the processes in a way that doesn't get too much in the way, but over the years, you're going to have a lot of bad managers involved in the processes. You're likely also going to work for an organisation where upper management doesn't care about digitalisation, at least not really, despite the fact that 90% of their work force is on a computer 8 hours a day. So eventually you're going to end up with an environment where it's hard to get things done.

What is worse, often the best developers. The people who are able to deliver a lot of visible business value, are going to be plucked by management in attempts to try and use them to make other developers produce more value. Meaning that many organisations tie their best development resources up in advisory roles and waste them away in endless meetings.

So it's not that those 6 developers are necessarily better than the 100. It's that sometimes, a team of 6 developers get to do more actual work than 100 developers combined do in a year.

Obviously that's only part of it. There is a whole range of other things that impact why big organisations suck. Because the quality of the 6 man team isn't necessarily on par with the 100+ developer team if you look at the application at scale over a decade. At least not in my experience. This might not matter when you're small, but it will matter when you're IBM because a few bad years will wreck your reputation for decades.

> So, spend 10-50x less and get higher quality?

You're never going to convince businesses that it's less risky to buy from a small company. It's not like CEOs are stupid. They might not care about IT too much, and they certainly hate it when IBM fails to deliver on time and that it'll cost extra to get the thing to actually work. But they do know that it will eventually work when they go to the 100+ developer company. They don't necessarily know this when they go to the 6 man team.

In fact, one of the primary reasons you hear so much more about the 100+ developer teams is because often the small startup will simply go bankrupt when the contract fails. I'm currently working on fixing one such thing, I can't tell you much more than that, but lets just say, that the 100+ developer company would've been the wiser option.

Now, sometimes you do get the better quality, the faster deliverance and the better product form the 6 developer startup, so it's not like you're wrong either. It's just that most decision makers hates risk.

ps. Sorry IBM.

Let me guess... The 100+ team used Kubernetes, right? Because Kubernetes is by far the biggest productivity killer ever.