542 comments

[ 7.0 ms ] story [ 346 ms ] thread
"A truly great engineering organization is one where perfectly normal, workaday software engineers, with decent skills and an ordinary amount of expertise, can consistently move fast, ship code, respond to users, understand the systems they’ve built, and move the business forward a little bit more, day by day, week by week."

plus plus plus plus plus to this.

(comment deleted)
This is the key message in my opinion. I've worked with wonderful software developers who can accomplish far more than others (as well as a few who are a net drain on the team.) The key is to craft an organization that allows anyone with a minimum skillset to be successful. At least on the team that I'm currently in, this means a well-defined organization with clearly defined limits of what they should and should not do. This is with respect to customers and also internally.
And to achieve this the organization only requires exceptional leaders...
I want to believe, but has anymore ever worked at such great organization?
I have twice, but it's always huge companies ($billions and 100k employees) who has an established business, and some kind of monopoly which could not threaten the survival of the company.
And who leads and sets the vision. A committee of “average” engineers?
If this were true then software engineering jobs would have all already been offshored.

Software is much closer to a competitive race where small improvements in ability give completely outsized returns.

You're both right, but in different contexts.
Most 10x engineers I've met are usually very creative and care deeply about the user experience and keeping code maintainable over time.

Most 1x developers just care about getting the job done regardless of care or code quality, which in my experience has led to conflict.

I like 5x developers that get the job done and don’t spend the additional 5x over engineering the work — causing the 1x engineers to disengage.

Some engineers have an obsessive, sometimes compulsive, nature which is actually at odds with the business. These types usually spent a large amount of time in institutionalized learning settings and will be far more opinionated about how their labor is allocated.

Agreed. I prefer collaboration between engineers, regardless of Nx they are.
I believe, you have got the multipliers switched.

Most 1x engineers/developers care deeply about users and the end product, and also likes to keep the code well maintained and performant, so they can do their peaceful work and go home, while not making the life of the user any more miserable.

Most 10x engineers are too brilliant and remain busy rocking the boat and doing so many mind blowing things at any given time that the destruction trail is only materialising slowly once their presence has faded for a while and the remnants are being pieced together.

I think, we equate the frenzy with 10x(productivity & excellence) while the less creative and cautious ones tend to be the most valuable over long term with most boring stuff.

Of course to each their own, but the too many destructions of the 10x stars had made me very weary these days.

Are there any open source repositories where this is an example? I keep hearing the 10x people ruin everything but I wouldn’t call that person 10x. I don’t understand how it’s objectionable that some people are more productive than others.
The question is in how they're productive. If they're productive because they're effectively cutting corners and leaving a wake of tech debt others have to clean up then they are productive while slowing down their team (or worse, the company) as a whole.
Anyone that has been doing this job knows that the majority of average developers in any workplace will also cut corners every once in a while and leave a lot of tech debt to others, with very few exceptions.

This myth that more productive developers are somehow worse and will ruin projects is just rationalization without any ground in reality.

Except it’s not a myth. Many of us have encountered the perceived more productive developers that ship barely passable garbage.
The myth I’m criticizing is that sloppiness has a stronger correlation with being productive. It doesn’t. Plenty of slow developers who suck.

This is just rationalization.

I have a buddy that helped me out with some DIY/construction projects. He thinks he is a 10x as well since he gets so much done so quickly. He will finish up and sit down saying its done. I go look and every tool is literally everywhere, garbage and debris thrown about, and half the stuff is incorrectly installed as he didn't think he needed to read the instructions and missed key details.
That's someone who thinks they are 10x not someone who is.
I think that would apply to many of those 10x'ers were talking about here tho.
But they aren't 10x'ers. You could say they are wannabe 10x'ers or 10x mess makers, or "10x'ers".

But can we stop saying people who are good at there job are actually bad at their job and being mediocre actually means you are great?

Like I know I'm being pedantic but this kind of culture is toxic to everyone.

Edit: sorry for ranting under your comment. I'm sure you are a normal person just trying to get through your day. I just had to scream somewhere

You're fine no worries. I think you are making my point.

People who claim they are 10x'ers are often not. They are mess makers or wannabes. They appear 10x to those who do not take messes or tech debt into account.

You screaming (to use your lingo) that my buddy above is not a 10x is what the rest of us have been screaming about our co-workers!

I'm not claiming people can't be 10x'ers. Nor am I saying being good is actually bad.

Katt from trpc, mantine lead developer, Tanner from tanstack, Anders from typescript, Jose from elixir, antires from redis. There plenty of 10x dev examples.

In any creative industry Price's is well known phenomen. 50% of work is done by square root of people. But in reality there large number of problems that cannot be solved by average developer.

That why people that build tooling, compilers, important libraries and frameworks make often 100 times more impact. They increase productivity of everyone

Hard disagree. If they don't consistently write maintainable and reliable code, they are not 10x engineer no matter how smart they are.

e.g. Linus is a classic 10x or 100x engineer and his code(Linux, Git etc) has been maintained by a completely uncoordinated team for decades.

Wait... "Most" 1x engineers? "Most" in any profession will be average. Which is completely normal and fine.

This kind of reply is just flipping the stereotype and going in another insane extreme without any evidence at all, just conflating productivity with recklessness...

Their very next line also used "Most 10x engineers". Neither of those are talking about "most" in the profession, it's "most" in the subgroup. Average in the profession will be somewhere in between.
Are you really sure?

If 1x is the absolute rock-bottom lowest possible productivity, are them really the precious angels who care deeply about the user while making amazing code?

This is even more absurd.

> If 1x is the absolute rock-bottom lowest possible productivity

You understand the original meaning of the term. This is not how most people use it nowadays.

No, I don’t. You’re reading too much into my post. I haven’t made any judgement of whether 1x means average or rock bottom, because it doesn’t matter.

The assertion made by GP is absurd regardless of the definition, period.

Most "1x" engineers are a drag on the business. Complacent. Don't care about business goals.

And the 10x you mentioned are not 10x. They are 1x with frenzy.

If one is not multiplying the team output, they are simply 1x or lower (maybe a few exceptions)

Someone imagining they are brilliant doesn’t make them brilliant.

More so if in the light of day their work sucks.

Discussions about 10x engineers are not about “wannabe 10x engineers”.

I have yet to come across an intellectual area where there isn’t a long tail of higher talent.

As the “x” goes up they just get more rare in reality, and even rarer to see. Because they are not always being optimally challenged. Most problems are mundane. And optimally challenging workers isn’t really a business plan for anything.

I think there is such thing as a 10x problem, which you have to find before your 10x engineer really shines. Identifying hard but exceptionally valuable problems to solve takes 10x vision. And time and luck.

You really can over-hire and I've seen it happen in many shops

If a "10x engineer" is not given 10x problems, they will.. create some.

No, they'll leave. You're talking about the wannabes.
There’s easily 10x as many 10x wannabes though
Yes but it will never reach production.

A 10x engineer that pushes a problem to prod is not a 10x. You get to 10x by not making mistakes, any issue you create sets you back ten squares.

(comment deleted)
If by “create some” you mean “Identify a major new revenue stream” or “Investigate something everyone else considers great, improve it 10x and save hundreds of millions of dollars”, then yeah, that’s what I do.
I've seen more of what someone called "wannabe 10x" making a career of turning non-10x problems into a series of 2 year Greenfield project pitches and failures to launch across multiple firms. You can actually see people pull this off for 6-10 years before they need to do something more productive.
Oh for sure. I’ve seen people get promoted based off the possibility of the bullshit idea they’ve come up with, and then move on before reality kicks in.
I've rarely seen those 10x engineers to bring massive long term added value. Most are/were well aware of their skills and detested working on anything but newest and shiniest, desperately trying to make work a fun park for them regardless whether its actually a good idea for the company giving them paychecks.

Which works for some time, or when extensively coached, but eventually they move since their time is oh so precious and now you have the rest of the team to work with their work. Not that great.

Then people wonder or complain when business doesn't appreciate devs. How would you look at folks who are critical to your success yet often don't have your company's best interest at the center of their efforts.

To use your terms, those 1x devs always end up maintaining and evolving that code of 10x guys. Their velocity with changes is massively lower and error rate is significantly higher compared to code created by 1x devs. This is what business sees and there is not much love for that.

> I've rarely seen those 10x engineers to bring massive long term added value.

I've seen it first-hand. We ended up building a support team around the 10x:er to keep things working, but it was easily worth it. It worked very well for the life span of the product - about a decade.

Many eventually graduated to pretty fancy places. They learned a lot. This particular 10x:er loved sharing knowledge via pair-programming.

Well, he was always in command of the keyboard (typing insanely fast), but you'd sit next to him and he'd delight in explaining. Eventually you would challenge him on something and then the collaboration/adventure began.

I have had the most intellectually exhilarating times of my life working with this guy.

So yeah, 10x:ers can bring massive value if they are wired to be really nice.

I'm a bit jealous. I currently work with an exceptional engineer but he is very condescending and acts somewhat pissed off by "simple" questions or people asking for help. The product is fantastic thanks to his work and I am learning, I think, what it really means to attempt to write excellent code - he really nit picks the hell out of my PRs - but to be honest I wish I didn't have to work with him. He has really demotivated me.
Well that sucks.

I've met that an instance of that kind of 10x:er (well, 5x:er, in this case). He defaulted to dismissing everyone until they had proven themselves.

I don't think there is much you can do to "improve him".

>Then people wonder or complain when business doesn't appreciate devs. How would you look at folks who are critical to your success yet often don't have your company's best interest at the center of their efforts.

Does the company have my best interests at the center of their efforts or I can be shown the door at any given moment to please shareholders? No hard feeling pls, it's just business and I have only one life to enjoy.

Yeah, after joining management I'm 100% behind this thinking.

Anyone wanting to improve their resume or have fun from 9 to 5 is in the right here. Life is short.

However it is my responsibility as a manager to ensure the team is working towards its goals and nobody is making anyone's life difficult.

I think multiple 10x engineers will fight amongst themselves, and that is good.

You don't have a 10x without there being a 0.1x engineer. And we can't all be right.

And lets not talk about the 0.1x developers who are probably also a thing. If you get enough of those together, team productivity completely collapses. I've seen that happen.

1x is normal. Some people are less, some people are more. Normal is good and predictable. There's nothing wrong with normal. Normal people that put in a decent effort will produce results. That's a good thing. For a lot of long lived software, normal is what you want. You can't reasonably ask normal people to be more than normal. That would be abnormal. Putting in 120% of your best is not a thing. It doesn't work that way. You are doing pretty OK if you are getting 70-80% of your theoretical best. That's what normal is.

There are of course people who are a bit more capable than their average peers. This is often confused with working long hours. The ability to work longer is mostly something young, relatively healthy people are good at. But there's a difference between working longer and working smarter. You can't work 10x more than a normal person. There's only 24 hours in a day. The only logical way to get 10x more done is to work smarter. There is no other way. And some people really just are that good that they get more work done in the same amount of time. Part of that is experience, brains, and just being really efficient with their time.

An exhausted 10x developer is not a 10x developer. Because they'll be perpetually too tired to work smart. So they might be producing a lot of code but it will be the type of code that will need a lot of maintenance. A true 10x developer consistently writes less code with high impact without wearing themselves out too much. Doing that requires skill and experience. The best code is code you don't have to write. Use the right libraries, avoid reinventing wheels, make your code testable (so you don't get bogged down debugging it), don't repeat yourself, etc. If you find yourself doing the same thing over and over again, automate it. That's your job. Don't keep on doing the same thing. That would be stupid and somebody else will do something smarter eventually.

> And lets not talk about the 0.1x developers who are probably also a thing. If you get enough of those together, team productivity completely collapses. I've seen that happen.

> 1x is normal.

IIRC the post that came up with the 10x and 1x terminology used 1x as the worst performer. Normal/average was somewhere in between 10x and 1x.

The change to 1x being average in the common understanding seems to have happened because even the people criticizing it have an intuitive understanding that it's correct, they just want the boundaries somewhere else.

I like this article particularly because I think the trope that there's something unique and different about software engineering is pretty toxic, both to we people in the field and people looking to employ people in the field.

These days it feels a bit like another well known toxic field, finance, in that people conflate an outsized leverage for personal valor.

It's laudable to do your work well and go home to the rest of your life, and working "extreme" hours is both a bad policy and a bad sign that the system you're operating in is brittle. Nothing that we do is so unique that another competent engineer shouldn't be able to fill in for you when you are having an off day.

The effect of consistent, careful, workmanlike effort over time trumps any number of crunch weeks and burnout episodes, to an almost absurd degree.

Couldn't agree more. I read a book (okay, I half read a book...I couldn't finish it, it was so bad) where the author (a marketer!) argued that software engineers are the most skeptical audience, and I was like, "Um, have you ever met an investigative journalist? Or people in the many many other professions that require skepticism and analytical thinking?"

The sooner the software engineering field can be rid of its beliefs about the inherent brilliance of programmers, the better for everyone involved. Inlcuding software engineers!

> Couldn't agree more. I read a book (okay, I half read a book...I couldn't finish it, it was so bad) where the author (a marketer!) argued that software engineers are the most skeptical audience, and I was like, "Um, have you ever met an investigative journalist? Or people in the many many other professions that require skepticism and analytical thinking?"

