Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
The Guardian: Programming is destroying my capacity for reflective thought (guardian.co.uk)
15 points by madmotive on May 22, 2008 | hide | past | favorite | 20 comments


You know, I thought music would be creative. But then I tried to do it. It was terrible! It was all about how to strike the piano keys, how to move my fingers so they don't hit each other, etc. No creativity whatsoever!

Then I tried making up my own music, but that ridiculous. I spent more time figuring out why it sounded bad than I did actually coming up with a melody. My chords didn't work, the rhythm was all off, etc. When it was done, it didn't even sound that good!

I have no idea how Reznor deals with the mind-numbing drudgery of it.


Bad parallel. Coding up a CSS/HTML web page full of embedded PHP and Javascript and trying to get it pixel-perfect is worlds away from writing an internally consistent program for a single run target using a single sane language and APIs. You can't say "it's all music."


On the contrary, I'm saying that music "isn't all music" either. Whatever your craft, before you reach beauty, you need to deal with technical details.


In classical approaches to beauty, the thinking was that Beauty was the result of strict adherence to rules. From wikipedia on aesthetics:

<quote> Greek philosophers initially felt that aesthetically appealing objects were beautiful in and of themselves. Plato felt that beautiful objects incorporated proportion, harmony, and unity among their parts. Similarly, in the Metaphysics, Aristotle found that the universal elements of beauty were order, symmetry, and definiteness. </quote>

but yea. a classical foundation in a trade and rigorous pursuit of <latin>ars</latin> enables the craftsmen to do excellent things, or failing that, at least be competent in routine.


It's not like that once you've been at it for a while (i.e. years).

Consider the difference between trying to write a program in a language that you don't know, having to look up every single thing in the manual as you go along; and knowing a language (+ framework(s) / library(ies) ) so well that you can decide what you want to do on a fairly abstract level, and then just bang out the code without having to think consciously about syntactic and semantic minutiae.


I totally didn't notice the parallel until you pointed it out.

I guess Reznor may be a creative person after all, rather than just a chord slinging drone.


One of the big differences is that some people can sit down at / pick up a new instrument and in a few minutes be improvising a song they heard once, a week ago. with programming, the interface is not kinesthetic so at least for me, the internalization of APIs takes longer (getting down new lexicons seems to have more cognitive load for me than adjusting physical interface -- not that i can play instruments like that or learn music by ear. yet.)


Um.

I think author is confusing "programming" with "working with code." His frustrations have more to do with CSS compatibility in browsers than with the actual high-level conceptual thinking that true programming entails.

But even taking his argument at face value, his quibbles about syntax would be like me complaining that painting is not a creative art, because that darn paint gets everywhere and it's just so annoying to mix this shade of red and that shade of blue to get the purple I want etc. If you don't enjoy the messy details of the medium, then you surely shouldn't be working in it.

For me at least, programming is the very definition of a creative art. I find it not only satisfying to create something out of nothing, but I take pleasure in fleshing out all the little details and overcoming the obstacles that come up along the way.


From the FA:

  ...should the width of the main column be 60%? 58%? 57%? 
  And so on, until you find something that works. It's like
  being a toddler trying to bang differently shaped block
  into the holes of an educational toy. You bang and bang 
  and scream a bit and bang some more and suddenly the block
  fits - but you've no idea why.
Thank you, The Guardian, for explaining to the masses what 'programming' means and destroying my chances to look respectable at London parties.


"It's like being a toddler trying to bang differently shaped block into the holes of an educational toy."

Toddler is the level 1 of any discipline... Isn't it grand that we can enjoy the experience of being a toddler multiple times in our life?


Funny. I was thinking of writing an article proposing the exact opposite.

Programming and good writing are very similar. With both, you have to quickly leap back and forth between the highest levels and the lowest levels (while "refactoring" - a concept which can just as easily be applied to the conceptual work on an article or story), and you have to be precise and choose the best way to explain something amongst a large number of choices.


Yes, but consider the problem domain to which he applies (and wastes, in my honest opinion) his skills. Web layout. CSS. Surely one of the most pointlessly vile and broken (as in the implementations are broken) sub-domains of programming. And in this regard, that he is wasting time, he is right. A good "web coder" knows the intricacies of a dozen versions of render engines, but standardisation could, and obviously should, make his knowledge obsolete, as it is only busywork. The wider point is that programming is still full of such busywork.


