Hacker News new | past | comments | ask | show | jobs | submit login
_why: A Tale Of A Post-Modern Genius (smashingmagazine.com)
382 points by aaronbrethorst on May 15, 2010 | hide | past | favorite | 179 comments



Being a non-creator, the quote at the end of the article has hit me so hard, I cannot get it off my head for hours now:

"When you don’t create things, you become defined by your tastes rather than ability. Your tastes only narrow and exclude people. so create."

As for the programming is a science or art debate: It is' of course wrong to make such a dichotomy. People who draw a thick boundary between these two, I think, appreciate neither art or science. Programming is a science, it's true, but it also is a thing of beauty, much as a game of Go, or a beautiful mathematical theorem. Any scientific endevour you do passionately is worth to be called an art, I think (and vice versa). Let us not make the mistake that John Keating makes when he says:

"We don't read and write poetry because it's cute. We read and write poetry because we are members of the human race. And the human race is filled with passion. And medicine, law, business, engineering, these are noble pursuits and necessary to sustain life. But poetry, beauty, romance, love, these are what we stay alive for. To quote from Whitman, "O me! O life!... of the questions of these recurring; of the endless trains of the faithless... of cities filled with the foolish; what good amid these, O me, O life?" Answer. That you are here - that life exists, and identity; that the powerful play goes on and you may contribute a verse. That the powerful play goes on and you may contribute a verse. What will your verse be?"


'Being a non-creator, the quote at the end of the article has hit me so hard, I cannot get it off my head for hours now: "When you don’t create things, you become defined by your tastes rather than ability. Your tastes only narrow and exclude people. so create."'

How so? How do "you become defined by your tastes rather than ability"? And why do [y]our tastes only narrow and exclude people"?

This sounds like one of those pop-psych quotes that have little intrinsic content but ill-defined assertions into which people read what they want to believe.

I know many people who are not "creators" by most definitions, yet I don't see them as defined by their tastes, but by their everyday words and actions. And when they do express their tastes I don't see that as narrow or excluding people. Their tastes often allow me to see associations among things, and value in places I hadn't expected.

If you want to then turn it around and claim, well, these people, through their words, actions, and expressions of taste are therefor in some way creating something, then I'm lost as to what "create" is supposed to mean, other than perhaps something too amazingly broad to bother with.

(I've also known creative people who are also narrow and exclusive and petty, so these qualities seem to be pretty orthogonal.)


James, I don't think the two qualities have two be orthogonal, you can be a creative person with great taste in a lot of matters or not. The quote does have a touch of "pop-psych" (or, perhaps, "pop-HN" :-), but that's what makes it memorable.

Let me paraphrase what the quote says yo me: There are three types of people: the source (creator), the sink (end consumer), and the filter (the critic). Now, when I say that, I mean people for which these characteristics are dominant, of course, we all have a mixture of both. Also, we may assume different roles for different fields. And some gifted individuals can do more than once at once; John Updike comes to mind, as a top notch writer and both an literary and art critic.

The non-creator types (end consumer and critic) are defined by their tastes, which range from voting with their wallets to the up buttons in HN and links in their blogs. We are the link creators, the judges, the filters of content. However, where does all this content, code, the good stuff come from, who makes these? These are the people who make the quantum jump to creation. Just like the fact that there's a huge difference between a product that is free vs that's priced (even 10 cents), there's the gap between the consumer and the creator.

Ooops, this already became a long comment, so I don't have a chance to touch on what the part about "excluding people" parts say to me. Let me finish by pointing out a wonderful book called The Mirror and the Lamp, referring to the roles of the critic and the creator. I cannot think of a better analogy. Currently I'm all mirror and I want to change that! People like _why are a huge inspiration.


I've never read much of _why's work so I don't have much to add to the thread, except that: I did read that quote by _why some months ago and it hasn't gotten off my head since then.

It's like a mantra, and for me it alternates between being inspiring and depressing.

Perhaps I disagree with you. I think programming is a craft, but that's different from art. In any case, though every time we write some code we're creating something, I don't consider the code I write for my day job to be "meaningful" creation (if that was the case every act of labour would be creation and the quote would be meaningless). That's why the quote is depressing sometimes.


The entire concept of art is relatively recent (from the Renaissance on), the ancient Greeks considered a sculptor to be a craftsman just like a smith or carpenter.

And the Renaissance artists had to make a living somehow, much of their art we know today was made to order for Church, State or rich merchants.

We may consider "pure art" to be "form without function" and "pure utility" to be "function without form". But fields like industrial design, architecture and engineering (ex. bridges) has room for both: Aesthetically pleasing form that merges well with their function.

If programming is art, it's the form+function sort of art. And just like with bridge building, the form part is optional - if the program works and the bridge does not collapse they are doing their job.

I don't consider the code for my day job to be art either. But I still think art can arise under such conditions, generally because someone with the power to do so goes beyond the call of duty and decides to make their bridge or code not only functional but beautiful as well.

There are plenty of constraints that can stop considerations of form dead in their tracks; like whether the client is willing to pay extra or wait longer for a more aesthetically pleasing result, or how much control you have over the final result - there are limits to how creative you can be if you are a subcontractor for a bridge pillar, or if you are designing an ad that needs to fit within the company's design guidelines and an existing ad series.

Still, I think art can arise in the most unexpected places, it's mostly a matter of spotting the opportunities and deciding that it is worth the bother.


"And just like with bridge building, the form part is optional"

Sometimes function is optional as well!:

http://en.wikipedia.org/wiki/International_Obfuscated_C_Code...


Your being paid for your craft, so someone (shareholders) finds your creation "meaningful".


Amazing quotation.

Like you say, art vs. science is a false dichotomy. Programming seems like both because it is about design -- the intentional and intense, the passionate blending of art and science.


programming is neither art nor science, it's engineering.


But engineering is an art that makes extensive use of science.


Sounds like you're using the "anything done well is an art" definition of art which is... uhh... bull. it just dilutes the term. see http://en.wikipedia.org/wiki/Art. "programming" doesn't even make it as a "disputed category". sorry.


And to be really clear, programming can be art. You can make art out of anything: paint, metal, plumbing, and yes code. But that doesn't mean that programming in general is art, like a beautifully coded sort function.


Rather, it should strive to be "art" by means of elegance, purpose, originality and in general an aesthetic which speaks of form and function joined appropriately. Anything less is merely "kitsch code" http://en.wikipedia.org/wiki/Kitsch. Most of us spend our days programming the equivalent of replicated garden gnomes each with a slightly different expression and perhaps a different hat.


Actually, if you want my personal definition of art in one word it is this: art is life. Whether it is done "well" doesn't really come into it. In fact if there is an objective way of determining if something is done "well", it's probably not art.

I'm prepared to agree to disagree on this, but I'm not prepared to agree that Wikipedia has the last word on the subject. Sorry.


Why even have a word for it? I understand the emotional idea that programming can be an art, but it doesn't change the generally understood definition of art.

I could just as well be melodramatic like that kid in American Beauty and go on about how a plastic bag being blown about by the wind is the most beautiful thing ever. I could suggest the same about the way some skillful janitor moves his mop about the floor. Just because I get emotional about it doesn't change the definition of art.


Spoken like Humpty Dumpty.


Fair enough. But you haven't given us your definition of engineering yet. According to your wiki page:

Traditionally, the term art was used to refer to any skill or mastery. This conception changed during the Romantic period, when art came to be seen as "a special faculty of the human mind to be classified with religion and science".

You evidently subscribe to this Romantic definition of art, but claim that engineering is neither art nor science. So that makes it... religion?


Art is anything that's not done for survival or sex.


For me is the opposite, Art is the group of the most elaborated things we do for sex.

Evolutionary psichology 101.


You're not familiar with Why's work, are you?


Articles about _why on HN seem to always take on a particularly sycophantic quality. As a non-fan of Ruby, his contributions to programming outside of that community seem minimal. The ethic that people appear to ascribe to him ("programming as art") is precisely the opposite to that which I generally advocate ("programming as science"). I (and others) often suggest that the former approach is actually harmful to software quality in many cases, particularly within teams.

Fundamentally I think my objection is to elevating a slightly odd-ball programmer to messianic status based on a mildly creepy fandom that manifests primarily as people vastly over-stating the contributions of this one guy in HN comments.


Programming as science: not consistent with reality IMHO. My argument is that it's pretty simple to build a good computer scientist: take a guy with good IQ and put it into a good university. But there are zero guarantees that you'll end with a good coder also, as coding is a matter of taste, tradeoffs, design decisions, creativity, ability to think out of the box, and so forth.

The problem is that most of our industry is not ready to accept this news. There was no so important economic process like IT in the past where creativity and art had the same impact as it is happening with programming. Check the software and the sites you are enjoying every day: are they made by great scientists? The big majority are not.

But at the same time, the reverse is true. If you have good scientists you can create any complex program or system without problems. Look at all the PHDs at google, the result is a wonderful piece of technology, from the search engine itself to the cluster and other stuff they are running. But this is an engineering problem indeed, so it is a perfect fit for them.

But not everything is like that in our field. This is why for instance a big company like Google is not having a big impact in programming itself. If you see the reality most of their products for the masses are not working well, Ruby on Rails was not produced there, and so forth. It's not that I've something against Google but it is the perfect example of "company of scientists".


I realize that it can be irritating to have someone come in and split the difference, but in this case the problem seems to be that programming has some elements of art and some elements of science. So if you get people who passionately want to argue one side or the other, they argue past each other. Is an elephant chiefly long skinny parts (tusks, a trunk) or chiefly big round parts (main body)? I feel like I'm hearing the long skinny and big round people arguing with each other, when the answer is closer to "both." If you're interested in making a piano keyboard, maybe you're interested in tusks; if you're interested in eating (do people eat elephants?), maybe you're interested in the body.

I think that PG in one of his essays said that CS is confusing because it's got a of people under its umbrella: some do mostly math, some are closer to artists, and some are somewhere else (I can't remember his distinctions). So the field has a lot of people saying "this is what it means," all of whom are at least somewhat correct.