From my life experience, the claimed statement actually does have some truth in it: software engineers experience a lot more bullshit marketing than other professions that require skepticism and analytical thinking, thus they, in my experience, have indeed become more immune to exaggerated marketing claims.

Also it fits my experience that software engineers are much more vocal about calling out bullshit (just consider the "bullshit bingo" game) than other professions that require skepticism and analytical thinking, thus based on the audience reactions alone, any salesman would likely indeed come to the conclusion that software engineers are the most skeptical audience.

>These days it feels a bit like another well known toxic field, finance, in that people conflate an outsized leverage for personal valor.

Didn't we pass the rubicon on that in the early 2010s? I personally don't feel that its "like" finance but that its the exact same behaviors from the exact same set of people.

Once tech stopped being a bunch of nerds in a basement and started being a source of wealth and power, it attracted a whole slew of intelligent and wealth seeking individuals who would have gone to wall street previously. Its not like the math skills don't have a heavy overlap already.

And well, now that they're here, we see all the same power games being played with the same results

I don't think it "attracted" a certain kind of people, I think the people who were already in tech just became more wealthy and powerful, and that, predictably, brought out the worst in some. The worst qualities of "tech" people can be conflated but I think have a different flavor than the worst qualities of "finance" people. It's really just the same obnoxious behavior you can spot in young tech people. Some people grow out of it, and some people earn a ton of money and so have no reason to grow out of anything (not that you can't make money AND grow out of it, but there's less outside pressure to do so).
It absolutely attracted different people. The inflows are much larger and not the same.

For example EE used to be prestige and CS was the backup. And that would never compare to finance or law.

Yes but imo this change happened no later than late 90s. I distinctly remember how suddenly it became cool to be a programmer and the 'new type' was already making changes by early '00s. And yes, the $s attracted smart people who did not embody the old hacker ethos.

These are the new bloods that gifted us with surveillance tech, btw.

“Call 1-800 beageek”. Remember that commercial? That was around the time software dev went mainstream, late 90s iirc.
Mainstream is different than upper middle class and ambitious.
Back in the 90s, they were the “suits”.

Andreessen, Scott McNealy, & Ellison were, to me, the ones that left a particularly bad taste.

It's a "yes and" situation. You're completely correct that people who were already in tech just became more wealthy, but there's no question that in the mid to late teens (in particular), tech fundamentally became, for many, about $$$. There was a huge migration of people who couldn't write code from NY to SF in a "there's gold in them thar hills" kind of way.

Now the people entering the industry by and large see it as a game of wealth acquisition similar to finance or big law, and big tech is adapting in a similar way -- high salaries, insanely bad wlb, politics far exceeding any other skill as a determiner of career progression.

Same kind of thing happened in the early 2000's, when the Web suddenly took off.

For a while, if you knew how to type into a text editor, you were hired as a "webmaster." Lots of people made a lot of money, writing awful stuff.

If there's money to be made, people will pour in. They aren't necessarily bad folks, and many of them are skilled, and willing to work hard, so the trope of "thousands of terrible engineers" is maybe not that accurate.

However, I kind of despair at the management skills of the folks that run the teams, and the decision-makers that set the bar.

But the story is correct. Teams need cohesion, a lot more than rockstars. We can do together, what I can't do alone.

The behavior you're describing definitely happened but what I'm describing did as well.

At some point the wheeling and dealing, snake oil, corporate backstabby like people that many associate with finance were actually high schoolers at some point who had to pick where they went in life. The ones who only care about wealth and power, only care about wealth and power, so if software was a good route to that theyll put on their software face and do that job. Before software made a lot of money for people, finance was the default

Yeah - this is a bit like "competition brings out the best in people" when the reality is that it also brings out the worst in people
No, the field grew tremendously and you can see a clear generational bias -- by years of experience, not age -- where the cohort from the last 10-15 years has a completely different understanding of what the craft is [software engineering vs business development] and how to approach it [optimal solution vs soonest deliverable].

You can also trace personal backgrounds and you'll see a much higher representation in the newer cohort coming from upper middle class backgrounds with families in careers like finance, consulting, medicine/dentistry whereas more in the older cohort came from more modest middle class backgrounds in engineering, academia, or even working class trades.

Of course, there were always some of all of these people in the industry, but the balance shifted dramatically during the last couple booms, tracking the atypically high compensation standards set by FAANG's since 2010 or so.

Speaking as an old school basement nerd (coding since middle school, 90’s): If I can do cool things with code _and_ get paid, I’m gonna go do that. Business constraints make it feel much more interesting than writing code in a vacuum.

Also money is nice.

> Business constraints make it feel much more interesting than writing code in a vacuum.

You never write code in a vacuum do you? You always have some kind of goal.

I should hope not. Even if your body could withstand the low pressure, you'd suffocate very quickly.
I don’t know dude, this one time I wrote a LOLCODE compiler into a Babel macro.

https://swizec.com/blog/lolcodetojavascript-compiler-babel-m...

It was pretty fun.

Also this other time I wrote a nodejs script to keep my computer at a specific temperature because our office fridge kept freezing my carrots.

https://swizec.com/blog/i-built-a-node-app-to-thaw-my-favori...

  > because our office fridge kept freezing my carrots.
That sounds like a goal to me
That's quite nice! You may wish to look into implementing a PID controller, so as to avoid overshoot (your carrots become too thawed initially) and unnecessary oscillation about the setpoint (meaning you are wasting energy on cooling and heating cycles that in the end cancel each other out, where you could have kept the temperature nearly constant during that time). I loved juicing carrots so much my face turned orange from the beta-carotene.
This post is so weird on so many levels. I'll focus on this part:

    > You can also trace personal backgrounds and you'll see a much higher representation in the newer cohort coming from upper middle class backgrounds with families in careers like finance, consulting, medicine/dentistry whereas more in the older cohort came from more modest middle class backgrounds in engineering, academia, or even working class trades.
So, you reach for class warfare? Sheesh. It is anyone's fault that they are born into an upper middle class family? Are people from lower economic circumstances somehow superior, as you imply? This is just bizarre.

As a reminder: Bill Gates, who is certainly old school tech, was born and raised in an objectively wealthy, well-connected family, then went to Harvard. This is nearly made-for-TV silver spoon stuff.

It is telling that you considered their post to be about class warfare rather than different values.

The original focus of this thread was on technical precision vs. market efficiency, and how quality was sacrificed for faster conversion to sales.

That shift compromises products for everyone by creating a race to the bottom toward the minimum viable product and safety standards. When the consequences eventually hit, the aggregate responsibility and emergent effects lose direct attribution...but they exist all the same.

As the sibling comment noted, I think you might be projecting value judgment onto value distinction.

The most salient values of the later cohort are different than those in the prior ones, and those values do track with the values we associate with those different class backgrounds.

But there's no ranking being made there. They're just different values.

The values of the new cohort have earned the industry a great deal of political, economic, and cultural influence on an international level.

The values of the old cohort didn't do that, except insofar as they built a stage for the new one. They made software differently. They designed products differently. They operated businesses on different scales. They hired differently.

Indeed some of us from the old cohort don't personally savor all the spotlight and influence and cultural drama that Silicon Valley collectively bears now, and miss the way thing were. And others love it. But that's just personal preference, not class warfare.

> So, you reach for class warfare? Sheesh. It is anyone's fault that they are born into an upper middle class family? Are people from lower economic circumstances somehow superior, as you imply?

To be fair, I don't see any value judgements in the post you're replying to. He doesn't say if it's a good or bad thing, it's just a thing. But what I think this means is that field became more popular, entry filters became more competitive, and families with less resources to invest in their offspring became filtered out.

There's nothing good or bad about it.

That’s why the bill gates story got so much public attention. It’s surprising. Their Harvard kid is doing what?
I suppose it may have been surprising to anyone completely out of touch with what was happening at the time.

I'm only a little younger than Gates, and it seemed like, what else would you do? PCs were revolutionizing the world.

A slight addition to this topic. A lot of jobs also became software, even if your intention in signing up for the jobs was different to begin with. PCs were revolutionizing the world.

For about a decade I worked as an engineer in a field where the expectation (at least starting) was that metal gets cut, stuff gets built, and there's physical hardware.

Those existed. May have actually had more hardware interaction than many in engineering. Yet much of the day to day rapidly became computer simulations of the metal that might get cut someday.

In many fields, the organizational choice decrement on anything involving capital expenditure or purchase was so severe that usually the obvious choice was to run a computer model, and simulate what might occur. What else would you do?

> decrement on anything involving capital expenditure

Boy is this true. I don’t think we ever recovered. Imagine trying to start a capital intensive business like mining in 2025.

Frankly a shame. Since there's a been a lot of development in mining technologies over the years.

Even for the folks that have an ecological focus, there's quite a few methods developed with limited degradation of the landscape, and reclamation of the mining sites into alternative uses (park, forestry, entertainment, tourism). The Wieliczka saltmine in Poland's an especially impressive example [1]

[1] https://www.wieliczka-saltmine.com/individual-tourist/touris...

And these days, there's also a huge number of resources in terms of mineral identification and site mapping. The EMIT Imaging Spectrometer from NASA's a cool example that does remote satelite mineral identification from orbit. [2]

[2] https://earth.jpl.nasa.gov/emit/instrument/overview/

> No, the field grew tremendously and you can see a clear generational bias -- by years of experience, not age -- where the cohort from the last 10-15 years has a completely different understanding of what the craft is

I bet a lot of people 10-15 years older than you would say the same thing - except they'd say it about you and your generation.

I'm not that old, but I've been around long enough to hear people of every age over about 30 claim that everything was better back in their day until the new generation came along and ruined it.

> I bet a lot of people 10-15 years older than you would say the same thing - except they'd say it about you and your generation.

And they’d probably be right!

I remember the grognards giving me shit about memory management and me giving it right back by explaining that what they considered a large chunk of memory would be worth pennys next year because of Moore’s law and I wasn’t going to waste time considering something that I literally couldn’t learn faster than it became obsolete knowledge.

Quantitative differences can create qualitative differences and I don’t think it’s surprising that we’re in a different age of software engineering than we were 10-15 years ago for any given X year

As a fun anecdote I think this same rationale - ”next years hardware is so much better” - is why so many desktop softwares 90’s->00’s became slow - ”meh you don’t have to care about performance, next year’s cpu is going to be so much faster anyway”.

Then suddenly single threaded speedups didn’t happen anymore (and people realized even though cpu speeds had grown, it was not directly related to Moore’s law).

Ofc your rationale used Moore’s law correctly while the ”cpu infinite speed growth rah rah rah” peoples didn’t.

Seeing this multiple times in a day for multiple, articulable reasons in the mid 2010s if my memory doesnt fail me

>FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory > 1: node::Abort() [/usr/bin/node]

Is what made me decide it might finally be worth the time to actually learn how memory worked

>I remember the grognards giving me shit about memory management and me giving it right back by explaining that what they considered a large chunk of memory would be worth pennys next year because of Moore’s law and I wasn’t going to waste time considering something that I literally couldn’t learn faster than it became obsolete knowledge.

And that's why all applications are laggy as shit these days.

You both are right.

But ignore memory at your peril. I have one proj that has a 256GB instance. For a fairly boring CRUD app. I am asking a lot of questions as apparently we are having the yearly 'we need more memory' questions. Things that are leading to speedups. Just by using less memory. At the bottom of that stack is a L1 cache with less than a hundred KB. It doesnt matter right up until it does. I have seen huge 300+ item string classes that needed maybe 10 of the fields. They threw it in 'just because there is enough'. Yet something has to fill in those fields. Something has to generate all the code for those fields. The memory mangers have to keep track of all of that junk. Oh and all of that is in a pipeline of a cascade of applications so that 300+ class is copied 10 times. Plus the cost to keep it on disk and shove it thru the network.

On the other hand, I've seen developers who don't know about things like that start up a project on a small instance and wonder why everything is running at turtle speed.

People that stopped running tests because they were configured to make 10,000 API calls in one minutes and it crippled the app until everything was restarted.

"Add some more memory to your database instance....poof"

I definitely agree with the greybeards and I think we see the results of not listening to them. We have these processors, buses, networks, and all sorts that are magnitudes faster and more powerful than what they began on but many things are quite slow today. Worse, it seems to but getting slower. There is a lot of value in learning about things like caching and memory management. A lot of monetary value. It's amazing to me that these days your average undergraduate isn't coming out of a computer science degree being well versed and comfortable writing parallelized code, given that is how the hardware has moved. It is amazing to me we don't normalize caching considering a big change that was driven from the mobile computing side and adopted into our desktop and laptop environments is to fill ram because you might as well. It is crazy to me that we have these games that cost hundreds of millions of dollars to develop that are buggy as shit, hog all the resources of your machine, and can barely run at 4k60. Where you can hit a bug and go "yep, I know what's causing that memory error"