There does seem to be a distinction between programming as art, and programming as plumbing. Most programming probably falls into the latter category. But even when plumbing, you don't check that the water flows through each joint as it is fitted by turning on the tap. I assume the author doesn't send his article to his editor every time he places a full stop.

Perhaps when you are forced to check yourself at every turn, when small mistakes cannot be ignored and instead become hard walls to progress, that's when creativity is stifled. When writing an article, small spelling mistakes can be corrected in the second draft, but the ideas are already on paper and can be exchanged with others.

It all comes back to flow, transcending the mundane to imagine the creative. And so to the question implied in the article: is there something inherent to programming which inhibits flow?

I see three possibilities. 1) The programmer becomes an expert, and so transcends the distraction of small mistakes simply by not making small mistakes. 2) The programmer chooses an environment which either tolerates, ignores or fixes small mistakes, whether through postponing compile time errors to run time, or by automated refactoring to always leave the code ready to compile. Or finally, 3) the programmer simply never gets into the flow, and as with the author, creativity is void.


a distinction between programming as art, and programming as plumbing [...] transcending the mundane to imagine the creative

I think this is a common misunderstanding of what art is. Every art has its mechanical, detailed side that must be worked through. The end result may be a lofty and soaring creation but it doesn't follow that the artist lofted and soared their way to get there. On the contrary, what's striking in the lives of great artists is not how they transcended the tough slog but how they did more of it, far more than their peers. The mundane and the creative are closely related, and the idea of the creative without the mundane is an ungrounded fantasy.

I remember reading something about the Beatles (by one of their early girlfriends or wives) that said when they went to parties, Lennon and McCartney would usually end up in a corner going over song ideas. There are countless such anecdotes. A woman walks up to Picasso in a restaurant and asks him to sketch whatever he likes on a napkin and charge her whatever he thinks it's worth. Picasso does so and says, "That will be twenty thousand dollars." "But it only took you thirty seconds to do that!" "Madam, it took me thirty years to do that."


It sounds to me like the author is saying that programming in PHP is destroying his capacity for reflective thought. Having coded in PHP and a couple other Blubs, I can see where he's coming from. I do not get this feeling from Ruby, Lua or any of the Lisps I've used.


Music is art and creative, but you can't ignore what it takes to get there. I forget who said this but upon being asked if he practiced everyday, some famous musician said something along the lines of

If I don't practice for a day, I notice. If I don't practice for two days, the critics notice. If I don't practice for three days, the audience notices.

The point is whether it is programming or music or whatever, there is a craft associated with it, which only makes you better at expressing your creativity. IMO you can be creative without really knowing your craft, but expressing that creativity requires practice and dedication and it doesn't really matter what field you are in and how you define art or creative thinking.

And yes, Reznor is brilliant :)


The author qualifies his claims with honesty, which explains the paradox:

High-level programming can be like mathematics or music: it brings order and harmony out of chaos. [...] But I wasn't doing that kind of programming. If a maestro can make a program like a symphony, and an ordinary craftsman can at least whistle a tune, I spent all week getting a ukelele in tune - plink, plonk, plink thunk, plonk.


This is a well-written article that's a pleasure to read. What a pity that it's so shallow and silly. I mean that literally: it's a pity. When someone from outside the technical ghettos and subcultures, who is obviously cultured and curious, takes enough of an interest in programming to write thoughtfully about it, I'd expect to find that interesting. Alas, this is just a guy making grandiose, ignorant claims about an entire field... why? Because he felt bitchy and frustrated after getting stuck doing something he didn't know how to do with some apparently crappy tools.

What's disappointing is not that he's wrong, but that he's trivially wrong. Every field has its morass of details that must be worked through with patience. To complain about this is a well-known mark of the dilettante.


Substitute "development" for "programming" and problem solved.

This is a forest and trees problem. Sometimes you're so focused on the trees (and leaves and stems) that you forget what forest you're in. We've all been there. Sounds like OP is there now.

But to develop, you must always be aware of BOTH the forest and trees, constantly shifting focus in and out, like a high priced autofocus zoom lens. Fall into either mode exclusively and that autofocus muscle in your brain tightens up.

Don't worry, OP. A couple calls from irate superusers oughta shock you back into the "capacity for reflective thought".


It seems to me that he's just frustrated dealing with all the initial bullshit you have to put up with when you're new to a platform. After you get over the learning curve, you can abstract away the trivial details and focus on the more creative aspects of programming. But then again with most new platforms there's a lot of little things to learn, probably more than most people are willing/able to put up with. This is why programming is a full time job.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: