162 comments

[ 2.7 ms ] story [ 216 ms ] thread
> What happened? Well, if you’re an elite lawyer in the modern age, you probably command a large team of lower-tier lawyers, cheap paralegals, and so on, who are very good at using the Internet to look up case law and draft your opinions and so on.

This already happened to programmers. We call these elites some version of tech lead or staff engineer. Maybe even principal, but that feels different still.

Except you can't do a web search on proprietary code within your business, and hosting AI on-premises to model your codebase would likely be a huge waste of money and slower than just telling a real life person what you want.

There has been zero-progress towards AI comprehension, so you can only get out of it what you are already familiar with. The human must always do the mental heavy lifting to tease out a good result, or indeed even know if it's a good result and not just a hallucinated mess.

But programmer salaries already are bimodal, or even trimodal [1].

[1] https://blog.pragmaticengineer.com/software-engineering-sala...

Indeed, programmer salaries even in the Bay Area are bimodal.
That looks like bi-modal to me.
Don't be fooled by the $23k range brackets next to a single bracket lumping in everything $527k+. That bracket is just an aggregation of the same chart trajectory, not another mode.
I can't believe this needs to be said, but the salary data that you're linking to excludes the thousands of Bay Area employers who aren't part of levels.fyi's dataset. Most of the employers in their dataset compete with each other, and pay in the second/higher bimodal curve.
This is correct. This also excludes contractors, which there are tons of in the Bay Area, and they make a lot less than a regular employee, even at places like Google.
Right! This was my first thought. I think the author missed that software is already quite like law in this way.
What change occurred between 1991 and 2000 to explain the emergence of the bimodal distribution? Presumably lawyers have had paralegals for centuries.
The author of this post claims that the Internet happened, enabling easier, cheaper access to law databases, which increased the value that "top tier" lawyers could extract from their paralegals.

> What happened? Well, if you’re an elite lawyer in the modern age, you probably command a large team of lower-tier lawyers, cheap paralegals, and so on, who are very good at using the Internet to look up case law and draft your opinions and so on. In contrast, if you’re an elite lawyer in the year 1990, it’s much more valuable for you specifically to have an encyclopedic knowledge of all the relevant case law, and it’s much harder for you to delegate modular pieces of work off to less competent people.

I think it will be more like airline pilots with the addition of autopilot. Maybe you could write whole services, and networks of services with AI, but you need engineers to be the guiding hand. Engineers will always be better at using AI to build systems than non-developers.

Also, it’s worth pointing out that AI is using existing data. If a new iOS API comes out, the AI will need code bases with it already implemented to be able to train with it.

So in my mind, it will hurt the junior developers doing grunt work more than general devs.

I think no code/low code products are more of a risk to hurting devs than AI.

depending on how advanced this AI will be, it could learn from a few samples and the API docs, possibly itself designed to be optimally consumed by AI. If I knew that AI would consume my custom programming language docs then I would make sure that each API is used once in some kind of sample code so it can give answers to everything. Plus, that's a sensible thing to do anyway.
Even better (or worse), tell your AI/LLM to output sample uses of the project to be training data for other AI/LLM. Probably ends up being a knowledge transfer protocol.
Yeah I was actually thinking that we may see API maintainers publish a lot more sample code with lots of different scenarios for AI to train on.

Similar to how JavaScript libs publish a Typescript type def file for people using Typescript.

Seeding gpt (or using copilot) on snippets of your code is extremely effective. I often paste a function of my codebase before asking code questions, as in: “here is an example of a product class, generate the swagger spec for a user crud api” and it will infer how and even what kind of fields our user class has, without having seen it.
Additionally, I would expect that AIs wouldn't fare as well in situations where footguns abound, specialization is high, and there's a much smaller body of code to learn from — think things like hardware drivers written in C or C++ or embedded firmware with restricted resources, which is much less forgiving than e.g. CRUD web app backend written in Python.
What does LLM mean?
Large Language Model – the generic term for AIs like ChatGPT
Yeah I'd never heard LLM, and I know what ChatGPT is and read hacker news pretty much every day.

Just as an example for future writers – one line at the beginning of the piece explaining the acronym and using the ChatGPT example would go a long way.

There is a lot of doom and gloom about programming and AI.

However, let me talk about something to be excited for.

I am really excited about LLMs taking the drudgery out of programming. There are many times what I have a project in mind that I want to do, but there is a lot of boilerplate (writing configurations, or writing tests, etc) that I have to do and slows me down or for personal projects even keeps me from doing them. However, if I have an AI assistant that I can assign all the drudgery to, and I can focus on the interesting work, I feel that my creativity can really be unleashed.

