14 ms·
The art of programming and why I won't use LLM
- pandemic_region 2y ago!remindme 1 year
- bena 2y agoTo be fair, we're almost 2 years from the release of ChatGPT and the "demise of the programmer". We've already did the speedrun from people styling themselves "prompt engineers" to people openly mocking people styling themselves "prompt engineers". And now it seems we're going to be "6 months to a year away from replacing programmers" for as long as it generates more funding.
- yowayb 2y agoLLMs are just aggressive auto-complete. Yes, overhyped naturally. But also still saving me keystrokes!
- deleted 2y ago[deleted]
- chasingentropy 2y agoI agree with your sentiment. It's like asking a 3 year old to compose a symphony because they learned to play twinkle twinkle little star on a casio keyboard reasonably well. I don't see it as a "judgemental piece to anyone that i am alluring to" (I think you mean alluding) but I do think it's an honest assesment of those who are attempting to rely heavily on AI.
- fsociety 2y agoIt is a judgemental piece because the writer is putting a value judgement on people who use LLMs to code and those who don't. Its right after the piece you quoted. > please don’t take this as a judgemental piece to anyone that i am alluring to. it’s fine to not find programming enjoyable. it’s fine to just want things to work. i am just disappointed at how the ones who care appear to be an ever dying breed. I'm not saying the author shouldn't write that, write whatever you want. But you should own what you write.
- oldpersonintx 2y ago[dead]
- dakiol 2y agoI do the “programming as art” in my free time, when working on my own side projects. I do it because it’s fun and I take proud on what I produce. For work stuff? I couldn’t care less if the code comes from me, my colleagues or an LLM. As long as it works and it’s secure, we’ll ship it. Folks, career != job.
- pajeets 2y agoExactly, now replace code with AI generated art, photos, drawings, videos, music. Your employers couldn't care less if its convincing enough to ship. even better now that it only takes seconds to minutes. We are at the cusp of creative destruction and we are only getting started. Ironically, blue collar jobs seem safe as there hasn't been a humanoid revolution and what I see in the white collar field is what blue collar workers experienced before the automation and offshoring of jobs
- steveBK123 2y agoI think AI art is actually an interesting example. It’s mostly run of the mill schlock to replace clip art / stock images. Adequate but not enjoyable. Lorem ipsum of visual art. Probably kills some basic graphic design jobs at the margin working on low budget projects. Meanwhile big brands using big agencies will just incorporate it into their design process. McD Japan is a recent example. You still need a human with an eye and taste to be the editor. But no one is reading or viewing AI art for pleasure. It’s all “that’s neat” (continues scrolling).
- pajeets 2y agoThere are many erroneous assumptions based on conjectures and not enough real world metrics and evidences. AI art is very much already being consumed and sold. It's not just "mill schlock" anymore. You won't even know you are consuming AI art.
- thomashop 2y agoWhere are your real-world metrics and evidence?
- kqr 2y ago> it is sad to me just how much people are trying to automate away programming and delegating it to a black box I take it you're not using a compiler to generate machine code, then? Scratch that, I guess you're not using a modern microprocessor to generate microcode from a higher-level instruction set either? Wait, real programm^Wartists use a magnetised needle and a steady hand. Programming has always been about finding the next black box that is both powerful and flexible. You might be happy with the level of abstraction you have settled on, but it's just as arbitrary as any other level. Even the Apollo spacecraft programmers at MIT had a black box: they offloaded the weaving of core rope memory to other people. Programming is not necessarily about manually doing the repetitive stuff. In some sense, I'd argue that's antithetical to programming -- even if it makes you feel artistic!
- milemi 2y agoYou can learn how compilers work and understand how they do what they do. Nobody understands what’s in those billions of parameters, and no one ever will.
- fuzztester 2y agowhy are there so many parameters in the first place? and was it humans who generated so many? seems like a very big job for a human to do, or even a team of humans to do. disclaimer: I know next to nothing about llms. and I'm not that interested to learn about them. just asking casually.
- jdiff 2y agoThey're not manually generated or anything, it's just a setting. Too few and the model doesn't have enough flexibility to capture complex patterns. Too many and the model can just memorize the data you train it on rather than capturing the patterns driving it.
- Jensson 2y ago> why are there so many parameters in the first place? Because parsing and writing human language in a natural way is extremely complex. > and was it humans who generated so many? No, it is generated using an algorithm that tries to predict the next word in human written text using the words that comes before it. It ingests basically all the text on the internet to do this, without that much text the LLM performs horribly.
- pajeets 2y agoThis feels exactly like the manifesto that artists on X started defending that Ai-generated Art isn't Art but look where we are now, companies are able to generate not only quality Art assets but photos too but amateur consumers creating songs, videos, pictures that they couldn't have previously. Unlike art where you can tell if the end product is AI generated even, software is not. The end users do not care if you used AI to generate your react front-end or back-end, your employers dont care who wrote the code as long as its bug free and works like in the scope document. Ironically, I don't see software developers writing manifestos or complaining that AI generated software isn't software or that they are stealing from them.
- brailsafe 2y agoSeems to me like art is art if the person who made it feels that it's art, and that may or may not be a component of the process that went into an apparently artistic product. Artistic products seem more likely to be "art" of there's no specific value to them, and they exist to exist or to add some abstract element of decoration to world. A former theatre friend of mine once got mad when I described art as having no intrinsic value, but that doesn't mean it has no value, and I don't think it fundamentally changes the non-art noun of what's produced; a painting/print can be just a decoration, and/or it can be art, but the fact that it's art doesn't change whether it's a painting or a decoration or the type of object. That may not be the case of course if the resulting object is an artistic illusion, such as a table that's not a functional table because it's made of cake, but again I don't think it needs to get that deep for the point to be true. Likewise, software that was produced artistically may or may not be better, or more valuable, or distinguishable in any way from other software products, but if the author feels like it's art it may be art. That may be because there's no tangible reason for it to exist other than a creative endeavor, in which case maybe it's not actually software.
- pajeets 2y agowhat is "artistically produced software", I'm genuinely curious as to how a CRUD app for enterprise is "artistic" are you talking about games? thats not really what article author was speaking to.
- Retr0id 2y agoWriting an essay forces you to think about an idea intimately, acting as a tool for thought in and of itself. The way I use programming is the same.
- habosa 2y agoI tend to agree with this post. I am the only person on my team and one of the few at my company not using LLMs to assist my programming. So far I don’t think I notice any difference (better or worse) … we’ll see how this experiment plays out I guess.
- personalityson 2y agoI only use it to name my functions and variables
- marcinzm 2y agoI find the post confusing. The author notes two aspects of programming and then seems to conflate LLMs as doing both when they only do the second. It’s sort of like saying directing a movie isn’t art or creative because the director is not every actor in the movie?
- rongald 2y agoI suppose I get where the sentiment is coming from and anybody can use whichever tools make them happy but I feel like the comparison doesn’t make too much sense to me. As programmers we leverage so many levels of abstraction that help us write better code. It feels similar to saying if you use some package or library you’re letting some library author do the painting for you. Or if you use a high level language instead of assembly you’re letting a compiler do the painting for you.
- Icarus-maximus 2y agoUndead
- sibeliuss 2y agoI think of myself as a code artist too but definitely not leaving the productivity boost of an LLM behind. The thing just helps me write stuff that I was going to write anyways!
- PaulHoule 2y agoComparing an LLM to an artist who can paint for you is giving it too much credit.
- williamcotton 2y agoI still very much felt like I was creatively crafting this [0] project even though the entire approach used the Claude project feature. I had to hand-write some sections but for the most part I was just instructing, reading, refining, and then copying and pasting. I was the one who instructed the use of a bash parser and operating on the AST for translation between text and GUI. I was the one who instructed the use of a plugin architecture to enforce decoupling. I was the one who suggested every feature and the look of the GUI. The goal was to create an experimental UI for creating and analyzing bash pipelines. The goal was not to do a lot of typing! These high level abstractions are where I find the most joy from programming. Perhaps for some there is still some modicum of enjoyment from writing a for loop but for most people twenty years into a career there's nothing but the feeling of grinding out the minutia. There's still a lot of room for better abstractions when it comes to interfacing with computing devices. I'd love to write my own operating system, CLI interface, terminal, and scripting language, etc from scratch and to my own personal preferences. I don't imagine I could ever have the time to handcraft such a vast undertaking. I do imagine that within a few decades I will be able to guide a computing assistant through the entire process and with great joy! [0] https://github.com/williamcotton/guish https://github.com/williamcotton/guish
- umvi 2y agoFor me LLMs are like programming power tools. Use them wrong and you can hurt yourself. Use them right and you can accomplish far more in the same amount of time. People that refuse to program with AI or intellisense or any other assistance are like carpenters who refuse to build furniture with power saws and power drills. Which is perfectly fine, but IMO that choice doesn't really affect the artistry of the final product
- throwup238 2y ago> For me LLMs are like programming power tools. Use them wrong and you can hurt yourself. Use them right and you can accomplish far more in the same amount of time. Fun analogy because if you're especially negligent you can injure yourself so badly you'll make programming forever more difficult than it needs to be or end your career altogether - like with a tablesaw cutting off fingers.
- fuzztester 2y agointellisense is fine, but high speed chopping off of your limbs is not. the two are not comparable.
- bongodongobob 2y agoSeeing luddism in programming is hilarious to me. Keep writing your machine code old man, we'll pick up the slack for you while you fade into obscurity.
- paretoer 2y agoBut it will cause a reduction in wages and the quality compared to hand crafted fabrics will be inferior when automated.
- warkdarrior 2y agoWe need an Etsy for code lovingly handcrafted in a basement or a Brooklyn brownstone.
- bongodongobob 2y agoMade with carbon negative bits.
- bongodongobob 2y agoPerfect, that's called progress. The monkey coders can get real "artisan" jobs making artisan code for artisan people.
- youssefabdelm 2y ago> does no one not find programming fun anymore? Author needs to get into Bret Victor. Has no idea how much more fun he could be having. Programming is a step on the way to access to the state space of information. When we get to that stage, programming will seem like a maze of syntax, that has its own idiosyncrasies that force you into corners or regions in the state space, just like any DAW plugin or 3D tool, or any tool at all that exists.
- globular-toast 2y agoThe six year old English took me more effort to read than it should. The point of language is to communicate. Write in a way that people can read. But to the point of the post, yeah, I agree. The people using LLMs are just using it to compensate for a horrible toolkit. It doesn't help them think or break down problems that nobody has seen before. If it makes them quicker it's because they were using caveman-level tools before. I haven't typed every character in the code I produce for at least a decade at this point. Most of my time and effort is in thinking. But for braindead code monkeys, sure, anything will make you quicker.
- WithinReason 2y agoAn LLM would have made zero spelling and punctuation mistakes
- globular-toast 2y agoI have wondered whether one day people might attempt to prove their "realness" by writing in an intentionally stupid way that an LLM could never write.
- drawback 2y agoThat might be true for American English. LLMs are bad in my language and can not produce long texts without obvious mistakes just yet.
- WithinReason 2y agoI meant the article, not you :)
- steveBK123 2y agoI do sometimes get the impression that there will be a generational gap in ability to code between millennials and zoomers. We had an overdemand for devs during late ZIRP early COVID leading to bootcamps and self taught pulling a lot of untrained into the industry. Many of them have left the industry. Add to that the whole data science bubble and it’s bursting where we had tons of degrees and job openings for sort-of-devs. Lot of those jobs are gone now too. Don’t forget the pull of “product management” and its demise outside big tech. Now we have hiring freezes and juniors leaning on LLMs instead of actually spending an hour trying to solve problems. Interesting times.
- rjakobsson 2y agoAmen!
- indigodaddy 2y ago“please don’t take this as a judgemental piece to anyone that i am alluring to” I would never judge anyone who finds your non-capitalized, grammatical-error ridden essays seductive.
- danjl 2y agoI'll take bad grammar and spelling over hallucinations, bugs, and poor design any day.
- indigodaddy 2y agoLol, yeah I was being cheeky here but when I see so many spelling / grammar related mistakes, I wonder can they not at least put the text through Microsoft Word or something? Do we have grammar/spelling checkers for markdown editors or whatever most are using to write their blogs?
- infinitezest 2y agoUnlike with all of the human-coded software which is all bug-free and "well-designed" (whatever that means). Maybe the author should have had the LLM write the article while they wrote software instead. Play each to their strengths.
- botanical76 2y agoI have noticed something recently in developer blogs. I only know it's not AI generated if it contains spelling mistakes. It's 99% not AI generated spam if it is completely uncapitalized. If the author fixed these "errors", my certainty that it's not AI generated garbage drops to 70%. For this reason, I may adopt an uncapitalized style in my own blogs, though I'm sure it will annoy many people.
- indigodaddy 2y agogood observation. i hate ai-generated website/blog content myself.
- creesch 2y agoWhat is up with these blogs that are apparently not made with the purpose of being read? Having sentences not start with uppercase letters really makes it one big mesh of letters. Certainly when they are run-on sentences only separated by commas. Not helped by the choice of using a monospaced font. I get that it is often an aesthetic choice, but given that a blog post is written with the idea to be read, one I don't think is a particularly good one. Although the last time I made a remark about that on HN it became clear to me that a lot of people don't see the issue. Even if there are decades worth (at this point) of research that makes it clear that a sans serif font (or even a serif font on modern displays) works better for readability. ¯\_(ツ)_/¯ In this case though, the combination of the monospaced font, everything being in lowercase and the run-on sentences I really am scratching my head here. Are you trying to get a message out there? Or are you mostly going for aesthetics?
- deleted 2y ago[deleted]
- kccqzy 2y agoThe author simply hasn't learned anything at all about the art of typography and typesetting.
- creesch 2y agoBelow you'll find the fixed version an LLM provided. I simply asked it to add uppercase letters where appropiate and split up sentences where needed. You are welcome: --- As LLMs get better and better at writing code, more and more people, at least on twt, have started to incorporate LLMs into their workflow. Most people seem to agree that LLMs have been a game changer for coding. They praise them for how much they have improved their productivity. They also mention how much easier it is to write code. Some claim that programmers who refuse to use them are "not using them correctly" and will eventually get left behind. In my opinion, the effectiveness of LLMs in coding at their current state is vastly overblown. Even if LLMs were as good as what avid users of them claim, I still won't see myself using it in any meaningful capacity. ## The art of programming Programming can be broken down into two parts. The first is solving problems algorithmically, breaking problems into steps that computers can follow within some constraints, thus forming a solution to the original problem. The second is expressing the solution in a way that the computer can understand. Both parts provide the programmers with an infinite canvas on which they can express their creativity. There are practically limitless ways to approach and solve a problem, and a practically infinite way to express a solution to the problem. Hence, programming is a form of self-expression - it is an art form. What is produced through programming is a kind of art - an art few appreciate. ## I am a programming artist In that sense, I see myself as an artist, one that expresses his creative self through programming. I enjoy creating programming art, because only through it do I find my true self, one who has a burning passion to create and build things. ## LLM is not for me Using LLM to write code is like asking an artist to paint for you. If you only want the end result, by all means! If you are like me who enjoy the process of painting, then why would you bother automating the fun part away? One may say, "But I am only using LLM to write code. I am still doing the problem solving myself!". To me, programming isn't complete if I don't get to express the solution in code myself. It isn't my art if I don't create it myself. ## A sad reality It is sad to me just how much people are trying to automate away programming and delegating it to a black box that can't even count letters in a word sometimes. They are even going as far as trying to emulate a software engineer on top of the black box. Does no one not find programming fun anymore? Does no one care enough about programming to go further beyond getting things working "well enough"? Is this just another case of availability bias? Please don't take this as a judgmental piece to anyone that I am alluding to. It's fine to not find programming enjoyable. It's fine to just want things to work. I am just disappointed at how the ones who care appear to be an ever dying breed.
- TrackerFF 2y agoI used to work as a programmer, but have since pivoted into analysis - so I just view programming as another tool in my toolbox to solve problems. My main goal is to deliver insights and answer questions. Sad to say, LLMs have made me lazy coder for the past two years or so. But I do deliver/finish work much faster, so my incentives to keep using LLMs as coding co-pilots are overshadowing my incentives to write code the "old way". And for what it is worth, sometimes these posts read like modern luddite confessions - the rants just sound too personal.
- danjl 2y agoEnglish, and other languages, are vague and imprecise. I've never understood why folks think they can write code "more efficiently" with a prompt rather than code? Are people willing to give up control? Let the LLM decide what is best? The same is true for generative art -- you get something, but you only have marginal control over what. I think this will always be something that is useful for the simplest things, simplest apps, simplest art, etc.. A race to the bottom for the bottom of the complexity stack. As problems become more complicated, it would take a great deal more prompt language to specify the behavior than code.
- emseetech 2y agoI wonder about this as well. Go has 26 keywords. English as 170,000 active words. I don't want to code in English.
- BeetleB 2y agoBinary has only two bits. I really don't want to code in two bits.
- emseetech 2y agoThere's a sweet spot for identifiers when writing software and it's somewhere between 2 and 170,000 but likely closer to 2.
- Cordiali 2y agoMost of those words are engPM packages. The trick is to not include the `architecture` package, if you're just making toast.
- throwup238 2y agoFor most things I approach it from both sides: I give an English prompt but also provide some interface, function signatures, or even just a return type that constrains the LLMs output. For example, I frequently have to implement Serde's traits for some serialization format or to marshal types, most recently to translate types from Rust to Qt QML's Javascript. By giving it some context (Serde traits and QT docs) I managed to do it with Claude in about an hour, which is roughly how long it would have taken me just to get up to date with the documentation if I had tried it myself.
- TrianguloY 2y agoI feel the same. I understand why others think ai is just another tool like intellisense, but for me intellisense and any other automatic refactor is a fixed algorithm that I understand and that I know exactly what it is doing, and I know that it is correct. With ai I need to review the output but not because there may be some issues I didn't noticed, but because that may be issues the tool itself didn't noticed, so it's less of an "apply this specific change" but more of an "apply some change"
- danjl 2y agoWith intelliSense, I disregard about 98% of the suggestions. Do people do that with generated code? Doubtful. With an LLM, even that last 2% requires more effort because it creates weird and irrational bugs that I have to review.
- namrog84 2y agoLots of people I know use llms for different reasons and more importantly in different ways. For me it feels like it enables me to express myself even better. I use 1 for basically a super charged intellisense or clever auto complete. Finishing lines as I am typing them. Exactly the way I was going to write them. It saves time on the more boiler plate glue code and allows me to maintain a better flow and momentum on more expressive areas. I don't see it taking away anything but only enabling me to do more, faster, and better. I'm not telling it to write full apps because it can't.
- brunooliv 2y agoThis is a post that just reads as if the author is still in the “honeymoon” stage of their career where programming is seen as this extremely liberating and highly creative endeavour that no other mortal can comprehend. I get the feeling and I was there too, but, writing code has always been a means to an end which is to deliver business value. Painting it as this almost abstract creative process is just… not true. While there are many ways to attack a given problem, the truth is once you factor in efficiency, correctness, requirements and the patterns your team uses then the search space of acceptable implementations reduces a lot. Learn a couple of design patterns, read a couple of blogs and chat with your team and that’s all you need. Letting an LLM write down the correct and specific ideas you tell it to based on what I wrote earlier means your free time to do code reviews, attend important meetings, align on high level aspects and help your team members all which multiply the value you deliver only through code. Let LLMs automate the code writing so I can finally program in peace, I say!
- happyraul 2y agoThis sounds like a nightmare to me. The last thing I want out of my work day is to attend more "important meetings" and "multiply" my value. This is the kind of thinking that makes us less human, just widgets that are interchangeable. No thanks.
- _xiaz 2y agoI get that at some point you have to put food on the table, but why conflate the enterprisey, economical, object-oriented mess of things with your hobby? You can, in theory, still program elegant little side projects with no pretense of business value or any customer besides, maybe, yourself. I find that my work-coding and hobby-coding are different enough that they don't even feel like the same activity
- kraftman 2y agoWhen I write a side project I'm not doing it because I enjoy coding, I'm doing it because I enjoy problem solving, and I've thought of a potential problem that I could solve with code, and I want to prototype that idea. I'm not that fussed about elegance; ideally, I want to prototype that idea as quickly as possibly so I can see if its valid or not, so I'd much rather use any tool I can to get me there as quickly as possible.
- PUSH_AX 2y agoThis might be the most "zoomed in" take on programming I've ever read (where a zoomed out take understands that software usually just enables a business to do business). I almost thought it was satire. I feel like you have to drop this kind of thinking to get anywhere past intermediate, not to mention you become a nightmare to anyone who has even a touch of pragmatism about them.
- modevs 2y agoThe times when #codecrafters will be as valuable as gold coming... I would prefer to rock into this times.
- spaceman_2020 2y agoI would have agreed with you about other creative spaces being invaded by AI But not code The consumer never sees the code. To him, it makes no difference if there is pure elegance underneath the app or just garbled spaghetti The user can likely tell AI-generated images and articles. But he’d have zero clue if the website used AI generated code
- danjl 2y agoThis is true at any instant in time, but it fails miserably over time as support and feature enhancement becomes important. A poor design from an LLM that cannot be updated, fixed, maintained, and improved is an issue that affects customers.
- modevs 2y agoThe changes into industry definitely coming. But AI will affect not only programming. And handmade products will cost more than autogenerated ones. Programming started sucks before when companies started to orient on fast income and preferred pure quality templated projects over well-made efficient ones. This world changes. Many people have nothing to do and with AI amount of them will grow. It scare.
- neurostimulant 2y agoAll those generated code would still need to be maintained, no? What happen when the customer found a bug and demand it to be fixed? Would the AI able to find the buggy code and fix it?
- tinyhouse 2y agoNot sure where LLMs will be in 5 years, can only talk about today and make some guesses about the future. I use LLMs cause it takes care of the syntax and leaves me more time to think about the logic and how everything is connected together. LLMs still lack in the latter category. For one-off tasks, it's truly a time saver. In the future, I see people trying to do more complex stuff with chains of LLM calls (already happening but it's still a WIP). Break a complex task into sub-tasks, then solve them sequentially to achieve something non-trivial in the end. I'm a bit skeptical though - not so much because of my skepticism of LLMs in general but more about humans not being good at maintaining code bases they didn't write (often even with code that wrote). You cannot trust LLMs to also maintain the codebase. There's too much context about the life of the code, all the dependencies, and even business logic, that is missing.
- sweeter 2y agoIf LLMs were actually good for programming, I would consider it, but they just aren't. Especially when we are talking about "assistants" and stuff like that. I feel like I live in an alternate reality when it comes to the AI hype. I have to wonder if people are just that bad at programming or if they have a financial incentive here. There are a handful of cases where LLMs are useful, mainly because Google is horrifically bad at bringing up useful search results, it can help in that regard... or when you can't find the right words to describe a problem. What I would like to see out of an AI tool, is something that gobbles up the documentation to another programming tool or language, and spits it back out when it is relevant, or some context aware question and answers like "where in the code base does XYZ originate" or w/e. the difference is having a tool that assists me VS having a tool spit out a bunch of garbage code. Its the difference between using a tool, and being used by a tool
- fuzztester 2y ago>If LLMs were actually good for programming, I would consider it, but they just aren't. Especially when we are talking about "assistants" and stuff like that. I feel like I live in an alternate reality when it comes to the AI hype. I have to wonder if people are just that bad at programming or if they have a financial incentive here. solid points there. it is surely some of both reasons. for the bad programmers, it will be the former. for those invested in llms, it will be the latter, that is financial incentives - to the tune of billions or millions or close to millions, depending upon whether you are an investor in or founder of a top llm company, or are working in such a company, or in a non-top company. it's the next gold rush, obviously, after crypto and many others before. picks and shovels, anyone? and, more so for those for whom there are financial incentives, they will strenuously deny your statements, with all kinds of hand waving, expressions of outrage, ridicule, diversionary statements, etc. that's the way the world goes. not with a bang but a whimper. ;) sorry, t.s. eliot. https://en.m.wikipedia.org/wiki/The_Hollow_Men https://en.m.wikipedia.org/wiki/The_Hollow_Men
- andybak 2y agoI'm not sure whether I'm a "good programmer" or a "bad programmer" but sometimes I just want a problem to go way in the quickest way possible. I'm not always trying to create a timeless, perfect, jewel and there is a limit to how much I want to follow every highway and byway needed to do stuff across several dozen languages, libraries, platforms and frameworks. Some days I'm just tired.
- sbuttgereit 2y agoI think the arguments in this article/blog/etc. aren't as strong as they ought to be to make the point the author tries to make. My formal education was in music composition and film scoring specifically. I never once, even then considered myself "an artist" or thought that I was pursuing art. I did consider myself a craftsman: I was learning a style of music composition where I was expected to realize someone else's vision for their purposes. One could argue that the filmmaker was an artist and the film a work of art, but as the composer my job was to produce a work product that conformed to a specification as directed by someone else. I cared about creativity, quality, and having my product fit for purpose. I do not see the craftsman as inferior to the artist, but the goals are different and in a medium such as film you must have both artists and craftsmen (and sure sometimes a single person is both, but that's not a requirement). When I am a programmer I see myself in exactly the same way. Professionally, I'm paid to satisfy someone else's need for automation/data wrangling. The solution I deliver is a work of craftsmanship, not of art. I will be creative in exercising my craft: often I'm just given a statement of the problem that needs solving and the solution design and development are left to me. I may find unique capabilities or processes which are better than those anyone envisioned... but at the end of the day I am creating an expression of my craft, not trying to achieve a deeper artistic goal. Trying to achieve an artistic goal with programming, at least in most professional programming, would likely lead to some sort of malpractice: the craft of the product diminished in time, cost, or features to gain an unasked for message. Another issue I take with this article is that it confuses the tools with the result. Today, artists that paint use a large variety of brushes, spatulas, and other tools and paints which have all the benefits of being formulated with the knowledge of modern chemistry for stability, texture, and durability over time. Would the artist of old be justified in suggesting that using the new tools make you not an artist since you don't have to control for the limitations of the past? As a composer, I used sample players, sequencers, notation programs, and DAWs, even when writing for a conventional orchestra. True Beethoven didn't have these tools, but does this mean a modern composer that might use the same tools as me don't produce art... even if the final result is played by a traditional orchestra? I find LLMs to be in this category. When producing art (or craft as I discussed), the final product is ultimately what is to be judged... unless you find programming as being more about performance art where the journey is more the product that the final result. Anyway, as a programmer I absolutely use LLMs. Sometimes they help, sometimes not. Even at my most creative, I don't find developing a good regex or a shell script something I care to be creative in approaching. How I apply the LLM, my judgement of the quality of what it produces, or whether I think the kind of "lowest common denominator" approach an LLM will produce is appropriate or not in a given situation still puts me and my creativity plainly at the center of producing a craft-full, and perhaps artful, product.
- benterix 2y agoA while ago antirez offered an interesting counter-perspective that is probably a more pragmatic approach: https://news.ycombinator.com/item?id=38840626 https://news.ycombinator.com/item?id=38840626
- tarkin2 2y agoLLMs will become as evil as calculators: they obviate the mathematical ability and create reliance in most, but are a magnificent aide to experts--those who could survive without a calculator albeit at the cost of speed. As we approach this point, programming (program creation) will become a largely non-technical skill but the few who have that skill will be needed to solve the problems which LLMs create and which its operators don't have the know-how to fix. I use LLMs as an alternative to asking a question on stackoverflow. And I'm not confident LLMs can currently save time on large projects: take a couple of hours to write the code or spend a few seconds to generate the code and then a couple of hours understanding and debugging it.
- frje1400 2y agoLLM output can't really be trusted so I need to "proof read" it and convince myself that it is correct. In the language I use every day and have a high degree of fluency, it's faster for me to simply write what's in my head than to proof read unknown code. So how can LLMs make me more productive in actual programming? I use an LLM to generate ideas, to rubber duck, to get a lead on unknowns, and to generate boilerplate occasionally. So I do everything except replace the coding part because that's what requires the most precision, and LLMs are bad at precision. And yet, people claim massive productivity gains in specifically coding. What am I missing?
- danjl 2y agoAlso, the errors that an LLM makes are not errors that a typical human would make. This makes reviewing their code particularly challenging.
- kristiandupont 2y agoI find the errors they make are often comically "human", like forgetting a premise.
- BeetleB 2y ago> So how can LLMs make me more productive in actual programming? Suppose you suddenly are required to write a VBA macro for Excel for your job. It's a one off task - not something you'll do repeatedly. Do you prefer learning VBA for Excel and crafting a solution or asking the LLM and verifying its solution by looking at the docs? Hint: If you use the macro recorder in Excel and inspect the code you are closer to the LLM end of the spectrum.
- dkersten 2y agoThis is basically the same conclusion I’ve come to, after 18ish months of almost daily use.
- flembat 2y agoIt helps a lot if you use a strongly typed language with a strict compiler and get the LLM to write plenty of tests. Then you need to understand that the tests are logically correct. The LLM is also good at documenting the functions, so you can review that matches your intentions and the code as well. Also the LLM will pick functions from your own source code library to compose new programs for you. So the reuse of your own well tested code should increase confidence.
- spaceman_2020 2y agoThis is such a strange hill to die on. Like what great ideological purpose are you serving if you delegate writing tailwind boilerplate to a LLM, or a basic axios get request? Does your code become impure if instead of copying code from the documentation you get an LLM to do it?
- matwood 2y agoIt does feel similar when I was younger, and people would say you weren't a 'real' programmer unless you coded in c/c++.
- deleted 2y ago[deleted]
- furyofantares 2y agoI also find programming extremely enjoyable, my means of expression, and an art form. I have hundreds of side projects in my archive, maybe five of which have ever been used by another human. It's all for the sake of coding. Many of them are sizeable and many are not but they are almost all done as a creative outlet, for the joy of doing it or to satisfy a curiosity. But I don't know man, I love coding with LLMs. It just opens up more things, I think on some projects I actually spend MORE time on traditional coding than I did in the past, because I used an LLM to write scripts to automate some tedious data processing required for the project. And there's also projects where the LLM gets me from 0 to 60 and then I rather quickly write the code I actually care about writing, and may or may not end up replacing all the LLM written code. I'm sure it heavily depends on exactly what types of project interest you. The fact that LLMs and diffusion have both become fixations of mine also means I have a lot more data processing involved in lots of my projects, and LLMs are quite good at custom data processing scripts. I suppose my suggestion to the author would be that perhaps their projects aren't amenable to LLMs in the way they want and that's fine, but don't lose hope that there are kindred spirits out there just because so many people love LLM coding; some of us are both and that may be more about what types of projects we do.
- ThrowawayTestr 2y ago>I also find programming extremely enjoyable I that's a big gulf people don't appreciate. I don't enjoy programming. When I program a microcontroller for my hobby projects it's a means to an end. I would love a tool that takes in a natural language description of what I want and outputs code and LLMs are good at doing that for basic tasks.
- danjl 2y agoRather than writing the code for me, I would appreciate the LLM functioning as a pair programmer, making comments on the decisions I make as I write the code. Another case that would be extremely useful, but is basically impossible now, is to have the LLM write tests for my new code as I write the code. Of course understanding the test scaffold and what's important to test is way beyond the capability of current LLMs. I only write integration tests, and never unit tests. An LLM could probably code unit tests, but I feel that not particularly useful. However, I could see this becoming more useful than actually writing code in the long run.
- Bjorkbat 2y agoI have a lot of different thoughts as to why using an LLM feels "off". One I've been thinking about as of late is that it feels flawed to measure productivity by code velocity, i.e. lines of code written per hour. Like, ideally, it shouldn't really take that much code to implement a thing. I like to think of programming as writing a bunch of levers, starting with simple levers for simple jobs, incrementally ratcheting up to larger levers lifting the smaller levels. Before too long, it'll feel as though you've written a lever capable of lifting the world...or at least one that makes an otherwise wickedly difficult project reasonably manageable. If you say that LLMs make you more productive because it allowed you to finish a project that would otherwise take forever to write, then I'm skeptical that an LLM is the best solution. I mean, it's a solution at least, but I can't help but wonder if there's a better solution. If the problem is that you lack the understanding to take on such a project, then perhaps what we really need are better tools for understanding. I myself have found that LLMs are great for gaining a quick understanding of languages that otherwise have sparse information for beginners, but I have to wonder if perhaps there's a better way. If, on the other hand, the problem is that writing that much code would take forever, then I have to wonder if the real solution is that we need a better way to turn programming languages into patterns (levers) and turn said patterns into larger patterns (larger levers) A partial solution works, but only partially well, and occasionally has consequences one has to reckon with
- brubs 2y agoTo be honest, I want an LLM to do my work, which means coding for me. But I won’t quit coding as my hobby. I love to build and tackle challenges. I just hate the pressure of deadlines, boring coding tasks, spaghetti code from my team members, code style differences between me and others, and so on. Coding has turned into corporate stuff. I do it for a living, but I really don’t like doing it with all these issues in the mix. I like to code in the middle of the night, solving very complex problems and building cool applications.
- DoesntMatter22 2y agoI love to program! I started in 1993 when I was 12 and I'm 42 now. I've never lost my love for it. Been a workaholic most of my life because I just love to code. However... after using Claude 3.5 with Cursor I realize that it's over. I'm writing whole apps in a day, sophisticated ones, that would take me a couple of weeks before, and way more energy spent. I wrote a whole Slack clone (not feature complete of course) in just 1 day. I love to code, and I do have to at times but this feels like the end of what was the joy of my youth and adulthood, my favorite pastime is gone. I will still develop applications and enjoy my creativity but with probably 1/50th the effort it took before.
- geor9e 2y agoI use an LLM precisely BECAUSE I want to focus on the art. Like Davinci would use apprentices. LLMs can do mindless drudgery just as well as I can, but in seconds instead of hours. There's nothing about remembering syntax, boilerplate code, forgetting a semicolon, googling the most common way of doing something, or combining some documentation to fill in the gaps that's even remotely "art" to me. I never ask an LLM for what I'm artfully creating. I ask it for what I know it'll get instantly right, so I can move on to my next thought.
- icambron 2y agoTo have all these thoughts, I think you'd have to have never really used an LLM to help you code, or to be almost comically closed-minded when you do. What they feel like when you actually use them is a combination of a better SO and a very prescient auto-completer. It does not at all feel like delegating programming work to a robot. No loss of artistry comes into play, and it's damn useful. In an ideal world, our abstractions would be so perfect that there would be no mundane boiler-platey parts of a program; you'd use the abstractions to construct software from a high level and leave details be. But our abstractions are very far from perfect: there's all kinds of boring code you just have to write because, well, your program has to work. And generally that code is, if you look, most of your code. This because making good abstractions is really hard and constructing fresh ones is often more work than just typing out the different cases. If you think this is mistaken, I'd gently suggest you take a fresh look at your own code. Anyway, that's where LLMs come in. They help write the boring code. They're pretty good at it in some cases, and very bad at it in others. When they're good at it, it's because what the code should do is sort of overspecified; it's clear from context what, say, this function has to do to be correct, and the LLM is able to see and understand that context, and thus generate the right code to implement it. This code is boring because it is in some vague sense unnecessary; if it couldn't be otherwise, why do you have to write it at all? Well you do, and the LLM has taken care of it for you. You can call this work the LLM is displacing "art", but I wouldn't. It's more the detritus of art performed in a specific way, the manual process required to physically make the art given the tools available. You could object that the LLMs will get better in the sense that not only that they will make fewer mistakes, but they will be able to take on increased scope, pushing closer to what I'd consider the "real" decisions of a program. If this happens -- and I hope it does -- then we should reevaluate our lofty opinions of ourselves as artists, or at least artists whose artistry is genuinely valuable.
- slowhadoken 2y agoThe argument against this is usually “oh yeah are you going to write your own compiler? Or better yet build your own CPU and motherboard?” but some people do because it’s fun and educational. Ignorance isn’t a valuable skill set.
- Kiro 2y agoI'm of the opposite opinion: I've started enjoying programming much more after embracing LLMs. * They are great for overcoming procrastination. As soon as I don't feel like doing something or a task feels tedious I can just delegate it to an LLM. If it doesn't solve it outright it at least makes me overcome the initial feeling of dread for the task. * They give me better solutions than I initially had in mind. LLMs have no problem adding laborious safeguards against edge-cases that I either didn't think of or that I assessed wouldn't be worth it if I did it manually. E.g. something that is unlikely and would normally go to the backlog instead. I've found that my post-LLM code is much more robust from the get go. * They let me try out different approaches easily. They have no problem rewriting the whole solution using another paradigm, again and again. They are tireless. * They let me focus on the creative parts that I enjoy. This surprised me since I've always thought of myself as someone who loves programming but it turns out that it is only a small subset of programming I love. The rest I'm happy to delegate away.
- magicalhippo 2y ago> This surprised me since I've always thought of myself as someone who loves programming but it turns out that it is only a small subset of programming I love. I am the same, and why many of my personal projects end up stranded. Once I've solved the tricky bit, the rest often isn't that motivating as it's usually variations on a common theme. I held off LLMs for a long time, but recently been playing with them. They can certainly confidently generate junk, but in most cases it's good enough. And like you say can be used as a driver to keep going. In that regard they can be useful.
- verditelabs 2y agoSame, these are all great points that I find as well. LLMs have made me a way more productive programmer, but a lot of that is because I already was an alright programmer and know how to take advantage of the strengths and weaknesses of the LLM. I think your last bullet point is most poignant, using Claude 3.5 I've been able to do tons of GUI and web programming, things I absolutely despise and refuse to do if I'm writing code by hand. I sort of understand some of the vitriol that I see on HN but it is incredibly overblown. I don't really get a lot of the criticisms. LLMs aren't deterministic? Neither are humans. LLMs write bugs they can't fix? So do humans. LLMs are only good at being junior programmer copy paste machines? So are lots of humans. My current project is training an LLM to do superoptimization and it's working exceedingly well so far. If you asked anyone on hacker news if that's a good idea, they'd probably say no.
- mr_tristan 2y agoI don’t use an LLM largely because my current codebase has a massive amount of bespoke internal APIs. So LLMs are just useless and wrong for almost any task I use. But this has led me to wonder if there will be gradual pressure to build on top of LLMs, which, in turn, will really only be useful with the tried and true. Like, we’re going to be heading towards an era where innovation means “we can ask the LLM about it”. Given the high capital costs required to train, I wouldn’t be shocked to see LLMs ignoring new unique approaches and biasing to whatever the big corps want you to do. For “accuracy”. I just sense were about to hit an era of software causing massive problems and costs, because LLMs are rapidly accelerating the pace of accidental complexity, and nobody knows really how to make money off them yet.
- layer8 2y agoExactly my thoughts. It might even work reasonably well in the end, but it seems it would make the world of computing a much less fun place.
- pmarreck 2y agoIf we're going to have LLM's writing code that we depend on, then we for damn well sure better have both typechecking and unit tests also in place. Hell, make it do TDD since humans don't seem very keen on that despite its empirical advantages
- nprateem 2y agoLol, this won't age well. BTW what's the aider vs cursor opinion?
- alexpc201 2y ago"LLM is not for me" sounds right. But, if you want to use LLM to avoid building the tedious parts of a project like the user interface, APIs, etc., and decide to code your algorithms the old-fashioned way, that's fine too.
- layer8 2y agoThis article has me wishing for a Reader Mode implementation that auto-uppercases sentences.
- warkdarrior 2y agoI bet an LLM could do that for you..
- cbare 2y agoI also view coding as essentially creative. Programming was mostly a hobby in the days of 8-bit PCs. It was a profession for some decades. Maybe it will be a hobby again in 5 years. Like gardening, sailing, fishing - professions at one time, now hobbies. On the other hand, the arrival of futuristic capabilities like computers speaking human languages is what drew me to technology in the first place. Luckily, you can choose to look forward and backward. You don't have to pick only one.
- DiscourseFan 2y agoMeanwhile I don’t use webhosted LLMs because I don’t want them sucking up my work!
- nineteen999 2y agoRight, and models you can run locally at home or on your dev machine aren't up to the task yet.
- DiscourseFan 2y agoThe only labor-saving advantage to these sorts of machines comes from them using other people's labor: my own work is not going to help me produce more work. And other people might know better than me about something, but not being able to trace the source of any output makes it impossible to analyze the chain of reasoning that led to it. It doesn't have use either as a creative tool, as a research assistant, nor as a mechanical part. Its almost a toy, except it steals everything you give to it.
- ein0p 2y agoYou’re not automating the “art” with llms. You’re automating stretching the canvas and squeezing out the paint. LLMs by design can’t create anything fundamentally new. Which is the “art” part of the whole exercise.
- yakshaving_jgt 2y agoI don't do programming as art. I just want to see the result. That said, in my experience, trying to get ChatGPT to spit out sensible code is sometimes like arguing with a conspiracy theorist. I ask a question, receive an answer, ask a follow-up question and scrutinise one of the details, and the interviewee just falls apart and grasps for other straws.
- nerder92 2y agoProgramming is not art, problem solving is. Programming is just a mean to an end, please stop this cringe romantic rhetoric. If you really love programming you don’t care about the medium, the fact that a program is represented as text is just a transient phase in the history due to the current tech we have available in this specific moment in time. Programming (today) is expressed as text, LLMs auto complete boring text, so that us “the artists” can write more of it faster, end of story.
- archagon 2y agoThis suggests that management is a strict superset of programming, which is a notion I imagine many of us would strongly push back against.
- gibbitz 2y agoI feel like I wrote this post. Like the author, as a formally trained painter and printmaker turned developer, I find development akin developing a painting. Working general to specific and letting solutions reveal themselves as I work through the problem. Learning patterns and mirroring them, creating a logic other developers can follow as they work with the code in the future and providing an API for consumers to use that not only provides for the requirements but creates patterns that reveal the internal structure to the consumer. LLMs creating code to be consumed by LLMs basically means none of that craft matters. It also means humans won't be able to work with this code. It doesn't matter what developers do. This is the future because the LLM is cheaper than paying someone a living wage and the businesses will go with that. I used to bemoan consultant written "good enough" code. The future holds WTF is all this code even doing LLM code. Likely with hallucinatory variable naming. If you think about textiles or furniture there is a huge difference between what was made by artisans and what is spat out of industrial process. The problem programming faces is that although a person who buys a hand made rug can tell the quality, a person who downloads an app has no idea outside of battery use and laggy UI if the coding is poor. I can always go back to portraiture, I guess...
- npatrick04 2y agoI agree with this article. Coding is the easiest and best part of the job. Way more time is spent testing than coding. Why take away the fun part, making your job only about the verification of it.
- hollerith 2y ago>Why take away the fun part Answering that is easy: I won't be able to stay employed as a programmer if the other programmers use AI to become more productive, and I do not.
- jaredcwhite 2y agoProgramming remains a deeply misunderstood, and often disrespected, medium. Any time someone tries to claim that we "won't need programmers anymore" in the future to accomplish X, Y, or Z, I simply behold somebody who doesn't understand the medium. Of course I understand that the "sweet spots" of logic, design, and platform architecture shifts over time. I can work at a higher level of abstraction now than I did when I started out writing PHP in 1999. I'm also willing to believe low-code/no-code solutions or turnkey solutions will get better over time. There's a reason I don't try to find restaurant clients to build a glorified menu website for anymore. But the hoopla around LLMs has only served to reinforce the disconnect between the people who express artistry in code and the people who see programming as nothing more than a "feature-implementation-pipeline" that's ripe for rote automation. I'd expect as much from folks in marketing, or CEOs, but to see so many CTOs make public claims they must privately know is simply bullshit…well, that's shaken my faith in this industry, I'll tell you that much. I'm feeling optimistic though. The tides are turning against generative AI and when the hype cycle is finally over, we'll have a handful of narrowly-purposeful, ethically-engineered models which provide some specific yet useful productivity gains…and beyond that, it'll just be the slow-but-steady progress of the discipline of hand-writing code.
- botanical76 2y agoI feel that a large divide in a programmer's perception of the utility of LLMs as an efficiency boost for coding is based on a large divide in specific skills. A very capable and experienced programmer, as I have often found in industry, may not be that fast at comprehending code that they did not write. On the other hand, I feel I am able to rapidly proof read code -- be it from my colleague in code review, stack overflow, or the output of an LLM. As a result, Copilot has let me write many Bash and Python scripts at breakneck speed. On the other hand, I have allowed LLMs to decide on the architecture of small programs before, and it has often created a garbage, unintuitive code structure. It is a tool that you must use to its strengths and your own personal strengths. If proof reading the code is slower than writing it for you personally, then it sounds wise to avoid the tool.
- OutOfHere 2y agoThere is no one answer to the question of whether to use LLMs for code. LLMs help with robotic transformatioms, SDK knowledge, glue code, and even with trivial algorithms, but not so well with novel algorithms. Novel algorithms are where I ignore what the LLM says, and do my own thing.
- archagon 2y agoAnother important point: don’t foster a dependency on tools you don’t own. If you run an LLM locally, fine, but entwining your career with a SAAS product like OpenAI may prove to be a critical (and expensive) mistake down the line.
- henrik_w 2y agoI love the craft of coding, and I still use ChatGPT every day to good effect. It writes the boilerplate code for me, and leaves the fun part to me. Don't underestimate the power of getting to a good, working solution faster. I wrote a blog post about it yesterday: https://henrikwarne.com/2024/08/25/programming-with-chatgpt/ https://henrikwarne.com/2024/08/25/programming-with-chatgpt/
- danielbln 2y agoGive Claude 3.5 a try at some point, I find it's better at programming tasks compared to GPT4o.
- zoogeny 2y agoThere is a difference between having code and writing code. For example, sometimes I want to have code that I don't want to write. I often use libraries from package managers for this case. Using existing libraries frees me to write the actual parts of the program that I value (and/or enjoy) while skipping some of the boring parts I do not value (and/or enjoy). It seems to me that there is a middle ground between writing programs myself and downloading code from a package manager. LLMs fill up some space within that gap. I think refusing to use an LLM because of "reasons" is the same as refusing to use packaged libraries for "reasons". That is, reasons for both definitely exist but I consider that kind of stubborn intransigence to be a sign of mental disorder. I recommend simply adjusting the criteria you use to decide when and when not to use packaged libraries to help determine when and when not to use LLMs.