Honestly, I think so much of this comes from the belief of needing to move fast because. Because why? That would require direction. I think the money motivation is motivating speed but we've lost a lot of vision. Moving fast is great for learning but when you break things you got to clean it up. The problem is that once these tech giants formed they continued to act like a scrappy developer. To not go back and fix all the mess because we gotta go fast, we gotta go forward. But with no real vision forward. And you can't have that vision unless you understand the failures. We have so many low hanging fruits that I can't figure out why they aren't being solved. From deduplicating calendar entries, automatically turning off captioning on videos when a video has embedded captioning so you don't just overlay text on top of text, searching email, or even setting defaults to entry fields based on the browser data (e.g. if you ask for user's country, put the one the browser is telling you at the top of the fucking list!). These are all things I think you would think about if you were working in a space where you needed to consider optimization, if you were resource constrained. But we don't and so we let it slide. But the issue is a death by a thousand cuts. It isn't so bad in a few cases but these things add up. And the great irony of it all is that scale is what has made tech so powerful and wealthy in the first place. But no one stops to ask if we're also scaling up shit. If you printing gold but 1% of your gold is shit, you're still making a ton of shit. The little things matter because the little things add up. You're forced to deal with that when you think about memory management but now we just don't

As the base reality of computers and the inflated reality of software have diverged more and more, education and culture has tracked the software story and led to runaway irresponsibility. Forget not optimizing for performance; I think a lot of software today straight up fails to actually serve users some way or another. And those are paying users at that!
I agree. There are just too many obvious low hanging fruits. So I'm just trying to inspire people to take action and fix stuff. Ask not for permission, just fix it. Ask for forgiveness later.
This is what happens anytime a field gets large in terms of job applications. Replace software engineer with anything else to that measure and you see the same things with wealthy families being overrepresented in the cohort because they always have an edge in getting the best credentials due to not having to work any part time jobs and having mom and dad (or even a paid advisor) actively working on your behalf to vet potential internships or other opportunities for you. You are essentially out numbered 3:1 or even 4:1 or more, and you can't work a full 1 part anyhow due to the aforementioned other obligations life has saddled on you.
I completely agree. Software engineering is just the most recent field I can think of(unless you consider data science a distinct enough portion of software to carve off as a separate field) that has had this pattern occur.

Well that and this is a forum for a lot of tech people which means a good number of software engineers here.

I doubt that has anything to do with getting "large in terms of job applications" alone. It's a correlation, alright, because wealthy families have it easier to get high-status and high-paying jobs for their kids, and if such a field grows, wealthy people flock to it like everyone else. But I sincerely doubt you'll find the wealthy over-represented in physical labor / blue collar jobs, regardless of how the ups and downs in the labor market for those occupations.

The way I see it, it's like 'swatcoder and 'lovich said upthread: the field became a money printer, and attracted - not revealed, attracted - a different kind of people, with a different mindset. I too saw this change happening. Applicant pool size? That's a spurious correlation - it's just driven by the same factors that make software industry a money printer.

> It's a correlation, alright, because wealthy families have it easier to get high-status and high-paying jobs for their kids

You have just written down a partial solution to this dilemma: make these high-paying jobs less attractive in terms of status for these wealthy families. :-)

You're not wrong but this is overly reductive. In other words this is more of a sliding scale and not a step function centered on 10-15 years ago.

For instance I was a CS undergrad in the mid/late-90s. There was an enormous difference demographically between my incoming freshman class and the incoming freshman class by the time I graduated. And the talking points were exactly the same ones we see in this thread.

People in the trades relatively speaking in the midwest are easily far more wealthy than engineers in the bay area, and they have no such delusions of grandeur seemingly. They seem to understand that an electrician is an electrician and an engineer is fungible. That is why many of these engineers are unionized as well because they understand labor is replaceable and needs to advocate for itself. The coasts have much to learn from the corn lands it seems despite the prevailing narrative being the opposite.
1. The data absolutely does not show that midwestern tradesmen are wealthier than Bay Area engineers.

2. I agree that unions are useful, and you’re starting to see them (eg Alphabet Workers Union). There is definitely opportunity here.

3. I think your visions of non-grandeur are blinding you to the possibilities that others live life and advocate for themselves differently, without it being wrong. Sometimes change is ok and sometimes people being different from you and your beliefs is ok.

While I do think unions are important, Silicon Valley engineers are responding in-kind to their fungibility. It’s pretty common to see people jump around every few years, chasing opportunities instead of loyalty. Usually collecting a pay bump. It’s generally not looked down upon in hiring, because it’s increasingly normal, and the extra pay and corresponding savings protects against periods of unemployment. Regardless of people’s thoughts on the practice, “resume driven development” grew as a reaction to the fungibility - forcing their own self-growth upon a disloyal employer.

Big urban areas with lots of job opportunities are difference employment environments, and employee’s actions of self protection evolved differently. Is there room for learning? Always. But this entire comment seems to pass judgement upon a world that frankly doesn’t exist.

As a Bay Area resident who once lived in the Midwest, I can confidently say that people on the coast don’t have such a negative view of “corn lands” - this narrative is very much self imposed.

The data does show that if you look at what cost of living is buying you in the midwest versus the bay. New construction large homes on large lots are in reach. Multiple vehicles are in reach. Everything is in reach after that. I'm sorry but the housing stock in the bay is just poor quality for what it is. The lots are tiny barely larger than the home. The home is small. The bedrooms are small. Most you can do is tear out the old chicken wire and plaster building and build a big ugly modern glass/cement box to the edges of the property line and even then you are slumming it in terms of space to what you'd have in the midwest. You want actual property, with some setbacking from your neigbors, and still convenient to things, its just not really available even if you had the money. Like those homes on pinehill or robin road in san mateo would be the caliber i'm talking about you can buy as a tradie in the midwest, in terms of setback and square footage, even finishes too for that matter. and that land in the midwest will actually be relatively flat and probably cleared out for you vs it being a home tucked in high slope chaparral you might technically own but can't really do anything with like build outlaying buildings.

You could have an indoor pool in a detached building. You could keep horses. You could have a 6 car garage. All the upgrades from the builder too. All for a song in comparison to a home a fraction of all that in the bay. I mean just start looking on zillow between these sorts of homes in say indiana or ohio and it is absurd the difference in cost of living. How much you'd have to pay to rent a tiny old boat on lake tahoe for the day vs buying a boat outright and even paying to winterize and store it in a yacht club on a great lake. SF country club fees vs midwest, literally exclusive fuck you old money rates vs only a couple thousand initiation fee for the same sort of course conditions and probably a nicer appointed newer constructed clubhouse in the midwest. Same is true for the private schools too, the nicest ones nationally recognized in the area can only charge so much because there's just so many people with kids and wealth in the private school market so they aren't absolutely stupid like in the bay. Even the public schools go up to bat with those in some districts.

I don't think "the data" you might cite are considering all of these factors of the lived experience. Maybe one or two economic indicators but not how life actually plays out with even the half dozen or so things I've laid out above.

> The data does show that if you look at what cost of living is buying you in the midwest versus the bay

But that is blatantly not wealth? For a topic so humorously numerical, this entire comment is decided not.

> You want actual property, with some setbacking from your neigbors

First, not everyone wants these things, and even quality-of-life is not one size fits all. Second, this is also not what wealth is.

> You could have an indoor pool in a detached building. You could keep horses. You could have a 6 car garage. All the upgrades from the builder too. All for a song in comparison to a home a fraction of all that in the bay.

Uh, duh the midwest is cheaper than the most economically productive region in human history. Thanks for explaining.

As an ex-Cleveland resident who now lives in San Francisco, I can confidently say that these trappings are not available to most midwesterners nor Californians; neither tradesmen not high skill workers; and its also still not wealth, although it is certainly more closely correlated.

Anecdotally, you couldn't pay me to own a horse, nor do I even have use for my single car - owning 6 seems like a waste when on-demand self-driving vehicles will shuttle me effortlessly around San Francisco.

> I don't think "the data" you might cite are considering all of these factors of the lived experience

Because that's not what the words in this conversation mean.

> Maybe one or two economic indicators

That's what these it means. And they're not in the favor of a tradesman in the midwest.

> not how life actually plays out with even the half dozen or so things I've laid out above.

But what you laid out (quite condescendingly btw) is farcically not the meaning of wealth, and not the indicators of a good quality of life. I can name a long list of things that the midwest can't provide to the wealthy that are readily available to working class people in California (eg. an extra 100 days of sunlight a year). But I won't because it's obvious and not the definition of wealth.

>Once tech [...] started being a source of wealth and power

this happened "in the early 2010s"? I don't think so. Software engineers have no power, and in comparison to finance, quite limited wealth.

Out of 10 richest people of the world, 8 have background in software engineering. Musk, Zuck, Bezos, Ellison, Gates, Page, Brin, Ballmer. Only Buffet and Arnault are exceptions.
They are not richest people though, they are biggest public shareholders. Real wealth is always well-hidden.
The idea that these centibillionaires do not have "real wealth" is beyond absurd
Ballmer has a background in working for a software company. Did he ever actually work in software as such?
Pretty sure he was explicitly brought on by Gates and Allen because he was a non-technical MBA type, and Microsoft had grown to the point where they needed one of those.

Sort of tracks with the Welchian bullshit he seems to have supported as CEO.

Despite where they are now, the FAANG founders could sling some amount of code back in the day.

I have no doubt they would fail their current interview cycle for engineers if they tried it under a pseudonym, they were considered software engineers when they started their companies and that cohort is now in charge of a double digit percentage of the planets wealth.

If you think software engineers have no power and limited wealth compared to finance then I can only imagine you are not a software engineer are are downplaying the amount of power the class has absorbed, or we fundamentally disagree on what a software engineer is

> software engineers have no power

Like that fellow who runs a car company now

Oh stop narrating like nerds in a basement are cuddly lovable bunch.

Amount of toxic behavior in nerdy groups is just as high as finance.

Every single one just thinks how smart he is and how to one up the other.

Technical interviews were always bad even before 2010 as there was loads of gatekeeping anyway.

Yup, this idea that we're in a unique industry or that our industry is any different to any other career path is very toxic.

Accountants have the same bullshit memes we do.

Remember programming language quizzes? I kinda miss those, if you are testing for knowledge they have more value than leetcode
The story is that the reason Boeing got eaten by McDonnell Douglas is because the MD execs were meaner than the Boeing execs and they used their sharp elbows to take over a company that was objectively doing better than they were. And it started showing signs of unravelling on the first airplane they built under the new regime and has only gotten worse since.

The 787 did something Boeing vowed they would never ever do. They let Mitsubishi build the wings of the 787. They’ve never let a supplier do that. The wings are the heart of the airplane. I am completely amazed that Mitsubishi never progressed past commuter jets after that project (and I believe they shut that division down about 5-10 years ago). Just unfathomably dumb.

I don’t know what we in software need to learn from this. I don’t think being meaner makes anything better, but maybe more assertive is the answer.

I was once considered a 10X. I would work all night. Rewrite code simply because I found it objectionable - lots of things I'd never do now. Mostly after working those long hours I return after a long rest and spend most of my time fixing all the new and ridiculous problems I created while working tired. Things may have gotten done a little faster. Never once did it even matter - there was no material benefit to the company. Projects still got canceled - team deadlines still missed - products still had bugs - company focus changed blah blah blah.

Focus is a supper power. Not getting diverted with trivial shit. Don't get distracted , avoid creating more work for yourself and others. Todays me would find yesterdays me a -10X annoyance.

"Focusing is about saying no." — Steve Jobs

https://www.youtube.com/watch?v=YgL8fpya8BA

There was a great article a little while back about how “yes, but” is powerful but “no, but” is almost as powerful.

No we won’t do that, but we can do this. Or that is trickier than it sounds but we will think about it until it makes sense.

> Never once did it even matter - there was no material benefit to the company.

I think that the idea of having people (at startups) working at a frenetic pace is because

1. The VC money is running low 2. Being first to market used to be a major determining factor on whether the product would succeed or fail

My experience is that people tend to fill the time they give themselves to do things. Give yourself 12 you take 12 hours. But humans have a limit to the focused productive work they can do. Lets say it is 4 hours. So of that 12 hr - 4 was really productive and 8 not so much. When I was at my tiredest I often spent hours trying to debug issues that literally took me minutes when I was rested.

One time I worked so many hours I lost vision (temporarily) in my eye - called cotton wool spots. I was a generally healthy younger guy. Working this way has health effects. If in fact there is such a thing as 10x engineer - how long do you think you will stay 10X once your health deteriorates. Just my 2 cents.

3. There's always that one person whose only ability to contribute is to cheerlead the others... and some nerdy types take a long time to figure out you don't need to listen to them or tie your fate to them.
So you 10x'd in wrong direction. Doesn't mean something else can't 10x in the right direction.
If they 10x in the wrong direction and I 1x in the wrong direction, I am a 10x engineer.

A null engineer is an inf engineer.

To management the two directions look the same. They probably held a ceremonially ritual where they fired the person who was dragging things back 1x in the right direction.
> Focus is a super power

this is crucial. from my own productivity I know that I can function at 1X or 10X depending on my focus.

being a great engineer requires practice most of all, and the consistency of focus during that practice will impact its value.

in my experience, engineering is all about efficiency, and as i have developed over time the scope of factors i take into account when calculating the efficiency of something has increased. in the beginning i only looked at the technical details of the implementation, and then over time that expanded to considering maintainability, team co-ordination, business objectives, etc.

the potential scope here is unlimited. when you start, just making something compile takes all of your focus, but over time as programming becomes reflexive you are able to expand the factors you take into account far beyond the immediate code, and it seems trivial by comparison.

> engineering is all about efficiency

See, that’s a problem.

Engineering is all about effectiveness. Not efficiency.

