I learned Fortran in the 80s from the Fortran Coloring Book.
Another senior DBA lived on a boat, so I took my DBAs over to his boat and we spent the afternoon, then went for a walk in the tony seaside town at which his boat was moored. We went to an art gallery.
One of the pieces was a semi-abstract gradient, but the colors could definitely remind one of the sky, and the steely gray of the ocean. I loved the way you looked at it and kind of got lost in the middle. It "felt" like the ocean more than "looking" like the ocean to me.
Another DBA was standing there looking at it and said, "I don't get it."
"I'm not sure there's something to 'get', exactly."
"Is there a boat or a person hidden in it? I can't find it."
For this person, looking at a picture had to have a point--a subject. It was, on some level, a "Where's Waldo?" exercise and since he didn't solve the problem of finding Waldo, he didn't get it.
But not everything's like that. It's okay to not like something. It's okay to not get it. You can still be a DBA. You can still have a picnic on the boat.
To me it's an interesting touchstone work showing/reminding that the "invisibly neutral" tone we've collectively adopted is still an editorial choice and cultural moment.
I'm sure writing and communication styles will drift back and forth over the next few decades. Sometime soon (if not already) another generation of younger developers will coalesce around some document that feels authentically counter-cultural, like their own late-night jokes and dreams have been given just enough coherence to hook them in, and then I probably still won't get it because I'll be out of touch.... :)
I think it’s worth appreciating as a thing of beauty. The raw talent required to make it is just incredible, and it probably takes a Rubyist to fully see the intricacies of what we’re meant to “get”. There’s a place for this kind of work, and it’s one of the delights of life that it exists at all.
I have a theory about _why’s popularity though. I think a lot of it comes from the cohort of us who were strictly trained in a C/Fortran/Knuth Art of Computer Programming style old-school approach. When your first presented with the mind blowing ideas of what programming can be when you start to liberate yourself from the machine — if the source has a quirky voice, there always remains a soft spot in your heart for them, be it the Little Schemer, SICP or _why.
(i agree with you, for the record, it was gobbledegook to me too)
the question is: does programming represent some kind of subjective expression, or some kind of objective precision? why's little zine says it's the former, but that's not how i see it at all
programming is, for me, like working on math problems, or balancing equations, it's strict and pure and precise, and that's what i love about it, there's no connection to anything like art, or writing (in the novel sense), or other kinds of subjective expression
but for some people, programming is like art, or writing a novel, or in any case a subjective expression of some abstract idea (or ideas) that they have
at least this is what i see as the discrepancy
My take: the art is always about the human communication through the medium. As soon as programming is abstracted beyond the 1s and 0s, every choice represents a mental model for communicating intent from a human to a computer and by extension, from a human to a human. Writing "elegant code" is all about communicating intent to other programmers.
You can say the same about math - so much of the human-ness of math is backed into the symbols we use to represent things and relationships. Just think of the human impact of doing multiplication in Arabic numerals vs. Roman numerals and you can understand how math is totally a human construct.
But underneath it, the logic of multiplication is non-human and those that focus on that are the "science-minded" ones. But so much of our human understanding comes from the "art-minded" ones, for obvious reasons.
So yeah, there is very clearly a human and subjective element in mathematics, even when the results themselves are objective (modulo axioms and inference rules).
> To summarize: We have seen that computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty.
(See also, from an earlier paragraph “When I speak about computer programming as an art, I am thinking primarily of it as an art form, in an aesthetic sense.” — though the summary is a better reflection of his views.)
in my experience, this is a major source of friction in programming teams, and deserves to be addressed more directly -- if i had it my way, i'd prefer that those who see programming as prose would be disabused of this incorrect notion, but i understand that this is my bias speaking, and not any objective truth :)
my point is less about these abstract concepts, and more about the perspectives that human beings have when engaging with this "stuff"
concretely -- when i'm playing a musical instrument, my brain is in a mode that is completely different than, and totally incompatible with, the mode my brain is in when i'm writing a program, or working on a math problem
it's one or the other
why's book reads to me as a "playing an instrument" perspective on a "writing a program" problem, which doesn't work for me, at all -- personally!
other people, it works, i get that
In fact my blog is called The Art && Science of Ruby
But in other languages I immediately feel cramped and constrained - and the code looks ugly to my eyes.
As for correctness and quality, number one is it has to fulfil the business requirements I’m being paid for (and I’ve shipped lots of crappy code that I’m ashamed of but the clients are very happy) and secondary, I like to look back at it and see something elegant that also looks good in an editor.
Of course, the definitions of elegant and “looks good” are the real questions here.
with ruby i feel (same caveats) like there is so much ambiguity that i can't build a coherent and predictable mental model of my program -- it makes me feel anxious and unsure
what you characterize as "cramped and constrained" i probably experience as "precise and unambiguous" -- it makes me feel calm and in control
no judgment from me about which of these perspectives is better or worse, i don't think there is any way to say that, just want to point out this interesting difference in perspective among practitioners
[1] And that's not just because of the arcane symbols.
But of the languages I mentioned, assembly is certainly the one where the required concepts can be explained quickest, probably by far...