1) You figure out what problem to solve.
2) You figure out HOW to solve the problem.
3) You actually implement the solution.
4) You see the solution work, for yourself.
5) You ship/deploy/publish the program. This means you see people be happy users and/or you get paid for it and so on.
If you're an entrepreneur type, you probably enjoy the first and last steps most, and you see steps 2-4 as mostly a chore. If you're a tinkerer, you don't care much for 1 and 5, and you see 2-4 as the whole point of programming. I'm a tinkerer. I'd be happy to just write code and throw it away. Coding is like solving sudokus. I could skip steps 1 and 5 forever. I don't ever need to show any code to anyone. In fact, most of the time when programming I do steps 2 and 3 and even skip 4. I don't even finish! I work weeks on something until I lose interest, and I know that in order to even run it, it would be several more weeks. A PoC is enough. Or just a half one. It's just code-to-structure-thoughts, not to create anything finished.
The 5 phases look kind of symmetric. The outermost layer (1 and 5) are the entrepreneurial steps. If you're a product owner or CEO, you might work strictly at steps 1,5. Then steps 2-4 are the managerial/architectural steps. If you're a very senior IC at a large company, you might work at this level, without actually doing much coding. Only the inner most step (3) is the manual creation of source code. Even though it's 5 different phases, it's just "3 layers" of programming.
The problem as I see it is that I enjoy step 3. And LLMs are good at step 3 almost exclusively. So they just pick the best bit of this dish, and leave me with the rest.
If you're an entrepreneurial type, the LLM appears to take the _worst_ bit of the work from you. Great.
Now there is a plagiarism machine built on top of decades of this work that seemingly solves 3 and promises to solve 2 (badly, but usually this matters little), the programmers that (indirectly) helped build it are told they're fools for doing so, and threatened by losing their status if they don't adapt to the "entrepreneurial way" (well, the full promise is "you'll lose it anyway, but if you cooperate in stuffing sama's pockets then maybe you get to keep it a bit longer").
So what really surprises me is not that people are upset but that so few are.
There's always another feature that can be implemented or a new problem to be solved. Tools only ever accelerated the pace at which we were able to follow this insatiable hunger for more software.
Right now people are getting fired left and right because all the money that used to be spent on staff now goes to build more data centers and also because cutting corporate expenses is in vogue now.
This too shall pass and with demographics as they are and young people getting discouraged from pursuing this field I believe long term my position is safe.
Also a huge chunk of what AI company CEOs say is just pure bullshit that they only say because they need that sweet, sweet investor money. Bullshit writes a check that eventually must be cashed.
Having also done both: In legal drafting work, there's less systematic pre-release testing before the equivalent of a "program" is loosed upon the world. There's not much in the way of counterparts to software unit testing and regression testing, in part because legal-drafting clients can be vociferous in demanding that their lawyers keep costs down.
Lawyers who like to tinker with words can fuck things up more often and at greater scale — e.g., by inflicting compulsory burdens and costs on others — than can most programmers. That includes, e.g., contract drafters and litigation counsel, plus lobbyists trying to influence draft legislation and regulations.
I'm not-infrequently dismayed by the quality of the contracts I review for clients because of the "tinkering with words" by the lawyers on the other side of the deal. Back when I did IP litigation, I was sometimes likewise dismayed by the bullshit arguments that some lawyers felt free to make in their court papers because what the hell, the worst that can happen is almost never more than the judge just saying "no." And as mostly a law professor these days, I review court opinions all the time and am regularly amazed how judges (and their law clerks, such as Rayiner used to be) can be so patient in responding to such arguments.
(I guess by now you have a solid retirement plan; maybe if the field had been burnt to the ground while you were younger, you'd have had a different opinion.)
I think back in the 90s when I was a teenager I thought it to be a good thing that there is a rise in status for a class of people characterized by clear thinking.
I don't agree that all thoughts are created equal.
The older I get, I realize some people never change, will always have the same backwards or harmful thinking, and I avoid them instead of just accepting it.
Sadly, it seems so, even if the effects of the jobs on daily life differ a great deal sometimes. The world would succumb faster if we had no garbage collectors, yet they get less pay than a programmer who the world could easily survive without? Makes no sense to me.
The skills necessary to develop efficient and effective software are much more scarce than those needed to remove trash, or pick crops, or provide elder care. That’s why the former is paid so much more.
Even take some sort of idealized anarcho-communal society. Imagine two people have a dispute and threaten to leave over it. One's a highly skilled doctor, and the other's a garbage collector. Our equal society's going to suddenly become just as unequal as any other simply because the doctor leaving would have a much greater negative effect than the garbage collector. And that reality would permeate in the day-to-day happenings, creating classes even in an idealized classless society.
The reason you think that is that you know nothing about agriculture. But it isn't true. Right now, farmers in the US grow about 5x as much food per acre as farmers in other countries. If you were in charge of farming in the US, that surplus would likely disappear in a single season. You would also likely damage the soil which would make cleaning up after you take 4-6 years.
Everyone thinks things they know nothing about are easy. But they rarely are.
PS This is why I never tell people I'm a programmer. I don't want to be associated with people who think like you.
"Programmers aren't really paid, they sell services at market prices." — I guess nobody gets paid?
As a farmer myself, when I give someone something I produced and they give me back something in return, I consider myself to be paid. If I did not receive much value in return for what I gave, I'd reasonably consider myself to have not been paid well. I have never met a farmer that would consider that usage unusual. Payment refers to a transaction within the realm of a human activity. The good or service that is being traded between humans is immaterial. While you are free to define words as you see fit, your assertion doesn't really reflect how this is actually used in practice, generally. The rest of the earlier comment makes it clear that the commenter understands how a farm business works.
(This did not happen that much, ofc.)
It's also funny to me to think that computer science got to be a trendy degree, vs the small programs back when I went to university, even at a top comp-sci school.
I have a theory that a lot of people who would have normally gone to Wall Street for their lucrative jobs, couldn't, because of the crash, and Sillicon Vally was about to start booming in big ways....
We need to make lawyering more like programming, in the sense that it should be open to the everyman... not make programming credentialed and licensed like a professional guild.
I do notice a lot of HN commenters seem to think that programmers are smug though, like we deserve to be knocked down a peg. I personally don't see it, but I also try not to work with jerks.
It is upsetting to see our work stolen and our livelihoods threatened by a group of (mostly) incompetent, arrogant assholes who are convinced that the "computer that lies" is somehow a better programmer than the programmers it stole knowledge from. I've already started looking for a way out of this industry, and I'm genuinely worried for the fall-out this will have for the tech industry and the economy as a whole.
Carpenters, hatters, cobblers, miners, weavers, calculators, etc...
We can get mad about it, but it just is what it is. Ultimately for most people the loss of these jobs are a net-benefit because it's the result of better or cheaper alternatives.
The thing that worries me more specifically about AI is that it has the potential not to just disrupt an industry, or handful of industries, but in theory everything.
If machines are faster, strong, and more intelligent than humans, then you don't need human workers for anything. In the same way machines suddenly becoming faster and stronger than horses meant that the role of the horse in labour dropped rapidly during the industrial revolution.
It's not clear how civilisation functions if humans become effectively useless and the only thing of value is one's ownership of wealth producing assets.
Still, there's really no point in thinking about how we stop this. Humans are humans and we'll do the stupid thing then try to deal with the consequences after the fact. All regular people should be doing now is prepping for this outcome.
The US and Europe might have lost a lot of craftsmanship knowledge at a social level. Yet, what is left is so far ahead of what has ever existed in countries in South America for example. And China has gained a lot. Witness that youtuber trying to make grill brushes in the US. These differences have an impact in terms of opportunities and competition.
It's easy to sit at home, watch documentaries and picture history progressing along logical lines and imagine that the "industrial revolution" was this massive shift from craftsmanship to automation. Look closer and you'll see that what happened in the UK in the 1700s was in fact enabled by a long and deep tradition of craftsmanship that only got enriched by the rise of new power sources. Craftsmanship today is vastly more advanced than it ever was before industry.
And there is a lot to lose in the decline of craftsmanship, and it is by no means some sort of historical inevitability.
When you really start digging deep into history you realize most arguments of logical trends therein are mostly just misconceptions.
Real craftsmanship, the kind that leaves you in awe and feels like an exceptional display of human capacity, seems to be relegated, from my point of view, to a minority of well-off hobbyists who are already free from work and can do what they want without worrying about paying bills.
I suspect the horses are healthier and stronger than in the 1700s too. I'm not sure I understand your point?
I'd agree that the niche of extremely high quality, bespoke craftsmanship still exists, and that in some cases jobs were augmented by technology rather than entirely replaced, but the point still stands that the work these people used to do has been automated and disrupted by technology.
The fact some people upskilled or reskilled as a response is analogous to coders today. All I'd question is the extent of the disruption we'll see as a result of AI – I worry that this time things will change much more quickly and there may not be plenty of other jobs for people to upskill / reskill in to.
But if that's not true then perhaps whatever software engineering exists in the future will be far more complex than what software engineers have done for the last few decades.
Every random business has some machine that puts caps on bottles or something, and these things are ridiculously better designed, engineered, and fabricated than ever before, because the knowledge and tools available to the designer and fabricator are better than ever before.
You are surrounded by things that are insanely well made by all previous standards. Even the crappy stuff that you don't think of as well-made, because it is junk compared to everything else, still has many aspects that are almost magic.
Horses? I doubt it. They're still infamously fragile creatures today, even with penicillin and vaccinations existing; similarly for strength, not much call for shires and they're now on an "at risk" conservation list: https://en.wikipedia.org/wiki/Shire_horse -> https://www.rbst.org.uk/watchlist-breed/shire-horse/
Possibly also fewer horses in total, though I don't know any stats for that far back and may be over-estimating based on the stats I do have for c. 1900.
You can get a hint of this by looking at the developing countries with high income inequality. Few rich people who typically own all the countries wealth (and access to it's natural resources) while everyone else lives in a slum.
California is a good example.
Having done step 2 & 3 by hand is the difference between being able to fix/extend it quickly with no further damage or fumbling around like an idiot and sometimes breaking more stuff in the process.
Plenty of shitty spaghetti code has been written by human hands.
LLMs can write good, maintainable code too, but they need to be kept on a shorter leash with focused goals.
(with human-written code I can reach out to the person who wrote it and let them deal with it, and they will have the understanding of said code, even if it is bad by quality measures. With LLMs there is nobody who understands said code, regardless of its quality)
To carry forward the sudoku analogy, I care about figuring out which numbers go where, and whether I was correct, I don't care about the mechanical part of actually penciling-in the answers (coding).
So I do 3 because coding is like writing English for me (which is my 3rd language). I don’t care much for it, because it’s neither hard no easy. It’s just mechanical.
- Writing my tiny hobby gameboy emulator? Heck, Why I'd let Claude take away the fun part of implementing new features and then see Super Mario Land start and run step by step?
- Debugging why a legacy Wordpress store with more than 50 active plugins is returning an error 500 just to some random customers? Claude can 100% take the wheel, I'm good.
For me, the reason I don't have that is because I never ship anything. I never want to maintain that. I never cared about solving an _actual_ business problem, making a dollar, or pleasing a user. As a tinkerer I must be extremely careful not to end up completing or delivering anything. Only pain lies down that path...
Many tinkerer projects in the physical world are actually maintenance work of physical appliances that are not working anymore as expected or can be extended to do more or better things.
Even if you deeply into tinkering, 1 can be an insanely exciting and rewarding step: for example "how could an abstraction look like in which 2-4 become trivial special cases for many classes of programming problems?".
In my opinion the difference between "entrepreneur type" and "programmer type" (and yes: it can happen that both of these types work in the reciprocal job) is rather:
- People of the programmer type see solving problems as their primary goal. Satisfying customers just serves the purpose that these people pay money so that they can continue working on solving problems.
- People of the entrepreneur see satisfying customers as their primary goal. Programming is just a means to an end.
If the answer is "no" you are probably more entrepreneurial than tinkerer. But it's a spectrum.
This helps differentiate between coding as an end and coding as a means to socializing.
I think most people will come around to this way of thinking once the pro-LLMers stop pretending like the statistics don't exist too (i.e. that ML is the solution to any problem, despite how unreliable it is).
You have to work in design mode and stop it from pissing code. Describe the requirements as detailed as possible and refine them based on the responses. It's quite rewarding and helps structure the way you think about the problem.
So possibly there are other classes of people, not just either enterpreneur or thinkerer. Thou not sure what this combination is, maybe something more like R&D.
And LLMs give a lot of value here. They allow to quickly do steps 2-3 - "hard and tedious" stuff - to confirm that the thing, in fact, became solvable.
For example, you have an idea for a cool and useful app and you want to put it on a website. You need to figure out hosting, you need to write some copy, you need to do some visual design.
Maybe 3a) Yak shaving?
There are various ways to take shortcuts. For hosting, you can use something super easy like GitHub Pages or Netlify or Cloudflare, or maybe piggyback off an existing site that's already deployed. For both copy and visual design, you can just ask Claude or Codex to do it -- but only if you don't mind having that standard vibe-coded look and feel, all glowing gradients and punchy, mic-dropping text.
Maybe you're including that under 5), ship/deploy/publish, but I read that as being more about scaling, marketing, and making things robust. Even before you reach that stage there's always a bunch of bullshit to work through before you can even reach 4), seeing the solution work for yourself.
Just like aleph_minus_one, I like to tinker at a higher level: find a more general way to solve things, find a new way to structure abstractions, etc.
> "how could an abstraction look like in which 2-4 become trivial special cases for many classes of programming problems?".
If you're interested in abstractions, you need to understand the problem space itself, not just a specific instance of the problem.
Currently I'm in the process of starting my own business solving a problem my last employer underestimated, and I find myself focusing much more on 1 and 5, which I also enjoy, and I use LLMs a lot for 3 and parts of 2. The LLM and I often disagree about 2, but that often results in a better solution than if I'd just trusted either myself or the LLM. I iterate a lot between 2 and 4, letting the LLM do almost the entirety of 3, and advising on 2.
even for an entrepreneur type - you need to understand the technology to get to good enough solution e.g if you don't know shit & just accepted what the llm gave you - u might end up with an unmaintainable mess. the llm might recommend you use some proprietary solution when an open source solution exists that works well for your use case.
plus llms tend to be wordy or make things complex more than necessary.
The moment you have more devs architecture becomes the overwhelming concern, and this is why professionally LLM usage explodes since the LLMs can implement bits while the humans work on the actual hard work of making sure they fit together properly in the intended way.
I have encountered a lot of people that view coding as a therapeutic exercise, and they were already a problem pre AI wave, now they are only going to be a hobby at least.
6) You maintain the program with architectural gymnastics as time eats away at the utility and relevance and user base of what you originally built
Both of these activities cause a night-and-day perspective change the next time through the loop
I have about three modes, working with LLMs:
A) Just use them for (2), do (3) and (4) myself.
B) Just use them for (2) and (3), but with very fine grained instructions - to the point where it barely saves me time.
C) Use them for (2), (3) and (4), but with this workflow, it quickly degrades into slop for me.
I still get the best results with (A), but for a quick PoC, (C) is hard to beat.
What's hilarious (or sad) is that I see a lot of people throw them at (1) as well, which seems to have a high chance of inducing AI psychosis and creating software nobody understands, let alone needs.
I find I get the best results when I just use it for (3), and sometimes a bit for (2). Going in with at least an idea of how to make it work has the best chance of ending up with a good changeset. And if you already know how to make it work, don't leave it to chance. Tell the LLM what to do, then let it do it.
Why is it always hours to consult docs? I find most answers within minutes (including if I have to read code) and it’s only take a bit longer when I want to understand the why’s.
The key is to make sure you have the right questions. I see people struggle with that where they only know something wrong but they can’t put it in words.
it’s more akin to 3d printing to me, i get the design all setup and let the machine do 3) and then get to play with it in 4)
You can't go really hard unless you can come up with something people weren't expecting, but when they discover it they want it. You can't just sit around waiting for people to want things properly. That's extremely passive.
The point being, the idea of using LLMs to find what people already passively want is itself flawed, even if you like marketing and selling to people. It's a really fundamental problem with the idea.
Because of this the future of software will most likely be overtaken by AI because the business aspect of it will overtake the enjoyment aspect of it. Why? Because business pays bills, enjoyment does not.
The fact that you are talking about lack of enjoyment on the job is a luxury not many employees can afford.
But you're ultimately right, some people want to solve sudokus and some people want to change the world, and the sudoku solvers are really upset that a Sudoku Solver and World Changer 9000 device is widely available, because it spoils the fun they have with sudoku.
I'd sharpen this to: it's 3 layers of software engineering (2, 3, 4), and 1 layer of programming (3).