Focus is great for slamming out a bunch of code that everybody else hates and has to tiptoe around you about because focus also made you so goddamned proud of your monster. Slow down and check the signposts before following your good intentions all the way to the end.

effectiveness, professionally, is creating value for your clients and employers. the ratio of value to cost is how efficient you are as an engineer. it is all efficiency.
I think you need to pay more attention to the contexts in which your coworkers and bosses use the word efficiency. You’ve got a good definition there but you’re not often in good company.
Wasting your enthusiasm was your managements fault. It’s their job to set up the tasks that will have impact.
This sounds like a management failure more than your failure. You should have had someone who would have steered you in the right direction, getting you to focus your energy on things that mattered.
I like to think of my ideal mythological 10x as someone that does less.

What would a 10x engineer do at any of these companies pushing bloat in their products? How do you keep the software clean even as it becomes successful, millions of dollars and jobs change the ethos of your organization, but you are tasked with preser ving.

A 10x engineer at msft would have avoided notepad being modified.

A 10x engineer knows how to stop the forces that be, from adding an "ai" feature, where it clearly doesn't belong.

> I would work all night.

This is not a 10X programmer. A 10X programmer delivers the same amount of functionality in 1/10 the time.

For me the first 10x programmer that comes to mind is Peter Norvig. This spell checker he wrote in a single flight remains a work of art:

https://norvig.com/spell-correct.html

Very few programmers would come up with something so concise and elegant yet powerful in such a short amount of time.

Egads, that spell checker is absolutely beautiful.

I guess it’s worth pointing out that he does support one of the arguments the article makes:

> But they didn't, and come to think of it, why should they know about something so far outisde their specialty?

So yeah, he’s implicitly saying, “I have a lot of domain knowledge here.”

But that said: wow, that code is so concise and elegant, it gives me tingles. If anyone IS a 10x engineer, it’d surely have to be Norvig.

Tbh this seems to be implementing a demo of something he had complete understanding of prior.

Yeah, he was at Google at the time (https://norvig.com/resume.html) so he was probably involved in the original development of the thing he was making a demo of.

He's definitely smarter than me with that CV but this particular project doesn't seem like some insane productivity achievement.

Yes - Dr Norvig is exactly the type of expert I would often engage to figure out difficult problems. Ask him how to configure a Nomad cluster and he would likely say "What is a Nomad cluster do?"

Writing and debugging production code is a different skill set. Finding the optimal algorithm is useful but not the same as releasing it into the wild which may require maintaining backwards compatibility, work arounds for bugs in other code or hardware bugs that can no longer be fixed at the foundry - the list goes on.

The vast majority of work programmers do 10X or otherwise is not greenfield where you get to pick the programming language you have 10K hours of experience using, the best hardware or an unlimited budget of money and time.

Now I would consider Dr Norvig a 10X educator. That program demonstrates how a decent knowledge of algorithms and math can take a relatively complex problem and make it tractable.

Just because he's brilliant at writing green field code to solve problems like this one, doesn't imply he's incapable of producing production code when required.
Never meant to imply that he could not. He is a far more accomplished programmer than myself. Simply pointing out that he is an expert and his skill set is unique and in someways quite specialized. He may be considered 10X in his domain - maybe not so much outside of it. Programmer/Software Engineer are broad terms.
I use his sudoku solver design to learn new languages and as an example of intrinsic versus accidental complexity.

Uncle Bob tried and failed to use his own strategy of many small functions to solve sudoku. There’s been a lot of Trough of Disillusionment talk about him lately. My impression of him is that he’s got the right code organization idea but for the wrong reasons, and so his ends often don’t justify his means. It’s a common pattern in software to guess the wrong reasons why something works, and then overfitting to the wrong reasons.

>I was once considered a 10X. I would work all night.

You are part of the toxic culture until you realized that was that it is overall counterproductive. Collectively we software developers are to blame and no one else.

Not just toxic, he's simply wrong. A 10X is someone who supposedly completes 10 hours' worth of work in one hour. If anything he was a -10X lol...
The thing about codependent relationships is that both parties are guilty. And this has definitely been a banger of a codependent relationship.
If you work twice as long as most, make code which is dubious/broken, take initiative out of sheer personal opinions and have to spend time the next day fixing your mess, that would be the definition of a 0.25X programmer.

It took you 4 times as long to bring value to the company, you had lot of enthusiasm but were not using it right.

Being a kX (k > 1) means that you need to work fewer hours to accomplish the same amount as an average developer. If you then got to spend more time to fix your stuff, that counts against your time budget.

10x is mostly theater. I’ve worked with 3x engineers that made everyone else better, and 3x engineers that make everyone else much worse. 4 times out of 5 a manager will point to the latter as 10x because he is getting so much more done than the people he has crippled and been loud about it the entire time. The former does well when their boss is that 1 in 5 person, but they are often fucked if the boss leaves.
I’ve had too many experiences of starting a project at noon on one day and getting fixated on finishing it and failing, then after some sleep and reflection ripped half of it out and finishing the new idea before lunch, which isn’t even my most productive time of day.

If I’d had this perspective the day before I would have been finished before 5. But I got wrapped up in thinking I was close and I should have stopped for air.

(comment deleted)
Software is different.

All other engineering disciplines are ultimately limited to building things in (at most) 3 euclidean dimensions. There is only so much junk you can hide in a finite volume of space.

Code by comparison lives in hyperbolic space [0] and you can hide _anything_ in such a space without it being obvious. This is exemplified by the unpleasant discovery all of us have had of a supposedly peripheral folder holding source code called all over the code base and the near impossibility of moving it in a location that makes sense for it without having to refactor the whole code base.

People, including myself, have a seriously bad intuition just how much volume there is in a space which grows at least exponentially.

The closest discipline to software engineering is mathematics and that has an even worse track record. There's the folklore about half of all math papers giving the wrong proof for the right conclusion. By comparison software engineering only gets catastrophic bugs less than every other time a program is run.

[0] All trees are natively embedded in some hyperbolic space of whatever curvature matches the average number of children per node, and all code can be ultimately represented as a tree.

I think maybe this misses the mark. Yes software can lead to unbounded complexity unlikely many physics based engineering disciplines.

However, at the end of the day, there is an input and output and compute and memory needed to run the thing and if we look at that we realize, we never actually left the bounded physical realm and we can still engineer software systems against real world constraints. We can judge its efficiency and breaking points.

What's very different is the cost to change the system to do something new and that's where this unbounded complexity blows up in our face.

>However, at the end of the day, there is an input and output and compute and memory needed to run the thing and if we look at that we realize, we never actually left the bounded physical realm and we can still engineer software systems against real world constraints. We can judge its efficiency and breaking points.

This is a common sense view of computation that's unfortunately wrong.

The simplest counter example is the busy beaver program: with as little as 12 states we have saturated the computational capabilities of the universe, but it looks completely safe and sane for the first few states you would be testing against.

You may call it pathological, and you'd be right, but the point is that you never know under which rug a function that takes more computation than the universe can supply is hiding.

By comparison power electronics engineers don't have to formally prove that they didn't accidentally include a nuclear power plant in their e-scooter design.

And then you quickly find out that the turing machine on your lap doesn't actually have infinite tape. Do you honestly believe that there's no other human endeavor where you can DoS yourself?

If on the other hand you're speaking of the theoretical computational needs of the program you just wrote, then your earlier dismissal of mathematics and its "even worse track record" is all the sillier.

I think you just made my point. If designing an eScooter you'd look at available power needed across the problem space. Even more so you might put in a safety features like a temperature monitor so electronic components don't fail because someone decided to go up a steep 12 mile mountain path and overheat the battery.

If I was designing a software system, I could introduce a time constraint. An imagined conversation: "How long will it take to get an answer? Between half a second and the heat death of the universe. OK. Can we just issue a timeout error after 1 second?"

This is putting controls in place so the system doesn't exceed its constraints and although hypothetical it might be able to do a job for any input, it can't because we haven't been able to find a more efficient solution for certain known and unknown scenarios.

I don't know, man. Your comment is neither here nor there.
Disagree.

What makes software unique to other engineering disciplines is that it isn't a discipline at all. What makes software so great is how quick the iteration cycles are.

Software sits at a higher abstraction level than physical hardware, so much of our time is spent throwing at the wall and seeing what sticks because that's often (although not always) the best use of time.

There is a discipline, it's just very fast-growing. Many techniques remain and become classics, it just takes awhile to realize what is fad vs classical.
Can you give some examples of things you'd consider fads versus classical in software?
TDD. Agile.
I would disagree about TDD. I am continuously surprised when I learn that yet another one of my teammates practices TDD. TL;DR: TDD is dead; long live TDD. I think that TDD will remain viable in enterprise programmer for decades, perhaps permanently, thanks to "vibe-coding", where LLMs eventually produce most code for CRUD projects (the vast majority of enterprise programming).
Just to be clear, do you mean full-dogma Rails tutorial write a bunch of trivial tests before writing code TDD?
Yes, exactly this. I never bought into TDD, but I can understand that it brings comfort for many normie enterprise CRUD developers... of which I am one myself!
I despise it because I've seen some absolutely HORRIBLE designs that excessively separate concerns (that are actually linked and shouldn't be) in the name of "testability". I would rather maintain 50 lines of clear idiomatic code than 1000 lines of TDD code salad full of 3 line functions that each take a bunch of fragile mocks.

It's also my experience that a few well written integration tests are more useful and catch more actual bugs than a million unit tests. This is especially true of web apps which are inherently highly stateful.

The most powerful design paradigm I have ever found is to spend the first, say, 10-20% of my time making a rough prototype. Not with an eye of actually using a single line of it (although it happens) but just to do the quickest and dirtiest possible exploration of what the actual problem is.

> excessively separate concerns (that are actually linked and shouldn't be)

you mean concerns that should be seperated but they did it in a wrong way?

When you say TDD do you meant test driven design or the test first design actually practice when “doing TDD”
Not very long at all ago, people waged war over dynamic vs lexical function scoping.

These days you are hard pressed to find a language that uses dynamic scoping as the default.

The needle likes to swing back and forth between dynamic be static typing but we definitely seem to be coming back to static typing again

The answers so far are pretty damn telling.
It was somewhat common in the 1970s and before for programming languages to support abbreviating variable names when you referenced them. So for example, you could say

    patients = 400
    x = pat / 2
And x would be 200. This seems like an obvious footgun today and I don't think any language designer would even consider it, but it seemed to make sense for a while.
Were they actually supporting abbreviating or just doing something like only storing the first 3 characters of the name? That feels more like something a compiler trying to fit in 8k of RAM or whatever would do.
Is there a difference between doing something and supporting something?

This joke is like a decade old at this point https://xkcd.com/1172/

Well, yes.

Namely, what does the following code do?

    patients = 400
    patents = 20
    x = patients / 10
If the compiler truncates, x will be 2 (assuming it allows variable reassignment), and you've probably introduced at least two bugs. It's doing some sort of lookup against the source, well, all bets are really off.
You have ignored my question

“Doing something” is the beginning of how to describe the actual truth of what some actions causes in relation to its affect on reality.

“Supporting something” has literally nothing to do with reality beyond what’s necessary to support a brain that can _intend_ a result or action regardless of what actually happens.

I linked the xkcd comic because the behavior described by the developer in the comic met the criteria for “doing something” but it didn’t meet the criteria for “supporting something” because the behavior of the software was not what the developer intended.

A big reason I switched into software is the fast iteration time. Designing machinery takes a very long time before one see's results. But with software, it's overnight.
(comment deleted)
RE: Quick iteration cycles - definitely agreed.

Back in my EE days in 90's, "full stack engineer" meant, for example, being able to build a physical calculator by connecting a numerical keyboard, bunch of 7 segment displays and a micro controller using bunch of wires on a circuit board, and THEN writing the assembly code to allocate memory and run your program in an infinite loop. You had to erase your EPROM with UV and burn your program to the chip over and over every time you changed a byte in your code. Debugging? You wish.

As a side effect, full stack engineers had the risk of getting electrocuted, or going blind :)

The methodology is unconstrained as another way to put it.

Which, indeed, is different from engineering where constraints are non-negotiable, and thus the methodology as well.

I think a lot of people doing functional programming, as an example, enjoy the constraints and the discipline that it imbues on their craft.

There is an incredibly large space for decisions and belief systems in software that are not evidence-based but that can all lead to programs (in the general sense) that all function and produce the same results while being internally very different.

The _need_ to build higher-level abstractions to manage the complexity or verboseness required to do things from lower level components always seems to be fighting with the _desire_ to build your own higher-level abstractions that fit your own view of how things 'should be', despite many of the decisions going into this being abstract and not easily objectively measurable.

On top of that, software components as 'reusable boxes' only seems to work up to a certain level. The idea seems to be that higher-level abstractions and reusable pieces are all nicely shaped square boxes that all perfectly fit inside other boxes, but the reality seems to be more that even the best reusable boxes aren't perfectly square, have weird edges, and themselves have to fit into larger non-square shapes with weird edges.

And what are the weird sharp edges? Decisions that had to be made about solving a problem. Every higher-level software component is on some level a set of (mostly arbitrary, sometimes measured) decisions about how to take a set of lower level generic components and make something more specific with them. Libraries might assume a certain structure but leave choices for how they're composed to the user. Applications make many more decisions about how their components are used in order to provide a more specific tool. There is a move from genericity to specificity as you move up layers of components.

