back
312 comments
> Code is a beautiful form of creative expression, as rich as literature or music

I think this is overstating it and makes me wonder how familiar the author is with literature and music. Most programming is closer to plumbing. We come in, gripe about the guy who did the prior job, and solve a puzzle with some unique constraints. The reason LLMs are good at coding is because with coding we want boring, banal code.

Most programming is throwaway garbage, and if plumbing was treated remotely like that we'd be in deep shit, literally.

I never had plumbers come in and complain about the previous guy. They either changed something, or fixed something I caused. And whatever they did, it worked for years and decades, perfectly, even when I didn't treat it as well as I should have.

And to make things boring and banal is still an "art", for lack of a better word. You don't want your functions named like in minified code, you don't want ThisIsTheEntryPointOfTheProgram() either, and what do to instead can be subject of endless deliberation and discussion. We take all these "small" things for granted because we take churn and bloat for granted, and don't care, in a way plumbers would never. They don't have a new pipe material every week they install everywhere now, until the next fad that finally fixes everything for sure. They generally build stuff that lasts longer than people, so that profession is on a whole other planet IMO.

Finally my turn to shine! I learned how to play guitar for like a decade before I got into programming. I also write a lot and have some small novels I have finished.

I feel your analogy is right but it can extend to anything. Plumbing is a job, programing is a job and yes its basically the same process if you see at as a job.

But what OP means is the skill/ability of programming rather than the job of it. Think of a professional musician that plays cruise ships, their job is also like plumbing in the way you describe, which would mean its also just like programming in terms of a job.

Yet the skill/art to me has a lot to do with the art of music or the art of writing. All of them can be channels for creativity while forcing you to do very hard work on the mechanics. I cannot say the same about the art of plumbing where you do have the mechanics and need to work on it but it doesn't require cerativity or allow you to channel it.

I am currently working on a blog trying to explain concurrency and parallelism using the song "Free Bird".

Looks like you two are on opposite sides of the same fence. The demo scene exists it's programming for fun and creative expression. Also the ioccc. That's the equivalent of a creatively written novel. Then there's writing for just a job like writing knowledge bases. That would be programming for plumbing aka crud and cloud.
Most programming is that, but most music and literature are probably uninspired junks as well. But there are many beautiful algorithms (such as the ones in Knuths books) that are more beautiful than any music for me personally.
Programming as in forming structures of computation is exceedingly beautiful and as intricate as any art, but that's indeed far, far removed from the everyday reality of a programmer.

I'd say the two are as connected as Rembrandt and painting prefab homes' walls are.

Most programmers are in denial about this and think their job is a delicate flower full of undiscovered mathematical gems. Meanwhile all they do is transforming data from and to databases, but refuse to see the general pattern so they'll create the same system over and over and over again in just about any variation possible.

I don't think it's overstating it at all. If anything, I would argue that code is more expressive than literature or music because it's more general. Consider the space of all possible video games, demos/intros, generative paintings, generative music, etc. which wouldn't be possible without code.

I think you're confusing the common use of a medium with expressiveness. Many uses of ordinary language also aren't that interesting, but we need to consider the full space of possibilities.

Yes, if you're just going down a list of jira tickets and implementing product features, but for many folks it's also an art medium.
The point of art (like music and litterature) is the art itself. Code is a craft, it is means to an end. It can still be beautiful and impressive and creative, but it is a different thing.

It is not a value judgement. Art can be bad or bland and code can be a work of genius. But the moon lander or a handmade watch are beautiful because they actually work. It can’t really be compared to music.

I kinda like the music comparison because it's so rich with sociological analogues. You have the gear snobs who can't stop buying more premium gear but never sit down and write anything. The kids who pick up a copy of Garageband and put together hits with their natural talent, sense of taste and and interesting story to tell. Soundtrack and videogame composers who have hybrid instincts of session musicians and architects. Avant garde musicians who you're never fully sure of whether they're playing a joke you're in on (or on you) and that's kinda the point. Music critics who have never played or written music a day in their life and yet end up becoming arbiters (or more accurately, delegates) of taste. Fandom stans and ringleaders who absorb it as an identity and run extraordinarily well organized cults with an iron fist.

You can probably find correlates here with coding and AI any which way you look. Coding is so rich that you can use it to do artistic, creative pursuits because it really is an interactive and world building medium if you want it to be. And it can also be a practical, reliable machine that helps you get useful business objectives done. And anywhere in between!

Perhaps the author is indexing on the former because there's an intrinsic value to that, and intrinsic values seem to be quite drowned out by the noise of extrinsic values in this media supercycle.

But I don't think it'll be that way forever. Whenever things get too noisy, people have a way of seeking peace and quiet.

I think that, even among those who have had the ability to code since before LLMs, the skill of coding has been in atrophy, and will continue to be so over the next 10 or 20 years. Learning to code, over the same period of time, will not be worthwhile. At the end of that process, cracks in the system will start to show: Namely, we will have nothing but LLM-generated code to train future LLMs on, and codebases for production code will be so low in quality that they will be unintelligible to humans, and LLMs, too, will have trouble maintaining them. At that point, coding will become a valuable skill again. The practical question for someone planning out their career from todays' point of view, is that it's uncertain when that time will come, and these markets can and will stay irrational for longer than any single individual trying to resist them will be able to stay solvent.
As a professional programmer entering the final third of an enjoyable career, I would now place "learning to code" in the same category as "making a living as a poet." As in, it's truly enjoyable art and some people appreciate it, but you'd better plan for a day job.

Senior people who already know how to code are doing OKish for now, from the data I've seen, but the job is increasingly babysitting models like they were junior contributors.

Anecdotally, the people who I know who were not particularly good developers pre-llms still manage to produce bad code even using flagship models now.

I think having solid knowledge/understanding of good architecture and general practices is still crucial, and it's easy to forget that the foundational knowledge and instinct you take for granted now actually took a lot of time and effort to learn when you were less experienced.

> Code is a beautiful form of creative expression, as rich as literature or music

Something I'm trying to do right now is to build something and avoid using LLMs to write any code. I still use it to consult. I'm writing a Dota2 tournament match aggregator in Elixir that takes tournament streams and chronologically orders them in a format that makes it easier to watch them sequentially since I find YouTube hard to use for ingesting series of videos.

I'm building it because... I like programming. I like making things. I find that LLMs are making me intellectually lazy and making things with them feels unfulfilling. I want to build. It's human to want to build.

Please correct me if I'm wrong, but aren't AI agents replacing the coding mostly being done on the outer layers of development? I mean, end user applications, apps, dashboards, business applications? On this "outer crust" people can maybe tolerate things with 99% accuracy, or bloated code. A vibe coded app can be argued to be "good enough." (Even then, look at the disaster that Microsoft apps have become post AI adoption.)

But people are still staying away from LLMs on the critical compilers, frameworks, tools and libraries that people need to really rely on. No one wants to build on code that is 99% accurate or bloated. No one wants to use an AI coded web browser. To really build good building materials, you need to code it and know what you're doing. Where is anybody even getting close to phasing out coding in those critical areas?

Does anyone here know any mathematicians who can’t do long division or basic algebra?

Probably not, because they *don’t exist because learning basic math is necessary to learn higher level math*. Whether or not we have calculators to do basic math is irrelevant if you want to become a mathematician.

I’d argue that “whether or not the average dev will be writing any code by hand in 5 years” is irrelevant to whether or not one should learn to code *if they want to master designing and building complex software* using whatever method they will be using.

Learning to code = understanding a problem, breaking it down into small, manageable pieces, putting all the pieces back together. Debugging. Iterating towards better metrics, etc.

All these are amazingly valuable skills/mindsets that can be highly portable to other "problem solving" domains.

Those are not compelling arguments.

If the best we've got for convincing people to learn to code is that it's like math notation (the most hated part of math for the uninitiated), or pretty like a violin (useless for a new grad), then coding is in serious trouble.

IMO a better argument is it helps you "think like a computer". But if you wanted to learn that there are many video games I'd recommend mastering instead of learning to code. For most people "learn to code" is like telling programmers to "learn asm".

