Hacker News new | past | comments | ask | show | jobs | submit
Programming has five phases effectively:

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.

There's also the economic problem that programmers had until recently been highly regarded because steps 2-3 were hard. "Open source" solved this partially by utilizing the labor such (relatively) well-paid people gave away "for the love of it", but it was not nearly enough to put most out of work.

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.

I'm not concerned. Never in my life have I experienced stakeholders just going "hmm, yes - this is enough software for our purposes - we won't be needing your services any more".

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.

loading story #49197004
loading story #49198047
loading story #49199931
Maybe I'm just old but people talking about being in programming for "status" or to be "highly regarded" really irks me. I'd rather see the entire field burnt to the ground and replaced by robots than to have it become a status profession like lawyering.
loading story #49203215
Having done both, lots of lawyers are also nerds who just like to tinker with the law and words. Often very well paid tinkering, but that's true for programmers as well.
> Having done both [software and law], lots of lawyers are also nerds who just like to tinker with the law and words

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.

loading story #49201922
I don't disagree. You can add medical doctors to the list as well, lots of nerds but also a lot of clout chasers and money-grubbers who couldn't care less about the profession. I don't want to see programming take the same path.
loading story #49200986
I meant it as an euphemism for "it's universally sought after (i.e., you'll probably find a job)". Few would think being a programmer gives you some kind of special "social status"; it's always been a "nerd" hobby that happened to pay (relatively) well.

(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.)

Being a good programmer gives you special social status amongst people who value programming. You only have to look at how people talk about others as slop coders and seek to expand their coding reputations. Those people are the most threatened by AI because of how it implicates their carefully crafted personas as coding gurus and keepers of knowledge.
It also gives you a special social status amongst people who do not understand programming: nobody wants to talk to you, at least not about your job.
Could you elaborate?

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.

The older I get, the more I realize how many problems in society is because there are different "classes" of people. The more we can eschew that, the better it becomes for most people. While yes, I also see myself as having "clearer thinking" than many people , maybe because of the thousands of hours building and maintaining software, I'm not of the impression that my life deserves a higher status than others merely because of this. It's not "they think right and they think wrong", it's just "everyone thinks differently, but it's all valid thinking".
> "everyone thinks differently, but it's all valid thinking"

I don't agree that all thoughts are created equal.

We all should be in the same 'class', but some people will be paid more for a job that takes intelligence or years of study.

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.

> some people will be paid more for a job that takes intelligence or years of study.

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.

We would all die in a week if we went without water, yet water is cheaper per gallon than gasoline or printer ink or perfume. It’s a question of scarcity and supply curves. Water, even clean water, is not particularly scarce if you leverage industrial systems to purify it. Other products require much more complicated supply chains and are produced at a much smaller scale than water, which makes them more rarer and more expensive.

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.

You're explaining how things are but the parent is indicating that's not how things should be.
He's not describing how but why. And at a fundamental level it's something that can't be overcome. If you can only have 10 of one thing, yet can have 5000 of another, and both have even remotely comparable levels of demand/necessity/etc, then the 10 is always going to end up much more valued.

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.

A society with no garbage collected will fall apart much more quickly than one without healthcare.
The basic services that keep us alive (e.g. farmers producing our food) tend to also be "easy" (it is physically demanding, but doesn't require years of study to start and you quickly learn by doing). This also means that the vast majority of people would be able to do this kind of jobs. Our economy pays more for scarcity, i.e. jobs that are in demand and at the same time require more qualification, so that the number of people needed in that position tends to be less than the current amount. Both views have sense, they just start from two different points.
"The basic services that keep us alive (e.g. farmers producing our food) tend to also be "easy""

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.

From having worked with farmers, the actual logistics of running a farm are very complex. Farming's no longer an easy job because the demand for productivity means you have to harness a whole stable of technologies and understand to some degree advanced finances, floral biology, geotechnics, and meteorology. And yet farmers still get paid little relative to the breadth of knowledge and skills required for running a farm. It's just that farming is still considered a blue-collar job because it was the domain of the poorest for millenia, where as software engineering in any form is relatively new and thus specialized and so considered white-collar.
You're right, running now a farm that is profitable and can stay on the market is very different from doing so 200 years ago. But knowledge is just one aspect. The other aspect I mentioned is having less people in the field than what the market asks for. In the specific case of farmers, I think that modern farms are so much more efficient that we need way less than before, even if the world's population grew. So, while there's a gap between the knowledge required and the earnings, I think this can be explained by farms having a much greater output now, and so the market doesn't ask for more farms than what we have. This could be false at a global scale, but I think it is true at a country-level scale in most of the developed countries. Hence why farmers aren't paid much in those countries.
Farmers aren't really paid, they sell goods at market prices. Modern farms are more similar to operating a manufacturing business than they are to a salaried position or profession. They don't earn high incomes compared to white collar professions but they do have high revenues and they pay themselves a reasonable middle class income on average with some added benefits from owning large assets and land. The important part about comparing farmers to programmers is that they are both now operating in highly competitive markets with high automation where a single individual can leverage their knowledge and ability using that automation to produce many times more what a person could using only their own labor.
> Farmers aren't really paid, they sell goods at market prices.

"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.

loading story #49202317
loading story #49200328
Maybe no garbage collection is the back pressure missing from the voracious consumption machine.
I thought it more in the sense of: if a clearer-thinking group has higher status, then clear thinking would be encouraged among the population.

(This did not happen that much, ofc.)

I would not characterize software people as particularly "clear-thinking".. there's a huge buzzing cloud of unexamined cognitive biases and thoughtless herd behavior that swirls around every software organization I've worked for.
I'd even go as far as to say that software people, as a group, are particularly bad at clear thinking. What software people tend to be great at is thinking within a space where the inputs are already clear. But where the inputs start messy, they typically struggle to find clarity more than most others.
It doesn't irk me. But it's really funny how much the industry has changed, and I kind of think the 2008 financial crisis as that point in time.

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....

This. When programming meant you get just a decent enough salary and enjoyed your work, and could prioritize technical excellence it was fun. But once it became a ticket to millionaire status it attracted the kind and of people who would have otherwise gone to Law, Corporate Consulting and the like, technical excellence diluted. Everyone doing everything possible to get their next higher paying job leaving a trail of technical debt behind them.
Well put.

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 could not agree more. Thank you for stating this. Software Engineering is about building things. You don't do it for status, you do it for passion. There are a lot of unhappy individuals who got into CS because of the money or status.
I've never felt like it's a status profession (I don't think anybody has ever been impressed when I told them what my job was other than "oh sounds like it takes a lot of smarts")

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.

loading story #49201493
100% agreed, especially that last line. What I do not understand is why so many people are entirely okay with this change. I'm not interested in working with LLM's and after having been forced to work with LLM's at my current job, I can pretty confidently say that this will not end well for most of these companies. The people in charge pushing for this new tech do not understand the rammifications, nor do they understand the risk they are exposing themselves too. My boss expects more and more productivity with each passing day, while questioning why I'm not using as many tokens each week as he does. The software quality has gone down the drain, and it's beyond tiring that I have to pretend that my boss is just as competent at coding with his slop machine as I am after spending the last decade learning how to code, both as a hobby and for work.

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.

My suspicion is that the people "ok" with this are mostly doing so because they want in on the ride. IE, they see $$$ and they think that they should align themselves to where the money is, especially by espousing their religious faith publicly. I think some people want investment, or a big paid lab job, and so countering the narrative is against that goal. I get it, but I think it's also very annoying and dishonest. Personally I feel nervous being an AI skeptic because it feels like it could have consequences for me, but I also feel like, life isn't worth living if you don't have a spine and I can't get completely on board with all this stuff when I see all the negatives clearly. That doesn't mean it doesn't have a use, but, the current situation and discourse is extremely frustrating.
loading story #49202574
No one knows the ramifications. They won't be known for many years. That's the way software has always worked. No one knew the ramifications of the internet.
1.putting the "mostly" before "incompetent and arrogant asshole" really does nothing. you still called some undefined group of people assholes... i think that's generally uncalled for here on HN. 2.computer that lies might very well be a better programmer. I assume by better you mean it profuces correct and maintainable code, but there are a million ways to cut that cake in particular and i assume you are ignoring most other dimensions. 3. i tought myself coding for 10 years and then switched to professional work 5 years ago. it feels as if this was stolen from us. But its not - we never had any right to own and control this. times are changing, and while you might think you and all other devs have a moral high ground and can pop a can of beer and cheer anytime one of these supposed assholes messes up and would have been better off with a real programmer like yourself, you can do so from whatever new position you will find yourself in. Some part of what we call intelligence is "solved" and that leaves you with percieved morals and broken expectations - nothing more if you don't try to make something out of it. and i write thisw as much for you as i write it for myself to realize.
loading story #49200770
loading story #49197704
This is unfortunately just the result of technological progress. People for centuries have crafted extremely hard to acquire skills over decades only to find their labour being made completely worthless due to automation or better alternatives disrupting their industry.

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.

loading story #49201845
This is a sophomoric oversimplification.

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.

It certainly doesn't feel like craftsmanship has gained any kind of higher social standing in our time though. The Zeitgeist of the modern times seems to be one of 'try to do the cheapest sellable thing while paying people the least possible'.

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.

loading story #49197544
loading story #49198516
> 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.

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.

Craftsmanship exists everywhere and is as they say vastly superior, or at least more capable, than ever.

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.

> I suspect the horses are healthier and stronger than in the 1700s too. I'm not sure I understand your point?

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.

loading story #49197581
"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."

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.

This also happens as taxes and regulations sharply increase over time.

California is a good example.

loading story #49198450
Regular people are somehow preparing themselves for this outcome, have you seen what has become of the fertility rate in most advanced countries?
loading story #49200001
{"deleted":true,"id":49195436,"parent":49194697,"time":1786017311,"type":"comment"}
Until humanity achieves Godhood there's still a lot of work to be done.
loading story #49198693
This is also missing step 6: when your solution breaks in production or needs to be extended.

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.

It's been pretty disheartening to watch SWEs rediscover/reinvent the SDLC.
The most demoralising part of using LLMs is that now I spend most of my day on SDLC - even hobby projects.
>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.

I'm not talking about code quality (though indeed that could be a problem too), I'm talking about understanding the code - having written the code by hand means you don't need to rediscover it from scratch.

(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)

loading story #49202624
loading story #49198386
While that might be true, the more one equips LLMs for building the less one will be capable of keeping LLMs “on a shorter leash with focused goals” in the long run
It's funny, because I would consider myself a tinkerer (and I have a large backlog of pre-LLM programs), but the coding itself isn't the main thing that brings me joy, it's the phase 2 and phase 4 combo: figure out how to solve it, see whether your solution was correct (and actually use the program for its purpose). The actual implementation is extraneous to that.

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).

I'd say, in this analagy, step two is filling in half the numbers by gut feeling, and then three is seeing how wrong the guesses were and actually solving it.
Perhaps I'm uncommon in that I make diagrams and even sometimes pseudo-code (mostly in the form of mapping out function names, because they serve as a proxy for program flow paths) before I write actual code, but I don't find myself really going off gut feeling. I have a pretty good idea of what the program is going to look like and do before I start, and with e.g. Claude I give those to it, so it mostly looks like what I envisioned, unless it suggests changes.
For me, unstructured things (like non-formal diagrams, notes, pseudocode) are close to useless. I much prefer sketching the API surface in code right away and then iterating on it, building abstractions which cut the shapeless thought blob into neat, predictably interacting parts. The code is my notepad and the compiler is with me, every step of the way, catching contradictions and handwavyness.
3 doesn’t matter that much (unless it’s part of 2: new language or new libraries), and that’s why I don’t use LLM for it. Because LLM forces you to pay attention, yes you can have something that works somehow in one go, but the code makes you queasy (too complex for the purpose, or just weird).

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.

The type of problem also makes a massive difference.

- 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.

Here's where the important difference is: unless you actually finished the wordpress thing, or ever had active users etc, it would never have become a maintenance burden. If it's not fun to maintain, I burn it.

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...

It's your vision and you are completely free to have it, obviously, but you should not project it on every tinkerer out there - like you did in your initial message. Yours is actually an extreme position that's probably exacerbated by the digital and immaterial world, where you can accumulate cruft and unfinished projects easily. But many tinkerers, especially in the physical world, do projects to use them personally and not only for the sake of tinkering.

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.

Lots of physical world tinkerers also have a garage or workshop full of uncompleted projects that went from being fun and interesting to boring and abandoned.
> 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. [...] The 5 phases look kind of symmetric. The outermost layer (1 and 5) are the entrepreneurial steps.

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.

Yeah. I enjoy 2-4 most, 1 is the next, and 5 the least. I think the litmus test here is "if you knew could never deliver this to anyone, make money of it, get recognition for it, or even make it solve one of your own problems you have. Would you still be willing to spend time on it?"

If the answer is "no" you are probably more entrepreneurial than tinkerer. But it's a spectrum.

Good test. I would add one more question: "if you could never talk about your code or solutions with anyone, would you still be willing to spend time on it?"

This helps differentiate between coding as an end and coding as a means to socializing.

I enjoy the process of solving problems with LLMs. I understand it's chaotic (what many people call non-deterministic), and that doesn't appeal to some people, but solving problems with statistics is problem solving just the same. Just because medicines don't work with 100% reliability doesn't mean Jonas Salk didn't solve a problem. The same is true with LLM solutions that don't work 100% of the time.

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).