And finally, software requirements change all the time, but the need to change is itself at odds with the requirement that problems are solved only by making hundreds of decisions that have to work together for a working solution but also may be difficult to undo.

> the constraints and the discipline that it imbues on their craft.

Perhaps the constraints and discipline here comes from a desire to move towards some kind of standard or expected way of structuring software, knowing from experience that the cognitive cost of making (and sometimes having to read and understand) all the arbitrary decisions mentioned above is actually quite high. (This itself also leads to the notion of 'best practices' which seemingly change too often to ever really be considered best).

> engineering where constraints are non-negotiable

except that's not really true. The big difference is that to negotiating the constraints when it comes to (physical) engineering, one of the biggest factors is money (and lots of it). "Well, we could double the span but for that you'll need to have parts A1, D5 and T3 built out of ..."

Software development isn't free, but it doesn't typically incur doubling of costs for tweaks to the feature list (and I do mean tweaks).

Maybe the real difference is that costs are hidden in software engineering, but more obvious in other disciplines?
I do a lot of data engineering work, and people are horrified to learn how much costs increase as you go from daily/hourly batch jobs to real time or near real time streaming. Seems like a tweak but it does sometimes incur massive cost increases.
This is why I prefer to liken software to crafting a novel. You come up with a nice self-contained story, a clear story arc with a hero and a villain and a good ending.

Then marketing come along and ask to make it a trilogy and a few weeks before release they ask you to add in Ewoks because it'll sell more toys.

You can hide ANYTHING with financial engineering. Like off-books liabilities, systemic risk ... anything.
This comment is weird, but typical of HN. Most of the off-balance-sheet shenanigans of pre-2008 world are gone. There is now a global regulator that covers all systemically important financial institutions, that also includes very large insurers. The world of financial engineering is much lower risk and higher transparency than pre-2008.
Must be why every company pays its fair share of taxes right?
What do you mean by 'fair'?

Different jurisdictions have different tax rates.

You say shenanigans don't really happen, I posit they are routine in business and consultants are paid a lot of money to uncover the next shenanigan every day. The law is always lagging the action it is designed to stymie and we certainly don't have a utopia going on outside the window today.
> You say shenanigans don't really happen, [...]

Where did I say that? There are definitely people who straight up break the relevant laws and don't pay their taxes.

Of course, whether someone breaks a law or not, is an issue independent of 'fairness'. But I don't know what you mean by 'fair'.

> Code by comparison lives in hyperbolic space [0] and you can hide _anything_ in such a space without it being obvious

Eh, you can also create a bijection between all programs and the natural numbers, so I don't think this analogy gives much insight. It's also silly to think that structural engineers or whatever only have to worry about where to place indistinguishable cubes in 3d space at a single moment in time and move on to the next job.

This honestly comes off as the kind of masturbatory rhetoric the GP seemed to be talking about.

I personally though it was a very interesting analogy.

Let's take a made up example of a structural engineer designing a building. As another comment mentioned, in theory the design space here is enormous. Just the concrete mix can be endlessly optimized. But here there's a large monetary cost tradeoff that's obvious to everyone involved. Say an overenthusiastic junior proposes attempting to rediscover ancient Roman concrete mix for this project. Everyone from the other engineers to management can call that out as absurd.

In theory you can make the building out of anything. But in practice the economics of producing real world components only allows for a few choices in each stage of the design.

Meanwhile, software components are essentially free, especially if they're open source. Just clone the repo, hook up the code and you're done, right? So surprisingly often, the overenthusiastic junior can convince the whole company to build the new feature with some obscure framework that'll be unsupported in a few years. And no one can reliably call them out, because there's no easy, objective way to measure something like tech debt. (Another compounding problem is the rapid growth of the software field. Juniors are minted faster than they can be trained.)

To make the software example more concrete: there's an internal config language "blub" in one of the FAANGs that someone designed in two months. It looked simple, gained a lot of adoption quickly. Fast forward 5 years, and it turns out using blub was a big mistake. It scales terribly, the semantics were badly thought out and cause subtle bugs everywhere. But here's the kicker: there are now millions of lines of blub. Over the next decade, the company makes several very expensive attempts to replace blub and fails. Blub continues to underpin their production infra to this day.

So to sum up, I think maybe the core issue is not so much "3d space versus hyperbolic space". If you view the space as the tree of decisions you need to make to reach the goal, all engineers are working in hyperbolic space.

However, when designing real world things, economics rapidly culls the design tree. Buying materials requires cash up front. But in software it's often the opposite: you get the libraries "for free", and the unmeasurable tech debt accrues over time.

> However, when designing real world things, economics rapidly culls the design tree

Exactly like sticking with blub, which was only chosen because of historical accident, but they're stuck with it because it would cost too much to stop all progress while refactoring everything to work around it.

You're arguing a matter of degree while asserting a matter of kind.

And the point is still ridiculous with the explicit comparison to maths, which is somehow different because there exists wrong proofs.

"All other engineering disciplines are ultimately limited to building things in (at most) 3 euclidean dimensions."

Trying to diminish engineering disciplines that have existed for millennia by imposing an arbitrary constraint of "3 euclidean" is pretty wank. Let's drop silly constraints.

Do you have any idea how complicated concrete is? It's just sand, aggregate, cement and water. Exothermic reaction. Job done.

Let's look at wood ... the stuff is a bundle of fibres and stuff and yet we build huge structures out of it. Who on earth knows how or why plywood works? Britain had several all wooden aircraft during WWII - the Mosquito was so good that Herman Goering declared that it was worth two kills.

Steel - its just iron with other stuff.

Software engineering is growing up gradually but please don't be a dick towards people who practice disciplines that invented things and concepts you rely on and live within.

For example the concept of a token that allows you to do something exclusively - " exclusive lock" - was popularised by early railways. A single track should have only one train on it and after a few accidents the idea of an exclusive token was "invented" that could be passed across to the next exclusive user.

When you say hyperbolic, you should be aware of how close that is to hyperbole.

Not sure where you're getting that from my post.

The point is that all other engineering disciplines don't have enough design space to make a true mess of their projects. Software by comparison hasn't been limited in its design space since the first super computers started having gigabytes of ram memory in the late 1980s.

That doesn't mean that either discipline is better or worse, it means they are different. Other than math there is no other field which has as much freedom when it comes to basic design choices as software engineering, and math proofs are even more of a mess than software programs, to the point that pretty much every non-formally verified proof is wrong in some way.

Or to put another way: would railways be more or less complex if we allowed them to be embedded in a higher dimensional space instead of being essentially a 2d network on the earth surface? If you don't think so I'd like you to think about what a train schedule would look like on hyper graphs: https://en.wikipedia.org/wiki/Hypergraph

I say this as someone who loves software: software is not special.

Every discipline has infinite depth.

Railways in 2D may seem simple but there the simplicity may be intentional. Just like when you write software that runs things like planes, trains, or medical devices, all of a sudden you’re writing in C, without recursion, without function pointers, without using the heap, etc.

Look at the concord airplane. A mess of a project.

Look at anything in biology and human health. The complexity is unimaginable compared to software.

Edit: reduced emotions

I don’t think the comment was meant derisive like you and the other commenter are interpreting… relax?
Thanks, I edited to assume the best interpretation of the thread.

Since I want programming to be inclusive and not have a bad rap publicly, when a peer says “software is better than all other disciplines because of X, Y, Z” I want to convince them otherwise.

As a leader and teacher with more grey hair every day, I feel this responsibility

>As a leader and teacher with more grey hair every day, I feel this responsibility

You should probably do less of that since:

1). That's not what any of my posts said.

2). My degree says mathematical physics and not computer science or software engineering.

3). A field where you're tone policed by the tone deaf is the opposite of welcoming and inclusive.

Since I’m already in the thread defending you against the other poster, I’ll add here

U/callc appears to be reacting to the public perception of how this thread would read externally, you appear to be reacting based on hard logic, which is unpalatable to most of the public.

I think you two are talking past each other

> I think you two are talking past each other

This is why steelmanning a comment before arguing against it should be a rule.

> I say this as someone who loves software: software is not special.

Based on your comment I’m interpreting “special” as “better”, or “harder”.

I interpreted the comment you replying to as software is “special” as in it is “different” and the differences require different solutions than other fields have.

Like when I talk to my civil engineer friends I only on the surface comprehend what they are dealing with when they need to move literal thousands of tons of mass. I can try and make an analogy to my own experience with bandwidth and memory, but nothing will be a 1:1 comparison with the amount of energy used when the physical mass of the entire internet is within an order of magnitude of a strawberry.

Simultaneously my civil engineers friends don’t have to deal with a situation of one of their apprentices making a logical mistake based on a single missed `!` and their features suddenly using up 100% of all resources everywhere

Not op, but I'm clearly reading their message differently than you.

Any type of physical engineering is based on hard facts, data, and well established historical research, mathematics, and more.

I've seen many an electrical engineer say, "fuck it, this is too hard and pays too little" and so they pivoted into software engineering quite easily.

On the other hand I've never seen the opposite. Real engineering is hard because you actually have to get shit perfect. The wrong o rings and real people die.

There are a few real software engineering shops and real software engineers, but 90% are just slinging shit together for a bunch of enterprise CRUD and they are all just one bad deploy away from disaster.

How are you reading noosphr’s comments?

I read it as: “software is special because its design space is high dimensional, compared to all other engineering disciplines which are limited to 3 spatial dimensions. Large design space leads to ability to mess things up.”

I wholeheartedly agree with you: “real” engineering (where lives are on the line) is hard. Most software that is made is not to control pace makers, air plane autopilot, space shuttles, etc. When we do need to program in these life and death situations, we should look carefully at the real engineers that do this all the time (looking at you self-driving car software).

Software "design space is high dimensional" is true in that storage, latencies, processors, memory we just keep growing and growing. Given that, software should be faster and better than ever because the dimension where software lives has gotten exponentially larger and more performant. Rather than use that like responsible engineers we all started writing bloatware because it was easy and we could get away with it.

Engineering with constraints builds discipline. Maybe we are lacking as engineers in software because the constraint bar just continues to raise.

The power of software is not tied to processing power or memory, although those help a lot. Code is the deciding factor, not quite because it can be laid out wherever and have far reaching effects, but for the underlying basis for code. Software is all about leaky abstractions. It's not quite math or any sort of empirical engineering. Software models entire worlds. Excel is "just" people churning out calculations from paper spreadsheets, except now you just see the results on a screen. Pong is a ping-pong game. But I used the word "leaky" before. "All models are wrong, but some are useful."

We could always talk about stacks, AVL trees, or NLP before any meaningful conception of computers, and indeed a lot of computer science research happened when computers were still fairly primitive. Computer science and its applied form, software engineering, are about computation (data and code) and abstraction. Even computation is just a distraction at some level. There's some world with the ideal behavior that a program should abstract from, but an ideal is an ideal, so programming is often floundering to figure out what ad-hoc world the program mirrors and tweaking haphazardly. Software engineering isn't engineering not because it can't be, due to the (very real) differences of software from the physical world. It isn't engineering currently because we aren't taking control of our actions and their consequences, in all senses.

Intellectual superiority is not relevant here. Everyone has hard tasks. If you're a civil engineer, then design and build infrastructure well. If you're a programmer, then design and build programs well. Any discipline demands honesty and forthrightness in evaluating its work.

I graduated in Electrical Engineering but have worked as a Software Engineer for the last 20 years.

I totally agree with their post and get what they're saying.

Within circuits (big or small) it is possible to do some crazy stupid shit, but reality kicks in much sooner. Either because of physics or price.

Analog circuits (my specialty) are a perfect example of this. Sure I can try to cut corners and interconnect two distant parts of the circuit together in weird ways ("tight coupling" in software), but the options I will reach for are limited, and "nature" forces me to "decouple" them. With software I can just set a distant variable...

I have a Building Engineer on my team, who also moved to Software Engineering. I can ask for examples in his field too.

There's software engineering work and then there's programming.

90% of programming is enterprise CRUD, and the bar is low. Likewise, 90% of electrical work is basic circuitry with off the shelf parts: does it work and not catch fire. There are electrical engineers doing Real :TM: Engineering, but 90% or more of the work is electrician work.

Both software and physical engineering can hide junk. It just depends on who is looking. There are plenty of products made that are junk. If you start to understand how products actually come to fruition in the business world, you will see that most of what we buy or sell or see marketed is actually junk. This is because engineering both in software and in the physical world is rarely, if ever, incentivized to seek out a perfectly optimal solution. What is able to generate profit sufficiently over costs, today with today's economic context, is what ends up getting shipped in both cases. That might change tomorrow and suddenly the product is not viable due to the costs of the junk associated with it. We talk about legacy code and how it is junk we are beholden to, go ahead and look at the engineering behind car designs and you will see there are legacy engines, legacy car platforms that people are similarly beholden to no different than legacy code people are afraid to touch. And that is just that one sector. Legacy engineering is present in everything you can conceive of due to the fact no one is paid to go off into the woods and optimize optimize optimize, only to ship by a deadline even if it a stinking pile of you know what. That is for sales to figure out.
>There's the folklore about half of all math papers giving the wrong proof for the right conclusion.

Sorry, what? This is an extraordinary claim.