What is CS or programming or whatever you want to call this thing that involves making computers do stuff? On some level, the answer drifts towards "whatever you want it to be." But the flame wars are less satisfying that way.


I think terms like 'engineering' and 'craft' point more towards what we want to describe. Programming is obviously not purely art or pure science in most cases, but a mix.


I don't consider programming to be a much greater skill than the ability to install fixed wiring in a house or balance a budget. Are small business accountants "artists"?

Accordingly, programming is not _currently_ a science. However, I think that is a much better position to aspire to than self-aggrandizement and glorifying a skill that is really no different than any other skill that any suitably motivated 12 year can acquire with a couple library books and an internet connection.

With a science of programming, we can aspire to a position where programmers can at least claim to be engineers, and at least have good odds of most programming projects resulting in software of reasonable quality. Face it, there's good art and bad art, and it's subjective which is which. Programs have objective measures we can apply, depending on what the code is used for - developer time, performance, correctness... and a million others. We can argue about which measures are the right ones to use, but at least these measures exist. We can (with current technology) empirically evaluate a piece of code in many different ways. Actually starting to apply this kind of empirical evaluation is the first step towards programming being a science.

[Edit: OK, so the parent to this was heavily edited after I posted this, but I can't be bothered rewriting this accordingly, so please excuse any incongruence between this reply and the post it is replying to]


"I don't consider programming to be a much greater skill than the ability to install fixed wiring in a house or balance a budget."

The vision you seem to be espousing is someone tells the programmer exactly what to do, and the programmer does it exactly to that specification. Wiring a house and balancing a budget are solved problems. So you seem to be saying that programming is also a solved problem.

Which is so out of touch with reality I feel that, surely, I must be misunderstanding you. A computer program can do pretty much anything. Depending how you feel about the equivalence of Turing machines and human brains, you can argue that a computer program can potentially do anything a person can do.

With the geometric increase of computing capacity available to us, how is it even conceivable that "programming" is equivalent to balancing a budget or wiring a house? You seem to suffer from an incredible lack of imagination.

"However, I think that is a much better position to aspire to than self-aggrandizement and glorifying a skill that is really no different than any other skill that any suitably motivated 12 year can acquire with a couple library books and an internet connection."

That is the same as saying a 12 year old can write or play a musical instrument. Sure, they can spell words and make sentences, or know the correct fingering for certain notes. But the potential for improvement in those endeavors is also unbounded. The same is true of programming, in my opinion.


An electrician is not given absolute exacting directions on what to do and then follows them by wrote. A master electrician is given guidelines (in the form of regulations) and then a list of what the customer wants. They then consolidate the two into a plan for the building (locations of outlets, fuse boxes, etc.). Once the general plan is done (what power is needed where for what) they have to determine where at what type of wires and junction boxes need to be places, working through the design of the building. Once the electrical diagram is completed, it's handed off to a journeyman, who, with other electricians, run the wires as close to the plan as possible, frequently having to deviate slightly due to the differences in reality.

This is the absolute, most common, frequently found, frequently followed process for developing software. There is more "wiggle room" at each step, but it's the same exact process, whether it's one guy doing it and dreaming up the requirements or a team of thousands of developers.


Exactly. Now the big difference to me is in the kind of programming.

For instance, the people that write papers on new datastructures, computer vision and other state-of-the-art developments. They're not working with 'requirements' other than 'it would be nice if you found a way to solve 'X', come back in three years'. (well, not quite like that, but closely).

That's basic research and a definite amount of artistry is involved at that level.

But after the paper is written up it has solidified and it becomes applicable science, and for the person calling the API that embodies the concept it has become 'mere' bricklaying.


"But after the paper is written up it has solidified and it becomes applicable science, and for the person calling the API that embodies the concept it has become 'mere' bricklaying."

I completely disagree.

The art for the person calling the API is often found in "building something people want." Think of the people who frequent this website. Many of them are writing lines of code to make something people want. Surely there is some art to that. There needs to be an idea, building something to show customers, and iteration on that idea taking customer response into account. The customers have input, but the programmer decides what to write.

Just as wealthy people once commissioned portraits and told the artist what to draw, programmers can be employed someplace where the question of what to program is decided by someone else. But there is nothing inherent in art prohibiting painters from deciding what to paint, or in programming prohibiting programmers deciding what to program.


I think we're running around agreeing with each other. I think any scientific research involves a bit of art and intuition in the approach to the discovery. I think the only difference would be that I don't consider the research part as programming. It involves programming, but in itself is really the same as any other scientific discovery process.


Radically disagree with you there. Wiring is in principle really simple - make sure the right wires are connected, insulated properly with appropriate safeguards; accounting is similar, where there are essentially only four kinds of things.

Putting together a large piece of software, or optimizing a particular path in a large codebase, or putting together a creative solution to a class of problems, requires a much higher level of thinking. You need to bring together far more concepts at different levels of the abstraction stack, and have enough of them in your mind to arrange them without them interacting poorly at one level when you're coordinating them at a different level.

Programming is more like building a whole new kind of house, without a plan, or altering an existing house, without it all falling down around your ears.

As to subjectivity: you're wrong that software quality can be measured objectively, because of two simple facts: software isn't static - it must be modified over time - and humans are limited in their capacity for complexity. The abstraction which yields most readily to the changes that matter, such that those abstractions mesh well with those people doing the modifications, are subjectively good - their worth is dependent on the observer.


Programming is in principle really simple - make sure the right lines of code are used, follow each other and are debugged properly.

Sure, putting together a large piece of software is hard, but then again, putting together the electrical system for a nuclear plant or something on that order of complexity is just as hard, if not harder (no 'undo' switch on that one).

There has to be a way to see that programming is really not that hard 'in principle'. It is hard in practice, and this goes for a large number of other activities as well.

To argue on a programming forum that programming in principle is a simple thing is probably an unpopular point of view, but really, we're not half-gods or somehow special, we're just bricklayers and watchmakers. And if you've never built a brick wall I challenge you to go and do it and afterwards we'll talk about how easy it was 'in principle'.


Almost everything is not hard "in principle", though. In quantum physics, you've got 4 fundamental forces, a handful of elementary particles, and together they explain all of the universe. In medicine, you've got a bunch of organs hooked up to the circulatory/lymphatic/nervous systems, and they make the body go 'round. In molecular biology, you've got 4 bases of DNA and they explain basically everything.

The problem comes from the complex interactions between those elements. You can learn how the body works in high school biology, but that doesn't prepare you to operate on it. Similarly, you can learn how software is constructed ("make sure the right lines of code are used, follow each other, and are debugged properly") from Hacker News, but that doesn't prepare you to actually put those lines of code together.

One of the unfortunate effects of Internet forums is that it seems to have shifted attention from the nitty-gritty details of how to do something to the high-level overview of how to do something. So we have a bunch of programming forums where we talk about programming, but never actually program anything. It's not just programming (just look at reddit.com/r/economics), but programming seems to have been one of the most affected disciplines. But I'm afraid that this is giving a skewed perception of the field to newcomers, such that they look at the code they see on blogs or Hacker News and think that's all there is to programming. The #1 reason people fail Google interviews is because they don't have enough depth: they can recite code snippets they found on the web and maybe even put them together, but they can't analyze the performance of their programs or suggest how they might adapt them if requirements change.


Funny, yes, it really is like that, I call them 'cargo cult coders'.

Able to produce by tying together endless snippets of googled code, it is the professional equivalent of the script kiddie.


I saw a few years ago a study which claimed professional programmers had the second or third highest average IQs of any occupation. Probably depends on how you measure, but you get my point. After 10 years of programming, it's only gotten marginally easier. The fundamental stuff of programming, solving highly complex and abstract problems, never seems to go away. Somehow I doubt bricklayers can say the same.


Programming is part craft, part science, and occasionally a very small dash of inspiration or art.

But for the most part I think that a very large amount of it is very comparable to bricklaying. Especially in the part where most people in the IT world make their money, such as software for the financial and the business world.

Rarely does it elevate itself to the level of watchmaking and even rarer do you find art. It does happen though, but not often.

I'm sure that programming is conceptually different from bricklaying in a sense that we are solving puzzles, sometimes. But everybody that got in to it for that reason knows that the only time you really need that skill is when you've messed up and you are facing a very tough bug.

Once you get better at programming it is more like knitting or weaving than puzzling.

Of course there are different styles of programming, and there are only so many kinds of brick. But programming for the most part is hard because we have chosen to make it hard. If bricklayers had to create each and every brick from clay and bits of stone then you'd be much closer to what programmers do for a living than what bricklayers do.

Bricklaying has been 'industrialized', and one day programming will be too. It will probably still be marginally harder than bricklaying, even after that has happened. But if you can explain what you want done and in which order then you are essentially programming.

People often say they would like to learn how to program but they are not smart enough for it. And plenty of programmers just love that because it makes them appear special.

But I think anybody can program, the difference is not some binary switch in your head 'programmer/non-programmer'. The difference is in how complex an arrangement you can create, and that's a continuum.

Some programmers are better at this than others and can solve more complex problems.


"Bricklaying has been 'industrialized', and one day programming will be too."

This prediction has been made for decades now. I suppose if people keep predicting this indefinitely, someday it will become true.

In the meantime, new programming tasks are invented faster than the old tasks are industrialized.

"Once you get better at programming it is more like knitting or weaving than puzzling."

This is up to you. Was building Google, Amazon, Linux, Firefox, iPhone OS, etc. etc. etc. more like knitting or weaving than puzzling? Maybe what you are saying is that most programmers aren't good enough to build those kinds of products, or would just rather stick to their knitting and weaving. That I would agree with.

"Some programmers are better at this than others and can solve more complex problems."

This is trivially true of any cognitive task.


> This prediction has been made for decades now. I suppose if people keep predicting this indefinitely, someday it will become true.

One day is on purpose very vague, I haven't a clue on what timescale we're talking. But I'm fairly sure what will be the sign that we've reached it, it's when we will remove the term programming from language and use 'teaching' instead.

> This is up to you. Was building Google, Amazon, Linux, Firefox, iPhone OS, etc. etc. etc. more like knitting or weaving than puzzling? Maybe what you are saying is that most programmers aren't good enough to build those kinds of products, or would just rather stick to their knitting and weaving. That I would agree with.

Most of those were huge projects, but if you break them up in to little pieces some of them were artwork, most of them were bricks. The architecture of each of those was likely artwork.

> This is trivially true of any cognitive task.

Yes, but many programmers seem to think there is something 'magical' about the ability to program, as if there is some kind of essential element that differentiates those that can program from those that can not.

And I think that is not the case.


"many programmers seem to think there is something 'magical' about the ability to program, as if there is some kind of essential element that differentiates those that can program from those that can not."

You should read this, and maybe the linked academic paper, too: http://www.codinghorror.com/blog/2006/07/separating-programm...


I challenge you to find someone that I can't teach how to program a computer.

Maybe they won't be the next Donald Knuth, but they'll be able to hold down a job and make a living. I guarantee it.

You ship 'm I'll teach 'm, no matter how much time it takes I'll do it. The only pre-requirements are a willingness to learn and a willingness to spend the time, as well as an iq of 80 or more.

Anybody can do it, not equally fast, not equally good, some may hate it and some may love it.

That test is so biased it's not even funny, I've linked the script below, it assumes that people will clue in to the different meaning of the '=' sign in programming (assignment) as opposed to what it means in the rest of math (equality). I note that some programmers that are very well seasoned have been caught to mess up '==' and '='.

I always thought that the '=' sign for assignment was a huge mistake and that '<=' would have been far better.

But it's a little late for that now. What galls me even more about that test is that instead of providing a warm up with a bunch of assignment samples and 'print' statements afterwards would have given the really interested parties a shot at figuring out how it works, to test their assumptions.

The problem with programming is an educational one, not some kind of genetic pre-disposition to being able to program.

Just as there are people that are better and not-so-good at arithmetic there are people that are better and not-so-good at programming.

It's a skill thing, and if you work at it hard enough you can get better. The ten thousand hour rule definitely applies. If that's not the case then how come there are a thousand and one books that will teach you how to become a (better) programmer. It is teachable, it is a skill, there is no magic component, in spite of what this so-called study says.

Here is the test script:

http://www.eis.mdx.ac.uk/research/PhDArea/saeed/test(week-0)...

Have read, and see what you think, try to pretend that you have no programming knowledge and that all you know is arithmetic, it basically tests a single question in different forms over and over again.

In my opinion, a much better way to grade people to find out who will be the 'good' programmers is to find who is good at solving puzzles.


"The only pre-requirements are a willingness to learn and a willingness to spend the time..."

There are many people for who this is not true when it comes to programming, and this is why they will never become a programmer (good or otherwise).


Bricklaying is actually a really good comparison to programming. It's stacking bricks with glue. But those bricks eventually end up making an entire building. And with that, you have corners, archways, windows, doorways that you have to determine how to cut or turn the bricks so that it will support the bricks you're going to put above it, or the lack of bricks below it. Bricklaying is a craft and an application of sciences that are well understood. That's the reason why so many comparisons fall flat, why there's discussion about "is it science" and "is it art". The only part of software development (I'd like to use the term engineering and have it mean that one day, it'd be nice) that's art should one day be science.

Let's face it, with programming, we're inventing entirely new domains with their own special rules that we create. It can be an artistic process or a scientific process. As an artistic process, it's very hard to judge the outcome from the start. As a scientific process, the result is much easier to judge prior to completion. Until the processes and methods are understood to a sufficient level, programming will be very much like an art. Once they're understood, it's a science, apply the rules and out pops a software.

I have several relatives that are plumbers, electricians, carpenters and architects. Once there's a common set of tools, language (as in, for communication between people) and understanding, programming is no different than any other craft.


The windows, corners, doorways and arches where exactly what I had in mind, but even a straight wall is already pretty hard. Each building is, when it's done a work of art, and possibly more so than most computer programs, especially your garden variety throw-away web-app.

The 'art' part in programming is exactly that part where it is not yet a science.


Without knowing anything about you, on the basis of this comment, I suspect you are a much better programmer than most people who constantly talk about how difficult their programming work is.


I've been trying for several months now to get my head wrapped around the 'functional paradigm' (oh I hate that word), so far with very little progress so I'm not so sure about that ;)