I am most excited to see the results of this in games. Right now, to produce a AAA game is a lot of work and requires massive teams (if only for the art assets). However, I can see a future where once again a single programmer can write very compelling games (and even have the AI generate the art assets for the game based on the programmer's vision).

I personally am looking forward to the future.

I share this excitement as well.

Currently, designing or changing systems involves quite a bit of careful thought since you have to keep all the constraints in your mind and reason about how the system would work. If tools existed to create implementations based on these designs, that would be pretty amazing.

Additionally: Being able to quickly iterate on designs that translate quickly into working systems will encourage more experimentation among people who might otherwise have been turned off by the amount of technical skills required to implement designs.

I think it will be the opposite - it will take all fun out of programming and leave just the mess around connecting different interfaces and making them work reliably in a single product, i.e. debugging with nobody having the internal knowledge how the system actually works.
I feel like this is something that people said when they started using compilers instead of manually writing assembly.
Back in those times you had more competent managers though, now the decision to generate code using AI will be made by some clueless PHB and people will be only needed to glue fragments together without actually designing the most interesting parts.
What if it works in the opposite way? You write the drudgery, the AI can handle everything else?

Lots of assumptions all around.

I'm going to be the optimist here and instead of AI killing engineering jobs it's going to turn most engineers into much better engineers and what tech company doesn't want a whole bunch of better engineers? Building applications right now is time intensive, it takes years to build products, months to build features, and maybe we change it to be weeks and days instead, respectively. Maybe it's all just upside.
Speed of feature is less compelling than quality. There is a saying about EHRs, that they propagate error at the speed of light. Likewise speeding up feature accrual seems as if all the worst ideas will be implemented first as the best ones need time to think through and acculturate.

On the other hand, if the models can be Atkinson-like and produce -2000 lines of code [0], that is a day to which I would look forward.

0. https://www.folklore.org/StoryView.py?story=Negative_2000_Li...

I wouldn’t underestimate the ability to iterate on fully finished features quickly, if you have to operate with end users. Closing a feedback loop can lead to threshold effects.
That'd be great if true. Human nature being what it is, chances are good that the ill thought out and in retrospect harmful will be deployed just as faster than "fully finished" as they are now.

Could that be iterated? Can a half baked release ever become whole or does progress just slow down and stretch out exponentially? 1/2 + 1/4 + 1/8 + ...

Will be grateful and relieved when proven wrong.

Yeah, I think my point is more that this makes it possible to iterate quicker while maintaining quality, which might be beneficial. Of course if you are working in a team that cares about the result (and the business does too), then iteration is always a win.
>Building applications right now is time intensive, it takes years to build products, months to build features, and maybe we change it to be weeks and days instead, respectively.

You want to increase churn? Are you insane?

I feel like if you poll computer / phone users (ie., the vast majority of the population) one of the most annoying things users hate about modern devices are mandatory updates, like the infamous meme video where someone screams at their window machine updating. Now, you want to make it easier for middle managers to push new unneeded updates so they can pad their resumes, how absurd.

I think people are more impressed than they should be because of a misconception about what programmers really do.

For most big software projects the bottleneck is not writing code and test boilerplate that runs correctly locally. Which of course LLMs can do reasonably well. Most time is spent on design, on integrations with other internal services, scaling concerns, and reasoning about other things that these models can't really reason about yet.

I'm obvious impressed that these models can generate simple client/server websites and generate code to solve competitive programming problems. But I don't think they've "solved" software engineering; they've only solved "what you boss thinks software engineering is".

> But I don't think they've "solved" software engineering; they've only solved "what you boss thinks software engineering is".

That's still bad, though, because your boss makes hiring and salary decisions.

Maybe in the end it's a kind of "great filter" - companies and bosses that can't tell the difference don't survive. But a lot of good programmers can get fired before the clueless bosses die off...

That's capitalism. After you get fired, if you can still produce useful labor there will ideally be more employers waiting; you can freelance if your visa situation allows it; or you can start your own business and outcompete.

The cause of the inefficiency and "great filter" you're describing is the labor protectionism currently in the U.S.

Theoretically a good programmer has arbitrage via their skills and expertise. If you can get things done people will pay you for it, assuming you're allowed to work (in the U.S., EU, etc.).

Theoretically rarely beats ignorance in practice though. Software engineers in aggregate think and act like they’re working in a meritocracy (we aren’t) and this gives even more leverage to management and owners. It’s one of the big reasons engineer salaries right now aren’t as high as they otherwise would be.
(comment deleted)
> Software engineers in aggregate think and act like they’re working in a meritocracy (we aren’t)

What is it really? Just an industry plagued by nepotism?

>they've only solved "what you boss thinks software engineering is".

Which is why bosses are excited but engineers are not, because subpar LLMs will be used to justify firing actual engineers and replace them with fresh college grads tasked to work with a code bot, because the bosses fundamentally think that is enough.

Then those projects will fail and they won't do that anymore. Or they'll succeed and engineers will have to find harder problems to solve.

If a new grad + LLM can do task X about as well as an experienced engineer can, then the experienced engineer will have to find other harder problems to solve. Personally I think labor efficiency is good; why waste your labor on easy/solved problems?

> then the experienced engineer will have to find other harder problems to solve.

The experienced engineer also gets an LLM though

> The experienced engineer also gets an LLM though

Say experienced engineer Edna was working on a project and the new grad Nelson replaced her because he was cheaper and about as good if both have LLMs, i.e.,

Edna + LLM ≈ Nelson + LLM

even though

Edna >> Nelson.

So Edna needs to find a project to work on where LLMs don't equalize her arbitrage, i.e.,

Edna + LLM >> Nelson + LLM

and Nelson needs one where

Nelson + LLM >> LLM.

My contention is "how do you determine if someone was 'as good'?" Very likely the people in the position to make a decision will not be qualified enough to even make that decision. IF (and really only if) such a determination is possible, then sure, I agree, find harder problems etc, but I assert that people will not make that determination (which is close to impossible to make) well, if at all because that wasn't the point in the first place.
Project succeeds = good.

Project fails = bad.

If a bunch of projects given to NG + LLM fail, the company will say at some point "this is no good, let's not do that anymore". If they mostly succeed, they'll do it more.

From a middle manager's perspective, where they're funding 10-20 projects, this kind of measurement is feasible and carries at least some signal. So I don't agree it's difficult to measure.

Well, if that works, then it works! But if it doesn't (and I'm in the "I don't think it will" camp), then we'll know in less than a year or so.