I do agree that you can hide a lot of shit in code. But I think something often overlooked is that code is simply text, and we have general rules on how to write good text. Code is in the end of the day basically applied philosophy and expression of ideas.

If you do not have the experience and skill to express your ideas in text in a clear and concise, you will struggle to write good code (and vice versa tbf).And coders generally are lacking on the more humanities side of their educations.

actually, if you really think about it, my source code is only laid out in 2 dimensions. thats even fewer than mechanical engineers have to work with!
One might even argue that a Turing Machine (computers) is really one dimensional.
You'd probably be shocked by the amount of junk hiding in the design of the F-35 for example. Complex Systems in 3-d are still complex.
I do agree that software is by far the most complex things humans have created and much of that complexity is hidden.

Case in point - more than one Mars mission has failed due to software errors.

However you could argue that the best way to deal with that complexity is not to have a brilliant mind that can grok more of that complex space, but by simply taking good engineering practices to minimise and manage it - ultimately the complexity is beyond us all if not managed.

Software is different.

Software is ultimately limited to building things in a space that is only countably infinite. There is only so much junk you can hide in a space that is only countably infinite.

All other engineering disciplines by comparison deal in a space that is uncountably infinite and you can hide _anything_ in such a space without it being obvious. This is exemplified by the unpleasant discovery all of us have had of a supposedly measurable "collection" of intervals having such weird holes all over the real number line and the near impossibility of shifting it up or down that makes sense for it without having to rethink our whole notion of measure and still end up with something like the counting measure that definitely doesn't make sense.

People, including myself, have a seriously bad intuition just how much volume there is in an uncountably infinite space.

> All other engineering disciplines are ultimately limited to building things in (at most) 3 euclidean dimensions. There is only so much junk you can hide in a finite volume of space.

I think that you have a basic grasp of the word "dimension" but use the word "euclidean" without understanding what it means just because you heard it in conjunction with "dimension".

If you think that e.g. building a bridge is a three dimensional problem in the sense that you are actually talking about (which has nothing to do with euclidean geometry), you lack the basic understanding of what you are talking about from which you could draw any conclusion like that with any sense of intellectual honesty.

Yet, it is trivial to find "competent engineer" in other fields and software engineering is filled with mediocre ones at best.

When there's 1000 ways to do a thing, with wildly different pros and cons, and insane amount of unknowns in a field that is evolving so rapidly that it is (near) impossible for someone to keep up, being "competent" is not easy.

> I like this article particularly because I think the trope that there's something unique and different about software engineering is pretty toxic

The ratio of software engineers working in novel design spaces compared to plumbing style work is best guess ~1:5.

The ratio in more mature fields like civil engineering is closer to ~1:500.

There are lots of similarities between software engineers and the few folk in civil etc doing actual novel design work.

> Nothing that we do is so unique that another competent engineer shouldn't be able to fill in for you when you are having an off day.

In novel design spaces people are not fungible.

> The ratio of software engineers working in novel design spaces compared to plumbing style work is best guess ~1:5

Google has something 25,000 developers. You think Google has 5,000 people working on novel design spaces? That number sound way, way too high. By at least an order of magnitude.

And Google at least has customer facing technology compared to the thousands of companies whose developers only work is, say, integrating HR systems or deploying SAP or maintaining some legacy billing system.

> You think Google has 5,000 people working on novel design spaces?

Yes.

Maintaining a bridge is in general not novel. There are clearly established best practices that have stood the test of time.

Maintaining a ridiculous tangle of millions of lines of code is novel. There are no best practices on par with other engineering fields. We are at the stage of rough heuristics in most parts of software dev.

One day there will be broad and consistent over time agreement on how to handle large software projects. But we aren't there yet.

IBM's S/360 was millions of lines of code in the 1970s. Managing millions of lines of tangled code is not novel. It is older than most HN readers.
Novelty is a byproduct of immaturity. To take another field that matured recently, mechanical and in particular aerospace. You can see a lot of crazy airplane designs from the 1920s through the 1940s. There was a lot of novelty back then and it was an exciting field to work in. Now airplane designs look very standard, and for good reason. The field matured and figured out the best and most economical designs. Novelty is a temporary state, and most novel designs are figuring out how not to do things.
You're mistaking complacency and lack of innovation for maturity.
Very few software engineers are working in novel design spaces. Even 1:1000 is probably being generous. FWIW, this is true of conventional engineering too, but even more so.

A software engineer having no idea how to build something doesn’t make it novel, it just indicates inexperience or ignorance in all but a vanishingly small number of cases.

In practical systems, you won’t find much novelty outside the rare frontiers of performance optimization, systems software architecture, the occasional bit of weird silicon with unusual computational properties, and some narrow algorithm domains that have never been adequately developed e.g. compression and AI. Almost no software development can justify even thinking about these types of things and they virtually never do.

Conventional engineering is worse because the laws of physics constrain almost everything to boring well-explored solutions. In some cases, we’ve pretty much done exhaustive exploration of what is possible.

> something unique and different about software engineering

how much does the strength/weight ratio of building materials improve every year? how much does the price/quality ratio of building materials fall every year?

software engineering is working with technology where compute capacity was doubling and price/performance was halving every two years for decades. this rate of change has slowed, but in a world where the price of everything else inflates, software is a rare field that works with a continually deflating capital base.

the uniqueness of software development is real and based on underlying physical/economic factors that exist in very few industries.

software developers are not unique. they are still human. but the profession is unique and the financial incentives are unique.

consistent, careful, workmanlike effort over time wins on average, but because the incentives are large, many people will take the risk to get exceptional rewards.

i approach software development like a professional athlete. i work on optimizing every aspect of my performance (physical, mental, social, technical) to be the very best i can be. anyone who applies this level of dedication in any field will be highly successful, but it requires dedication, sacrifice, and risk, which many people are not willing to accept.

the world is full of exceptional software and algorithms designed by unique individuals who developed things nobody else could or would. there is a reason why mathematical discoveries are named after the people who discovered them.

building software for large corporations necessarily revolves around median-level teams, because mean-reversion always happens at scale, but that is also why a great deal of technical innovation takes place outside of large corporations.

> I like this article particularly because I think the trope that there's something unique and different about software engineering is pretty toxic, both to we people in the field and people looking to employ people in the field.

My university has an alternative entrepreneurial focused “senior design” course open to engineers and cs students. Because of scale the CS students are now separated in a different section. All I can say is the level of toxicity that I’ve witnessed from cs students to engineering students has made this a much nicer course to work with teams.

Engineering students can be ego driven now it alls sure, but the level of toxicity behavior and assumptions of superiority I’ve seen from CS students makes me glad I don’t have to deal with them anymore.

The primary fault I see, and it’s buried in the abstractions comments from others is the assumption that their knowledge is all encompassing because it is so abstracted. The inability to attach it to contextual realities is taken as virtue rather than a risk factor.

I always go back to the fast company article on the coding team behind the space shuttle and their culture. The difference is telling in terms of qyality and risk tradeoff. Realistically the number of engineers who will design something that could kill someone and software developers who will exist at opposite ends of the percentage scale. That reality manifests in professional culture. We’ve seen it in so many places.

This threat is insightful but not in the way commenters likely think.

    > well known toxic field, finance
I assume here that you mean investment banks, more specifically: M&A and capital markets, where the lion's share of profits are made by few people. Post-2008, the industry has cleaned-up so much. What is toxic about finance today?
I think one thing that is very different about software engineering is that it's the only form of engineering I'm aware of where a very substantial fraction of the people employed to do it lack basic fundamentals like "being able to do it". Most software engineers can't write a program without google. They can't remember basic facts about the language they use every day. They don't have a sense of what makes sense and what is weird. They can't debug problems they run into without help.

I know whenever someone says anything negative like this people come out of the woodwork to say the opposite, and that's fine, but I can't name a single competent programmer who doesn't say things like this in private, and I know a lot of them.

Test it for yourself. The next time you need one of the mediocre people on your team to do something pay attention to how they do it. I will bet you it's something like this: Get the ticket. Spend a day or two trying anything they can think of, googling, pasting stuff into chatgpt, etc. Then they start messaging people. They tend to try to not always ask the same helper because it would get too annoying, so they rotate around the team asking for help. The helper starts by offering suggestions, but the mediocre dev can't get those suggestions working or apply them correctly. Pretty soon the helper just types a bunch of code into the chat window so they can go back to what they are trying to do. The m dev takes this code, and pastes it into their branch. It's not quite right though, it needs a little tweaking to work but they can't figure out what to do, so they message the next helper. (And sometimes it's hilarious what it is, a lot of times it's a typo and when you run the code it says exactly what line it's on, but they don't know how to run code besides pressing the button in their editor that someone else set up for them) To helper 2 it seems like they are making good progress, they are just stuck on some small thing. Happens to everyone. They tell them exactly what's wrong. And voila, this is how about 30% of the people you work with write code. People don't catch on because when you are helper #2 you assume they wrote that perfectly competent code.

I can confirm that some (30%?) mechanical and biomedical engineers follow the described problem "solving" strategy exactly. It's not just software engineers.
I don't think, excluding some scenarios at well-disciplined firms that anything like "engineering" exists in programming.

The processes surrounding development often strike me as haphazard, cargo-cult like behavior, and entirely subjective.

Regarding people not remembering stuff--yeah that's probably true, but there's a lot a typical developer has to jump between--do people really get to "specialize" in JUST like writing Java CRUD or something anymore?

Feel like there's always also troubleshooting some Docker thing, some cloud provider, some build system, some pipeline etc etc.

When there's no stability and moving targets, maybe you're not incentivized to be a "specialist" on a language or whatever (this might also be painting oneself into a corner for their career) given how easy information retrieval is today?

RE: the scenario

Is this real?

I've never been employed at any sort of fancy role but I've never encountered this kind of thing (publicly) involving me, and I generally get on well with others, so I assume I'd have seen it by now

I'm sure plenty of programmers pasta from LLMs constantly now, but I've never had bizarre low-hanging "what do" inquiries.

Most people have some discipline and structure when asking questions:

- I'm attempting to integrate library x into the project - I've done the following and the build fails in CI with $ERROR - I've checked x, y, z - Have you encountered something similar?

This indicates some level of actual understanding of how things work, or prerequisite research prior to asking.

Also, where can I get a job where they hire people this minimally competent? I'm seriously burnt out and this seems like a nice change of pace.

I'm totally serious with that question.

I've worked mostly in Silicon Valley. At bigger tech companies I found that the minimum level of competence is a bit higher, maybe because of the aggressive stack ranking and PIP/firing pressure. At small companies either low bar is very high, or it's nonexistent, I've seen both.

The weird thing is, at a high performing organization it's relatively straight forward to get a job: be very good at what you do and practice for their hiring process.

At a dysfunctional organization there's not really a way to get hired (apart from an internal recommendation). This is almost by definition, as their hiring process doesn't measure anything reliably. Being physically attractive or charismatic helps a lot.

Actually this gives me an interesting idea, can you measure the quality of an engineering team purely by how ugly they are? My hypothesis is that a dysfunctional team has a low ability to measure aptitude, and so things like physical attractiveness will have a higher impact on hiring decisions.

I don't blame you for wanting a nice stint in one of these dysfunctional companies, I think I could have worked an hour a week and been praised as a top performer at the ones I unfortunately spent time at. I think if you do go this direction you should get 2 or 3 such jobs. It's only a tiny bit more work, and these companies tend to just stop existing some random Tuesday.

Genuinely appreciate this response.

I too have been nothing short of perpetually shocked at how dysfunctional a large part of the software industry is. This is why I'm never able to take the "engineering" moniker seriously when people talk about programming.

The hiring process is so maddening and I'm glad you said that.

I get that resume scanning and what not is fully automated and makes no allusion to being a useful nor functioning process, but I'm perpetually amazed as I submit resumes (where I meet or exceed every "requirement") to companies I know are not well-functioning organizations only to be rewarded with an automated rejection email minutes later.

>Most software engineers can't write a program without google. They can't remember basic facts about the language they use every day.

How many years of experience do you have? and how many languages have you written code in? Include all languages where you tweaked or wrote even a single line of code.

(comment deleted)
There is something toxic about calling arbitrary things toxic.

>The effect of consistent, careful, workmanlike effort over time trumps any number of crunch weeks and burnout episodes, to an almost absurd degree.

If you have an actual life, you know, with unexpected stuff coming up from time to time, this is just not possible. Then the only way to get stuff done is go 10x during the time you have whenever you have it.

> Then the only way to get stuff done is go 10x during the time you have whenever you have it.

I believe PP is correct: the cost of "going 10x" is greater than its benefit in the long run, and often in the short run.

Henry Ford lowered the Ford company work week from 48 hours to 40 hours to improve cars manufactured per labor-hour, and to give employees leisure time to drive places (increasing demand for cars). Wages were raised to compensate, further increasing loyalty to the company while enabling employees to buy more cars.

For software, a 40-hour week may not be optimal, I tend to think that it may be too high rather than too low.

You are so wrong.

Complex multiyear things are so unique that there is next to 0 chance to find another competent engineer as replacement. Some companies do that, and the only result is the extreme lack of quality and consequently reputation degradation. I witnessed this myself many, many times - great products turning into non-efficient and hard to use BS.