Having tried to wrap your head around function programming puts you leaps and bounds above most programmers.


I don't think the analogy's a very good one. If you want a housing analogy, I'd say it's more like architecture than ceiling-fan installation. And architecture has, hundreds of years later, never totally coalesced into a science. There are scientific and engineering sub-parts, but still significant "art" parts as well, and good architects are at least reasonably knowledgeable about both.


If you have not yet read Stewart Brand's "How Buildings Learn", I highly recommend it. The basic premise is how the building is built determines how adaptable it is to change.


> With a science of programming, we can aspire to a position where programmers can at least claim to be engineers.

This is not a good aspiration I think. Engineers can be replaced with not huge efforts, while you can't easily replace artists.

Also this vision will lead to more bad programmers coming out from universities (if programming is an art), as the process of learning programming is totally different if you think it's a science or art. If it's a science, do CS courses. If it is an art, put them into craftsman shops to learn how to code.


"Accordingly, programming is not _currently_ a science."

Yes it is, it is just that in information processing, the problem domains are often ill-specified and ill-behaved. The system analyst's job is to pull the pin on a wish list grenade, fling it at the engineers, and run away before they realize what has been done to them. The engineers are then forced to pile crap together, reverse-engineer a problem definition, and see if anybody wants to pay for solving it.


(Note that this response isn't an attack on you specifically, it's just my feelings towards this argument in general)

Where is the magical divide between "art" and "science" in the field? Do the adherents of either side even know what they're defending?

If I know what a finite state machine is and how to apply it, does that make me "scientific"?

If I hack together a web application in Scheme, instead of some Mathemagical, Dijkstra-approved language, does that make me an "artist"?

Why can't people just accept that you need some of both to be a good programmer?


To me the art part in programming is that part which has not yet been 'beaten to death' and formalized.

As soon as something is idiomatic I think it ceases to be art, but that does not diminish the artistry of the person or people that first came up with that.


To quote Theo Jansen, "The walls between art and engineering exist only in our minds."

http://en.wikipedia.org/wiki/Theo_Jansen


And to counter with a Donald Knuth quote, "We should continually be striving to transform every art into a science: in the process, we advance the art."


> If I hack together a web application in Scheme, instead of some Mathemagical, Dijkstra-approved language, does that make me an "artist"?

Dijkstra would not have liked this.


:)

Was it Dijkstra that advocated writing everything in assembly, or am I thinking of someone else? I know he was big on formally verifying the correctness of programs, but I thought I remember him saying that for implementation purposes, he advocated assembly. Or was that more of a "if you can't write it in assembly, you don't understand all the parts" deal? It seems he hated FORTRAN, APL, BASIC, and PL/1, and only later did he like LISP.