(I've been coding ~30 years)

The arguments put forward are very weak, in my opinion. It made me depressed, not hopeful, as in: if this is all we have left, things are becoming desperate indeed.

To elaborate, if coding is like art, it's the worst art there is. It's far closer to something like legos and the satisfaction you get from completing a noteworthy build. Maybe that's the writer's point - yes it's still worthwhile, in a purely hobbyist sort of way.

I find the "coding helps math" argument to be similarly weak. Yes, it certainly helps with algebra, but overall I would argue the coding flavor of math largely helps more coding type of math. It's a strange type of math with loops and rules and conditionals that wouldn't be mainstream if software wasn't so mainstream to begin with. When you pull back the covers, the argument sounds more circular than something with true meat on the bones.

I was quite worried about having to code when I interviewed recently. A two- or three- year layoff is a lot. Turns out that it didn't really make much difference! After a few weeks of warm-up exercises, coding was as natural as ever and turned out to be the easier part of technical assessments. I guess a couple decades of muscle memory is hard to lose.

Now then, back to using Fable. It is doing work that previously took me months in an evening.

The problem is that coding was sold as the pancea. If you were fired, "learn to code", if you're in prison, "learn to code", if you're in kindergarden, "learn to code".

Even in this article, it's talking about how it's a good way to learn math and formal thinking. Yea, as an application. If you want to learn math, learn some basic fundamentals tied specifically to math, and then come apply it to code.

Coding is like welding in that it's a useful skill, a craft unto itself, but also integral for modern day manufacturing that opens up a world of possibilities. You don't see welding being suggested as a form of excercise, or the ticket to being a multi-millionaire.

Everybody should learn to program a computer, because it teaches you how to think

- Steve Jobs

Thin post with more ads for their company than arguments.

Many pursuits are worthwhile, yet almost no one does most pursuits. Coding is going to become a niche activity like portrait painting or making toys. It’s fun but there’s far cheaper easier ways to get a superior product.

It's worth learning to harvest with a scythe because it's cheap, good exercise, and has no mechanical parts to fail.

The issue isn't whether it's worth learning something in a personal development sense, it's whether it's worth going into massive student loan debt to pursue a career path that was once seen as a ticket to a comfy office job. LLMs probably won't replace top performing software engineers. Will they replace the mediocre cog-in-the-machine coders that most people become? In 5 years? 10 years? 20 years? That's what has college students worrying about whether it's "worth it".

If you want to fully understand / contribute to / fully leverage the most powerful technology humanity has ever devised (AI), you must learn to read and write code. That’s the only reason anyone should need.
Coding does not inherently have the “precision” of mathematics. If you’ve ever tried to formally verify even a basic algorithm you’ll know how “loose” programs are with their specifications.

If you end up down this route you’ll gain an appreciation for a branch of mathematics that has spent most of its history maligned by the wider community.

I too finally started grokking trigonometry and calculus in high school thanks much due to programming.

I don’t think it’s the best entry point for mathematics though. Us programmers tend to bias its effect on our learning and appreciation. For most people programming is tedious, cryptic, and frustrating. It doesn’t aid understanding mathematics if you can’t even use it.

Maths is beautiful on its own. And so is programming.

I think it’s still worthwhile because for all that these systems can do it still takes an experienced human to drive them. Any positive results are due to a human understanding the training data, the system, and importantly the output. You can’t one-shot a production grade C compiler or OS with these tools and never will be able to without over fitting the model. You need to know what a production grade C compiler requires in order to generate one using tools like this.

So keep learning. Mainly because it suits you, benefits you, and you like doing it.

I have always found similarities between programming and filmmaking.

Programmer being the director and the LLM being the entire apparatus upon which the film/software is built. This became evident to me while doing spec-driven development for a few of my projects where I specify the constraints upon which the software should be build, but have limited control over the performance similar to how a director has limited control over an actor's performance.

There’s always value in the fundamentals you just might not get paid for them.
<<And finally, programming is simply fun. It's a joy. My calling in life is to spread the joy of programming,>>

must be a Raku coder -Ofun

The era of LLMs is similar to when Magic was discovered in the 1400s.

The layperson may be able to get ahold of a spellbook, but without Understanding it comes with high risk of turning your niece into a frog.

Whereas Wizards can cast increasingly powerful spells that build on each other, and make Art.

Well this is ridiculous. Literature or music?!

No, learning to code is still worthwhile because the AI cannot do useful abstraction well at all. If you don't know how to code, then you'll fail to build useful tools and useful reusable components that can (a) further accelerate your development speed, and (b) reduce token spend.

Learning anything is worthwhile. Just because you code in Python it doesn't mean that knowing how instructions are processed in a CPU or the memory is managed is useless.

The excuse that we don't need to know how things work because AI will take care of it is going to bite a lot of people on their asses

Perhaps coding will be optional rather than a requirement for the most in-demand tech jobs. But for roles including AI Engineer, someone who knows how to code will have a premium over an AI Engineer that only vibes.

While the peak of "learning to code" is surely in the past, there is resentment (at least in my personal experience) that's fueling the "anti-learning to code". Personally, it was very frustrating when learning how to program and I gave up many times before finally getting it. In general, when people cannot obtain competence in a certain area, they tend to disregard the importance of it to shield their ego. What's going on now in corporate are nasty politics because people who decided not to learn to code seek that the skill is disregarded entirely and even mocked.

If you can’t code, you’ll be like a mathematician or statistician who can’t do basic math because they have tools that can do it for them. We don’t tell kids they don’t need to know how to do basic math operations because they have Excel and calculators.
I worked with Seymour Papert when he was chairman of Logo Computer Systems. Also the author (with Marvin Minsky) of Perceptrons, an early book on Neural Networks. Really ahead of his time.
Learning Classical Latin and Ancient Greek is also worthwhile.

Like learning a programming language, these activities stretch your mind in different ways.

And expose you to a different kind of beauty and a very different world.

What is "learn to code"?

Is it learning the syntax of a programming language? Is it learning CS fundamentals? Is it learning OS fundamentals? Is it learning common tools and libraries? Is it learning programming paradigms? Is it learning how to read and debug code? Is it learning Java boilerplate? Is it learning an esoteric sequence of keystrokes to perform an edit in vim?

That last one I think has definitely been superceded by LLMs, and I say this as an ed user.

To create things via AI without being able to comprehend the output is to trust completely in the agent(s). Operating that way is more optimistic than experience has taught me to be.
Coding is easy. It's the programming that's hard.

I'm glad I'm a programmer and not just a coder. Just like Hemingway was a writer and not just a stenographer or typist.

This “don’t need to learn code” vibe will bring a big quality and good pay wave programming. It was getting more obnoxious because of more and more mba guys getting into programming because there is money in it.

Hopefully this will act as an effective filter against money people so they can keep going into law or w/e else they believe there is money

The very fact we need to discuss that it's a sign that we lost and slop has won. Learning to code it's a journey that never ends, after almost 15+ years I feel like I still learn and that my code sucks, if I delegate everything to the slot machine I feel like I'm being retro actively turned into a junior, thanks but no thanks. I'll still use LLMs and Agents the best I can but coding is mine
With everyday bringing new developments in the world, a lot of skills that used to be in demand are being replaced with new age tools. This has been the case in many industries and its evolving. The last 6 years have reshaped the world as we know it very aggressively and the best we can do is flow and adapt to the new times
Who in the world has time to learn how to code? Who has that much copious free time when they're working two jobs?
Learning itself still has value. Just because my arms and legs are shorter than others doesn't mean I should cut them off. Just because an LLM can do most things better than I can doesn't mean I should stop learning. Also, whether the LLM's knowledge is suited for humans is a separate issue. This isn't limited to coding—all fields of study are ultimately humanity's process of understanding the world, and it's participating in that historical process that has been passed down from our ancestors. I think the idea that something has or doesn't have value just because an LLM exists is purely a capitalistic perspective. I sincerely question whether something that doesn't generate money in a capitalist sense is truly without value
Even if you want to use an LLM (which you probably shouldn't, but it's your life), you best know how to program if you want to make anything good. They suck at programming, and need a human to guide them.
Sometimes I think that I must be a complete low IQ imbecile, because for me, even using Fable, code is still a pretty much hands-on affair. Not in the sense of actually writing lines of code (I still like to create things like structs, interfaces, traits, as a form of prompting, natural language for that kind of stuff is actually more verbose and way less precise).

But I hate waste, I hate dead code, I hate byzantine constructions and reinventing the wheel, and thus, most of the time, I keep a close eye on reasoning traces, frequently interrupt and steer the agent, and prefer to review the diffs as they are done in very small increments.

And everytime I am lazy, and try to just vibe code stuff, inevitably the old "all abstractions are leaky" adage rear its ugly head and I see myself reviewing a fucking giant delta and asking the agent: "but, why? when you could just..."

It is not possible that all those famous people are wrong and I am right. If my results when giving full autonomy to an agent are usually sub-optimal under my point of view, well, what if the problem is with MY point of view?

I am starting to get depressed thinking that maybe I have some personality flaw that will prevent me from truly reaping the fruits of this new age. At one side I think it is absurdly fantastic that I have this pair programmer so productive and with fantastic recall, but on the other side, I can't really relinquish control, I feel like it can't build a coherent architecture, I am still attached to the idea that engineering principles like low coupling, information hiding, high cohesion, low cyclomatic complexity, modularity, sound typing are important, and maybe I am just a fucking old curmudgeon that can't get up with the times.

Note that every single person telling you to not learn to code currently knows how to code, often at an expert level, and is therefore capable of reasoning about code.

I learned to build such useless things as operating systems, databases and neural nets from scratch. That knowledge is foundational to my ability today to lead technical teams effectively, even in the era of copilot.

I would absolutely not hire an engineer who could not code. Don't get me wrong, I don't need code monkeys any more than I need assembly experts.

I need engineers who have experience building, tuning and maintaining complex software.

Someone who can't code can't crack open what they're working on and reason about it in a meaningful way. That's a huge liability. Also like... they just haven't ever done that work before. I don't even know if they're going to be capable of it.

I did some consulting a few years ago to convert startup codebases from Ruby on Rails to something that "would scale". Some of the projects I opened up were beyond comical. Millions and millions of dollars of investor capital burned torturing cut-rate junior engineers to get them to make a product-shaped solutions that could not be maintained, could not be scaled, could not be modified without everything breaking... entire teams of cheerful idiots who were replaceable with a single capable senior engineer who knew what they were actually doing. It was just tragic. Literal futures burned up as friction with reality, because neither the founder nor their engineers could write actual code to build clean, scalable systems without tripping over their own feet.

You're signing future engineers up to be those utterly lackluster juniors for the rest of their lives. Stay in school kids. Learn to code.

A few years from now after the AI hype has cooled down (it has already started), where will be two types of people:

1. The ones who use AI for everything and therefore, are unable to think on their own, unable to make decisions on their own, and everything in between.

Looking for a job will be fun because their skills now depend on AI dependency rather than skill.

2. The ones who use AI as tool and therefore, are still able to do things on their own, make decisions on their own.

Looking for a job will be just another Tuesday in the office, and were are already seeing companies hiring them back to replace AI.

Here's a much simpler reason: the output of an LLM, mathematically, is average. The code it writes is, effectively, the geometric mean of github. The ideas it comes up with are the geometric mean of wikipedia and reddit. Go ask it how to do something truly "out there" and watch it give you the most milquetoast reply you've ever seen. I asked Fable 5 to create a profitable business and the best it could come up with was:

>Sell an expensive, recurring B2B service into your network, fulfill it with technical leverage, then productize it into software once you've done the same work five times.

Yeah, good fucking work, nobody's ever thought of that. It's obvious why it picked that though, every 3rd post on this forum and half of the rest of the internet is singing the praises of be-your-own-boss SaaS passive income and it turns out that if you convolve all of that into a black box this is what you're gonna get.