loading story #49199722
LLMs can be very good at 2. Finding the best architecture, data structures, algorithms, looking on arXiv to see other ways to solve the problem, etc.

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.

Looking at your ladder, made me think where I fit in and I mostly enjoy steps 1 and 2. The implementation and shipping are big chores to me. Once I know, half in my head, that the problem is solvable and I could see a path towards implementation I loose motivation to continue.

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.

I really like that categorization, but I think you've missed a step (or several): designing and implementing all the extra stuff needed to make it work, but aren't directly related to the problem.

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.

The thing with programming a computer is that the computer does exactly what you tell it to, so in order to implement something well you need to have a very deep understanding of the problem. And it's that understanding that is valuable.
There are more than two types. Or, at least, more than one way to tinker with the code.

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.

Nice analysis. I really love diving into 2 and 3, but I also notice I'm pretty good at 1; at several companies I kept identifying problems we should address, and also how to address them, though quite often they just wanted me to focus on 3 and 4.

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.

loading story #49200275
That's not a bad model to view it through, but I would say calling them "phases" instead of something like "activities" creates a false reliance on ordering. In many successful programming projects/products, those five activities occurred simultaneously, or out of order, or in waves of progress along all or some activities. Seldom has it ever been a clean single waterfall pass.
This is a really useful framing. I also love step 3 and when I delegate it to an LLM it takes the joy out of my work. But where I've found LLMs most useful is steps 1 and 2. They are terrible at steps 1 and 2 on their own, but they have a massive amount of knowledge that can help. I think a human and an LLM working together here is the best scenario.
> 3) You actually implement the solution.

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.

