6 ms·
I think it's probably the difference between "code" and "programming". An LLM can produce code and if you're willing to surrender to the LLMs version of whateve
by abxyz 2y ago
I think it's probably the difference between "code" and "programming". An LLM can produce code and if you're willing to surrender to the LLMs version of whatever it is you ask for, then you can have a great and productive time. If you're opinionated about programming, LLMs fall short. Most people (software engineers, developers, whatever) are not "programmers" they're "coders" which is why they have a positive impression of LLMs: they produce code, LLMs produce code... so LLMs can do a lot of their work for them.
Coders used to be more productive by using libraries (e.g: don't write your own function for finding the intersection of arrays, use intersection from Lodash) whereas now libraries have been replaced by LLMs. Programmers laughed at the absurdity of left-pad[1] ("why use a dependency for 16 lines of code?") whereas coders thought left-pad was great ("why write 16 lines of code myself?").
If you think about code as a means to an end, and focus on the end, you'll get much closer to the magical experience you see spoken about on Twitter, because their acceptance criteria is "good enough" not "right". Of course, if you're a programmer who cares about the artistry of programming, that feels like a betrayal.
[1] https://en.wikipedia.org/wiki/Npm_left-pad_incident https://en.wikipedia.org/wiki/Npm_left-pad_incident
- beezlewax 2y agoI'm waiting for artisan programming to become a thing.
- pydry 2y agoArtisanal code has been a thing for a long while. If we're the luddite artisans, LLMs seem to represent the knitting frames which replaced their higher quality work with vastly cheaper, far crappier merchandise. There is a historical rhyme here.
- ReptileMan 2y agoYou didn't had to spend time debugging a peace of cloth, and the cloth defects are obvious
- pydry 2y agoThere's a lot of code out there written for people who are far more concerned with cost and speed than quality - analogous to the "fast fashion" consumer segment. Ive worked on all sorts of code bases filled to the brim with bugs which end users just worked around or ignored or didnt even encounter. Pre-product market fit startups, boring crappy CRUD for routine admin, etc. It was horrible shit for end users and developers (me) but demand is very high. I expect demand from this segment will increase as LLMs drive the cost of supply to nearly zero. I wouldnt be surprised if high end software devs (e.g. >1 million hit/day webapps where quality is critical) barely do anything different while the demand for devs at the low end of the market craters.
- majormajor 2y ago> I wouldnt be surprised if high end software devs (e.g. >1 million hit/day webapps where quality is critical) barely do anything different while the demand for devs at the low end of the market craters. Over the last few decades the prevalance of more and more frameworks to handle more and more of what used to be boilerplate that everyone had to do for GUI apps has not significantly impacted the bottom end of the job market. It's only, if anything, caused even higher demand for "just one more feature". When's the last time you worked on a product in that space where the users or product managers didn't have any pending feature requests? Didn't add new ideas to the backlog faster than the team could implement? Someone's gonna have to know just enough to make sure the LLM is producing shit that passes the (low) bar of adequateness. But that job will probably be even further away from the CS-knowing, performance-critical, correctness-matters roles than it is today. It's already a big gap, I just don't see the shit-shoveler job going away. The corporate world loves its shit shoveling.
- dr_dshiv 2y agoLike, writing binaries directly? Is assembly code too much of an abstraction?
- swat535 2y agoPeople stress about good system design because of maintainability. No one cares about binary code because that's just the end result. What matters is the code that generates it, as that’s what needs to be maintained. We have not yet reached a point where LLM generated code can also be maintained by LLMs and the tooling is not there. Once that happens, your argument will hold more weight. But for now, it doesn’t. Injecting unreadable, likely bug-ridden code into your application increases technical debt tenfold.
- discordance 2y agoby 100% organic, free range and fair trade programmers
- djmips 2y agoReplace programmers with 'intelligence' to contrast with artificial
- jdmoreira 2y agoFrom before people even knew what llms were: https://handmade.network https://handmade.network
- LeftHandPlane 2y agoArtisanal firmware is the future (or the past? or both?): https://www.youtube.com/watch?v=vBXsRC64hw4 https://www.youtube.com/watch?v=vBXsRC64hw4
- jmull 2y agoAll I really care about is the end result and, so far, LLMs are nice for code completion, but basically useless for anything else. They write as much code as you want, and it often sorta works, but it’s a bug filled mess. It’s painstaking work to fix everything, on part with writing it yourself. Now, you can just leave it as-is, but what’s the use of releasing software that crappy? I suppose it’s a revolution for that in-house crapware company IT groups create and foist on everyone who works there. But the software isn’t better, it just takes a day rather than 6 months (or 2 years or 5 years) to create. Come to think of it, it may not be useful for that either… I think the end-purpose is probably some kind of brag for the IT manger/exec, and once people realize how little effort is involved it won’t serve that purpose.
- barbazoo 2y agoI love the subtle mistakes that get introduced in strings for example that then take me all the time I saved to fix.
- dabinat 2y agoDo you have an example of this?
- dingnuts 2y agoare you in the habit of saving bad LLM output to later reference in future Internet disputes?
- KingMob 2y ago??? A zillion LLM tools maintain history for you automatically. As long as you remember what the chat was about, it's only a search away.
- the_lonely_time 2y agoCan’t remember account login so created a new account to respond. I recently used Claude with something along the lines of “Ruby on rails 8, Hotwire, stimulus, turbo, show me how to do client side validations that don’t require a page refresh” I am new to prompt engineering so feel free to critique. Anyway, it generated a stimulus controller called validations_controller.js and then proceeded to print out all of the remaining connected files but in all of them it referred to the string “validation” not “validations”. The solution it provided worked great and did exactly what I wanted to (though I expected a turbo frame based solution not a stimulus solution, but whatever it did what I asked it to do) with the exception of having to change all of the places where it put the string “validation” where it needed to put “validations” to match the name it used in the provided stimulus controller.
- miki123211 2y agoOh, this captures my experience perfectly. I've been using Claude Code a lot recently, and it's doing amazing work, but it's not exactly what I want it to do. I had to push it hard to refactor and simplify, as the code it generated was often far more complicated than it needed to be. To be honest though, most of the code it generated I would accept if I was reviewing another developer's work. I think that's the way we need to look at it. It's a junior developer that will complete our tasks, not always in our preferred way, but at 10x the speed, and frequently make mistakes that we need to point out in CR. It's not a tool which will do exactly what we would.
- biker142541 2y agoMy experience so far on Claude 3.7 has been over-engineered solutions that are brittle. Sometimes they work, but usually not precisely the way I prompted it to, and often attempts to modify them require more refactoring due to the unnecessary complexity. This has been the case so far in both js for web (svelte, react) and python automation. I feel like 3.5 generally came up "short" more often than 3.7, but in practical usage it meant I could more easily modify and build on top of. 3.7 has led to a lot of deconstructing, reprompting, starting over.
- icedchai 2y agoThis aligns with my experience. I've seen LLMs produce "code" that the person requesting is unable to understand or debug. It usually almost works. It's possible the person writing the prompt didn't actually understand the problem, so they got a half baked solution as a result. Either way, they need to go to a human with more experience to figure it out.
- hsuduebc2 2y agoTbh If I do not understand generated code perfectly, meaning it is using slightly something I do not know I usually spend approximately same time understanding generated code as writing it myself.
- roflyear 2y ago> LLMs version of whatever it is you ask for, then you can have a great and productive time Sure, but man are there bugs.
- mrits 2y agoThis surrendering to the LLM has been going around a lot lately. I can only guess it is from people that haven't tried it very much themselves but love to repeat experiences from other people.
- gitgud 2y agoInteresting, but it seems ridiculous to disambiguate “Programmer” vs “Coder”. They’re synonymous words and mean the same thing right? Person who writes logic for machines
- madmountaingoat 2y agoThe different mindsets exist, but I agree these are bad words to differentiate them. Back when I started in software in the 80s a common expression was: there are two types of programmers, nerds and hippies. The distinction falling along similar lines - nerds needed to taste the metal, while hippies were more interested in getting stuff done.
- dpritchett 2y agoThere may never be a perfect taxonomy of programmer archetypes. I imagine most of us here can agree that some elevate the craft and ritual to great effect while others avoid such high-minded conceits in favor of shipping whatever hits the expected target this week. I’ve been both at different points in my career. Usually it’s a response to my environment.
- baq 2y agoYeah this one is dumb. The real distinction is programmer vs software engineer, or IOW do you want to write code or solve problems?
- jimbokun 2y agoWho cares? Substitute whatever labels you prefer, but the distinction between the two groups I’d certainly real.
- throwaway743 2y agoObviously you do - enough to respond.
- fullstackchris 2y agoWhat about those two vs. the concept of "software engineering"? - there, the "code" or "program" is even _less_ important, just a tool in an ecosystem where you are asking bigger questions like "is this maintainable / testable / readable / etc.?" "is this the right language / framework for my org / others to use" and so on and so on. These questions and context quite literally represent billions of context tokens in LLM world and why I continually do not worry about 99% of the fear mongering of them replacing anybody who writes code.
- bikamonki 2y agoRight on point. The same principle applies when deciding whether to use a framework or not. Coders often marvel at the speed with which they can build something using a framework they don’t fully understand. However, a true programmer seeks to know and comprehend what’s happening under the hood.
- InvertedRhodium 2y agoI'll preface this with the fact I agree that there is a difference between using a framework and being curious enough to dig into the details I think you're veering into No True Scotsman territory here. IMO, the vast majority of programmers wouldn't meet the definition you've put forward here. I don't know many that dig into the operating system, platform, or hardware all that much, though I work in streaming media so that might just be an industry bias.
- jimbokun 2y agoThat just means they are not programmers, but coders as defined here.
- vbezhenar 2y agoI'm the one who feels uncomfortable when something is magical. I'm trying to dig whenever possible. I don't always have success. I know very little about Linux kernel internals, for example. That said, it's rarely pays out. Quite the opposite: I often spending lots of time digging unnecessarily. I'm not complaining, I am who I am and I don't want to change. Digging into internals makes me happier and satisfied. And sometimes it is useful. So Linux kernel internals are on the roadmap and hopefully I'll dig into it some day. I agree that absolute majority of people I met are not of that kind. And probably they should not. Learning business side of the software is what makes someone really useful. I hate business side, I only love computer side.
- baruch 2y agoI find that my understanding of different layers is usually not needed but is rarely important toy ability to solve thorny issues or figure out ways to do things or debug issues that others are not even trying. I'm working in areas of systems programming where such knowledge and willingness to go deeper into the stack is helpful, even if rarely so. I can't say I understand the kernel, I only scratch the surface of most of it and only dug deeper where I really needed to and only as deep as time allowed me and the need required though.
- throwaway2037 2y ago> Programmers laughed at the absurdity of left-pad[1] ("why use a dependency for 16 lines of code?") I'm confused. Did they laugh, then still use it as a dependency? If not, did they reinvent the wheel or copy the 16 lines into their project? Right up until the day of the "NPM left-pad incident" tiny dependencies were working just fine. Also, if you cannot tell the difference between code written by an LLM or a human, what is the difference? This whole post is starting to feel like people with very strong (gaterkeeper'ish) views on hi-fi stereo equipment, coffee, wine, ... and programming. Or should I say "code-as-craft" <cringe>?
- abxyz 2y agoMy comment isn't intended to pit "programmers" against "coders" or suggest that one is better than the other. I think the distinction is useful to help people understand why LLMs can be game-changing for some, and useless for others, because our attitudes towards programming/code can be so different. If you go through and read the left-pad posts here on hn, you'll find people at both extremes: some fiercely defend left-pad as useful and worthwhile and think writing left-pad yourself is dumb-as-hell, and then at the other end you'll find some fiercely deride using left-pad as absurd when they could just write the code themselves. Here's a good thread to start with: https://news.ycombinator.com/item?id=11348798 https://news.ycombinator.com/item?id=11348798 Personally, I'd rather hire a "coder" than a "programmer" and consider myself more "coder" than "programmer" :)
- jv22222 2y agoThank you for eloquently saying what I've been trying hard to express.
- someothherguyy 2y ago> If you think about code as a means to an end, and focus on the end The problem with this is that you will never be able to modify the code in a meaningful way after it crosses a threshold, so either you'll have a prompt only modification ability, or you will just have to rewrite things from scratch. I wrote my first application ever (equivalent to a education CMS today) in the very early 2000s with barely any notion of programming fundamentals. It was probably a couple hundred thousand lines of code by the time I abandoned it. I wrote most of it in HTML, JS, ASP and SQL. I was in high school. I didn't know what common data structures were. I once asked a professor when I got into late high school "why arrays are necessary in loops". We called this cookbook coding back in the day. I was pretty much laughed at when I finally showed people my code, even though it was a completely functional application. I would say an LLM probably can do better, but it really doesn't seem like something we should be chasing.
- oxag3n 2y agoI tried LLMs for my postgraduate "programming" tasks to create lower level data structures and algorithms that are possible to write a detailed requirements for - they failed miserably. When I pushed in certain directions, I've got student level replies like "collision probability is so low we can just ignore it", while same LLM accurately estimated that in my dataset there will be collisions. And I don't believe until I see LLMs can use real debugger to figure out a root cause for a sophisticated, cascading bug.
- nbardy 2y agoThis is untrue. You can be over specified in your prompts and say exactly what types and algorithms you want if you’re opinionated. I often write giant page long specs to get exactly the code I want. It’s only 2x as fast as coding, but thinking in English is way better than coding.
- bodhi_mind 2y agoI’m a software developer by trade but also program art creation tools as a hobby. Funny thing is, at work, code is definitely a means to an end. But when I’m doing it for an art project, I think of the code as part of the art :) the process of programming and coming up with the code is ultimately a part of the holistic artistic output. The two are not separate, just as the artists paint and brushes are also a part of the final work of a painting.