I actually don't relate to this "bosses don't know what software engineering is" thing at all. All my bosses are older-school engineers-turned-management who are more skeptical of this than the young'uns.

What I want is an AI that can do static analysis of code and report defects that traditional static analysis couldn't hope to detect.

I suspect that detecting errors that way will be a part of training non-terrible code generators. But with the added benefit of being useful to human programmers as well.

The other day I pasted chatgpt some code that I wanted it to add functionality to and it pointed out a bug in that code first (without me asking it to do that)
Just a word of note, this was the intent all along. The thing that stings is you trained your replacement.
What replacement? When "AI" can code decently, it will already have replaced Excel and Powerpoint workers, and middle managers sitting in pointless meetings.
[flagged]
As much as you’re shitposting, I agree.

I worked my fingers to the bone for years before breaking into cushy software. Shit changes, I can change. We have to, or die.

No LLM is gonna have the upper hand on me and my bag, because I’m gonna have the upper hand on it. Simple as.

Why is your tone harsh?
wow, i would dare to say that this is a writing level of GPT-2 :-)
Best comment I’ve read in a while. The last sentence was the cherry on the cake. I had a good time reading it, thanks!
> If you lot are so deathly afraid of a tool taking over your job

Not at all! You'll be sorely disappointed if you do actually get rid of the humans that you pay to solve your problems.

> so we are not beholden to a bunch of overpaid pampered prima donnas

They bring the logic into existence because you couldn't.

So yes, you are beholden to them, because you are latching on to them, feeding off them like a parasite.

> Whose job a program can do ... Good riddance.

A program made by who? Trained on who? ;)

And you are definitely speaking too soon... let's try "no code" one more time!

The reality of today is you still need us to solve your many problems...

Thanks for saying the quiet part out loud though.

You really think that it won't be the pampered prima donnas who won't use an AI which is trained on your code but just like chatgpt outputs nonsense to replace you?
(comment deleted)
AI/ML will solve some great problems, many that are critical. Similar to how Wix solves your basic webpage for the average person. Does Wix solve anything for your typical enterprise or SAAS app? Even if it did, would these institutions not manage to add a new layer to the layer cake?

It's kind of been one of my main critiques of companies like Palantir. You really can't just dump a company's data into the big ML tumbler and expect useful/sellable products to just pop out. Take a random use case like, I don't know, Pepsi. Maybe Pepsi can get some insights about their supply chain and customer preferences. Alright? Okay. Did the world end because that happened? Not really.

Shifting gears back to programmers - AI will be a super smart programmer that will write a bunch of your code. I worked with some super smart programmers, and they can manage to write a lot of super smart code that eventually becomes a clusterfuck too.

We'll just go from unwrapping human shit code, to unwrapping AI shit code (or even better, unwrapping a mix of human shit and AI shit). The job prospects here are even greater than you imagine.

Long as you maintain the belief in the fundamental truth, that anything in existence is capable of writing shit code, then the world will never end for programmers.

Sometimes though we shouldn't have the AI write the code first.

So many times, I look over things people copy and pasted piece by piece from blogs and stackoverflow, when if they thought about it for 5 minutes, they'd realize a simpler implementation would have worked and been easier to write in the end. AI, if chatgpt is any indication, is moving toward overly flowerly and long prose while telling lies, that is stuff that looks "impressive" at a glance like the large ornate class hiearchies of java and c++ in the 90s looked but are things that could be done in a shell script.

I am worried then that like stackoverflow, AI will make a generation of developers who are extremely lazy and not critically thinking, just like stackoverflow did, and leave more of a mess for us to pick up after. Of course, in the midst of this, management won't know the difference. Just like chatgpt sounding impressive as it tells falsehoods, AI-code will look impressive to fools.

Yeah I think LLMs are really amazing and I'm open minded about how they can contribute to the craft of creating software. I've played around with these for generating code and it's very cool how much can be done.

BUT. Honestly I just see a lot of code review and refactoring of shitty AI-generated code in my future. And I think people who lean on this heavily are going to struggle to progress... Just like when I get the whiff of code copied verbatim from SO, it's going to put a sour taste in my mouth when I get a series of reviews with a bunch of poorly factored AI generated code.

But maybe it's more likely that old fogeys like me with our backwards beliefs are not long for this world. But I dunno, I haven't yet been replaced by the hordes of actual humans crowdsourcing this on SO, so color me a bit skeptical!

> I am worried then that like stackoverflow, AI will make a generation of developers who are extremely lazy and not critically thinking

If you take someone already hard working and able to think critically, with enough time and practice they can grow into being a decent developer. The learning resources they have available don't determine their long term work ethic or bar for quality.

The author doesn’t understand the reason for the bimodal distribution of attorney compensation. If you look at a distribution of salaries overall, they are not smooth. There will be small peaks at round numbers, $60k, $70k, 80k, etc., rather than a smooth curve from 60->80. People like round numbers.

