8 ms·
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 s
by alkonaut 2mo ago
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.
- fhd2 2mo agoNice 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.
- alkonaut 2mo agoHaha 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 https://www.youtube.com/watch?v=G8fapIDnrMI
- rob74 2mo agoRegarding (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.
- skydhash 2mo ago> 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.
- rob74 2mo agoOk, 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.
- wccrawford 2mo agoI 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.
- ricardobayes 2mo agoThat'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.
- ang_cire 2mo agoIt'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).
- mibsl 2mo agoI'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.
- ang_cire 2mo agoPerhaps 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.
- mibsl 2mo agoFor 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.
- skydhash 2mo ago3 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.
- aleph_minus_one 2mo ago> 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.
- alkonaut 2mo agoYeah. 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.
- gghackernewsgg 2mo agoGood 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.
- ACS_Solver 2mo ago> 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?". Yes, but I think there's really two different definitions of point 1. It's "figure out what non-software problem you can solve with software" vs "figure out what technical problem to solve". As the tinkering type, I also find 1 very rewarding but using the latter definition. Exploring a sizable code base and finding the part that, if simplified, cascades to a lot more simplification, that's very exciting. Figuring out what problem some companies or people have that could be solved? Very hard, very unexciting, not rewarding.
- kkoncevicius 2mo agoLooking 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.
- curtisblaine 2mo agoI 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.
- Applejinx 2mo agoEven 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.
- shiomiru 2mo agoThere'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.
- kypro 2mo agoThis 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.
- Dban1 2mo agoUntil humanity achieves Godhood there's still a lot of work to be done.
- iainmerrick 2mo agoI 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.
- xp3ll3d 2mo agoI like that 3.1 being Yak shaving. Getting so deep into the fun of implementing, that you're playing and challenging yourself with more and more deeper aspects to what you're doing. Losing the forest for the trees and forgetting that you're here trying to eventually solve for 1&5
- easyThrowaway 2mo agoThe 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.
- alkonaut 2mo agoHere'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...
- darkwater 2mo agoIt'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.
- SoftTalker 2mo agoLots 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.
- mcv 2mo agoNice 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.
- suprfnk 2mo ago> 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).
- historical1234 2mo ago[flagged]
- mosura 2mo agoYou 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.
- doginasuit 2mo agoThis 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.
- criley2 2mo agoWhile 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.
- c0rruptbytes 2mo agoi 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)
- dv_dt 2mo agoThat'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.
- Nextgrid 2mo agoThis 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.
- stackghost 2mo ago>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.
- olzhasar 2mo agoWhile 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
- Nextgrid 2mo agoI'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)
- Bewelge 2mo agoTo be fair though: "That code is horrible! Who the hell wrote this?!" git blames sees their own name Isn't that an experience everybody makes? For me it was like a year into working professionally. And I feel it's part of being a professional to know that you're not going to remember it in the long term and therefore provide proper documentation of why you did what.
- riddlemethat 2mo agoBest 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.
- randusername 2mo ago3.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
- FeepingCreature 2mo agoPersonally 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.
- killerstorm 2mo agoThere 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.
- hastily3114 2mo agoI enjoy 2 and 4 the most. I do a lot more hobby projects now that LLMs can automate 3.
- yunwal 2mo agoI 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).
- aravpanwar 2mo agoI don't think that should be an issue either way, especially if it is not production code and just a hobby thing.
- yunwal 2mo agoAre you saying something being reliable is not a big deal? I'm sort of confused
- thesz 2mo ago> The same is true with LLM solutions that don't work 100% of the time. In my experience, about one of ten LLM suggestions during code review is important and valid. Nine of ten are either unimportant or not valid. Yet, I have to read them and rule them out. Also in my experience, having my colleagues do root cause analysis (RCA) with LLM brings to me invalid RCAs which I have to rule out, instead of working on finding true RCA. I saw part of documentary about Charlie Abrahams, son of Jim Abrahams. Charlie had epileptic seizures as a child, hundredths a day. In the documentary, Charlie's doctor said that no drug in his experience worked as fast as ketogenic diet (seizures stopped in three days) and as reliably as ketogenic diet (works on more than 80% of people). When he was asked why he did not applied ketogenic diet, he said there still were drug options to try. "Medicines do not work 100% of time," my bald cranium.
- yunwal 2mo ago
- threethirtytwo 2mo agoMost 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.
- jobigoud 2mo agoLLMs 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.
- dzonga 2mo ago> 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.
- seanw444 2mo agoMany entrepreneurial types will just market the shit out of unmaintainable messes fast enough to IPO so they can get their bag all the same.
- z3t4 2mo agoThe 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.
- tines 2mo agoI have always thought that there are two kinds of programmer, the tinker and the mathematician. The tinker likes to code operating systems and shells, the mathematician likes to code Haskell and Agda. You've updated my belief that there are a third kind, the entrepreneur, which sees programming as a means to an end and would gladly stop programming if possible.
- polyterative 2mo agoI love programming.I have been doing it nonstop for the last ten years. I'm immensely happy of being able of increasing the scope of my projects a hundredfold. I am very happy of being able to ship ten major projects in my lifetime instead of only one.
- Isogash 2mo agoTIL I'm a 1-5 kind of person. I enjoy solving problems, but I also enjoy finding problems and seeing the solutions being used successfully.