Complex things posses such a big number of moving components that simply iterating over them placing them into context is impossible for anyone except the one that was deep into it for years. Its not possible to "fill in" such person, particularly if that person was lacking in some domains like proper documentation (typical case).

As an example, I am leading a project that creates a government bank from 0. Just in last 2 years I wrote 1000+ pages of compressed documentation on it besides programming and management. Please replace me. My company and I are trying to do that for last 5 years.

If it’s so easy and not unique, how come engineers with supposedly 7-10 years of experience, that I work with, write absolute braindead code that breaks if you sneeze at it?
> These days it feels a bit like another well known toxic field, finance, in that people conflate an outsized leverage for personal valor.

I'm not sure what you are talking about. Finance people regularly talk about risk adjusted returns, not raw returns.

>Nothing that we do is so unique that another competent engineer shouldn't be able to fill in for you when you are having an off day.

There is a big difference between filling in someone on an off day, and actually taking over their job. It's only felt over weeks and months.

"Consistent, careful, workmanlike": this does not describe the kind of software built by most teams, but it does describe the work of good individuals.

I always thought anyone can learn to program and gently scolded and encouraged the folks who would predictably say , “oh you do software? I could never do that. So complex.” No, I’d say, you definitely could!

And not even anything to do with AI.

But i take the title to indicate a bias against neurodivergence — “One of us,” repeated in a robotic monotone over and over. Hahaha ;)

Perhaps i should read the article!

This is exactly what the leads in my team not only thought but said to my face gratuitously. I'd be in my 69th hour of work on a Thursday and they would pass by my desk and say stuff like "what's important is not the time you dedicate to a task but that you complete it".

The board decided to promote these people who negotiated a 4-days week; after all the team had never missed a deadline, and gradually I was given more and more tacit responsibilities without explicit status recognition. This creates a double-bind situation for both sides. While I could never be satisfied because of this lack of trust, you have to understand why they approached me with suspicion while being dependent on me.

A 10x engineer (or any Nx engineer with N > 1) has to interface with the rest of the team and this necessarily implies more work. In my case, resentment grew because of the increased workload this led to for them, and my colleagues felt more impacted by this than by deadlines being not met. As for management, since deadlines were already met, they felt more compelled to listen to the negative feedback they gathered about me and develop suspicion. And yet, they had to rely on me for any impromptu problem they had.

What's this article is discussing is not engineers with bouts of outstanding performance but engineers with that symbolical status. It's attacking the myth, and the attribution of that label, not a reality with measurable outcomes. The article doubts that such a measure exists, however the departure of an employee can have destabilizing effects on an organization. The delta won't exactly measure this employee's worth, but an organization can put itself in such a configuration that it will unknowingly rely on a few key individuals for its financial strategy and use the added value these people bring against its competitors, to win investors attracted by this differential in efficiency or proceed to acqui-hires. This leads the company to bind itself to commitments which pushes it near to a dangerous threshold.

Once crossed, when one of the cheap keystone employees leaves, this excess of work can cascade to other keystone employees, and cause more resignations, and the company won't be able to make up for it because its finances are already engaged elsewhere.

I spend at least half of my best days working on making our bad days better.

The thing about being intelligent is that you have the capacity to find wisdom faster. I’ve worked with too many intelligent fools, and nearly all of them quit rather than face the consequences of their own actions.

I tend to stay too long, either cleaning up after my own messes or someone else’s. Maybe I watched too many westerns as a child. Who knows.

But I’d rather work with someone wise who can’t reinvent bloom filters from first principles than someone who could, and thinks doing so is a good idea.

There’s an ethical trap where you think you’re the only one here who can make something work, because now you’re on the hook to support it and if you have a negative opinion of your peers, how is that going to work out, do you think? Did you think? Or were you too busy wondering if you could do it to think about whether you should?

I think the advice, “never be the smartest person in a room” is just about the biggest bullshit in tech. Intelligent people cannot teach you to be like them. They can’t change your brain much more than you already have, just surviving school and university. But a wise person can teach you three new things before lunch, sometimes without even trying.

Don’t be the wisest person in a room, and if you must be, don’t denigrate the wisdom of beginners. Good teachers learn from their pupils.

> The effect of consistent, careful, workmanlike effort over time trumps any number of crunch weeks and burnout episodes, to an almost absurd degree

This is worth remembering for basically anyone who works on anything, or manages any kind of project.

"Measuring productivity is fraught and imperfect" For the moment, but it's better than it's ever been, and it's getting better.
Not really. How do you quantify tech debt? How do you quantify the tradeoffs that someone made to add new functionality?

This is always going to have a critical subjective element to it.

The moment you start treating engineers like factory floor workers, that's what you get.

>Not really. How do you quantify tech debt? How do you quantify the tradeoffs that someone made to add new functionality?

Time is quantifiable and comparable. Time spent on making things happen and then dealing with the consequences. The percentage of people leaving the organization in their first year is quantifiable.

Tech debt and tradeoffs from the previous feature will show up either as time spent on adding the next one or time spent on fixing bugs. Estimating is difficult, but measuring and figuring out post factum what amount of time was spent on yak shaving isn't exactly impossible. It maybe be uncomfortable and self incriminating, but that's a culture problem.

What ratio of time spent coding to time spent doing code review is conventional in industry, anyway?

If it is around 1 (which doesn’t seem too unreasonable given that multiple people might review a single commit), and a 10x engineer really is 10x as productive as a normal one, then I guess a team of less than 10 people will have trouble keeping up with these 10x engineers.

Unless the company only hires 10x engineers. But then we should at least consider the possibility that they are just hiring 1x engineers, and have a low opinion of engineers outside the company.

>"A truly great engineering organization is one where perfectly normal, workaday software engineers, with decent skills and an ordinary amount of expertise, can consistently move fast, ship code, respond to users, understand the systems they’ve built, and move the business forward a little bit more, day by day, week by week."

I don't think decent skills and ordinary expertise gets you that, especially "move fast" on top of the other things. But the convenient thing about "normal" is I can move the goal posts wherever and it sounds valid.

The article also did not say how often the normal engineers produce bugs of varying severity, so I guess it's possible to move fast and create a manageable amount of bugs?

Decent skills and ordinary expertise requires a good process and a healthy team/work environment, and then it's totally possible. I've never worked with rock stars, and I'm not one myself. The difference between getting things done at a good, steady pace without building technical debt (which is all that moving fast really is) has always been process and product owner.
Imagine there was a team that can take ordinary levels of talent and produce extraordinary results. If it could exist, this would be a great engineering organization, no?
Every 10x engineer I've known has carried entire teams of normal engineers. ymmv but I've seen probably 5 instances of this and 0 instances of teams of normal engineers being super productive.
(comment deleted)
What are the details of this? Any engineer that built most of the stuff is not a 10x engineer. It's someone that really knows their way around their own house.
> Any engineer that built most of the stuff is not a 10x engineer. It's someone that really knows their way around their own house.

How can you meaningfully separate these?

I’ve seen the opposite: plenty of examples of very productive teams with really no standout “10x engineer”, and several examples of unproductive teams purely due to poor team decision making. IME, productivity is a measure of past investment, not current skill.
Oh they are super productive alright when you measure by story points just not in any revenue/profit impacting sense
"If you must 10x something, build 10x engineering teams"

This is a healthy perspective that hopefully avoids some of the controversy around the 10x label. Any improvement you make to how the team works together, be it CI process, sharing/evaluating ideas, code reviews, design, anything, is multiplied by the team size/responsibilities. Maybe high-functioning teams are part of what enable the 10x outputs that perpetuates the meme.

From what I remember in mythical man month it's sort of addressed there (different roles/support roles being just as critical as others) and recently reading "soul of a new machine" it was clear how dependent even the most skilled roles were on the other members.

How to hire and build a 10x engineering team remains a challenging problem however!

Some of the problem in the conversation around this is that many people take "1x engineer" to mean "not particularly competent engineer" and some take it to mean "baseline, solid contributor who isn't exceptional", and the bar for what we regard as exceptional can differ drastically. I've been on teams where everyone is pretty good and felt like I was a genius, I've been on teams with really remarkable people and felt unworthy. Nobody knows or agrees what 'x' is or that it can even be reasonably measured, so all conversations about 'x' multipliers tend to be unproductive.
I think 10x is an exaggeration but I've found its really common to have 1-2 people who do a big bulk of the work

The thing I don't understand personally with these people is why they care so much about work when the rewards are not proportionate to doing so much extra work.

I get it if you're a founder of a startup but not if you're at a big company

Yet every big company I've worked at there are always 1-2 people on the team who seem completely obsessed with the project, like its their main hobby/purpose

It makes me wonder, if someone is so smart that they can do "10x" the work, would they not use that smartness to look at the meta of it all and wonder why they don't get 10x the rewards?

Some people just really like the work they do. There's nothing more to it than that.
Sometimes it isn't even that I like to do something, I just have a very strong feeling it has to be done. The code is asking to be written, the energy has to be spent to lower the entropy. But at least nowdays I can close the damn work laptop at time and not open it until the morning, unlike some a decade or two ago.
> completely obsessed with the project, like it’s their main hobby/purpose

I think you figured it out.

If your main hobby or purpose is to make someone else rich you're a slave.
I worked like this. You could have phrased it better.
That honestly doesn't matter if you (no longer) pursue riches yourself, have enough already and enjoy your hobbies. Besides, not everyone working in IT is working in a chique billionarie mill. A lot of IT is just plumbing. Majority even.
if you also make yourself rich in the process, are you still a slave?
Imagine taking pride in your craft rather than doing only the bare minimum to pad your ego, what a crazy approach!
Taking pride in your craft would mean having enough self-respect to both not burn your soul out for the sake of a corporation that wants to make you redundant and using it in a direction that directly benefits you.

I've been in the industry long enough now to see those 10x engineers having pride in their work get their mindset shattered because John from financials thinks they can juice the next quarter by laying them off.

If you want to have pride in your work as a supposed 10x engineer, work at 2x or 3x and save the remaining for yourself.

Exactly, I'm not saying do the bare minimum

I mean more that the optimal amount of work to put in is still above average but way below 10x

(comment deleted)
A lot of commenters seem not to work with very skilled individuals.

One (engineer-turned) manager I have in mind: show up at 10am, leave at 4pm, solve a zillion hard problems in the mean time. Are they 10x? If they save me 2 weeks of work with their insight then I guess I have to admit yes.

Save it for myself how, ditch half the work day to go to the gym? I'm going to work 9-5 either way.
Why, though?

Lots of people are happy to just do whatever, go home and not work on personal projects. Plenty of people here defend it.

Why should productive engineers change their habits just not to be called a sucker?

If you're not making someone with a lot more money than you even richer you're probably not earning much yourself.

This is about how capitalism is structured it's not at all a matter of personal choice.

I'd love to hear your take on those dumbass medical research scientist slaves who haven't figured out life. Probably wasting their time looking for cures, when they could be starting their own crypto or podcast or innovation-firm instead.
So only if you're hating your job then you are a bastion of free will and free thinking among us mortal capitalist slaves?

What about truly enjoying your job and getting paid handsomely for it (compared to almost all other jobs) being sufficient to one's happiness?

Also, if you don't realise that being the one running the show is orders of magnitude harder than following the lead and doing your stuff then you never really done it before. Having ALL the control has advantages and many less obvious disadvantages.

it's sorta like, why doesn't everyone just kill themselves you know?

sometimes, you just find fun in things and it's cool. other times, it's like what other other thing you gonna do? fish or hang with people or do drugs or dance? software's a hobby really. sometimes its more fun.

but really it's all preference.

>The thing I don't understand personally with these people is why they care so much about work when the rewards are not proportionate to doing so much extra work.

The reward is there allright, it just isn't monetary.

There are big rewards in future pay, referrals, etc. for establishing a reputation as a great engineer. If you find there aren't then jump jobs.
You're right. Coming from my own startup to Microsoft, I worked the same way for quite a long time. Huge regret.
(comment deleted)
Because it's rewarding in its own right. I can't imagine doing the bare minimum at work -- pretty sure I'd melt of boredom within a week. "Owning" a project/component/whatever keeps things interesting and keeps me engaged, and extrinsic rewards aren't that important if you're making a healthy salary in the first place.
Once you’re paid some minimum threshold you stop caring about money and start caring about your legacy.
Ah yes, my legacy: UserOAuthLoginProfileAPIService
// TODO: migrate to UserOAuthLoginProfileAPIService2 by Wednesday
Everyday I grapple with the legacy my coworkers left behind..
> 1-2 people who do a big bulk of the work

Pareto principle.

> why they care so much about work when the rewards are not proportionate

Some people are just work horses by nature. They're too busy fulfilling their idea of a "job well done" to worry about the relative fairness of their employment.

Not to mention being a 10x coder doesn't mean you can simply parlay your skills into the greatest possible rewards. There's a lot of important context that makes a 10x possible in the first place.

(comment deleted)
The do work, at 10x efficiency. Or maybe I misunderstood the 10x engineer idea all along!

And that efficiency can translate in 10x output, but it's not guaranteed.

My opinion on the 10x engineer principle, always was that these people have their best development/debug environment setup. And they can traverse, run, and explore code faster than most. Like world record pizza makers in under a minute.

Through my career I've seen some engineers that were stumbling their way around their tooling after years of use, and some that weren't even touch typing. Factor that in.

It’s been described before that this mythical unicorn is instead 10% more efficient- as well as works 10% harder, does 10% more of the right things (e.g. less waste), understands everything 10% better… the multipliers stack. You get the idea.
It's only a regular 9-5. Family is #1 priority, but that doesn't mean I don't take pride in my work. What I get in return is the ability to work remotely in my hometown while the manager wants the rest of the team coming into the office in the Bay Area.

    > It makes me wonder, if someone is so smart that they can do "10x" the work, would they not use that smartness to look at the meta of it all and wonder why they don't get 10x the rewards?
It is hard to understand other people with freakishly high intrinsic motivation. They look like aliens to the normies.
Maybe because they enjoy the work they do because they love programming and are very happy that they are getting paid well, relative to most professions, for their hobby? Sample size of 1 tho.

    > Maybe because they enjoy the work they do
I feel the same when I read about a career staff engineer for NASA. They work on many cool projects, but the pay is average compared to the tech industry. When they talk about their work, you can see that they have very high intrinsic motivation.
> if someone is so smart that they can do 10x the work, would they not use that smartness to look at the meta of it all and wonder why they don’t get 10x the rewards

I think this is kind of a nasty attitude. I absolutely cannot stand working with people like this. Why would you insinuate that someone is stupid because they get more done? To me it sounds like you are just insecure about others’ output, so you have to tell yourself that it’s stupid and pathetic to be fully engaged at work.

Depending on the company and person they often are compensated much more down the line when they get fancy titles or apply what they spent more time learning/practicing.

Autism? Does it really matter? People have different priorities in life. Some people stay in academia because they're afraid of the real world.
This dynamic is hard to avoid. If you have 1 or 2 people who have more institutional knowledge than the rest of the team, they can burn through more tickets and gain more knowledge through exposure to other people’s problems, which they help with. Then everybody ends up relying on the “hero”, and nobody is really happy about it.

That’s my experience, at least. Cleaner code, separation of responsibilities, and good documentation seem to help though. But I do think a lot of the time people are mistaking “more productive developers” with “devs who got stuck with knowing all the random shit that our horrible codebase relies on” lol

> why they care so much about work when the rewards are not proportionate to doing so much extra work.

Most of the >1x engineers I met can’t help themselves and be their best version.

An average engineer with solid problem-solving skills and a good manager is like a ~3x engineer. It's way easier to hire a few of those than a 10x engineer. But you need to match them up with a good manager, and that isn't easy.
When people say "average" they're trying to reach for a concept of 1x engineer, not 3x engineer.
When I think of a 1x engineer, I think of all the guys I've worked with that had a decade plus of experience but were advanced beginners at best. If you don't work for a FAANG company, you will be surrounded by those types. They make the same mistakes over and over and write the same unreadable code, year after year.
The other important thing to consider is that 10x engineers are deemed so based on productivity. But productivity isn't necessarily the be all end all.

In fact, an arguably more important skill is know when not to do something and how to avoid tech debt. Building towards a north star sustainably and incrementally in such a way that pivots along the way don't require major bandaids or rewrites is how a good engineering org operates.

In the real world a lot of 10x engineers end up just launching a bunch of hacky garbage to frontload impact and leave the cleanup for everyone else. This can work for some time in organizations with phenomenal build and test infrastructure; however, it eventually becomes crippling and hinders everyone's velocity.

> 10x engineers have dark backgrounds, are rarely seen doing user-interface work, and are poor mentors and interviewers

If you think a great (10x) engineer has bad social skills, isn’t a good mentor, and isn’t a strong teammate… you’ve never actually worked with one. What truly makes someone a great engineer is being technically impeccable and having next-level soft skills.

Exactly. While 10x (or whatever) is possible on pure technical ability, I would argue that the majority of engineers who provide outsized value do so through enabling others to do their best work and unblocking the wave that raises all the boats, rather than coding by themselves in a dark room.
Exactly. The way a 10x engineer really 10x’s is by leveling up the entire team.
Not sure if this was your intention, but you’ve pulled these words out of context, making it seem like the author is making this claim, when in fact the author writes that to describe what others claim.

> Most of us have encountered a few software engineers who seem practically magician-like, a class apart from the rest of us in their ability to reason about complex mental models, leap to nonobvious yet elegant solutions, or emit waves of high-quality code at unreal velocity.

> I have run into many of these incredible beings over the course of my career. I think their existence is what explains the curious durability of the notion of a “10x engineer,” someone who is 10 times as productive or skilled as their peers. The idea—which has become a meme—is based on flimsy, shoddy research, and the claims people have made to defend it have often been risible (for example, 10x engineers have dark backgrounds, are rarely seen doing user-interface work, and are poor mentors and interviewers) or blatantly double down on stereotypes (“we look for young dudes in hoodies who remind us of Mark Zuckerberg”). But damn if it doesn’t resonate with experience. It just feels true.

> I don’t have a problem with the idea that there are engineers who are 10 times as productive as other engineers. The problems I do have are twofold….

> 10x engineers have dark backgrounds

I think this is true, but in the metaphorical sense hah. Few with a happy childhood end up this way.

I once worked with a 10x engineer who I could hand new backend APIs to and have a brand new ui component that supported the behavior in less than a day, consistently. I have worked with 10x engineers who spend hours on calls walking junior engineers through problems they're having. That's part of being a 10x engineer – what this article is talking about is random 1x engineers with a chip on their shoulder and unshakeable arrogance.
(comment deleted)
That is a nice theory. But if someone is doing 10x more work, they get 10x more emails, and 10x more mentoring. They are not rude, just very very tired!

10x devs do not do mentoring and "social skills", because it does not scale. They write readme, maybe record a video, and move on to next task. If you have a question, send email and you get response latter! Sitting all day on meetings kills productivity very fast!

Buttering someone up, just because they are lazy to study documentation, and somehow they have power over you, is not a team work!!!

I think kind, industrious, and smart people make great teams.

I once took up a lot of space to be a super productive engineer and only ended up being isolated. The business saw that some engineers were saying things worked great and were easy, so more responsibility was thrown on me and the other engineers moved to another project that needed headcount. Me and another guy ended up building on and maintaining what used be a reasonably sized team. It got on me because I made sure to know everything so I could make it as great as I could. This sounds good, but this particular business didn't care about me at all, I was just another gear.

I've met "productive" engineers that got things done really quickly from the business perspective, then moved on to being awesome somewhere else. But, they also took shortcuts, didn't write documentation, and made things unmaintainable. When I joined the team after they were being awesome somewhere else, I had to do things like guess hostnames and find out how and where things were running..

The people I've liked working with the most have been parents. The boundaries are more clear, they value stability, and aren't heros.

> I had to do things like guess hostnames and find out how and where things were running..

This isn't the worst thing in the world. I'd rather inherit something with little/no documentation that followed the standard business practices (e.g naming conventions, nothing crazy bespoke) and have to do an afternoon of investigation than have to read documentation that's inaccurate. Of course the best option is full documenation but due to the nature of business that isn't always possible.

Even Google eventually realized that if all you incentivize is 10x engineers, you end up with a sack of cats clawing at each other for advancement perpetually and spend a fortune on trying to retain enough institutional knowledge to do the keep-the-lights-on work. They removed the "Engineers at this level are expected to continuously improve and seek more responsibility" language from several higher rungs of their expectations ladder.
As a manager, you want a report who does not require handholding, cajoling, or close supervision. You want someone who makes problems disappear. It's fine if they're 1x engineer. It's fine if they pick up their shit at 5PM no matter what and leave for dinner. Just do what you're supposed to do, at a predictable cadence. That's all that's really required in 90% of the teams.
This stuff is that self-indulgent pablum that comes from the genre of "poor are happier than rich" and such. It's always reinforced by the mediocre because everyone wants to believe they're key to something. The long and short of it is that the people who are buying your work are adequate determiners of how key you are.
> The long and short of it is that the people who are buying your work are adequate determiners of how key you are.

If that was the case then people wouldn’t need to engage in political games the way they do.

One of the traits of this work is that it is almost impossible to measure.

There are 10x engineers, and 100x, and 1000x. The only thing required to separate the wheat from the chaff is a hard enough problem. Now deal with it.
When did IEEE become host to clickbait nonsense? This whole take feels like an editorial by a junior engineer going off vibes. It's all off-base, from the misunderstanding of how to measure productivity, to what output matters, to the idea that there is such a thing as a "normal" software engineer. It's kind of embarrassing.
It's IEEE Spectrum; it's certainly been subpar for a few years.

It seemed more interesting a decade ago, but I can't be sure if it's because the quality was higher or if was because I didn't know better…

Republished from a Substack...
Yeah, it's really a poor quality post, but these terrible arguments and affirmed my bias toward believing 10x engineers exist and there are many great reasons to want to continue hiring them.
Reasons why it's not a good idea to look for a "10x engineer":

- There is no "10x race horse", as there's different kinds of horses who win different kinds of races (and those horses don't win consistently). Similarly, "10x engineer" would imply there's only one kind of engineer, one kind of engineering, or only one way they can be productive. You can certainly find a "person who is very productive under certain circumstances". "10x engineer" is an extreme oversimplification of a generic person doing a generic job; but people aren't generic, and this job isn't generic. There just is no "10x engineer". It would be the coder equivalent of the Übermensch.

- It's not a good idea to bet the farm on one lone genius. They could get hit by a bus, be hired away somewhere else, or just not be "inspired" by your company or team and end up not producing. Instead build a team of competent and diverse individuals led by a decent leadership/management team who can create consistent results without having to find a magic wizard coder. (Personally, if I found out someone in my org was risking the business on a single person that was impossible to replace, I would be upset)

- There's just not that many super-talented people out there. The few that are, pick where they want to work; you don't hire them, they hire you, so to speak. And even when you think you've met one, it may actually just be bluster or a false reputation.

>When did IEEE become host to clickbait nonsense? This whole take feels like an editorial by a junior engineer going off vibes.

Exactly.

I think i'll never click on an IEEE Spectrum article again.

IEEE has jumped the shark.

I worked for a couple companies during my career whose main product was incredibly complex and difficult to understand. Making a minor change in one component could send ripples through the whole product.

One or two 'superstar' engineers who had been with the project for more than a decade were the only ones who understood the bulk of it. They had job security!

I often wondered if they intentionally created it to be that way out of self interest. It made things rough for all the 'normal' engineers who wanted to improve things but got pushback from them and management.

> "Engineers don’t own software, teams own software"

This is often the opposite of the truth. That is, teams are much more often formally-owning software, but "owning" in the sense of actually being responsible and feeling responsible for its functioning, well-being, and strive towards polish and realization of potential - more often than not, it's one or a few individuals. If it's a large software system, a lot of people have to put in their work as well, but still.

I am occasionally in a situation where I feel more "ownership" towards a software project I have no formal responsibility for than I believe the formal owners do, and find the, to be poor stewards of that software. Not that I have the time to take over for them, but I have the motivation, and it pains me to see them mistreat it and mar it with unworthy merges.

PS - I am not speaking as a supposed "10x engineer".

I agree with you, but in a different directions. Often the software is owned by the company, who are just renting the engineer's labor.
Why shouldn’t there be a continuous range of skill? Why should we want normal engineers instead of you know “good” ones, or even “really good” ones?

Oh and also, it wouldn’t hurt to qualify those skills to the specific domain to which they apply. Like “he’s a really good database engineer” or “he’s a great C# guy, but terrible at DevOps”

These articles are polarizing because they take for original assumption that the real world is discontinuous. That’s stupid.

Let’s praise the engineer that’s in the 2.5x to 7x range.

> It’s a competitive advantage to build an environment where people can be hired for their unique strengths, not their lack of weaknesses; where the emphasis is on composing teams

Wise words for hiring managers.

Sometimes I feel useless compared to other people - usually while I'm struggling with something and seem to be achieving nothing. This talk of xN programmers absolutely hits on all my insecurities.

Then other days I solve 3 problems for other people which are easy for me because I have bashed my head against those particular kinds of walls before. I suddenly feel worthy again.

I'm productive when I know exactly what I'm going to do but getting to that point is hard and looks like I'm doing nothing. I find that people who are more productive than me often just don't hesitate and take all the easy exits that I waste time worrying about. I can't give up on my style because I always feel happier with the result.

Sometimes they're just faster because they're repeating a successful pattern they've used before.

I have often had to fix code written by "reputedly" very productive people and it's not a rule but more than a few times it has been very brittle and unmaintainable.

What I'm saying is that speed is usually NOT magic. It's achieved in a particular way and that is sometimes not good....but you tend to find out later.

Systems tend to ossify over time. Thoughtful solutions to problems usually stand the test of time better than rapid fire solutions. On my team, we often take an extra day to verify and validate design decisions before binding ourselves to them. Yes, some may deliver faster, but developing with intention is the road to sanity in my book.
Thanks for your candor. Your experience is extremely common.

Who benefits from rhetoric about xN programmers? It's about extracting the most value out of you in an unsustainable way. It's shortsighted. If you're going to be productive while maintaining your sanity, it is an uphill battle. This is especially true for people who are especially sensitive to this kind of pressure, and can drive themselves into a wall if they aren't careful.

Yes, I have felt it worse with the kinds of managers who try to drive you by making you feel insecure. They're always making sneaky or not-so-sneaky comparisons.