The top peak in the law is due to human bias just the same.

>Just like how a partner at Cravath likely sketches an outline of how they want to approach a particular case and swarms of largely replaceable lawyers fill in the details…

Except those “replaceable” attorneys at Cravath are the top peak of the distribution. The distribution is caused by social decisions of what firms to compete with. Top salary information is well-publicized and firms who want to be in the category of “BigLaw” basically match each other.

The lower peak of the distribution is more local attorneys. Your local estate law attorney, government workers like district attorneys/public defenders, etc. who are not competing with Cravath for talent or clients.

I would assume this is already what exists in programming with “BigTech” salaries being equivalently publicized and matched across firms concerned with being perceived to be a “FAANG+”. If it doesn’t, I would guess the reason is that not enough positions actually exist in “BigTech” to make a significant blip on a population-wide salary graph. BigLaw attorneys exist in almost every medium-large city in the US, but you can’t say the same about BigTech programmers.

Law is extreme because you have people who went to a relative handful of law schools, clerked for federal court justices including SCOTUS, and work at white shoe big city law firms (like Cravath)--and everyone else. Yes, senior partners make more than junior partners make more than associates at those firms but it's also sort of up or out (and the out associates tend to move on to other things).

And then there are the, as you say, local attorneys doing routine real estate transactions or whatever. Which tend to be pretty middling compensation generally.

The story isn't quite that neat of course. Big company in-house counsels tend to be reasonably well compensated professional jobs and there are successful owners/partners of local law practices but there's a pretty good bimodal narrative in general.

You can imagine why there might be a modality for people who can land jobs at specific tech companies that pay outsized salaries because they're so profitable and can afford to be very selective based on (they hope) relevant criteria but it's certainly based on less clear metrics if nothing else.

> went to a relative handful of law schools, clerked for federal court justices including SCOTUS, and work at white shoe big city law firms

This is the "not what you know, it's WHO you know" pattern. I imagine it's likely to accelerate. It'll still be important to go to the right university and pay expensive tuition - probably even MORE important - but you'll be able to have AI do most of the tedious, irrelevant academic side while you focus on the very important business of going to parties with the right people.

It does seem to me a lawyer's pedigree is as important as the types of arguments they bring to the case.

I imagine this bias exists because law schools are a dime a dozen, and lawyers have created another form of gatekeeping to augment their licensing rules.

At the partner level of big firms, law is at least as much about signing clients as it is doing legal work.
Agreed. I was entering the law field around 2001. 1) During 1990's, silicon valley startups started poaching talented lawyers from west coast law firms. 2) To combat this, some top west coast law firms raised their salaries to retain talent. 3) At the same time, junior lawyers in NYC and CA starting sharing salary information on Internet message boards. 4) Almost over night, top NYC law firms raised their salaries to match the CA salaries. 5) So the bimodal distribution was formed from the "top" law firms all match each other's salaries.
There is research [1] that suggests using GPS navigation could impact your brain function negatively. I wonder how this code generation “assistant” will impact the coding skills of its users in long term.

As for the LLMs, stochastic parroting (hallucination), which is inherent to its design, makes it untrustworthy for precision work. Maybe some other architecture will prove more useful. LLMs can generate BS authoritatively which is easy to detect for toy examples and forgivable by the AI hype train but can be very costly or hard to fix in a complex system with a lot of moving parts.

I’m actually optimistic about the future of AI. At the same time I believe we should know the capabilities and understand the limitations of our tools in order to use them more effectively. Unfortunately people are misunderstanding tools like ChatGPT, etc. for we are human and vulnerable to anthropomorphism.

1. https://www.nature.com/articles/ncomms14652

>people misunderstand and anthropomorphize LLMs

I agree but there is a certain "god of the gaps" process that's happening here.

To me what's been achieved so far is encoding text into natural (and programming) languages. These models can't reason and e.g., can't pass a Turing test. For example, if you play with GPT-3 or ChatGPT enough you can definitely get it to fail on a task a human would succeed at.

When models so far have achieved "reasoning" behavior, usually it's in conjunction with a classical algorithm -- for example AlphaZero used a model to evaluate chess positions but then ran a tree search algorithm to decide what move to play.

I think if LLMs can be combined effectively with some kind of computation process like in AlphaZero or some kind of "chains of thought" [1], then we might see them do things we'd truly call "reasoning".

Some "gaps" have been (1) "(encoding into) images is hard" (2) "(encoding into) natural language is hard" and now (3) "'reasoning' is hard" and afterwards (4) "subjective experience is hard".

Whether to be optimistic or pessimistic about AI depends on the final "gap" -- whether there is an irreplicable/noncomputable/etc. property of human consciousness other than qualia. That is, if "understanding" is hard (e.g., via some voodoo like [2]). If not humans will become obsolete, so I hope the answer is yes.

[1]: https://ai.googleblog.com/2022/05/language-models-perform-re...

[2]: https://en.m.wikipedia.org/wiki/Orchestrated_objective_reduc...

I wonder how this code generation “assistant” will impact the coding skills of its users in long term.

My brain is already negatively impacted having to juggle 3 separate package managers, know the syntax and inputs for 17+ different dotfiles in a repo and then actively context switch between at least 3-4 languages on a daily basis. I counted it up recently and I've built products in at least 20 languages over the past two+ decades. At some point you really just can't effectively compartmentalize it all and context switch perfectly. I try by using different fonts+colors per lang etc but it still is hard. AI has been a net win for syntax recall just by giving it gentle nudges towards intent.

