Programming Isn't Special
blog.glyph.im145 points by ingve 14 hours ago
145 points by ingve 14 hours ago
Programming is special. When you create art, music or prose, it's an artifact that is overwhelmingly consumed directly. I enjoy the art by looking at it, listening to it, reading it. I am mostly unaffected by art I've never seen (save for maybe that which seeps into popular culture around me).
Code as an artifact is different in that it can be given agency, ie turned into software. The output of that software can be valuable despite the code being unintelligible to the vast majority of people. Very few people have read e.g. the source code for the TLS encyrption algorithms, yet billions of people's lives depend on it.
Mel's famous chess demo is undeniably a work of art. It was also completely unmaintainable. There's a tension between artistic expression and fulfilling business requirements. One could argue that `deferred` is good because it lowers cognitive complexity and makes fulfilling business requirements easier. Whether or not it qualifies as "artistic" or "beautiful" is entirely incidental.
There's also the unfortunate matter that most software is closed source. All most will ever see is the user interface and the API surface. While I am a believer in art for art's sake, I don't think you can blame programmers for feeling like the bottom of a filing cabinet behind a locked door isn't the best place for artistic expression. Perhaps, one could argue, what's more important is the finished product and the impact it has on the world. (Obviously this doesn't apply to actual creative-coding hobbyist spaces, ex: the demoscene, game jams, etc.)
That said, compassionate coding, good documentation/comments/names, and solid architectural design are all vital in software development. This fundamentally requires more care and attention than automated vibe-coding tends to provide. But these qualities are still possible to achieve in an AI-assisted workflow. It's a question of striking the balance between fulfilling business requirements, not alienating developers, ensuring code quality, and limiting the fallout of giving boatloads of cash and political power to AI corporations.
> Artists understand that AI is bad for art. Why don’t programmers understand that we are artists?
Because the vast majority of programmers are bad artists, they just did programming for money. Only few actually cared about true craftsmanship, readability for every level of programmers while maintaining maximum efficiency, true passionate programming or quality open-source without caring how much money earn. AI makes bad artists the best as they don't care the taste but quantity. Same applies for bad programmers.
> they just did programming for money
Very reductive. I would consider myself a pretty mediocre programmer, but worked with a lot worse. I care about making useful things for other people. I care about quality but less so than utility. If I ever get to the point to not need to worry about money, I will still focus on utility over any artistic notion of the code that produces that utility. Sometimes those things align, sometimes they don’t, but I’m much happier shipping a messy to maintain thing that is useful to lots of people, than something that is algorithmicly elegant.
Programming makes a lot of talented people useful, and the world doesn’t care too much about talent unless it’s a talent at sports or a talent at sticking it to other people.
I am a programmer who likes aesthetics. I think about how aesthetic it is to not have to deal with certain production incidents for certain blocks of code because the typelevel computation tells me it would be a compiler bug if it screwed up. I like the feeling of realizing those 100 LOC could just be 10.
I sometimes tell people of when I came down from Mt. Fuji, there were wispy clouds and grand nature below me, picturesque like a painting. At that time, I likened it to the beauty I felt when I was first learning Haskell. But I say it because I expect it to be a rare kind of sentiment.
The thing with art and music is that they are easy to appreciate, and the appreciation grows deeper with more consideration. I love reading the placards in museums and attempting to understand why the artist did what they did, I like it more than even looking at the piece itself.
Code (and math, for that matter) is almost the same except for one key difference: they are not easy to appreciate without deliberate training, training which is often far to the side of anything most people need/want to deal with.
> The thing with art and music is that they are easy to appreciate
I get what you mean (and agree w.r.t. math/code) but notably, I think appreciation for a lot of things still accumulates if you put in the work.
As an amateur violist, I can attest that I gained a totally new appreciation for most of the pieces I've studied and played in an orchestra in the past.
This not only includes "unknown" classical music from different eras, but also the obvious (popular) candidates like Beethoven's 6th, Dvořak's 9th and Grieg's "Peer Gynt" suites.
And there's a lot of great music one needs to get into first; for expample: I love Tool songs exactly for that, and there are certainly more obscure artists :)
So, I suspect the thing about maths and code is mainly just caused by the fact that people can go through life just fine without really interacting with them on the level required to develop the smallest bit of "taste" (as opposed to e.g. music).
And to think that all this knowledge comes from a small subset of music, specifically rooted in European classical music. Music worldwide even uses different scales.
I think you're overestimating the "appreciability" of art and music. I would say most people don't have the training to understand or enjoy the majority of the most important critical works in art or music from the last 100 years, if not longer.
I totally agree that it takes some deliberate training to appreciate it. But saying that out loud feels kind of lame to me. Making something that connects with a ton of people is really hard too. Beatles, Michael Jackson But yeah! I really do get what youre saying.
> The thing with art and music is that they are easy to appreciate
> Code (and math, for that matter) is almost the same except for one key difference: they are not easy to appreciate without deliberate training, training which is often far to the side of anything most people need/want to deal with.
I would argue that this exists on a spectrum. There's lots of art and music that's pretty difficult to appreciate without deliberate training, and indeed there are whole categories of music which we would probably call music for musicians.
For example, the album Kind of Blue by Miles Davis is loved by many and is considered by most people to be the best gateway record into the world of jazz, because it's easy to listen to and appreciate. An album like Sketches of Spain, and especially an album like Bitches Brew, are more difficult for the average non-musician listener to get into.
An even more out-there example for music is Allan Holdsworth. In certain circles, he's a well-known and well-regarded name, considered highly influential. Most people have no idea who he is or what he did. (A bit like that cutaway in Family Guy where they jumped to Benjamin Disraeli and he simply said: "you don't even know who I am!").
Similarly, in art and painting, you often need training to understand why something was especially impressive. Now that we have photography, some old paintings can feel "boring" if you don't know how to appreciate the level of difficulty in producing a near-photorealistic work in the 1700s.
Conversely, some math is very easy to appreciate without training! I had a buddy who I got excited about math simply by explaining the Fibonacci sequence and the golden ratio, then showing trivial examples of how they appear in nature. My friend got lit up about math that day in a whole new way.
Coding is not really programming. It is certainly a highly adjacent skill, but coding is not the same as programming. To quote Leslie Lamport, coding is to programming as typing is to writing.
A key difference is we are not paid to goto mt.fuji. the opposite infact.
Hence we can't take this lesson to the workplace.
A lot of arts can be done as a job.
And it's always a mixed blessing.
I personally feel like the second any art becomes a "job", it ceases its magic for them.
I don't think that artists would feel the same way about their art if they were put in corporate cubicasl with little agency to build art that "sells" because it increases the bottom line.
I think this is why in the video game industry many people burn out. They join for the passion and leave soulless.
Mixed blessing indeed. As a young programmer, many times I complained about being asked to put warts in my perfect architecture, until I realized I'm not being paid to make museum pieces, I'm being paid to solve business problems.
I don't program anymore, but I learned you still can enjoy the beauty of your Mount Fuji when the business needs a pizza stand in the middle of the trail.
Seeing the core of my Mount Fuji stable and supporting more stands around for years is a satisfaction itself.
A collective of workers in a field can very much decide what they want to get payed for. Craftsmen did exactly that for centuries, and that's in fact what makes them being known for quality and is thus in fact their business moat.
I get what Glyph is trying to say here, but I do feel that programming IS different. I'm going to use that word rather than "special".
Many, I'd even go so far as to say most, programmers support and use open source. Open source is thought of in a very different way than I'd say most other traditionally-recognized artists relate to reuse of their work.
Where most composers, performers, painters, novelists (etc) will protect their work with very restrictive licenses, the open source community has much more permissive licenses (though still licenses, many licenses are "feel free to use it" unless you are making money off it).
It strikes me that the author bemoans the state / lack of software literacy immediately after they take responsibility for obfuscating the descriptive parameters "callback" and "errback" in favor of "deferred" which became "promise" in the name of aesthetics. "callback" might be ugly but at least it says what it does and does what it says.
You say "obfuscating", the author I suspect would say "abstracting", so it's a bit of a matter of perspective. I think the point still stands, because Deferred has become a useful way to think about these collections of callbacks in async systems, so having that concept allows for a literary shorthand, which seems to be an important point of elevating literature.
Programming as an art form always reminds me of the Einstein quote; "Pure mathematics is, in its way, the poetry of logical ideas". Both are just art forms you cannot appreciate without some understanding of it. Arguably thats true of all art actually, its just that the more familiar forms, like painting or music, can be understood at a basic level without an understanding, whereas mathematics and programming are essentially alien to the casual observer.
Programming is less like the category "music" and more like the specific genre "sampling", in this case. Much of programming is reusing other peoples "samples", integrating them in new and useful ways.
In music, we have largely accepted that sampling is legitimate (though that did take some fighting to achieve), and that the musicians making music this way are legitimate artists.
When something is brought into the world through human intention, it has the possibility of being art. A human must stand next to it and say "This is mine."
The human role in the creation of art is non-negotiable.
That's silly. There's lots of art with no known creator. Assuming the creator will never be known, it's functionally no different from art that has no creator.
We're already at a point where lots of "art" you look at might have had no human involvement; it could have been generated ad hoc by a web search or in response to the way you hesitated over something else in your feed (okay, maybe not already but certainly in the near future).
But we can't just say that anything that moves you is in a superposition of "art" and "not-art" until sufficient evidence emerges that it was created by a human.
Most people don't experience art through the "art historian" or "true art appreciator" lenses of "who made this and why". They just experience the thing for what it is.
2030's equivalent of Banksy could be a hacker who puts artistic images on major websites. It could then come out, years later, that it was all done by some AI agent. It doesn't matter if that's likely or not, it's obviously possible, and your definition can't just ignore it.
> Assuming the creator will never be known, it's functionally no different from art that has no creator.
This is the key point to argue. I say that it IS different. AI is giving us fits because AI generated works create congnitive dissonance. Knowing a human made something at all is what allows us to connect to it as art. We don't need to know anything about them other than that they are a human, they existed.
The crazy part about it is that it is possible for a human to use AI to make art. It's the intention and the human that make it possible. Where it breaks down is when there's no intention.
I can't remember what show it was (maybe Futurama?), but there's a great bit that lampoons this idea. At a modern art exhibit, somebody leaves something like a banana on an empty pedestal. Later, the attendees are marveling at it, talking about what it means, that sort of thing.
In that is example, there is no artistic intent, but also, the "piece" cannot be readily separated from the other "pieces" in the modern art exhibit that were made with artistic intent.
By your definition of art, people can be "duped" by facts about a piece that don't even accompany many pieces that we think of as "obviously art". They can assume they know the answer, or even a bounding box for the answer like "it was made by a person intentionally", and they can turn out to be wrong, and then... what? It just wasn't art, retroactively?
What if a famous haiku turns out to have been a coded message, 100% instrumental in nature, something like the number and position of enemy forces? "Whoops, guess it wasn't art". What if the best picture I took on a vacation turns out to have been take by a software glitch while my camera sat on my luggage?
We only ever think we know who made something. We do get it wrong. There's a lot of fraud in the art world. Is that likely to get worse or better in the next 100 years, do you think? What are future generations to do, just wonder about whether all their favorite art (that looks like art, feels like art, moves them like art) is "maybe art, maybe not"?
Yes, the modern interpretation of art is just the old adage that beauty is in the eye of the beholder or more crudely it’s all head canon. It’s a degenerate form of what was pursued before the modern era which was to identify and produce art that was unambiguously exceptional to anyone who saw it. Some of that is still present but seems stifled by the requirement to go against tradition so you end up with things like exploiting sheer size or complexity for effect.
Is a print of the Mona Lisa still art? Or is it worthless slop by virtue of having been created by a machine?
For the curious, Jean Baudrillard and Walter Benjamin are a good place to start for answering these questions.
as of yet, there’s still no such thing as a print created entirely by a machine. Someone made the scan, prepared the print file, chose the paper stock, proofed the prints. Or at least some of those steps, depending on the print.
The point is, there’s no print that is 1:1 equivalent to an original painting. There are artistic choices embedded throughout the process that influence the result and make one print different than another, which people might consider more or less accurate, or faithful, or beautiful, or artistic.
It’s easy to assume an image is just an image, a bunch of pixels with defined numerical values. But the real world has so much more detail than that.
A print is a faithful copy of the original art. No additional artistic or expressive intent went into the mass production of the print.
IMO the original painting is art, a faithful copy is also lesser art, but a print is not art, because it takes significantly less skill and creativity to print thousands of it. It isn't worthless nor slop, though.
Basically, art speaks to our sensibilities, so we expect to find a message in there. LLMs can't create, only mix-and-match what exists in their training data set. You could slop a new painting, make a special canvas printer, and exhibit it in a blind test. Some people will think it's art because they find meaning in it, while others will think it's not art because they'll recognize several meanings slopped together in a nonsensical way.
In reality, it was never art, because the creator, a statistical algorithm, never had any message to convey in the first place.
I used to think that programming is an art; that you get paid for the code. Too bad it took me decades to realize how wrong I was. AI sucks, it sucks the soul from this profession. But in the end, the code it produces works, so who cares?
I wish I could find the quote, I think it was on C2 Wiki, but alas, it was something like:
If you're an artist, programming is your clay, if you're an engineer, programming is your building material.
Point being, which I always connected with, was that programming is a medium for expressing a lot of things. Just like you can use paper and pen to write poetry or a dry technical manual. And everyone gets to decide how they see it and use it.
Hot Take: AI Isn't Special: When someone learns through reading a bunch of books on a subject (art, programming, music), we don't call it theft and demand they be able to recite the specific source of where they learned something and demand they pay the original authors for their use of it. AI Isn't Special.
Go talk to an artist, and they'll tell you art is a form of engineering, and it requires the artist to understand what works, what doesn't, and why, in practical & scientific terms. The corporate world is dogmatic, self-destructive, FOMO-obsessed and then some. It considers _doing work that matters_ to be a special privilege, and that you should be happy and thankful for meaningless work instead. The corporate world is practically anti-capitalist and anti-real.
If anything, that corporate world fulfills the popular perception of art - impractical, pointless gesturing and posing - rather than what real art intends to do, which is to gain a deeper understanding of the real world and show it to others. Art critics tend to hate it when an artist explains how art is made, preferring an explanation of magical genius; but that's their problem, not art's problem.
Programming can be art in the way that cooking can be art.
Most of it is in fact NOT art but simply done to solve a problem.
Right on. And similarly, you don't need to learn farming to be able to cook good food, just like you didn't need to know assembly language or machine code to be able to write programs before AI.
I strongly agree that programming is art, but I think there's a difference between other art forms.
A novel is both how it's made and what it is, and so is a piece of music.
Programming produces two different outputs: the code and the program. What users consume, and care about, is the program. The code may or may not be read by other programmers but it's not the main output. (It would be extremely weird to output code in a language that can't ever be run.)
And so I think the beauty or effectiveness of the program matters more than the beauty or elegance of the code. Those are not entirely orthogonal of course, but only loosely coupled.
A programmer should care a lot about the program, and a little less about the code. Vibe programming (where the programmer doesn't care one way or another) to me is a crime; but you can certainly use AI to code, and still care about the finished product, and make it good.
I don't think this is necessarily true. My personal belief is that any functional thing can be turned into art if it is made with deep respect and intimate knowledge of the telos of the object. You make something so well that you see something really beautiful or important in it/with it/through it that you can't help but capture.
Technical communications serve mostly functional purpose but there were technical documents that ascended their pure function. One of the most famous drawings in the European art history is, in fact, a technical document[0].
I also really love looking at arcitectural drawings, there are a lot of architects and drafters whose technical drawing carries so much artistic quality to it (and not merely quality of execution) that I personally call them artists[1].
And before I get mocked about whether code that makes a spreadheet software is art now -- I don't know, I am not a programmer but I think it can be -- surely there is something else to code than just the software it produces? Speed? Efficiency? Balance? Elegant architecture of ideas that says "yes, I know you, the next maintainer of this codebase, will need to extend it one day, and this is why I made it very simple for you"? It might not talk to an accountant who ends up using the spreadsheet but it can talk to another programmer.
> A programmer should care a lot about the program, and a little less about the code
This gives me vibes of like saying to artists "you should care about the painting but less about the brushes and paints"
The tools you choose and the lines you scribe all contribute to the whole. It all matters to some extent
Also, newsflash: the code is the program
What the phrasing really meant was caring about the result, not the program, and it has the same energy as people saying mass-slopped books are as good as regular books because they are entertaining.
In the long run, what matters is the maintainability of the code. And the security, and the performance. All that comes from the code. The most beautiful code with proper layers of abstraction is gonna turn to shit when business needs come into play and there's not enough time to rearchitect the system properly.
Completely disagree. Programming is engineering. Almost all software in existence exists to solve problems, and almost all interaction with software are with the end product, rather than the code. For code to be qualify as art, the definition of art has to be diluted to the point of meaninglessness. Is an Ikea cabinet art too?
Even when models are capable of producing convincing illustrations in any style, it's still generally easy to tell what's AI generated most of the time due to lack of unique artist's style, taste, and meaning. There's nothing that makes an AI-generated piece of software worse than a human-written one.
Personally, I also hate my job less because of AI. I get to focus on solving actual problems, architecture, and code quality. Almost all pre-AI code at my company was just layers of hacks upon hacks. With AI, I actually get to write code that's up to my standards because doing things properly is nearly free in terms of time and effort.
I think this is a stretch, many engineering feats are also been considered works of art. Bridges, homes, office buildings, etc. There is no reason not to consider software code, or the software itself, to be works of art.
Indeed, we have seen many instances of software that are well regarded as being works of art. Is the source code for that software somehow not art?
The 90s demoscene was a fascinating confluence of engineering, art, and informal competition.
If you've ever been to a makerspace, those places tend to be ground 0 for engineering as art.
I would never consider any functional piece of software or its source code art. Something like brainfuck language and programs in it can be art-adjacent to me, but they don't fall under functional.
Some buildings are works of art, but there are plenty that are clearly not. I doubt anyone considers a typical big box store or a commieblock art. To me, all functional software is equivalent to a mass-produced building on art scale.
Are there simply two cultures among programmers? Along similar lines as the two cultures of mathematics? One motivated by the process itself, by esthetics, by abstractions, ideas. The other by solving problems. And then obviously these two cultures react very differently to AI.
I think AI has a third culture of supporters: one motivated by looking like an expert while making do with the skills of a novice
Never before we had something like this: a tool that knows more than you do, obeys like a slave, and doesn't mind if you take the credit. It's the dream of students that copied the homework/answers of others.
I like how you framed this distinction. I think I belong to the first group, and I'm having to reconcile with the loss of these activities I enjoyed.
I like solving problems but getting working code was a dopamine hit. Now, just knowing I could use AI to generate code, solve a problem, somehow took away that hit I used to get from writing working code. All I have left now, is solving business problems.
I am so fascinated about this angle -- whether programming is art or not. This is one of the things that got me to HN recently and I love reading these discussiong as a non-programmer.
While I love art, I am not an art historian or critic, so the definition I have for it is highly subjective -- in my opinion one of the functions of art is communication with other people (often through time and space). For art to fulfill its telos, so to speak, the message that it carries must also be read (heard, perceived) by somebody and then, if it's great art, eventually someone would want to respond to it.
The message can be simple, complex, subversive, stupid, clever, it can be an observation about world, a joke, a profound truth, a memory, a question, a snapshot, a curiosity, a trick, and a ton of other things. And sure, the message can be distorted, misunderstood, twisted, forgotten, lost, etc, but if no one "reads" it and no one "talks" to it, it might as well be glossolalia.
So my question for folks who do consider programming art -- do you "read" other people's code like this? Do you exchange ideas through code? Have you ever trolled great coders of the past through your code or tried to prove them wrong?
I hope my question doesn't come off as complete nonsense.
P.s. I know that there are programming manifestos which to me sounds like there is a layer of meaning that the code carries and this meaning goes beyond pure machine instructions or software functionality, but I'd love to read answers of actual programmers.
> So my question for folks who do consider programming art -- do you "read" other people's code like this? Do you exchange ideas through code? Have you ever trolled great coders of the past through your code or tried to prove them wrong?
Yes, 100% yes. I have always said that I reading someones code to me is akin to reading a personal diary or memoir. It exposes so many thing about their frame of mind and world view. I consider it beautiful and the advent of LLMs greatly muddying this signal (it has absolutely not REMOVED IT) has been incredible painful.
That's a really good question! The code to the old software, the first version of Adobe Photoshop, Microsoft Office, IdSoftware's Doom, are available on GitHub, and people have poured over them. Or more modernly, there's large open source projects out there currently. But most source isn't something anyone else would see outside of work because it's all proprietary software. Google's internal systems are a thing of beauty, but no one outside of Google can legally be shown them, so it goes unnoticed by the wider world. The closest thing we get to art appreciation thus is blogs like Raymond Chen's Old New Thing. He's a programmer with Microsoft that talks about what it was like to work on windows.
Before AI, some programming could be considered be considered art. There are definitely codebases that are more beautiful than others. But now with introduction of AI you can’t consider any code as art as you have no idea who produced it. Yes, it may be looking good, but from that perspective it’s just randomly produced without the thought of being art. And at some point it will be refactored into oblivion by something that doesn’t care.
I respect the honesty of people who openly list LLMs as contributors. Hiding the use of LLMs is unethical, and the product of such I'll definitely won't use, nor suggest to others.
Depending on the use, something that an LLM contributed to could still be art, as long as the human makes sure their intent is preserved. I'd say the likelihood of being art is directly proportional to the involvement of the human. Something vibe coded with minimal effort, even if attractive, is not art, just coincidence.
Not sure if the author is reading HN, but there is a typo:
> we take the total likelihood of those moments of greatness to (->from) “definitely sometimes” to “never”.
He is not, but I have passed on your comment to him and am passing back his thanks to you.
My art is thinking of ways to help my customers. They don't know what is possible or what data they have in their other tools. I don't see that being taken over by ai just yet, because they don't know what to ask.
I would define Art as something that has meaning and intentionality across multiple disciplines.
Very good example about Deferred.
I will argue anything by anyone can be art. Eg a business run by an AI can be art.
A few points:
> Across all creative industries, there is a concerted push to reject this technology. Yet, almost unique among creative fields, many experienced programmers remain convinced that it’s fine to use “AI” for programming.
How many artists claim that you must make your own paints and construct your own paintbrushes for it to be "art?"
A lot of "AI" in programming isn't replacing programmers or replacing making novel ideas; it's automating mundane tasks so that the programmer can pay closer attention to critical details. Otherwise, when a programmer is truly hands-off and just babysitting an AI, is the program really an expression of an original thought or just the equivalent of a custom-made paintbrush and a custom-made paint; for some other endeavor?
> However, code that is intentionally aesthetically designed tends to be important, both socially and technologically.
I spend a lot of time making sure that code is understandable; often times spending more time on the aesthetics than it took me for the original version. I've found AI very helpful with this, because a mindless refactor that would take me 30-90 minutes, I can have AI do in about 3 minutes.
> Berger reveals that the reality of this portrait is that a poor old painter needed some work, and some officials probably thought it might be nice to have an official portrait. So they paid some money to the poor old man, and he painted it, and then they had a painting.
Today this would be a photograph. Ironically, photography means that painted portraits are a lot more creative, because now we expect to the painter to take more liberties.
> It does make me a bit sad that we don’t have much of a critical reading tradition in the software community. Literate Programming is often praised, but rarely practiced.
Uhm, this is what code reviews are for! And, to be quite frank, I've found that AI code reviews are some of the best I've gotten, because the AI is able to do very deep dives that would take a human reviewer hours, or even days, to do.
> Programming isn’t special. It’s just Art, and Art is the most human — and thus, the most universal — thing that there is.
And this is where the author lost credibility. Programming is more like the inside of the statue of liberty. The art is the result, not the code inside of it.
Programmers don't need to justify code as art to reject AI. Programming is building and people who care about building do so because they take pride in the craft, because they take joy in mastery, because they are relentlessly curious, because they learn by doing, because they want to manifest the abstract because it's a natural desire to leave a mark, a legacy.
AI is the antithesis. You don't build, you commission. Mastery requires struggle, AI eschews it. Mountains of slop bury your handcrafted work, your culmination of effort, your capacity to inspire others as you yourself were inspired.
The reason you see less rejection of AI in tech circles is because tech is infested by capitalists who see programming as a means of extracting a buck, not as a craft. AI made their stripes more visible.
Some building is done for those reasons, but it's hard to think of examples where building is done at large scale for those reasons.
I have a friend who is in construction management at a firm that exclusively does large projects, usually commercial and sometimes residential towers. I don't think you could come up with a definition for "build" that excludes what he and those he manages are doing. But they do not build those projects because "they take pride in the craft, because they take joy in mastery, because they are relentlessly curious, because they learn by doing, because they want to manifest the abstract because it's a natural desire to leave a mark, a legacy". Some of those things may be true of their work some or all of the time, but they don't do that work because of those things. They do it because somebody considered it to be really useful and worthy of the investment to build that new tower. The reason they are building, the "because" of it all, is the end product. The means with which they build, the craft of it, is only relevant as a means to that desired end.
Software is no different. Some software is built for the craft (and that's great, I personally love doing that), but at large scale, it is the outcome, the end product, that is the goal, that is the thing that matters. If craft is the best way to best achieve the desired outcome then all the better, but a professional will honestly assess whether that is truly the case, and do their work accordingly.
I believe there are software developers out there that might take a stronger position against AI but they literally fear for their employment.
We're in the late stages of capitalism, at a point where everyone is scrambling to extract some wealth, before everything comes crumbling down. No one is even remotely thinking about art of the craft now, or programmer happiness or whatever, and you're branded a loser if you think about that stuff.
Programming is special, as it's basically translation on steroids.
I don't know what other profession weaves so many levels of abstraction to get to the final product.
There's a 'joke' in engineering that if people knew how many assumptions went into designing a bridge, they’d never dare cross one. In engineering the abstractions are even more abstract, but quite useful nonetheless.
I agree, and I've considered my code to be art for a long while. Take for example my coffeescript parser: https://github.com/jaekwon/JoeScript/blob/master/src/joescri...
This is art.
And I have much love for good frameworks and design.
I'm fortunate to have started gno.land before AI, yet just late enough to finish it with AI. The GnoVM (gno.land) is also art -- go interpreting go, but in a novel multiuser context, a re-imagining of TBL's WWW in Go and markdown. AI was used for final touch polishing. Couldn't have ended up any better.
AI is not yet there to grok the artistry of code. But it will eventually, and humanity will benefit from it necessarily, not because it is demanded, but because people like us desire it. Push forward.
Well written article.
--
p.s. plug: gno.world, find me there.
The post is well intentioned, but misses the point.
While you can engage in the act of programming from the angle of craft and while you may have started to code because you really enjoyed how it felt like solving a puzzle, programming is primarily a profession. It is a lot closer to accounting than to painting.
There is still space for coding without AI, stuff like advent of code, etc. While it may sound old fashioned as a lot of people did it to practice code challenge for interviews, some did that simply for the pleasure of coding.
But when your job is working in some system for a corporation, big or small, there's no space there for craft or passion, just the reality that what matters is the sausage, not what went into making it.
You may (and probably should) still care about certain engineering principles; correctness, performance, readability, maintainability, etc. But that's about it, whether you write the code or an LLM does is immaterial.
Why? Is it because most programmers can get paid from a company and not most drawers or musicians? Is it that programmers don't give enough free code on Github, or that their PRs don't wax and wane about how beautiful they found their specific bugfix to be?
If you see the whimsical in a PR changing some column name in a table in a billing system, or you feel the magic and fantasy of a REST API, or yet, God forbid, the emotional undertones of fixing a NPE because the previous change did not consider that a field was optional, then you may have trouble to perceive the difference.
I, at least, never wrote a stock management system to explore the depth of human emotions.
Hmm. I had an issue once with numpy shape mismatch errors appearing after 18+ hours of computation. Frustrating, because it could be caught at compile time.
Later, I learned some typelevel programming (in Scala), and by encoding a digital (binary) adder and multiplier at the type level, I showed -- at least to myself -- it was possible to compute and check linear algebra shapes at compile time (without a compiler plugin). It was rather magical and funny to think that I just embedded basic digital logic in such a higher-abstraction world.
It was slow for the inputs I cared about, so I added some optimizations, like an if-statement at the type level, for example, so that it bit-shift for multiplying powers of 2 (multiplication for tensor products). The compile time difference being palpable was a testament to how "some 'ideas' are surprisingly close to others" (err, 'ideas' ~ 'numbers' in this case). There is a connection to the p-adic numbers here, courtesy of dyadics, and some connection to the more-natural "last-mile" problem.
It's not REST, maybe. But I felt it was magical.
I agree that solving logic puzzles is very fun. I even pointed at things such as Advent of Code in my original reply. Computer programming can be very fun and satisfying to do. It is the reason why I became a software developer.
But it is not the same sort activity as writing a short story, or composing a a symphony, or painting a still-life. Those are done with different purposes. Art is something done with the purpose of exploring emotions, aesthetic beauty, question societal norms, etc.
The closest programming gets to that is if you are writing a jingle for advertisement, or drawing a signpost, or writing a technical article.
I disagree. It's not just a logic puzzle. If I haven't communicated that to you, that's also my failure. I've written stories short and long as well. It's a different kind of art.
"Art is something done with the purpose of exploring emotions, aesthetic beauty, question societal norms, etc." I apologize if my emotions and aesthetics are not communicated, but I can only say that they were there. As for societal norms, I doubt that "embedding digital logic in types" is a "norm" of the programming society.
And though it's an appeal to patterns, I will have to bring up the general repeated failure of humanity to recognize art.
I apologize if I don't have the same sort of emotional response to embedding linear algebra validation at the compilation step as I do when I watched Mononoke Hime, or when I read The Picture of Dorian Grey.
While your tale sounded pretty interesting, it is the same sort of interesting as solving a math puzzle. I enjoy math puzzles.
Yep, and that's fine. I just think that for the people who do treat something as art, that I'd want to respect their opinion and emotions. Photography was not art, and now is.
Whatever moves people, however people wish to express themselves, whatever people find beautiful, all that is "art" to me. There's much which is art to others, perhaps, that I would not understand as art for myself.
I have to disagree, because this would stretch the meaning of the word "art" ao much that it becomes meaningless. Given your definition, anything can be art. Filing my taxes can be art, sweeping the floor can be art, taking out the trash can be art, making a butt print in my office chair can be art.
Art is something done with the express purpose of aesthetic appreciation, eliciting emotional responses and so on.
Nature for example can be beautiful, and certainly can draw out emotional responses from people. But unless we bring religion into the mix, it is not made with any purpose, it simply is.
The closest thing I think of programming as art is obviously videogames, if I consider that game mechanics are added with the undeniable purpose of inspiring in the player emotional response, it can certainly be done with aesthetics in mind, and I can think of a few examples where it is used to question norms.