Code as a work of art

For an example of a field where there can be a lot of overlap, bikes are pretty good…

1 Like

That’s a true thing, that code–that is, instructions—are not art, but how they are delivered, that makes it art. We confuse the media, the limited languages used to express these instructions, with the instructions themselves.

I see coding as a handicraft, where writing skills are underappreciated. Many a developer has sweated over how to name this variable or that function, over whether to write in a clear manner, or to obfuscate. Heck, I see many colleagues actually concerned about the aesthetics of code and indentation, which to me is like seeing poets critique the meter of text.

I guess I see coding as a subgroup of writing and communication in general, and as such subject to the same rules as any other written work. It’s only in JavaScript or Python or whatever instead of English or Japanese or German.

It’s like Scott McCloud wrote (and drew) about comics: the medium is not the content.

2 Likes

@fnordius @lizard-of-oz

::notes:: Stellts euch nit esu ann, drinkts doch ene mit…

1 Like

I agree that some of these bikes are a display of excellent craftsmanship, and inventiveness.

Is that already enough to consider it art, or do they exhibit another property?

Can you elaborate on that a bit more? What kind of delivery do you mean? I’m pretty sure you’re not talking about CI/CD systems :wink:

Is it how elegant those instructions achieve their purpose, i.e. the function the software fulfills?

True.

When teams come up with clear metaphors and rules for naming things, one can move beyond that.

All they need to do is agree on a consistent style so you can achieve collective code ownership. Musing about aesthetics in code beyond that agreement wastes everybody’s time and patience.

True. What I find interesting is that code has two distinct sets of audiences: machines it runs on, and fellow developers who need to understand its idoms and metaphors.

1 Like

The language it is expressed in. A dance choreography, for example, is art when it is performed. But the written instructions for that dance could also be considered a distinct form of art when printed in a book. Or worded as a poem. Just not all of it is worth granting a copyright.

The same with a symphony: the written score is a work of art, but so is the performance. And here, too, there are accords and harmonies that are so common a copyright would be laughable, yet they are still considered art. So you see, there are already a variety of instruction sets that we treat as art.

In programming, then, the art could be the program as it runs on the computer, its actions a sort of performance. Or the instructions as written in a certain language could be considered another work of art. And the same instructions, written in a different language, yet again another work of art.

Editing to add another reply

Not much different from how writers in journalism are expected to adhere to a certain style. Or script writers for a television series a consistent tone for the characters. It doesn’t invalidate how developers will want to write elegant code and not just blindly follow guidelines.

Sorry, I was only referring to aesthetics of style.

I wonder, maybe choreography and dance, or composition and music are considered distinct forms of one artwork because there is a certain amount of interpretation added by the performer? So no two performances are actually alike. If I compose a midi file that is run through a synthesizer, I might consider composition and music as one and the same artwork. A computer also has no capabilities to interpret the software (apart from stuff that exploits glitches), so maybe here it is again only one entity?

“I have heard many versions of the 1812 Overture, but the Leonard Bernstein recording with the New York Philharmonic remains divine…”

“Many troupes have performed Bob Fosse’s famous choreography, but watching Ms. Vavoomova dance it sends shivers down this critic’s spine…”

“Normally, running Fnord can be something we do not think about, but artist Hagbard Celine with his latest installation shows how the hardware used can make the experience sublime. His choice of monitor and unusual placement of speakers make the art installation what it is…”

I think it’s another property; craftsmanship nearly covers it but not quite, I’d say. Almost anything at that show constitutes a form of art, because the emphasis isn’t on engineering so much as elegant, unique and beautiful ways of executing and finishing the engineering.

Almost without exception, standard off the rack gear is potentially more highly engineered, but this bespoke stuff is about meeting less quantifiable needs; it’s for folks willing to pay well above the odds for something special. Conversation pieces.

1 Like

You say that like it’s something easy to do.

2 Likes

What? Agree on consistent style, or achieve collective code ownership?

The former is typically simple, if it isn’t: run.

The latter takes more time.

Oh, I thought that’s what craftsmanship is all about.

What kind of conversation would you have around those bikes? How they were made, or what they means to you?

Pithily said, engineering is about how things can be done effectively, and craftsmanship is about doing it in a pleasing manner. Mathematics versus aesthetics.

And as for agreeing on a consistent style, well, I find it harder amongst developers as you may think. Every developer feels his style is the only right one, and all too many lack the social skills needed to find consensus. I’ve seen it over and over again through the decades.

1 Like

Yup, this. I try to lean heavily on style guides from the language maker for most things which generally wins arguments. But other gray areas often become major points of contention (like the var keyword in C# and whether or not it’s ok to use).

I don’t think consensus is the way to go in group decisions, I suggest making decisions by consent, or selecting the alternative that has the least resistance. This is much faster, and leads to better results, there’s several facilitated formats to achieve that.

Agreeing on a style guide (or any other governance decision in a group) becomes much simpler if you apply some common strategies for solving complex problems in groups:

  • you can compensate for social skills with facilitation, and facilitation helps the group build social skills
  • it’s imperative that before discussing solutions, the group agrees on what the actual problem is.
  • the decision is not about is not about finding the perfect solution (e.g. a perfect style guide), it’s about agreeing on something that everyone can live with given what the group knows now
  • document what has been agreed in writing
  • the group needs a way to integrate learning into their decisions, so each decision needs to be reviewed (and potentially amended) at an agreed upon date

I think somewhere on the path towards becoming a senior developer one needs to understand that the main challenges you face when developing software in teams are not technical in nature, but social. Then you can start acquiring the necessary skills to navigate those challenges.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.