I wonder what he would have thought of Haskell. Standardization started in the 80's, so he would have been alive when it was being ironed out. A search in the EWD archives didn't reveal anything though.

EDIT:

http://userweb.cs.utexas.edu/users/EWD/transcriptions/EWD12x...

It appears that he liked functional languages...

>The clarity and economy of expression that the language of functional programming permits is often very impressive, and, but for human inertia, functional programming can be expected to have a brilliant future, the more so because today's computers admit quite efficient implementations of functional programming languages.

but...

>In particular, evaluating a functional program with pen and paper is a pain in the neck!

So he spends the rest of the paper talking about the predicate calculus and relation calculus.


Dijkstra is largely emblematic of the wing of Computing Science that seems to regard programming as déclassé


From his writing, I never got the feeling that Dijkstra himself hated programming, just that he hated most of the languages and ideas people used. Can you point to a particular essay that echoes this attitude, or is that just based on the (correct) observation that he was more a theorist, and they tend to scoff at the lowly programmer?


Can't point to an essay myself, but I do remember an anecdote from somewhere that he did not actually own a computer until about six years before he died, and he only used it for websurfing.


> Where is the magical divide between "art" and "science" in the field?

We need to revive the word "artisan" which has connotations both of technical ability and artistic sensibility. Look at it like that, and programmers are no different from thousands of generations of craftsmen from here to the pyramids. It's just that the tools of our trade are usually far more complex than theirs. (Although I still have no idea how to build a pyramid.)

I think this is why some people like to compare programming to painting or writing or whatever their other life's endeavour is. I don't think there is a direct correlation between programming and those other things, but you start using the same parts of the brain for parts of both activities, so it feels as though it's roughly the same.

So here's my comparison between programming and writing: every word must be relevant, there is no redundancy, no unnecessary repetition. Good code and good writing must be tight, clean and comprehensible. I mentioned this to a co-worker once and he said "I'd never thought about it like that. I think it's more to do with mathematics." Which it also is.


Here here! After witnessing N software fads with the pendulum of complexity and convention and configuration swinging to and fro, I firmly believe software crafting is much more similar to writing a book than constructing a bridge.

Preferably a book without any surprising twists. Or homicides. But extra chunky bacon.


I think dismissing "programming as art" as irrelevant and hurtful to the community is dangerous. Here we have the tools to create a near-infinite amount of almost everything that can run on a computer. We use code to run complicated robots that can drive a course without human input, solve the most complicated mathematic problems of today, and create artificial intelligence with the ability to learn as it ages. Yet at the same time, we use code to make short chiptune songs and fun small games hacked away in an hour or two.

Wikipedia defines art as "the product of deliberately arranging elements in a way to affect the senses or emotions", and science as "the systematic enterprise of gathering knowledge about the world and organizing and condensing that knowledge into testable laws and theories." Why do these two things have to be mutually exclusive? Through creation and exploring, such as in _why's projects, we are further "gathering knowledge" about the limits computers can be used. And at the same time, we are creating art as these programs have had a clear impact on at least the Ruby community.

And, bringing up a more "sciencey" example, if the fact that my handheld calculator can solve complicated algebra and calculus equations in less than a second doesn't "affect [your] senses or emotions", then you need a reality check on just how impressive technology has come in such a short time.

I personally believe that programming is one of the rawest forms of creation imaginable, and therefore must be of some artistic worth. Simply calling it science and moving on does a disservice to those who slaved for so many hours working on their piece of computer science history.


Look at http://www.paulgraham.com/knuth.html for a discussion of computer programming as both art and science.


Code can be used to create art. Wood can be used to create art. An HTML parser is not art, any more than disposable chopsticks are.

I've never understood _why's fan base; he seems to be no more than somebody who popped up, wrote a few low-quality libraries for an obscure language, and then vanished.


I guess we disagree on the definition of art. Those disposable chopsticks still required the search for a satisfactory length, width, smoothness, etc. Not to mention, the label and the marketing which equally requires a mastery of human psychology in order to get their product to sell. In this way, the designers have added something great and unique to the world which many people enjoy and use every day. This is art.

An HTML parser requires fast and efficient code to successfully and quickly read the document. Furthermore, the programmer needs to take into account common variations in HTML code as well as handling nested tags and attributes. And taking it a step further, the HTML parser is used to output the trillions of websites that are currently out there in a visible form for a majority of the developed world. In this way, the designers have added something great and unique to the world which many people enjoy and use every day. This is art.

Then again, I am one of those weird people who likes modern art, so I could be a vocal minority.


Indeed! There can be a joy & delight in writing an HTML (or XML) parser. I love that the libxml still has a quote at the top:

"Programming with libxml2 is like the thrilling embrace of an exotic stranger." Mark Pilgrim

That sort of excitement is not just an engineering one.

And, of course, some artists choose not to even write HTML parsers, but to do things more strange, more beautiful with their code. And that is where things really change, and really get exciting.


In that case everything is art and the word loses all its meaning.


No, in that case everything skillfully done is art and the world around us becomes something more than mundane dross.


Everyone wants to be an "artist". I'm proud to be a "programmer", no airs and graces, just solid work.


Couldn't an HTML parser be art? I don't think of an a parser as being like the wood used for a sculpture. The HTML itself is the wood, and perhaps the parser is the lathe. I think there is a false dichotomy between tools as purely functional and the product as the art. There can be real artistry in a well constructed tool. A well written, efficient parser can be beautiful to behold.

Maybe this comes down to the difference between something constructed purely for artistic purposes and something constructed in an artistic way to fulfill a broader purpose. Or maybe it's just a matter of personal taste, the way some people will spend hours arguing about whether a soup can is modern art or just pretentious trash. Personally, I'd say that if people are moved and/or inspired by it, than you can make the case that it is art.


Actually _why reminds me a bit of Hideo Kuze from the GitS. He appeared and gathered people who like him after sharing just a couple of moments, talking to each other. Some sort of "hero" idea is created for him, even though he didn't actively support it (or did he?). He used his specific personality to share ideas which are then applauded and duplicated... These are just the main similarities.


Well, he's gone now. So you guys won.


Are you somehow suggesting that _Why disappeared because of the GP and 'his kind'?


Yes, that is what I'm suggesting.


No wonder you're angry then. Ok, that makes me understand your position in this thread a bit better. Thanks for the explanation!


To give you an example of why starkfist would say something like this, you only need to look at @_why's last few tweets:

"programming is rather thankless. you see your works become replaced by superior works in a year. unable to run at all in a few more."

"if you program and want any longevity to your work, make a game. all else recycles, but people rewrite architectures to keep games alive."

"an ascending homage to fish bones. culminating in a delicate canopy of mouse furs."

... Okay, maybe not that last one. Anyway. He was obviously contemplating all of the stuff we've created around software, and was pretty bummed out by it.

Not that anyone will know _exactly_ why he disappeared, but still.


I really fail to see the connection between any of that and what starkfist wrote.


Sorry for taking a bit to get back to you, I'm traveling, and my Nexus One sort of sucks for long comments.

Anyway, first, to re-iterate: nobody really knows shoes, err, why _why disappeared. This is just conjecture.

Basically, those tweets are all talking about the social constructs we've put up around programming. There are large fads, things come and go, old projects are abandoned, new projects and forks of old ones spring up. The quote about games seems to be really about hpricot; from some reports, _why was kind of upset about Nokogiri, and everyone's shift to it. If people didn't like hpricot, why not contribute, rather than make the same project over again?

The first one is something I'd also expect to hear out of someone who's getting burned out. _why did a _lot_ of things. And, since _why was an artist, he put a chunk of himself in every project he did. It's unmistakeable, all of his endeavors undoubtably have his signature attached to them. And when you put yourself out there like that, and people reject it, it's hard. It's easy to get frustrated when you invest yourself in something, and other people simply reject it out of hand. There's a dead comment at the bottom of this thread that talks about people 'giving him shit' on the shoes mailing list, which I wasn't subscribed to at the time, but with anyone as prolific as _why, I can't imagine there wasn't a fair body of naysayers. Just look at this thread, and the people that want to remove all artistry and craftsmanship from programming. Hence what starkfirst was talking about.

The naysayers won. _why got burned out. He decided his sun had set, so he burned his guitar.


> Sorry for taking a bit to get back to you, I'm traveling, and my Nexus One sort of sucks for long comments.

np, no hurry :)

> Anyway, first, to re-iterate: nobody really knows shoes, err, why _why disappeared. This is just conjecture.

Ok. I figured as much, which is one of the reasons I asked. I thought that someone might be able to finally provide some hard info on this, but it seems not.

> Basically, those tweets are all talking about the social constructs we've put up around programming. There are large fads, things come and go, old projects are abandoned, new projects and forks of old ones spring up. The quote about games seems to be really about hpricot; from some reports, _why was kind of upset about Nokogiri, and everyone's shift to it. If people didn't like hpricot, why not contribute, rather than make the same project over again?