On the contrary, I'd argue all the switching probably kept you sharp
I sincerely doubt it, humans are historically poor at multitasking, being able to focus on solving problems at an architectural and algorithmic level requires concentration - not having to worry about some bull crap DevOps cloud formation nonsense.
I didn’t mean just any negative impact like getting tired from context switching or feeling exhausted because the workload is high.

What I meant was: Will you lose it if you don’t use it?

Maybe you won’t, I am not certain. Or maybe you will and you don’t see it now because the “net win for syntax recall just by giving it gentle nudges towards intent” relies on your hard earned ability to understand the code which is gained partly through exercise. You’ve already done your exercise.

I wouldn’t form an opinion just yet. For now we can ask the questions.

Edit: wording of the first sentence for clarity

But losing it may free up resources to gain other things. Like how "losing" assembly skills allowed people to dedicate more capability to higher-level approaches.
Sure that could happen. Nothing against that. But I am not fully confident. As a counter example, we have ORMs. They bring value but I have seen enough devs who are too reliant on it and don’t develop a good understanding of how the underlying database behaves. This could be actually detrimental to the work.

Maybe we will have a mixed result similar to ORM example. It can lower the barriers to entry, which is good, but won’t eliminate the need for deep expertise. At least initially.

Why are you touching 17 different dotfiles on a regular basis to require knowing their syntax/inputs ?

I've done a similar number of platform jumping but I honestly don't remember when I've used more than 3 or 4 at the same time. Like I was really into Clojure for ~1 year back around ~2010 - if you put me on a clojure project I'd be lost for a month. I wouldn't need to get over LISP and functional programming mindset again but the details are lost.

At this point I rarely see big paradigm shifts and it's just picking up the details + connecting with things I already know. I've outsourced remembering details to Google :)

Interesting research but I don't really see any reflections on "GPS navigation could impact your brain function negatively" there
I mean "generate BS authoritatively" seems fairly similar to "fake it till you make it".. Some people writing code now generate BS authoritatively, some don't.
I just tried ChatGPT today after weeks of hype on Twitter, and I was surprised to NOT be impressed?

First I tried it on a bunch of programming topics -- it definitely gets in the right ballpark, but then the details are frequently wrong.

I asked which languages have the F# |> operator, and it told me that OCaml, Elixir, Haskell and Scala do. 2 of them are correct, and 2 appeared wrong, so I googled it.

After Googling, then I asked it specifically if Haskell does, and it says no. I ask it if Scala does, and it apologizes for its earlier mistake.

It gave me a good although slightly shallow answer about how PyPy works, but then fell down hard for a prolog type checker, and a few other programming queries. It doesn't understand the question.

---

It is generally very mealy-mouthed and vague. It often doesn't answer the question directly, but just tells you what it happens to know in the ballpark.

I like another framing I saw on Twitter -- it's "mansplaining as a service". If you want someone to confidently explain things you didn't really ask about, and be frequently wrong, that's kinda what it does!!

---

After programming, I asked it about Black Sabbath, UFC, travel and biking, health, and got similarly vague/slightly incorrect answers.

It confabulates A LOT.

The best I can say is that Google is filled with spam now, so chatting with ChatGPT was a relatively fun and focused experience, after I took into account the fact that it is not "honest" and just trying to "please me" with closely related words.

I honestly don't get the hype, and I feel like there must have been some coordinated marketing aimed at me ...

If this chat is representative of what it can do for programming, then I think this article saying that "programmer salaries will be affected by LLM" is very weird.

It is assuming something that simply has NOT happened!

---

I mean even Geoff Hinton (who I respect) said several years ago that "we should stop training radiologists", and that plainly did not happen. Likewise with Elon and the fleet of self-driving taxis.

I'd honestly be surprised if someone wants to argue that a tech company staffed with LLMs + a few smart people is NOT like those predictions. Of course the blog post doesn't give a time frame, so it can't be falsified. But it appears to be nonsense.

(FWIW it doesn't matter to me personally, as I left the industry several years ago. Also FWIW I did work a little bit on deep learning, when the hype was in its upswing.)

I agree that a lot of it is anthropomorphism -- projecting some kind of intelligence, knowledge, or intention on what is really a big, expensive bag of data organized to respond to inputs.

Maybe there are other models that are better, but I was really, honestly not impressed with ChatGPT. Maybe people were hyping it too much for the last several weeks, and inflated my expectations.

expectations are interesting things... i was impressed with chatgpt, though not blown away as it's simply the latest in a chain of increasingly impressive research demos. substantially though my experience was the same as yours, though perhaps i'm more forgiving (haskell does have a reverse function application operator, just using a different symbol, and you can get |> in scala via a commonly-used library).

i guess one difference might be that i also tried a variety of tasks where confabulation was called for, like making up games and getting it to play them with me.

all of this certainly does seem farther from productizability than the optimists admit... it tantalizingly 'almost works' in so many domains, but despite the rate of progress, its not obvious at all to me that it will soon converging on the reliability which is necessary for robust application.

playing with the tech in more creative areas has certainly expanded my mind as to what is and what may become possible, and i think this is true of the general reaction as well... it's the flashes of strangeness and potential, the weird use cases like simulated command lines and ascii art games, the cat-and-mouse of prompt injection... not hard to let your imagination run wild... depending on how much disbelief you're willing to suspend.

That vibes with the images from what I saw with Dall-E. The rendering/styling was superb, however, the logic and scene understanding were toddler-like.

Still impressive, but if you had a picture with dogs sometimes a dog head would be pasted on top at the wrong angle. Confabulation is a great term for it IMHO.

That's basically right, AI of the type we're discussing has high technical ability like ability to draw and make grammatically correct sentences, without understanding the higher level structure of what it's doing. A bit like an enthusiastic teenager.

But I can't see how people aren't impressed, we couldn't do this a few years ago, and surely we will build on top of this in coming years.

I tried it without reading anything about it and I freaked out about losing my job. Then I tried it for any practical programming and realised it was no immediate threat at least and I calmed down abit.
Yes, I too have found it to be completely unreliable when it comes to specifics. However, I've been finding it really helpful in a few areas:

- taking point form, or messy notes, and converting it to full sentences/paragraphs. Useful for things like writing blurbs, longer emails, proposals. Naturally, it does veer towards cliche, so you kind of have to massage it back after.

- getting a bash script started in the right direction. I'm always fuzzy on bash syntax because I don't use it all the time. ChatGPT will usually screw up some details, but those can be fixed

- getting a general overview of a new topic area like a new software library, or say a historical period

This is not what it's good at at all. Not sure why people expect this to be it's forte.

It's like a really smart sheep dog or a junior junior carpenter. It's currently helping me refactor a .NET app to a trending pattern, not because it know how to do that exactly or which pattern is better, but because it doesn't tire out at the "boring" parts like I do, and it knows the difference (most of time) between IQueryable and ISomething that I just can't bother to google for the Nth time.

I asked ChatGPT if it wrote this ^ comment, and it claimed that yes, it did. For the record, I don't believe it.
I hate the AI hype. It ruins the fun. People always respond in the same way.
> for we are human and vulnerable to anthropomorphism.

Stop anthropomorphizing computers, they hate that!

Cupcakes and clouds feel them same. Stop excluding them!
Most programmers wish to be stupid. They willingly embrace philosophies predicated on their inability to be conscious and learn.

Goddamn do I hate this industry. I work hard to sow dissent in my blue-chip, VC startup though. Guerrilla tactics. And I get to do it raking in a quarter mil a year in my underwear.

It's a real struggle, the company I work for was just bought out by a megacorp (in the top 1,000 in the world by employee count, and most posters here would recognize their name) and the sheer lack of motivation to learn of many of the devs both at the acquired company and the acquiring company is staggering. Really basic stuff like "instead of package management let's pass DLLs around over email/Slack/wherever and then complain about all the time we have to spend debugging because of version mismatches." It's like they intentionally make things harder on themselves through willful ignorance.
> There is research [1] that suggests using GPS navigation could impact your brain function negatively.

Wrong, that research only shows that when you use a GPS, you don't learn routes as quickly. That is only equal to "impacts brain function negatively" in a narrow sense, which you should specify rather than use such a broad and scary-sounding phrase!

> … could impact your brain function negatively.

Brain function being negatively impacted is not scary on its own and not necessarily permanent.

I didn’t mean to scare you. It’s likely you are confusing the above phrase with “your brain will be altered forever” which is not what it means.

Who said I was scared? I'm just pointing out that the phrase you used it very vague and some interpretations can be scary. It pays to be specific, especially in tech and medicine, you know? Winkyface.
> As for the LLMs, stochastic parroting (hallucination), which is inherent to its design, makes it untrustworthy for precision work.

To be fair, this could be said of a surprising number of the developers I've interviewed too, and I checked -- they were hired by someone.

> There is research [1] that suggests using GPS navigation could impact your brain function negatively. I wonder how this code generation “assistant” will impact the coding skills of its users in long term.

I wonder how code completion and syntax highlighting have altered the brains of programmers negatively as well.

Have you never seen a project where exactly one use of a term is mistyped across whole project? Guess what tool is responsible for that.

Also there's distinct project structure difference between users of tree style project navigation vs find-anywhere or editor tabs vs modal windows/buffers. I mean, the influence is not negative, at least not obviously, but the deformation is there.

Engineers create value - making them more efficient at their work generally creates more opportunity for work.

Lawyers are an unfortunate necessity that extract value from society. Making them more efficient at their work (hopefully) creates less opportunity for work.

I disagree with these generalizations.

You could just as easily say that engineers work to exploit and otherwise harm people, and lawyers work to protect people from exploitation and other harm.

This type of attitude displays a common blind spot of many engineers. Manipulating human social systems to achieve a specific result is harder, and at the end of the day probably more important than manipulating computer systems. Software engineers have a tendency to think "well if only everyone would just act exactly so and so none of this would be a problem! So it's obviously everyone elses fault for acting wrongly.", and they refuse to accept that politics, law, sales, management, and all the rest are completely 100% necessary and that not a single complex dynamic human interactive system is ever going to just do whatever they think it should do as a matter of moral obviousness.
This seems tangential? Engineering and law aren't the only exemplars of these categories, there are lots of fields where the marginal problems to solve are interesting verses uninteresting, they were just contrasting the two in the article. For example, more productive artists usually leads to more experimentation and weirder artwork; more doctors usually leads to more specialization and advanced knowledge; more VC money for crypto projects usually leads to more Ponzi schemes; etc, etc
Comment here seem to largely miss the point of the article, which isn't saying that nobody will employ software engineers. It is saying that instead of the current model of:

1 very highly compensated staff+ engineer

4 highly compensated senior engineers

4 pretty well-compensated mid-level engineers

2 decently compensated junior engineers

The future might look like:

1 yet-more-highly-compensated staff+ engineer who specializes in architecture

10 decently compensated junior engineers who specialize in error-checking LLMs and detail-intensive technical work

In the same way that paralegals aren't unskilled people, and aren't paid terribly -- but they aren't doing the same job as the partner-level lawyer who's crafting the legal strategy, and they don't have a simple clean progression to eventually getting his job.

you're probably right (and thanks for breaking it down), but it's more fun to engage in doom porn!
How about

10 highly compensated middle managers and their staff who convinced the c suite to fire the senior engineers because of an AI article they read

2 poorly compensated junior developers with an AI bot replacing a 10 person team, who will get canned when SHTF so the 10 middle managers can jump ship to the next company with a padded resume. There are also 10 people because the middle managers got their friends positions from the savings due to the firing of the old engineers.

Not cynical enough.

How about

C suite to fire the senior engineers because a tier-1 consultancy convinces them they can deliver their product utilizing AI tools

Said consultancy knows AI can't deliver it, and uses mostly manual labor for it

All programmers end up at these consultancies

And the world keeps going as it thinks AI is solving everything, but it isn't. It's still Kumar in IT that's ssh'ing into the box.

A team with "1 yet-more-highly-compensated staff+ engineer" would also have a pipeline of people one step below that for progression. Usually people who are "yet-more-highly-compensated" are not easy to poach and don't tend to change their job. You have to develop them internally. E.g. most DEs and Fellows in tech companies rose through the ranks over decades. It's very hard to hire a DE from the job market.

The unintuitive thing about software engineering is that low-level implementation and high-level architecture are both equally sensitive to quality of talent (and equally impact your product quality and business outcomes) because every line of code is a business decision. That's a big reason why even entry-level SWE talent costs so much. There is no paralegal-level work in software - it's been automated away.

My issue with this is that I have never, and I mean never, met a good software architect that wasn't also extremely good at the nuts-and-bolts of coding. I mean, I've interviewed people who called themselves software "architects" who could barely code a for loop, and these people are generally pretty useless beyond churning out PowerPoint diagrams.

I feel like this idea that you can have a software architect that just corrales a bunch of lowly code monkeys is a model that was invented by some MBA, or IBM (sorry to dig at IBM, there are some brilliant folks there but also some folks that for the life of me I can't figure out what they could be doing day-to-day). Will something like ChatGPT make this a viable model? Potentially, but I doubt it. If anything, I think it would be more difficult for a junior-level programmer to point out the subtle bugs that ChatGPT produces.

Like most software innovations in the past, I think that code generative AI will essentially lead to a Jensen's paradox for software - it will allow existing skilled programmers to just write more code, thus lowering the overall cost of code, leading to more demand.

Also the average pay still went up. Doesn't seem that bad a future.
Industries need the hierarchical treadmill of juniors moving up to mid moving up to senior and so on in order to populate the top level. People can't just start there. The idea of 1 staff+ engineer and 10 juniors will only work if businesses are happy with people moving from junior straight to staff+. That seems unlikely to me.
If that's what it's saying then it's just like every other blog post or Tik Tok video from someone clueless person who's never worked in tech.

10 to 1 juniors to "senior" would have any "senior" quitting on day 1. Even 2 juniors will takes up > 50% of a seniors time to corral. 10 of them would be like a mob of people all screaming at you.

Add into that mix an AI chatbot spitting out partially incorrect stuff to all 10 of these juniors that is completely unworkable.

It's missing a third group: the ML researchers developing the LLM. I'm not sure what the best analogy in the legal world is - the politicians writing the laws?
Humans have trouble error checking each other's code. Imagine an army of devs who are expected to read and error check a machine. It's an absolute nightmare and fits the literal definition of bullshit job. But if it pays someone will do it. I dont know how one would hire an army of these sad folk though.
This post is way to bullish on ChatGPT for coding, and underestimates how big the gap is between ChatGPT and a mid level FANG eng. ChatGPT is very impressive in what it can do, but if you deviate problem statements even a little bit from what it's seen before, it completely fails.

Just an example try asking it to write Battleship in Python. It does very well. But then, try changing the rules a bit, and adding some requirements. It spits out code that looks correct if you squint, but has terrible style, and often doesn't even work. Check out the test prompt [1].

Maybe GPT-4 is 1000x better at coding, but barring that, I don't see ChatGPT being useful as a replacement for human coders.

[1] Prompt: Write a version of Battleship with modified rules for sinking a ship. In this version, a ship is sunk when the "head" and "tail" of the ship (its beginning and end parts) are hit. Hits to the center do not matter. Use object oriented programming, with classes for the Board and for Ships. There should be support for multiple ships and two board instances. Write it in Python.

You're expecting way too much.

Have it give you a list of functions needed to write battleship.

Then have it write the classes.

Then set the rules.

Then have it write a GUI etc.

You'll have a much more successful encounter that way.

I beg to differ with the author’s perception ..in all it’s glory I don’t think L7 or principals or even software managers will have a reasonable chance of surviving. Because it is quite possible that agents built on LLM and AGI will be perfectly capable of not only arguing with each other and weigh on the pros and cons of any given option and arrive at a consensus just like the current Principals or managers do their negotiation, it is also quite possible they will be able to assign task and track the progress as well as take remediation action when needed. All these can be handled by advanced agents to a very large part. It is also possible to see teams of these AI agents working together in a cooperative way and surprising us with the outcome. Good luck !!
This sounds more like a sci-fi AI bot than the current route that AI research is going. How do you even get the training data or build a simulation for an agent like this...
Just ask chatGPT anything you would ask a principal or a manager and you maybe surprised about how coherent the answer is. I don’t think the training data is that exotic and may be already there , the agents are continuously learning.
"LLM and AGI"

Feels like the three letters A-G-I are doing a lot of heavy lifting there

Chatgpt has been pretty transformative to my programming, probably surpassing the only other thing coming close of really leveraging powerful ides like IntelliJ. It can generate all the scaffolding I need by just inputting a couple of sketches of Plantuml or even just markdown lists. I can build tools, unit tests, test data, fuzz harnesses, admin uis, dashboards, all within a few hours. I can transform a couple of words into very legible documentation. If you seed it with just a couple of lines of your own code and setup, it’s able to usually build stuff that matches the style of the codebase. It’s broken and wrong 80% of the time, but in a way that I can fix within a few minutes.

This leaves me with 4h of high quality thinking and programming time instead of 1. It means I can try out 3 different approaches with full tooling instead of 1. It means I can build a whole terraform for aws and gcp and bare iron in 30 minutes.

The fact that I can build solid tools and a full slurry of unit tests and end up with 4x time in my day is just blowing my mind. The quality of my software has tremendously gone up despite using something that mostly outputs broken code.

May I ask how you're getting ChatGPT to be reliable enough as a service to get these results? I had a similar experience the first week, but now most times I try it is overloaded and inaccessible, and when it's not the hourly rate limiter makes it difficult to be very productive.
Using the api is better.
There's an API for ChatGPT? Or are you using the GPT-3 / Codex API?
I haven’t had too many issues. I must admit I use the api and copilot a lot.
When I read that kinds of comments I always immediately wonder what people are writing that needs so much scaffolding.

And then I remember my workplace's official architecture... that made my team a huge success case by refusing to follow it.

Of those things you listed that you use it on, only test data need to take some non-trivial amount of time.

I work in e-commerce/retail. So it’s things like: - storybook stories to cover all cases of ui configuration - tooling to create reports/import/export of different csv formats - api endpoints, validating incoming data, instrumentation for monitoring - every action and error gets logged as an event for auditing

Overall the part of the codebase that is not some kind of scaffolding is like, computing taxes on an order item or something like that. The rest is just shuffling data around and ensuring it is tracked and validated properly.

It’s tempting to be clever and devise a killer tool that allows you to write a single data declaration and derive all the rest but that rarely survives an encounter with the real world.

I would love to see a screencast of this kind of workflow. Honestly I can't quite imagine what it looks like.
It's possible making coding easier will make salaries go up.

https://en.wikipedia.org/wiki/Jevons_paradox

I suspect we're about to enter a world where AI supercharges the average engineer's productivity, which is going to make it so that so much more stuff can be built. Using Copilot, the time to build a prototype for a simple app or API drops by a big multiple. Things that would take a week of work can be tried out in a weekend. Super cool future.
If I did search & replace on this article, replacing “programmer” with “manager”, would the conclusions and reasoning be much different (regardless of whether they’re spot on or not)?
I think this makes assumptions about the demand for software engineers that seem unproven. Law salaries are bimodal because the demand for lawyers is limited, so there's only so many big law firms that can exist. In the near future, at least, it seems like demand for software engineers far outstrips supply and I think this will stay true in the long run because the market for software engineers is just different from the market for lawyers, in that software engineers can work on a multitude of different industries (faang covers personal devices, social media, entertainment, e-commerce, search, and more).

I think the real concern is for when the rate of new startups decreases, because I view startups as basically the tech industry's way for searching for ways to increase the overall size of the pie, and startups slowing down means demand for software engineers will start to stagnate.

> it seems like demand for software engineers far outstrips supply

Definitely not the case when layoff right now is in full force. Also this doesn't necessarily indicate high salary anyway. There is a huge demand for fruit picker, but due to the nature of economy and margin of business, the salary will stay deflated thus the shortage persists. In a high interests, no free money environment, will software firms still able to demonstrate ability to generate return for investors? That would the ultimate key for whether the high salary is going to sustain or disappear.

Regardless, I think this article has a point. We might be as well observing the end of the golden era for software engineers. LLM is a long-term salary oppressor, but in short term, simple dynamics of economy would test the market sufficiently.

doomer take but tbh i respect it. but the central thesis of the tech industry is that it allows for products to be created with very low marginal cost which facilitates the high returns and if that thesis turns out to no longer be true then i would say that the identity of the tech industry has irrevocably changed.
This is very doom and gloom compared to the actual landscape in law. Yeah entry level salaries suck in law, but plenty of decent lawyers who are nothing special end up billing 200 an hour 6 years into their career and taking their 40% of that. While outside of big law is not paying what it used to it is still an upper middle class profession if you stick it out.