5 ms·
Sigh... another loss at the hands of, "Code is Art!" It's not art. Art requires no function, it exists as a representation. (Professional) code, and software
by matai_kolila 4y ago
Sigh... another loss at the hands of, "Code is Art!"
It's not art. Art requires no function, it exists as a representation. (Professional) code, and software engineering generally, must produce valuable things, and sometimes the process of making those valuable things isn't "fun", but that's never been part of the equation. Aligning "fun" with "valuable" is nearly impossible, and when you try you're dooming yourself to almost certain failure.
This is really burnout, and the mental health effects that cause burnout. I'm sorry the author has gotten to this place, but wrapping it up in "passion" is a disguise.
- prepend 4y agoNothing requires a function, you can have code without a function. I think good art (to me) requires some function. And code is art. Like architecture , or furniture design, or gardening, or dance, or many art where the design and precision and purpose is all tied into what the artist is doing. I don’t think coding is pointless and think that coding for the purpose of being beautiful can be dangerous and painful to support or refactor. But I’ve read a lot of code and appreciated it on some aesthetic level and remember thinking, “that’s neat.”
- altruios 4y agobesides your point - I tangentially would like to mention: art HAS a function. It sometimes appears invisible because it is we who are affected by it. Art is anything that functions to manipulate a {conscious being}'s internal state (traditionally emotional state). That said - I agree mostly with your point besides that one pedantic complaint :)
- at_compile_time 4y agoCode may not be art, but there is beauty in design.
- matai_kolila 4y agoBeauty doesn't put food on the table, is my point, and I'm beyond sick of working with people who put "code beauty" before "code usefulness". Ugly code that works pays bills. Beautiful code that doesn't work is, in a very literal sense, worthless. I'm not against writing clean code (there's utility in that), but I feel like some folks lose the plot and quit their jobs when they can't make "beautiful" things anymore, and I think that's more often a sign of burnout than it is a desire to "return" to creating art.
- ethanwillis 4y agoWhy is the dichotomy "ugly code that works" and "beautiful code that doesn't work" Surely there's also "ugly code that doesn't work" and "beautiful code that does work." And I'd argue there's a lot of in between as well. Unless the software literally does exactly what it needs to do, no more, no less then there's also the variants of "works well, somewhat well, etc."
- Zvez 4y ago>Ugly code that works pays bills. Beautiful code that doesn't work is, in a very literal sense, worthless what about good code that work? All places where I see your argument prevail, ended up to be not just 'ugly code', but unmaintainable code. And systems that cannot evolve at all. Personally I don't call coding an art, but I've seen countless times how people people choose bad solution even though better one costs exactly the same, and in a long run - actually cheaper. And they _always_ use this argument - 'code is just a tool, if it solves the problem, it is good'. And then they either leave or have to spend weekends to write even more dirty code just to solve problem they wouldn't have in the first place if they spent a little bit more time thinking about the code.
- matai_kolila 4y agoDon’t mistake “beautiful” code for “clean” code. Clean code has value in its ease of maintenance, it’s easy to work with. “Beautiful” code falls into the completely arbitrary land of “what is beautiful?” Wars have been fought over defining beauty, but the important thing to note is that beauty is orthogonal to function. Clean code has clear criteria and value, beautiful code does not.
- epolanski 4y agoI hate this whole idea that coding is a creative (in the artistic sense) activity. There's a limited number of solutions to a programming task, it's about finding the one that meets most constraints, it's about cost, effort, trade offs analysis and finally implementation.
- ethanwillis 4y ago> There's a limited number of solutions to a programming task But this is literally and technically not true.
- epolanski 4y agoIt is once you enter the real world of: costs (e.g. has to take N people X amount of time), resources available (may run only in a specific environment), performance requirements (has to solve the problem in a certain time), tools availables (you may have to solve it using a specific set of technologies), conventions (from coding style to required coverage to documentation), security and many other less measurable constraints (readability and maintainability) the pool of solutions to a certain problem is small, extremely small. Coding is mostly optimizing and compromising between all those factors, rather than staring at the wall waiting for inspiration expecting the solution is an act of poetry. This is not to say that engineering is void of creativity, some sort of beauty, cleverness, etc, it obviously is, but it's not the same kind of creativity involved when painting or writing music. Art has the goal of touching, moving and expressing the author's self. That's just not the goal of writing a form, a serializer, a validator, a logger, a queue, a shader or a git hook.
- ethanwillis 4y agoTell me you don't know what knowledge it takes to compose or work on a painting without telling me. Either of those tasks that we class as art also aren't simply "staring at a wall" waiting for inspiration either. In either case you didn't specify constraints and even with those constraints it's still technically false unless you're limiting yourself to a non-turing form of computation. I'll take all your tasks with their constraints and add no-op operations onto them to make them ugly but still functional. I'll add in all kinds of ill-thought out logic that will never be reached or is "functionally" useless. And even an "artist" has these "real world" constraints which are "must sell before starving to death" or the work won't be "completed"
- a123b456c 4y agoHe compared it to writing a novel. A novel can serve more functions than just being a representation, such as a puzzle, an entertainment device, an empathy exercise or a learning tool. I read it more simply like, "Code is a craft that deserves careful attention."
- paulcole 4y agoI sometimes hire marketing writers where I work (I have many years of experience as a marketing writer). One of the most important moments in the first interview is when I explain that what they will do is not creative writing. We can find ways to do our writing jobs creatively, but fundamentally we type to get things done. We write to influence people. It’s not art, not even a little bit. It’s obvious who gets it and who doesn’t.
- 0x262d 4y agoCoding is pretty straightforwardly a craft - something that is done for use value but allows for artistic expression and a convergence of form and function. It isn't art. However, I disagree that aiming to get enjoyment out of a coding job is necessarily a mistake. But it does often have to be weighed against competing factors like ease of getting a job and pay.
- dimmke 4y agoA few years ago I visited New York City and went to the MoMA. At the time, they had an entire floor dedicated to mid century design. I was always particularly taken with the Kennedy Armchair and the Eames lounge chair. Those pieces to me are undoubtedly art. But they also serve a function. They're chairs. A business analyst once told me - "you programmers have it so easy. It either works or it doesn't!" as if the vague 2 sentence requirement from their spreadsheet that I have to turn in reality doesn't require any creativity to implement. But what about the edge case they missed? How should I design the control flow of this? How should it handle errors? In a lot of cases, how should it look, because I only received a wireframe? Should I write this as a class or a function? Can I write this code in a way this is easy to read and performant? What if it's a really specific piece of business logic, that doesn't make sense unless you know the reasoning for it? Good software is art the way a well designed car or watch is art. They exist to accomplish a function, but the path to get there often requires quite a bit of creativity and expression. Your assertion that art requires no function doesn't make sense. Is a dish or menu designed by a chef not art? Is a house designed by an architect not art? I feel sorry for people who can't see the art in those things. And especially sorry for people who can't see the art in writing code.
- dmurdoch 4y agoSo you've listed houses, cars, watches, food. All these things indeed serve a purpose as well as allow for creativity and expression. But the difference is, all those things have sale values that DIFFER based on that creativity and beauty. Code does not. My customer does not care if my backend code is beautiful, and neither does my CEO because it won't make more money. > Is a dish or menu designed by a chef not art? Is a house designed by an architect not art? Of course I see the art in those things, and in response i'll pay a lot more for a Frank Lloyd Wright than a mcmansion. But the customer of my B2B CRUD app does not care if my code looks like a FLW or a mcmansion. They care if it works.
- hinkley 4y ago> My customer does not care if my backend code is beautiful Apple can only sustain the high margins they do because you’re wrong. Some people care a great deal. Some of those people have deep pockets. If none of your customers seem to feel that way it’s probably because they are Apple customers. But you also have companies like Anker and at certain points in their history Sony, Samsung and perhaps LG. They got it. At least for a while. People here don’t complain about Apple for silly reasons as much as they used to. But I’ve been laughing at people jealously predicting their imminent demise while cashing dividend checks ever since their shares were $40 pre-split (7x and counting IIRC). I’m going to get to retire at least a couple years early just on AAPL, even having done dollar cost averaging. > B2B crud app Ah. Businesses have a weird split brain problem and it’s difficult or impossible there. They want custom software for less than or around the price of off the shelf solutions. The OTS ones can be beautiful and occasionally get away with it. If you care about art of even ergonomics you’re gonna have a bad time. I encourage you to seek out a new vertical.
- pixelrevision 4y agoIt doesn’t sound like burnout to me. It sounds more like organizational issues that have left the author with a very limited amount of time to work on a sluggish product they can’t take pride in. The name brand and pay sometimes just don’t make up for that especially for some people. There’s nothing wrong with wanting to take pride in your work and to have working conditions that facilitate that. Get enough people together who feel that way and can find something useful to build and you get a huge competitive advantage. Software that is useful and performant is like gold but takes a lot of extra effort and passion to keep it that way. You’re right about the “fun” part though. Making great software (and art) is hard work! “Satisfying” is probably a better metric to shoot for.
- rswail 4y agoCode isn't Art, it's Craft, or, to use the current buzzword "artisinal". Software development isn't "engineering" by a long stretch. There is still another 40-50 years of development and consolidation before it could be considered the equivalent of other engineering practice. I've lived through numerous lifecycles of "this time for sure" regarding software as engineering, from "modular programming" to "CASE" to "iterative development" to "UML" to (god help us all) "Agile". What a lot of practitioners think of as "engineering" is actually "project management". Engineering is about defined practise, measurable inputs and outcomes, responsibility for signoffs and approvals that ensure that the defined practise has been followed.
- rdiddly 4y agoThere's no hard divide between the two. It's a continuum.