Because they can. That's the downside of giving stuff out, you lose control. If you want control then you can go corporate, but as soon as you release stuff in to the wild, if it is at a level where plenty of others could 'fork' it they probably will (or they'll start some me-too project).

This is one of the bigger downsides of open-source, there is a lot of fragmentation and not all of it is good.

> The first one is something I'd also expect to hear out of someone who's getting burned out. _why did a _lot_ of things.

Yes, I noticed that. But then again, _why is definitely not unique in that. In the Ruby scene he is, but outside of it there have been over the years more people in that vein. I've known one personally here in NL but it was before the 'dawn of the web', so none (or at least, almost none) of it is documented.

Burnout is typically a symptom of taking on more than you can deliver and then to keep on throwing more of yourself on it until there is nothing left to give. I've had it and it took me years to recover. Not quite 'didn't touch a keyboard' but very close.

> And, since _why was an artist, he put a chunk of himself in every project he did.

Everybody does that. Really, people put a piece of themselves in to their work all the time. Any creative profession has this, whether it is a designer, a programmer or a person that restores old vehicles. Work created becomes like a child.

> And when you put yourself out there like that, and people reject it, it's hard.

That's the downside of putting your work out like that.

What bothers me a bit about the _why saga is that the ending of it left a pretty bitter taste in my mouth, it's fine if you no longer want to play, but active destruction of what you've created points to mental problems a little deeper than just a burn-out.

> There's a dead comment at the bottom of this thread that talks about people 'giving him shit' on the shoes mailing list, which I wasn't subscribed to at the time, but with anyone as prolific as _why, I can't imagine there wasn't a fair body of naysayers.

Happens to all of us. I have my share of those and I'm a public 'nobody'.

> Just look at this thread, and the people that want to remove all artistry and craftsmanship from programming.

Not all. I'll be writing a long piece about that any day now, and in part it was prompted by this thread. But there is a lot more to it than 'all code is art' or 'no code is art'.

> The naysayers won. _why got burned out. He decided his sun had set, so he burned his guitar.

Any fool can destroy, but the naysayers did not burn out _why, he did that for the most part to himself. By taking on more than he could sustain-ably deliver he set himself up for a fall, and by not keeping enough distance from the trolls he allowed them to get under his skin. If you are in the public eye by accident that's one thing, but if you choose to be in the public eye by your own choice you really have to have a thick skin.

Look at all the flak that Linus, RMS and Guido van Rossum get, none of it is deserved and they just keep on giving.