loading story #49200189
That's actually a great classification and I've never seen it being laid out like that. I guess it can be useful to know "what kind" of programmer one is.
You are obviously missing the GOTO statement in your list but the other part is hobby projects tend to be architecturally small.

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.

Best explanation I’ve seen. I’m an entrepreneur type. I would fall asleep after two hours of coding to solve a problem. I still remember 100 hours of coding to facilitate a data import into a new application only to realize half my time was wasted because the import library we were using back then didn’t support UTF data (this was a SQL-92 database). I love using an LLM to do the coding.
Personally I think I'm a 1-4 type, and I enjoy 2 but 3 is mostly annoying. LLMs are good at 3 and 3 is the worst part of programming. I don't think that's "manager type". 2 is also what LLMs tend to be bad at, especially the small ones, so there's a lot of value I still add to the process.
3.5) You decide what evidence you need to see to convince yourself it works

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

Nice analysis! I would perhaps add that LLMs are pretty helpful at (2) in my experience, as long as you don't turn your brain off. (As a Google/SO replacement, mainly.)

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 agree. If you use the AI for (4), it's pretty much guaranteed to hallucinate whatever it wants and then approve it. For small projects, it might be good enough. For anything serious, it's not.

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.

Regarding (2) figuring out how to do things at a higher level (e.g. the general architecture of an application) is pretty different from figuring out things at a lower level (e.g. how to fill text with a certain gradient in CSS - the stuff where years ago you would have spent hours reading documentation or browsing StackOverflow until you figured it out, if you weren't familiar with the topic). So you could use an LLM just for (2b) and (3) and do the rest yourself.
> the stuff where years ago you would have spent hours reading documentation or browsing StackOverflow until you figured it out, if you weren't familiar with the topic

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.

Ok, maybe you're one of the fortunate ones. With "if you weren't familiar with the topic", I meant the situation where you know what you want to do, but have no idea how exactly to accomplish it. Especially with frameworks, which generally have a quite rigid way to do things, if you're unfamiliar with that, it can take a while until you get anything done, despite good documentation.
Haha Yeah if you do step 1 with AI you risk creating "an AI powered marijuana platform for global AI solutions" (The inevitable South park Reference).

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

I enjoy 2 and 4 the most. I do a lot more hobby projects now that LLMs can automate 3.
i would call myself a tinkerer but still don’t have a necessity for 3)

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)

I might be weird, but I love phases 2 to 5 and I hate phase 1 with a passion. I hate speaking with people to see what their problems are. I want to solve problems, not user surveys. And all the itches I have are either already solved, not itchy enough or too wide / ambitious to approach them solo. If LLMs solved exclusively 1 and told me "this problem is actually valuable, go and solve it", I would be the happiest person in the world. It's not true that ideas are cheap. Or better: ideas themselves are dirty cheap, good ideas are invaluable.
Even if you're entreprenurial, LLMs are useless for this.

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.

Most software work is job related and business related. You are paid to work not to enjoy.

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.

While I agree with the premise that there are Thinkers and Shippers, I reject labeling of tinkerers and entrepreneurial. There's nothing entrepreneurial about working for a big business and shipping cool things.

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.

> Even though it's 5 different phases, it's just "3 layers" of programming.

I'd sharpen this to: it's 3 layers of software engineering (2, 3, 4), and 1 layer of programming (3).