I agree that it has some resemblance, but the striking thing about NP-complete problems is that an efficient solution to any of them is an efficient solution to all of them, which makes it worth trying exceptionally hard to find one.
It could be that whatever lackluster expertise you can squeeze out of an LLM is good enough to discourage investment in the real thing since unlike NP-complete problems, expertise isn't generalizable.
Agreed. But there is a new dynamic coming to place. Who can execute faster now that we have AIs? I think the combination of (Good SWE using AIs) collaborating with (Domain Expert using AIs) is the winning team. Things are accelerating on all fronts, the frontier may be jagged but AIs is making progress on all capabilites.
Domain expertise is hard but not that hard compared to the insane mental discipline required to write efficient scalable code.
Not all code has to be efficient scalable code. I know some domain experts that were not programmers. They picked up enough Python or Swift + UIKit (this was pre-LLMs) and their applications are now widely used in their domain. In some cases, they contracted some software companies in the past to do the work. However, they did not understand the problem domain well, requiring the domain expert to iterate with them over and over. In the end it was more efficient to let the domain expert to learn enough programming do it with some guidance from experienced programmers.
Also remember that a lot of domain-specific apps do not need to be huge. E.g. I was once at a factory in the 90ies and they needed to do time-consuming calculations for a particular expensive machine. So, someone who worked at the factory wrote a small program in Excel + I think VBA. This accelerated their work extremely and probably saved them 10,000s or 100,000s in manual labor. It was easy for a non-programmer to write, because they knew all the details of the machine and the calculations, since they had done it over and over again. But it's not a enterprise web app or anything and it does not matter if the program runs in 1 or 4 seconds.
By the way, I also consider efficiency to be a specific knowledge domain, or architecting a very large project. So in the end it really depends on how narrow or wide your definition of 'programming' or 'coding' is.
Right. If you're spending your time among developers to whom the code part is second nature, the differentiating thing becomes domain knowledge. If you spend your time among people of that domain who have no coding skill, to them it will appear to be the opposite.
I think there is some prestige factor in the background too. Being seen like some kind of code monkey is to be avoided like the plague. Business people really don't value the math savant engineer nerd archetype who just codes and codes.
Highest prestige is always taste and judgment, not correctness and skill. This is why people will also talk about how business soft skills, communication etc are more important than hard skills like programming, math, etc. I think one should be careful with this. On the one hand it's true that career progression is quite dependent on soft social skills, but there are also really hard kinds of software jobs where cognitive horsepower and technical experience are absolutely crucial and soft skills won't save you.
> Domain expertise is hard but not that hard compared to the insane mental discipline required to write efficient scalable code
"efficient scalable code" is just as vague as good code. How are you going to know your code is scalable if you don't understand your domain? Scalability is not something you sprinkle onto code.
Are you kidding me. What has domain got to do with efficiency and scalability.
Efficiency is about using minimum cpu cycles or minimum memory or minimum network round trip or more generically using minimum/optimum resources to get something done.
Scalability is about minimizing bottlenecks and linear scaling so one can just copy and execute by adding more nodes/resources and expect correctness and increased throughput.
Both of these have nothing to do with domain expertise.
To be fair, I'd consider hard-core scalability/reliability software engineering skills to be their very own speciality domain.
But I'd also claim that these things fall on a spectrum. At the extreme end we have exchanges and HFT-like trading systems, where absolute accuracy and latency are not even constraints but industry fundamentals. At the other end we have "toy" applications that handle tens of requests per second, tops.
Scalability problems are definitely near the extreme end. Only instead of raw latency, you get to deal with complex failure modes, throughput, capacity problems, read amplification and thundering herds... all the while being constrained by available CPU cycles and bounded memory.
> Scalability is about minimizing bottlenecks and linear scaling so one can just copy and execute by adding more nodes/resources and expect correctness and increased throughput.
Yes, technically, but note that this entire thing can be anything from crucial to completely worthless depending on the domain.
You need insane scalability for a social network or a streaming service, you don’t need any real scalability for (completely made up) managing a fleet of airplanes or the internal logistics of a zoo.
> Efficiency is about using minimum cpu cycles or minimum memory or minimum network round trip or more generically using minimum/optimum resources to get something done.
No profitable business wants to pay you for writing code that uses "a minimum" of a resource. It wants to pay you to find the right balance between resource usage, time-to-market, operating cost, code complexity and probably several other factors.
"So the most valuable person in this new world is the one who has both skills because they can verify at both layers. They know the generated code is sound and they know the answers it produces are true."
This has always been true since the dawn of programming.
Whole TFA doesn’t take into account reason why software development was actually so valuable.
Single specialist in any domain is not that valuable. You may charge $200 for hour of his time sure. But to grow company you now need N specialists.
What software was doing was not making specialist obsolete replacing a specialist by encoding his knowledge - well many tried to do so but failed even in 80’s “expert systems”.
What software was doing was making it possible to structure specialist work, make it possible for a single specialist to serve more customers at the same time, make it possible to hand over work in a structured way to junior specialists, making it easier for senior to take over edge cases and spot check work of those junior specialists.
This setup allows company to not being tied to number of specialists to grow, this setup allows company to charge less per customer but take over more of the market share.
Whole premise that now each specialist will waste time dabbling in AI software development is ludicrous, especially if each specialist would be building his own tooling somehow.
That sounds more like the extractive setup of corporations like IBM, where return/specialist must be maximized against the number of clients that can be juggled simultaneously.
Whereas in larger technology firms, yes that happens to some degree, but only with the highest level specialists such as PEs, fellows, etc.
They are already so wildly profitable and valuable by the simple nature of computing itself: it scales second only to money with regards to compounding effects. Once you have software someone can use, it scales near infinitely to more users, thus value is extracted from the work of a single specialist for all time. No need to complicate it with trying to abstract work juniors can do (and fail) and then have seniors correct. What would they be doing in non-extractive firms?
Yes, but most people (especially a large portion on HN and Reddit) do not internalize it.
A SWE who has always worked in DevTooling companies will always be preferred by DevTooling companies over a generalist. A SWE who has always worked in AdTech will always be preferred by AdTech companies over a generalist. etc etc.
Software fundamentals - though useful - are table stakes skills at this point. No business wants to deal with the headache of on-ramping employees who have never worked in a specific domain or industry because it takes too long for a generalist employee to build the intuition needed to understand that segment of the industry.
> Software fundamentals - though useful - are table stakes skills at this point.
I'm having a difficult time even seeing what we're talking about here. I see "seniors" in our industry that don't know what I would call the fundamentals of programming or software development; apparently not all fundamentals are created equal.
And therefore there will be a huge knowledge gap as companies refuse to hire anyone who hasn't worked in the field for 5+ years and people who want to work in that field but haven't don't get hired.
Not really. Most people continue to remain in a specific domain from their internship days, and professional networks develop.
Historically, startups were the traditional path for a generalist to build domain expertise because most startups couldn't be picky with talent, but the market has changed.
In all honesty, too much fat did develop in the tech industry over the last 6 years. Traditional hiring pipelines (eg. Limiting early career recruiting to grads from top 10-20 CS/ECE/EECS programs nationally along with Vets and some grads from decent regional programs) still net good calibre talent worth their weight in gold, but others just aren't working out.
I'm afraid you appear to be contradicting yourself by saying internship in one comment and stating that companies don't bother with onboarding employees with no knowledge in a previous comment.
An internship is fine for onboarding becuase you aren't paying a FT employee level salary or benefits, and expectations are your hire is still learning but has some aptitude or interest in becoming a domain expert.
On the other hand, hiring a mid-career SWE who spent much of their career in one domain who is transitioning to another is a significant risk without additional social proof such as referrals where someone actually vouches for their skills.
> No business wants to deal with the headache of on-ramping employees who have never worked in a specific domain or industry…
The usual sickness. If you don’t train people to become specialists and just expect them to fall from the sky, it’s only a question of time until you run out of specialists.
The tech industry is significantly larger now than it was a decade ago. Large self-sufficient talent pools of SWEs, Designers, PMs, PMMs, and SEs/AEs exist for most subsegments of tech now.
Additionally, limiting early career hiring to to T10/20 CE/CS/ECE/EECS programs (they tend to graduate around 10K students a year), veterans (they tend to have the "can-do" and fast learning mindset needed), and a couple regional schools is more than enough to build a self-sustaining early career pipeline for just about any segment of tech indefinitely.
Idiots watch Iron Man come flying and think US can steamroll Russia.
Iran alone is beating the shit out of US. Thinking it can steamroll Russia is not even funny. Some serious epidemic of Hollywood syndrome permeates the US.
US is not a technologically advanced army just the most expensive one. Centralized systems are not technologically advanced systems. Iran's distributed architecture makes it technically advanced than US not to mention hypersonics which is a technology US doesn't have.
The 'superior' distributed architecture you hyped failed to capture even one of the two individuals in their territory, and failed to a non-distributed centralized world spanning synchronized architecture. I was simply pointing out your superior model failed. The model you hyped has no military benefit, it only serves to act as 'terror cells'. In this case lobing missiles at civilian shipping/civilian infrastructure in neighboring countries.
The important information was the US was able to rescue their people, loss of equipment doesn't matter. When we removed Bin Laden we lost an helicopter. Equipment loses that don't degrade our capabilities don't matter to the US.
There were ZERO American casualties in an operation in Iran, where the USA basically setup their own airfield, and Iranian forces tried to engage.
Nuclear armed nations with the most expensive military controlling massive logistics supply route attacked and lost the war and were forced to escalate to nuclear detonation and then to ceasefire talks.
Buddy. That is not how winning looks like.
If casualty count is your criteria, then Soviet Union was defeated in world war 2 according to you.
If you think distributed architecture is about rescuing a bunch of people, then clearly you haven't done any serious work in your life. Go write some code and build some distributed systems.
Christopher Hitchens. His impact on me is so powerful that for the last 4 years I have my ringtone and sms alert tone set to him saying "There are no final solutions. There is no absolute truth"
reply