One of my first exposures to contributing open source was an extremely negative one (I wrote a clone of zmodem and got crucified publicly by none other than the great Paul Vixie himself for 'copyright violation' when in fact all that happened was that a few lines of an old include file made it in to the spec for the new code, and so eventually in to the distribution. He neglected to mention that this was perfectly ok in a non-spec'd protocol and that Chuck Forsberg, the original author of zmodem was his buddy).

After that I vowed to never release code again.

I can't imagine what would have happened if I had gone through with my idea of an open source micro kernel based operating system released to the public. Probably I would have burned out a lot worse than I did on the webcam project.

Naysayers are like trolls. Ignore them, don't feed them.

As an educator (and that's how I primarily see _why) he had an exemplary role, and I think he failed in showing the people he was teaching how a mature person bows out when they realize it is no longer worth it.


We're really in agreement. I actually wrote about this before, back when that Kanye thing hit HN: http://blog.steveklabnik.com/why-bother-creating

It's rough being out there, but you're absolutely right. You have to grow a thick skin. But that doesn't mean that everyone is able to do so.

Oh, and you were going to write a µkernel? That's awesome, I help out two of my friends with an exokernel. It's been two years of hard work, and like you conjectured, we've had a lot of naysayers. But it's coming along really nicely, I'd say...


I actually built it, but I never released it.

It's lots of work getting something like that built and built properly. I can vividly recall the day when it first booted and then a few months later when it became self hosted was really amazing.

I've dumped some source for you here: http://ww.com/task.cc http://ww.com/task.h , it's the kernel itself and the main header file for the process structure. It's 'hard real time', something I wished linux would get on to in the standard releases, and switched on by default.

Maybe there are some ideas in there that are useful to your friends. If you guys get something working let me know please, I'm always interested in stuff like that.

It's funny when I look through that old code, how simple it all looks, blood sweat and tears to get it right though. That was definitely pre-burn-out code :) Since then I've done only much simpler stuff, with the occasional venture in to something a bit more ambitious.

greetings & thanks for the exchange btw.


I agree that computing as an activity has manifestations that could be understood to be art, but that doesn't make _programming_ art. Glorifying programming as an art is like glorifying spelling as salient to the quality of Shakespeare's plays. Programming is the act of expressing programs. Coming up with interesting things for those programs to do definitely follows a creative process of human inspiration, but actually writing those programs down is not an "art". It's a fairly normative process in most cases, and it can (and should!) be made more normative.


I'd strongly disagree with that. I'd argue: it's rarely a normative process, and can (and should!) be made less normative. In fact, almost the only times it can be considered close to normative are when it's in a huge organization banging out boilerplate code, because in that case you've already assumed a fixed structure and placed "programming" into a niche within it, and declared that the structure isn't currently up for reevaluation.

But I don't think that fundamentally you can separate the act of expressing programs from the act of coming up with interesting things for them to do. The materials of the medium constrain what is possible or easy to express, and it's quite hard to produce anything good if you try to artificially separate them into levels of specification vs. implementation.


I feel that you are going Humpty Dumpty on us, picking a meaning for "programming" that makes your point but is far a field of what the term "programming" means in the minds of practitioners.

Basically, you have defined programming as a form of dictation. That definition makes your arguments true. But it does not follow the common usage of this term, especially as a site like this.


"... vastly over-stating the contributions of this one guy in HN comments ..."

You are right to be cynical but this time I think you missed the mark.

The author gives numerous examples of work "Why" produced. Their merit cannot be taken away. Just as important is the effect "Why" had on the Ruby community and other programmers who I imagine are just as or even bigger cynics. There's John Resig, Zed Shaw and Fábio Akita. I've read their blogs, looked at some of their code. They don't appear sycophantic in their ideas or writing. But I don't know any of these people.

But I do know @DrNic ~ http://www.flickr.com/photos/bootload/tags/drnic I met him last year at a talk he did on "Scriptable tools" ~ http://www.flickr.com/photos/bootload/3409666921/ Nic is the most cynical begger I've met - talking and interrupting the talk after his, ripping into a greeny with a largely sympathetic audience. Questions and comments both insightful and rudely cynical at the same time. I didn't sense the audience resenting this. It pushed the speaker to clarify his ideas.

So I artfully disagree. "Why" had a tangible positive effect in the core Ruby developer community who by nature are as skeptical as you can be - and then some.


John Resig only invented jQuery. Small feat there.

Sarcasm aside, _why's influence was felt beyond the Ruby community.


_why's influence was felt beyond the Ruby community.

How?

Honest question from a python programmer who never heard about him before the "he disappeared" craze a few months back.


I think his primary appeal is that, in a world that tends mostly towards people like yourself, who view programming as science (or engineering), he unapologetically took the opposing view. Your perspective is commonly shared; his perspective was undeniably more singular. One can admire that perspective, learn from it, and be inspired by his passion, without necessarily taking the same approach in your own code. I don't write code much like the way _why wrote code, but I admire what he did and what he stood for nonetheless.

_why was drawn to Ruby because of its own artfulness, and playfulness; you would be hard-pressed to come at programming from the same perspective in Python, not because Python isn't a nice language (it is) but because the diktat "there is only one way to do it" necessarily discourages experimental styles of coding, though not of API or visual design. If your medium is code, then it helps to work with a malleable programming language, and Ruby is nothing if not that. Scheme is malleable, but I'd not call it playful. Perl comes closer, but most languages, which are are written by Serious People with Important Goals, do not.

Anything that inspires people to stretch their skills and try new ideas out helps grow teams and developers, though preferably not when working with production code.


I've found his contributions outside of Ruby to be also valuable: he wrote a very interesting minimal webserver in the Io language. Just reading the code to it opened my eyes to a way to solve a problem in some Io code I was working on. And the language he designed, "Potion", is very innovative. The stuff he's created is valuable as art, but if you must insist on programming as science, I'd argue his unique way of thinking has also pushed the boundaries of programming as a science in the way that calculus changed people's ways of thinking about math and physics.

As for his strange charisma, I would say _why is to programming as Ramanujan was to mathematics. There were western mathematicians who were so fascinated by Ramanujan, that even when he was wrong, they suggested that perhaps he was "right" in some higher plane of reasoning.

http://en.wikipedia.org/wiki/Ramanujan


Don't understand the cynical flamebait language. What's the difference between sycophancy and genuine admiration? Can a guy be a fan of another guy's work without being a sycophant? Maybe you don't get it. Fine, I don't really get Jackson Pollack, but it's no big deal to me if people like him.


I'm curious if you've heard of Jeff Koons. A wildly successful modern artist. He produces outrageous crass art and sells copies for tens of thousands. I don't like him and I thought about him when you mentioned not getting Jackson Pollack.


Yo. I would suggest that as an admitted non-fan of Ruby then you are in no position to comment. Besides, _why could draw, anyone could appreciate his stuff I'd imagine. He could play music. He had a quirky sense of humour, and was a creative and endlessly surprising person. Now, this ain't sycophantic as you call, he genuinely was these things. Sorry if that bothers you.

There's this cute paper some guy once wrote, it's called "The Art of the Interpreter ...", geez I guess he'll have to change it to "The science of the Interpreter ..." - good thing you fixed that for him.

As the article says, what you can take from _why is to bring a sense of aesthetic to _any_ thing you approach, be it a boring powerpoint presentation or a blog or whatever. Didn't your Mommy ever tell you, "If you ain't got something nice to say, maybe you should bite that tongue of yours".


Why are people who are not fans of Ruby not allowed to comment on how _why, arguably someone that made an impression in the programming world, has influenced their little corner of the world?

_why has done absolutely nothing for me either, I cannot stand Ruby, and its community, I don't understand why all the reverence for this single man. Yes, I know of _why's work, and yes seeing other people use his old nickname makes me feel sad since they won't ever really appreciate the ideas, and projects he put out into the world, but why are we still writing about him?

There are many other people that have contributed greatly to advancing of computer science as a whole that contributed to more than just one programming language that have changed the field of computer science as it was once known. Those people are the people we should be writing about, not someone who like a coward decided to up and quit.

_why reminds me of my younger brother, and even partly of myself back when I was a kid, if monopoly or some other board game was not going my way, the board would go flying and so would all the pieces, and it would no longer exists. _why removing all of his content, not passing it along to the next group of people, not even leaving a backup in place thereby causing others to scramble to find the latest up-to-date versions from local disks is very much like that game of monopoly where I am losing, and it is a cowards move.


Hi there. You are absolutely right X-Istence. I wrote that in the heat of the moment, as they say. I have already retracted the blanket edict in my reply to compay. Consider it doubly-retracted. Of course, I respect everyone's right to express their opinion.

What I'm getting here from _why's detractors is that your animosity towards _why is bound up with your animosity towards Ruby. I have never understood language wars. Each language brings something different to the party. I learn different languages just for the fun of it. We can be competitive and cheerlead our own corner but it's tedious when people start spewing bile.

I don't think you can project your childhood emotions onto _why's pulling of his online presence. We can only guess at why he did what he did. He disappearance and removing of the code and so forth that he was in control of does pose interesting questions in this age where source-code is shared and diaries are public. If it's important enough people will have copies and keep a hold of the bits they like. I can see how it would annoy somebody to feel like something of worth could be removed from the world so easily but maybe we'll have to get used to that. You could argue that _why had a social responsibility to not do what he did but surely we must allow him some personal autonomy as well.

For my part I'll try to understand your perspective but could you also try to appreciate mine? Thanks!


"I would suggest that as an admitted non-fan of Ruby then you are in no position to comment."

I like _why too, but but by telling gdp shut up because he's not a "fan," you're actually making it much easier for him to make his point.


Point taken. That was my second attempt. (The first was far less civil.) I am still of the opinion that gdp's comment was far more mean-spirited than my rejoinder. Or if not mean-spirited then lacking in imagination or possessing a real disconnect about what motivates people. But ok, point taken - my bad, I retract that part of my comment.


Allow me to quote a randomly-chosen comment from this thread:

> _why's influence isn't only in code, but in thinking. And if you look around, for example on github, you will see a lot of people hacking away for fun, trying out new stuff and just doing something they love to do. Did _why start this trend? He didn't, but he was a big advocate of it.

Yes, that's right, this person appears to be seriously suggesting that _why could have been responsible for people hacking for fun (in the "I'm not saying that...", right after saying it kinda way).

> I'd argue his unique way of thinking has also pushed the boundaries of programming as a science in the way that calculus changed people's ways of thinking about math and physics.

As influential on programming as calculus was on maths and physics? Really? _why is on equal footing with Newton and Leibniz now?

> As for his strange charisma, I would say _why is to programming as Ramanujan was to mathematics.

This one suggests that _why is to programming as a Fellow of the Royal Society was to mathematics! Awesome!

> I always thought he was one of the most creative people currently working in any medium,

Yep. That one pretty much speaks for itself.

I mean, the _title_ of the article is "A Tale Of A Post-Modern Genius".

Need I go on? I believe my use of the word "sycophantic" was justified and I stand by it. Genuine praise for someone's achievements is completely justified and should be given freely. This is not genuine praise. It appears to be a pissing contest between different people trying to find the most absurd hyperbole with which to describe the effect that _why had on them, the Ruby community, the programming world and the entire universe and all matter contained within it.


I think in large part all of this is fueled by loss and grief, wondering what might have been, or maybe trying to lay blame as to why '_why' left.

Most of it is really over the top, and you have to wonder how the non-ruby programmers get by, without access to _why's genius or his contribution to thinking in general.

_why was just some guy, he had a nice run at it, decided that it wasn't for him in the long term and proceeded to try to hit the 'undo' button. In a way it is good that most of the stuff got saved, if not we'd have an even larger problem, which is that the scope of his actual contributions would have become the stuff of legend. At least that keeps things a little bit grounded in reality.

Credit where credit is due, but let's keep some scope here _why was an ok guy while it lasted, but he certainly was no Newton, Leibniz or Ramanujan, and he did not put the 'fun' in programming except for the relatively small number of people that learned about programming through him. And for that last we should be grateful, and we should do more of it, and we should NOT destroy what we give to others to use as a base.

Especially for someone that wrote open source libraries his actions were totally unconscionable and they negate a lot of the positive feelings I would have had to his person otherwise.


  INTJs : programming as science, maybe a little art
  INTPs : programming as equal parts science and art
this comes from the fundamental difference between left-brain and right-brain conception. namely, the right-brain folks can handle the tiny little details directly and simultaneously and account for them statistically. because of this, they can often rule out or rule in entire chains of reasoning in vast swaths and hone in on the critical parts quickly. this is what makes artists seem magical: out of countless possibilities, they can select the good ones

the left-brain folks cannot handle the little details directly. they rely on subconscious abstractions. for left-brain folks, the engineering aspect of coding is perhaps necessary to keep track of the little details. on the other hand, left-brain folks have a knack for certain kinds of structure (abstract logic for example) that right-brain folks do not have naturally


Hmm. What about INFPs?


the algorithm to figure out left/right hemisphere dominance from MBTI type is pretty easy... J is left-brain, P is right-brain. there's some potential subtlety but that's the general rule


_why's influence isn't only in code, but in thinking. And if you look around, for example on github, you will see a lot of people hacking away for fun, trying out new stuff and just doing something they love to do. Did _why start this trend? He didn't, but he was a big advocate of it.


_why wrote code, made music, and made visual art, and he seemed to think the three activities had enough similarities to share the name "art".

Incidentally, I also consider engineering to be art, only with more constraints.


So... not a big Knuth fan?


> As a non-fan of Ruby, his contributions to programming outside of that community seem minimal.

Funny, that's exactly the kind of thing I'd expect _why to say if he were to take up a new pseudonym and participate in discussions on Hacker News. I'm sure he'd just be trying to convince us that he wasn't actually all that great.


Oh, dammit, you got me!


_why is essentially really good at marketing, and he did what all great marketeers do best, he kept the people wanting more.

The move to 'quit while ahead' is genius, forever his legacy will be treasured and the myth of his genius will only expand with time.

That doesn't mean that his contribution wasn't great, I'm sure the Ruby world would look different without him, but for every _Why there are 10 others, maybe not as good at marketing themselves but at least as influential.

We really have come to the crossroads of popular culture and programming if we get programmers with 'cult' status comparable to minor movie stars. But I'd rather see some credit go to those that are less capable self promotors.

Watch for _Why's spectacular comeback in a couple of years.

Mark my words.


I'm not sure how he was a savvy self marketeer when nobody knew where he lived or what he did for a living or even what his real name was.


He was marketing _Why, not his real life persona.

And that in fact made _Why a stronger brand.

Have a look at the band 'The Cure' and Netochka Nezvanova.

Both of them were amazing marketeers, and _Why worked very much in that spirit.


Never heard of her. I guess people can have fame without being recognized.

http://en.wikipedia.org/wiki/Netochka_Nezvanova


There are a lot of parallels between Netochka & _why.

In the beginning I thought it might be the same group.


You sound like a Java programmer who doesn't see what makes ivory-tower ninnies like McCarthy or Knuth so great. "Because this person's work was focused in a different area than mine and he values different things than me, anybody who praises his work — no matter how earnestly and without hope of reward — is a sycophant."


Programming as art is little more than masturbation. Useful programming must be done as a science.


haha, wow

nobody wants to challenge me on this?


There's nothing to challenge. You've made a statement of your opinion, and you've stated it in such a confrontational way that nobody wishes to engage you with a response.

Maybe rather than saying 'wow' and laughing, you should consider why the things that you say cause others to want to exclude you from the conversation, rather than reply.


Meh. I know it's confrontational, and I don't mind the downvotes. I find it hilarious, apparently you don't. Sorry.


What we can learn from _why is non-attachment to our work and not taking everything so fucking seriously. We should see our work as art and enjoy every moment of it!


> What we can learn from _why is non-attachment to our work

Non-attachment -- Exactly how? If so why delete your work ? That shows his attachment to it. iirc, there was some discontent over one of his libraries being overtaken by another (nokogiri ?). There were benchmarks that showed his lib to be slower. then he improved his lib. this went on. he did seem a bit annoyed, if i recall.


John Resig's post explains _why's non-attachment well: http://ejohn.org/blog/eulogy-to-_why/

"People get way too caught up in their work. I like to think that he was able to keep the products of his online persona separate from the rest of his life, treating them as completely distinct entities - the perfect, clear-cut, division between personal life, work, and play."

"Seeing the complete deletion of his online persona doesn't terribly surprise me. Back in 2007 _why closed his main blog (RedHanded). That event truly shocked me, but it helped me to better understand him as a person. The blog, even though he had put years of work into it and people strongly identified him with it, was immaterial. It didn't feel like the right place to talk anymore so he moved on to another place, abandoning the old site."


It was a sad day when _why left programming. I always thought he was one of the most creative people currently working in any medium, and we were lucky to have him choose code to express his ideas.

Does anyone have any idea what he's been doing since?


> Does anyone have any idea what he's been doing since?

Basically, the Ruby community decided that if his wish was to be gone, we'd respect that wish. Nothing has been heard since his disappearance.


I think that any tendencies to find out stuff about him tend to lean in two directions:

* The _why that we knew would not be averse to setting up a puzzle of this sort. * We simply want to make sure that he didn't kill himself or anything like that.


Oh, absolutely. I didn't mean to say that anyone looking for him was being a jerk. I myself, as the maintainer of one of his projects, wish he was still around... the world needs more _why.


"Basically, the Ruby community decided that if his wish was to be gone, we'd respect that wish."

You make it sound as if there were a single monolithic Ruby community where some sort of consensus gets reached on things. That's completely imaginary.

Seems more like some folks, most most, who happen to be vocal in certain circles, decided to not try to dig shit up. But that's a reflection of those people, not _The_ Ruby Community.


Every community has subfactions; no community has a hivemind. But, like when you say, the most vocal people all agree, and there's no large dissenting voice, I feel comfortable saying 'the community.'


> I always thought he was one of the most creative people currently working in any medium,

You live a sheltered life.

A few million creative artists would probably disagree without you, some violently so.

Yes, it was nice to have him around, no, he's not that special. Have a look at Alan Kay for an example of someone who is special.


>A few million creative artists would probably disagree without you, some violently so

There are a lot of creative people, for sure. Discussing whether X is more creative than Y is meaningless. Ultimately it's about how X or Y's work resonates with you.

>Yes, it was nice to have him around, no, he's not that special. Have a look at Alan Kay for an example of someone who is special.

"In my opinion".

Personally, I've seen few things in any field that struck me as comparable in originality to The Poignant Guide, for example. I would never imagine a language tutorial that would be essentially a cartoon, and a pretty brilliant one at that, accompanied by a soundtrack - but also a working online console and eventually a whole new programming language.

Looking at his entire body work, it's impressive this was all done by one person, but it's incredible that this person actually didn't make any attempts to reap financial rewards from it, in the age where everyone with a few blog posts behind him is telling you "you should follow me on Twitter".


> I would never imagine a language tutorial that would be essentially a cartoon, and a pretty brilliant one at that,

Have a look at the early TRS-80 manuals, they were exactly that, no soundtrack though, it was on 'dead tree' format for want of a bit-mapped display on that particular computer.

That does not diminish what _why did but it is not quite as original as you may think.

> Looking at his entire body work, it's impressive this was all done by one person,

Absolutely.

> but it's incredible that this person actually didn't make any attempts to reap financial rewards from it,

Agreed, but he's hardly alone in that, the open source world is full of people that have given an enormous chunk of their lives without getting much or even anything in return.

> in the age where everyone with a few blog posts behind him is telling you "you should follow me on Twitter".

And on that we also agree.

In fact the whole 'get rich quick' mentality can take a running jump as far as I'm concerned.


TRS80 comics (at least the ones I find online) aren't tutorials, more like a Radio Shack/DC comics marketing collaboration.

Certainly a lot of people donate their time to open source projects. Many of them do it while being paid by a company or a university to work on that code. Many others later us it as a base to start companies or consulting careers.

There's nothing wrong with that, of course, but _why did stand out, especially among the Ruby community in the mid '00s, as someone who could easily make $200/hr consulting, and chose not to do so. I don't know many (of course there are some) who willingly choose that path.

Otherwise we pretty much agree :)


I'm referring to a very wide (at least 45 cm wide by 25 high) volume of about 200 pages that came with those first machines to teach you basic. The whole thing was a running cartoon and by the end you could write simple programs.

The Radio Shack/DC comics stuff is definitely not what I refer to.

And we don't know if why didn't choose to do $200/hr consulting jobs, he may have done the _why thing on the side.


Slagging someone who approached computing the way Alan Kay has tirelessly advocated for his whole career by pointing out how short he falls of Alan Kay seems a little, uh, un-Alan-Kay-like.


True enough, I concede that it is un-Alan Kay like, but then again, I definitely am not Alan Kay.

I just think that there are plenty of people that have done a lot more for programming in general than _Why (or however you spell it 'properly'), and that to exaggerate like this is not helping at all.

Plenty of people are busy today doing very interesting stuff, let's go and talk about that instead of endless pouring over the ashes of one very briefly very productive programmer, artist if you wish.

He choose to limit his contribution, I have heard more about _why and how fantastic his works are since he quit than I ever did before.

Too much fandom, which in turn actually does _why a disservice because it turns off those that would otherwise still be open minded.

edit: it is precisely because of the similarity in goal that I mentioned Alan Kay by the way, and I think Alan Kay has gone about it in a lot more structural fashion that _why, he's also still at it instead of taking his toys home because people won't play his way.


I've been thinking about this a bit more, and I think in fact that the reference to Alan Kay was probably quite appropriate. Alan Kay has been at it for decades, _why has done it for a few years and then destroyed (or at least, attempted to destroy) whatever he made. Now, in principle, that is his good right, but when you're an educator and people have started to come to depend on your educational tools and have built a little eco-system around it destroying it is an extremely selfish act and causes a lot of damage.

The very least he could have done would have been to transfer the maintenance to others in an orderly way in stead of this wanton act of vandalism, and without a second of warning to boot.

_why was a very good influence during the first period and he may have approached computing the way Alan Kay has tirelessly advocated for his whole career, but he wiped out a lot of that credit at the end.


I don't think I brought it up on HN yet, because they haven't updated rubysoc.org, but Hackety did get accepted as a Summer of Code project this year: http://librelist.com/browser//hacketyhack/2010/4/21/ruby-sum...

I'm really excited!


He was sort of like a contemporary one-man open source Beagle Bros. Unfortunately there is no place in current programming culture for people like this. Programming is not art. It is certainly not whimsical. It is fun, but only fun like preparing for a rocket launch or hostile takeover is fun. Programming is science, it's engineering, it's methodology, it is bureaucracy. More importantly it is Serious Business. Programmers like to imagine themselves as simultaneously being as potentially intellectually important as Einstein and as rich as a Rockefeller. There is no place in that world for cat cartoons and goofing off.


Thinking that what you are doing is "Serious Business" is a great way to be really inefficient.

Good stuff comes out of organization, great stuff comes of inspiration, which only comes from playing with ideas.

Theres a great Feynman quote from just after he got out of the Manhattan project, where he describes his decision to not think about "Serious Problems" and instead just concentrate on playing with interesting ideas.


Surely there must be more hackers that think like _why, even if they are not as high-profile. Maybe someone should start a (loosely knit) network of such people. Or maybe it already exists. I for one would definitely be interested in joining. :-)


It, to some degree, already exists in the guise of the Ruby community.

Which is, not coincidently, why _why's detractors tend to feel the need to throw in a comment about how much they dislike Ruby.


Programming, just like everything else, is what you believe it is, what you put your energy in when you're thinking of it or dealing with it.

You (and everyone else) are creating your own world. Have fun with what you create..


Beagle Bros! I remember them. Ok, lets age ourselves here. I had their "Peeks, Pokes & Pointers" poster for my Apple II+. They made great stuff.


As opposed to thinking of yourself as Van Gogh or Warhol? Without any financial considerations, thinking of what you do as a scientific or engineering activity is much more conducive to the creation of good software. I'm suggesting that glorifying programming as an activity is a bad idea. I'd prefer programmers thought of their programming activities as no more important than any other kind of skilled labour (clerical/administrative, plumbing, whatever). Get your fun an enjoyment from the obviously creative parts of creating software. Or take up a real art form as a hobby.


See what I mean?


No, I really don't. I'm suggesting that self-importance is a negative trait for programmers to hold. To me, cat pictures and silly songs are actually just another form of pretentious self-importance.


> cat pictures and silly songs are actually just another form of pretentious self-importance.

Or they're a form of art. Out of one side of your mouth you say people should do things besides programming for fun, then when they do you call it self-important.


Sure, they are art, but that's not mutually exclusive with pretentious self-importance.


You win.


Is there anything fun and joyful that is not a form of self-importance?


There really, really needs to be a leading underscore in the title. (The article linked to gets this right. The submitter seems to be reasonably clueful, so I wonder: did he get it right and the HN software screw it up?)


Smashing Magazine's title lacks the underscore, but the in-page title has one. HN's submitter bookmarklet copies the title tag's contents, and I neglected to fix it...

update: there, fixed it. thanks :)


the w shouldn't be capitalized, either.


_why really is a brand then.


Why do you say that JackM?


Because nobody here would care if I would write 'zerogravitas' or 'ZeroGravitas' to indicate you.

It's just a moniker, a handle. As soon as you start to assign great weight to the spelling and the special look ("It has to have an _") of a nickname then you're definitely in branding territory.

Just like "The artist formerly called Prince" is a brand, so is "_why, they lucky stiff".


Some people care about the difference between "_why" and "Why". (Probably including the man himself.)

Some people care about similar variations in brands.

So far, so good. What's not clear (to me, at any rate) is how you get from these to "Therefore, _why's name is a brand". That would be reasonable if no one cared about details for any reason other than branding, but that's obviously false.

Compare: "... then you're definitely in programming-language territory." (Almost all implementations of almost all programming languages care very much indeed about the difference between "Why" and "_why".)

Or: "... then you're definitely in religious territory." (Some Orthodox Jews care very much about the difference between "G-d" and "God" even though the former is just a lightly modified version of the latter.)

Or: "... then you're definitely in music territory." (In a musical score, adding or removing dots, little lines, funny characters, etc., can completely change the meaning.)

Or: "... then you're definitely in vanity territory." (Some people just care a lot about appearances.)

So ... why "branding", specifically?


It was a sad day when he disappeared. _Why inspired me to learn ruby, and reminded me that software can be beautiful (and humorous!).


_why's view on messy code is drastically under-appreciated.

One can imagine how much energy is wasted revising commits and over-massaging code just to make the author look smarter.

I'd love it if the culture were more accepting of ugly code... It has its purpose too.


I have a completely different feeling. It's ok if you depend on such code as long as it's actively supported by the creator himself. As soon as you need to modify it for your needs, or adopt the whole project, because it was dropped -- you start to appreciate clean and consistent code. If the code is too messy, you just end up rewriting most of it, in order to understand it. There would be no reason to do that if the original was clean and documented.


There are different kinds of cleanliness though, I think. I've often found it easier to modify idiosyncratic code than code written in the Standard way, though things vary in both kinds. I do agree documentation is rather important; well-commented idiosyncratic code that explains the author's mental model is light-years easier than idiosyncratic code without any explanation.

But, I do find that code written in sort of industry-standard style often is hugely over-architected, with a lot of boilerplate and cruft, and not all that easy to modify if I want to adapt it to my personal ends; i.e. my use-case is a single programmer wanting to put in 5-10 hours to make a small to moderate change. You end up in a maze of Factories and Interfaces trying to figure out where anything is actually done. The idiosyncratic code often just does away with all that architecture, which can sometimes be easier to deal with.


Did he explicitly write on this? Linkage?


Heartwarming... One of the first programs I ever wrote, on a PET-2001, was a crude running elephant. Later I made it controllable with the arrow keys.

Why did this enigmatic guy disappear from the nets?


With his level of passion, I can't believe that he doesn't want to come back. I think he's just giving us all a time-out from playing his wonderful game, to teach us to be good.

Although, if he now distrusts the Ruby community too badly, he might be waiting for a new language espousing "programmer enjoyment" to sprout up...


I think _why has much bigger vision than just programming. My personal theory is that he realised that he had reached a plateau, diminishing returns had kicked in and it was time for him to move on. I'm sure he's out there somewhere now working on his next little revolution.

I think the only lesson he's trying to teach us is to take things less seriously, to accept transience and impermanence, to realise that nearly all of us are just making pictures in the sand. Almost everything we do will one day disappear without trace. We might as well get used to the idea.

Chunky bacon.


_why left open source, and there's no evidence he "distrusts the Ruby community." His last tweets waxed philosophically about software progress in general and there's a suggestion in the poignant guide that he had considered dropping his persona in this way for years. If there was anything negative that prompted him to drop out, it was most likely the posting of his name, something that has more to do with his then growing fame and crappy aspects to internet culture than anything else.


_Why had an abnormal personality. He had a busy internal dialogue. He acted for his own reasons, and I don't think we will guess at them.

Humans understand new things by comparison to what they already know, so fresh souls are often misunderstood and misclassified.


I think you nailed it.

I'll add to that though. often, when people die (and _why did in a sense die), people view everything they did through rose colored lenses. I'm with the majority in HNers in this thread so far, still in awe of _why, however, let's not forget the tough lessons his disappearance taught us.

While I greatly appreciated everything _why did for the community and think he truly was an amazing person, it's clear in my mind that the way he left the community, without notice that he would take down his sites and code, was irresponsible. He had the right to do what he did, but that doesn't make it ok.

I'm not angry at _why, more sad. I assume, given his eccentricities, that there was no malicious intent behind it, which is why I find it merely tragic. However, his leaving was a powerful reminder of the responsibilities open source software authors have. If you make code free, you should make sure it stays available within reason, and if you use free software, you should take _why's disappearance as an object lesson.


It was also lucky that the Ruby community had adopted git so thoroughly; the only reason we still have his works is due to DVCS.


> the way he left the community, without notice that he would take down his sites and code, was irresponsible

...but that was exactly what he was from the beginning; I don't believe he ever considered himself to be an "open source software author." He said himself (in the article, even) that he was only ever messing around—it was our fault for depending so heavily on what he intended to be either "art" or "toys", but never "work."

His ethic (really an aesthetic, as he was an aesthete) worked well for those who were with him from the start, but it was entirely incompatible with the premise of "software engineering." The only people sore from his loss were those on the outside looking in.


I still can't figure why _why had to disappear just because his real name was discovered. So what's wrong with that?

And why hide your real name in the first place ? Considering that he gave presentations and made appearances, it was only a matter of time.


Interesting debate on whether programming is an art or science. Fwiw, programming isn't the first field which has undergone this argument. Even Bobby Fischer complained that chess had lost its artistry to a trend of mechanized memorization:

"Fischer Random was designed to remove the importance of opening book memorization. Fischer complained in a 2006 phoned-in call with a television interviewer that talented celebrity players from long ago, if brought back from the dead to play today, would no longer be competitive, because of the progress in memorization of opening books. 'Some kid of fourteen today, or even younger, could get an opening advantage against Capablanca', he said, merely because of opening-book memorization, which Fischer disdained. 'Now chess is completely dead. It is all just memorization and prearrangement. It's a terrible game now. Very uncreative.'[336]"

http://en.wikipedia.org/wiki/Bobby_Fischer#Fischer_Random_Ch...


I never view mechanization as a bad thing. It just makes the game more intense at the higher levels. If you're chasing the thrill, and chess can't handle improvements in play style, maybe we should find another game that can (for instance, go).


I keep waiting for a group of people to someday come out and say that _why was actually a hoax. That there was actually a group of people secretly signing their works with the same name with the goal of starting a new programming movement.



I remember reading a comment a while back (I think on HN) about some running joke in one of his books about a cat (or maybe it was a dog?) and how _why had actually created this whole blog to keep the joke running outside of his book. It was hilarious and impressive, but I can't find it - anyone know what I'm referring to?


yes, the story is told by shack_a_nerd: http://shack-a-nerd.livejournal.com/70594.html


I've sent Andrew Looney an email suggesting he do a game based on Kaxxt. Here's hoping!


Do as I say, not as I do... but.... I love this

When you don’t create things, you become defined by your tastes rather than ability. Your tastes only narrow and exclude people. so create.

— Why the Lucky Stiff


Funny how a guy who decides to pull out of the open source community and pull the plug on essential projects used by the community without so much as a line of warning is depicted as a hero. Self-centered jerk is more appropriate in this case, but it seems that the more excentric the behaviour, the more genius you are, regardless of the fact that there are vast numbers of developers who contribute daily, monthly, yearly, countless hours of their lives selflessly to others, without whom we couldn't be typing all these comments right now. But no, those aren't artists, it's this guy that pulls the rug out from under everyone that gets the adoration. Human nature is soooo lame.


Yes, it was a bit of a dick move to simply take the content offline, but the fact is that he created this content in the first place. If he hadn't done something very valuable, nobody would have cared when it was gone. Does one inconsiderate act counteract all of his contributions? Even with all of his stuff deleted, his contribution to the community was still bigger than yours or mine, so I'm going to say no.


What the fuck have you built?




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

Search: