Skip to content

Paul Gauguin Couldn’t Paint, But He Still Became A Great Painter

June 7, 2011

Today, I discovered a blog post, “Soloists vs. The Choir,” by Andy Leonard on a blog entry by Joel Spolsky, founder of Fog Creek Software, on the correlation (or lack of, rather) between spent time and resulting quality of programming. Leonard wrote:

Is there really that great a difference between good and great programmers?

Joel cites some impressive statistics gleaned from Yale Professor Stanley Eisenstat, who teaches a software development class. The scatter plot says it all.

As Joel notes, “There’s just nothing to see here, and that’s the point. The quality of the work and the amount of time spent are simply uncorrelated.”

While that may be so, companies do not determine what people want to do; people do. This kind of reasoning leads to the conclusion that only star programmers should program. By that kind of reasoning, only great writers should write, only great translators should translate, and only great painters should paint. Anomalies such as Paul Gauguin, who became a famous painter despite lacking any aptitude for painting, are simply ignored.

The problem with this kind of reasoning is that it equates people with their skills, but completely ignores their interests. Not all people are exceptionally talented at what they are interested in, nor are all people necessarily interested in what they are talented in; some people are relatively talented in a subject that is not profitable to making into a living (such as painting or poetry).

However, by this kind of reasoning, what are painters and poets, for instance, supposed to do? Painting and poetry are not means that are profitable enough usually to earn a living; however, if people are only supposed to do something at which they are exceptionally talented, then people whose abilities lie in unprofitable industries such as painting or poetry should just starve to death, since only skills matter, and these skills are unprofitable.

This is the kind of reasoning that causes certain professors (Professor Stanley Eisenstat being one example with which I am personally familiar, since I took a class (CS 323a: “Introduction to Systems Programming,” fall 1993) under him) to try to “weed out” students who aren’t exceptionally gifted in programming. Granted, he wasn’t alone; Alan Perlis (also a Yale computer “science” professor) was reportedly much, much more severe, and reportedly once gave a first graduate programming assignment to solve five non-trivial programming assignments, including writing an artificial intelligence program to solve the “Eight Queens Puzzle,” in five different languages each, all in one week, only deliberately to announce that it was a joke when the assignment was due, and that one solution to one problem in one language was sufficient. On a scale of course difficulty level from 0 to 100, with higher numbers denoting greater difficulty, with Perlis at 100, I would probably place Eisenstat at about 15, especially for his class in fall 1993 (he once mentioned in his systems programming class that one of his later relatively difficult assignments, his infamous “encode-decode” assignment, used to be his second assignment). However, among the professors under whom I took courses in college in computer “science” (I put “science” in quotes because computer “science” is not really a science at all, but a procedural epistemology), Eisenstat ranked among the toughest taskmasters.

Well, should only the most gifted be allowed to pursue their interests? This solution only works if all people have at least one area in which they are especially gifted (people with well-rounded but average-level abilities may not), if all work areas are equally profitable, and if all people are interested in what they are gifted at. However, this is not true.

Let’s consider to where this style of reasoning leads. Assume that there exists a society, Utopia, where only people with exceptional skills are allowed to work in their areas of special ability. I.e., only great programmers are allowed to program, only great translators are allowed to translate, only great painters are allowed to paint, and so on. All others are strongly discouraged from working. What happens?

Well, most artifacts become works of art. Mostly great programs are written, mostly great translations are translated, mostly great paintings are painted, and so forth. I say “mostly,” not “only,” because in practice, even great workers occasionally produce poor work. Even a genius has an occasional dog day.

So far, so good, it seems. What else? Well, eventually all schoolchildren are classified, while still young, into classes corresponding to their abilities. Their interests are simply ignored.

Since interests no longer matter, anything unrelated to skills is also strongly discouraged. Anime is outlawed. Chocolate is outlawed. Games, except for certain puzzle and mathematical games, are outlawed. Movies are outlawed. None of these are essential to increasing productivity directly, are they? The big companies decide that we don’t need them, so they lobby Congress to eliminate them. Congress wants the funds from the lobbyists, so laws are passed to outlaw them. The Second Prohibition begins.

Hey, the more productivity, the better, and the more focus on that productivity, the better, right? The big companies are still not satisfied with productivity. They need more productivity, more money. “Let’s make the people concentrate more on their work,” they say. Poetry is outlawed. Painting is outlawed. Music is outlawed. Unproductive entertainment in general is outlawed. After all, if it isn’t profitable, it isn’t important, right? Productivity and profit are all that matter, right?


WRONG. Something is missing here. What is missing? The value of personal interests. People do not usually become interested in something only as a result of being skilled/gifted at the subject. People usually become interested in something because that something is *fun*. Why? The reason is that they simply like it. I.e., they are interested in it. These interests occasionally lead to works of genius from certain people, but those results usually originate in some form of initial interest. Without initial interest, works of genius do not usually arise.

The point is that personal interests matter. Preferences matter. Likes and dislikes matter. Allowing a gifted person to produce gifted work is one thing; preventing less gifted people from even trying is quite another. While I do believe that gifted people should be encouraged to develop their skills, I do *not* believe that those who are less gifted should be discouraged. Some people develop skills late in life. Others come up with ways around problems. If one cannot program well in C++ in a software company, one might be able to program in Haskell, Scheme, or Smalltalk alone on a project uniquely suited to the particular programming language in an environment where most of the software components have already been designed by other programmers and one is paying one’s own salary from another source of income.

It is one thing to tell someone, “You are a great C++ programmer! You are encouraged to use your skills!” It is quite another thing to tell someone, “You really suck [excuse my French] at C++ programming! You definitely should not program in any language anywhere!” Excuse me? Any language anywhere? What if the person wants to work alone on a personal project using a language with built-in libraries uniquely suited to the language, and has a separate source of income? What if the person can’t write a program worth a dime in C++, but programs relatively decently in, say, Scheme, Haskell, or Smalltalk? I once met a first-order logic student who hated mathematics, but loved logic. I later met a different person who felt comfortable at programming in C, but just couldn’t program in C++. What if the person doesn’t feel comfortable in programming in C++, but is a genius at, say, Common Lisp, and eventually sells their business worth millions of dollars to the Yahoo! company?

(This actually happened once; see “The Old Joel on Software Forum – Yahoo Stores rewritten from Lisp to C++ and Perl” [curiously, this link is posted on Joel’s own site!]. According to the article “Exploring e-commerce for innovative products,” by Piotr Wozniak, the site sold for 45 million dollars.)

The idea that *the choice of the programming language matters* is not new. For example, Paul Graham deliberately chose Common Lisp for ViaWeb, the site he eventually sold to Yahoo! as “Yahoo Stores” for forty-five million dollars. In his essay “Beating the Averages,” he writes,

So you could say that using Lisp was an experiment. Our hypothesis was that if we wrote our software in Lisp, we’d be able to get features done faster than our competitors, and also to do things in our software that they couldn’t do. And because Lisp was so high-level, we wouldn’t need a big development team, so our costs would be lower. If this were so, we could offer a better product for less money, and still make a profit. We would end up getting all the users, and our competitors would get none, and eventually go out of business. That was what we hoped would happen, anyway.

What were the results of this experiment? Somewhat surprisingly, it worked. We eventually had many competitors, on the order of twenty to thirty of them, but none of their software could compete with ours. We had a wysiwyg online store builder that ran on the server and yet felt like a desktop application. Our competitors had cgi scripts. And we were always far ahead of them in features. Sometimes, in desperation, competitors would try to introduce features that we didn’t have. But with Lisp our development cycle was so fast that we could sometimes duplicate a new feature within a day or two of a competitor announcing it in a press release. By the time journalists covering the press release got round to calling us, we would have the new feature too.

It must have seemed to our competitors that we had some kind of secret weapon– that we were decoding their Enigma traffic or something. In fact we did have a secret weapon, but it was simpler than they realized. No one was leaking news of their features to us. We were just able to develop software faster than anyone thought possible.

Some might argue, “Well, Paul Graham was a genius, and what was important was that he just happened to be a genius, not that he chose such a language as Common Lisp. What is really important is the the programmer must be a star programmer, not that the language be similar to Lisp.”

However, the choice of the programming language can be a decisive factor in whether the person becomes interested in programming in the first place. In the excerpt “High School Computing: The Inside Story,” Natasha M. Chen writes,

In the four months it took me to complete my course in Scheme, I learned more about computer programming than I had in my two years of Pascal. In less than five minutes after I began reading the text, almost everything I learned more than three years previously in our aborted Logo course came back to me. Five minutes, not the two days it took to recover from just one summer away from Pascal. There were hardly any rules of syntax to remember. Furthermore, throughout the entire four months, I never touched a computer. The ease of learning and using Scheme gave me such confidence in the programs I wrote that I didn’t feel the need for the security of a compiler to check my work.

Let’s compute a little: It took Chen four months of studying Scheme (another dialect of Lisp) to learn more about computer programming than she had learned in two years of Pascal. Two years is twenty-four months, or six times four months, for six times the learning speed. So choosing Scheme over Pascal resulted in a six-fold learning speed increase.

Furthermore, the choice of Scheme over Pascal influenced her decision to return to learning programming. She writes,

After my sixth grade BASIC experience, I never wanted to take another computer course again. Of course, when you are eleven years old, G.P.A. and class rank don’t mean much to you. But by the time I was about to enter my junior year in high school, I started thinking about those things … and college … and the classes I needed to take. To avoid another BASIC nightmare, I decided to bypass Computer Programming I (BASIC) and go straight into Computer Programming II (Pascal). Pascal was different enough from BASIC to make me think that it had to be better. I found out that the improvement was far less than I had hoped. We jumped right into the syntax of Pascal: program (input, output), begin-end, etc. Even after two years of studying Pascal, I still can’t remember all the rules.”

She continues,

As a senior, I had a study hall period that I sometimes spent in my math classroom doing homework. It was on one of these days that I happened to overhear my math teachers talking about Scheme. I was already tearing my hair out in my Pascal class trying to learn something for the upcoming A.P. exam—in fact, all I was learning was the page number of the reference section in our textbook, which I frequently consulted to see whether type declarations or variable declarations came first or to re-check how to declare a record for a linked list. Enticed by what I heard, I willingly gave up my study hall to come in four days of every week to learn Scheme on my own for no credit at all, using `The Schemer’s Guide’ [1]. My reward was that I regained the enthusiasm and interest I thought I had lost six years earlier.

So Scheme enabled her to regain the “enthusiasm and interest” in programming that BASIC had almost caused her to lose six years earlier.

I myself had a similar experience, albeit with different programming languages. I first started out in programming approximately six years before matriculation, in N80-BASIC on an NEC PC-8001 mkII personal computer in circa 1983. In college, similarly to Chen, I also had the misfortune of learning Pascal in an introductory course intended for non-majors (I had not yet decided to major in computer “science”). One of the assignments required writing pointers in Pascal. That felt like doing gymnastics in a straitjacket. I had to spend so much time and effort focusing on syntax that I couldn’t concentrate on the algorithm.

Just to illustrate that different languages suit different programmers, I had a different experience than Graham with Common Lisp. My first course for majors in computer “science” in fall 1991 required programming in both Common Lisp and Scheme. The professor, Drew McDermott, actually gave us a handout entitled “Common Lisp for Schemers” outlining differences between the two languages. Unlike Graham, I felt uncomfortable in Common Lisp because using that language required looking up almost every function in a library reference book that was over a thousand pages long. I read slowly and have poor memory, so using that reference book so frequently forced me to worry more about syntax again than about the algorithm. However, Scheme was different: The entire R5RS specification fit in 50 pages, and there was no hefty library reference book. Programming in Scheme was fun. About three years later, when I audited a later version of the course under a different professor as a refresher, a TA actually commented that I wrote a better program for one assignment than he himself had.

The choice of the programming language does matter. In fact, it can make a crucial difference, not just in programming efficiency, but in basic motivation as well. People tend to do better at what they enjoy doing.

To sum: Yes, Professor Stanley Eisenstat, I do agree that there is a vast, insurmountable difference between good and great programmers. I also believe that there is a vast, insurmountable difference between using a programming language in which one feels comfortable and one in which one doesn’t, that professors have no business in telling students what they should be interested in, and that there is no correlation between interest level and ability level. Hey, Paul Gauguin couldn’t paint, but he still became famous as a great painter. So it is with great artists.

  1. That’s a true statement, this not always possible that people have interest at one in which he is talented, people might be interested in some other stuff while he is brilliant in some other one.


  2. lee permalink

    You are ignorant when it comes to painting. Most professional painters ( as opposed to hobbyists) can definitely make a living if they work hard. Also, some of the wealthiest people in the world are painters, although you have probably never heard of them.

    By the way, some painters have kept on painting and selling their work into their nineties. Some, such as Grandma Moses, didn’t even start until they were old.

    On the other hand, I personally know several “starving programmers” who can’t get a job even though they are first-rate programmers.

    I am not a programmer but I have known some. My impression of them is that they are a fairly strange and unhappy lot and now many of them are unemployed due to outsourcing.

    I’m happy to be an artist and not a programmer and even if I’m not rich I do make a living doing what I like to do.

    • > You are ignorant when it comes to painting. Most professional painters
      > ( as opposed to hobbyists) can definitely make a living if they work
      > hard. Also, some of the wealthiest people in the world are painters,
      > although you have probably never heard of them.

      The “professional vs. hobbyist” distinction is one that I have heard before for poets as well; do you happen to know if the same can be said for poets; in particular, English haiku poets?

      > On the other hand, I personally know several “starving programmers”
      > who can’t get a job even though they are first-rate programmers.
      > I am not a programmer but I have known some. My impression of
      > them is that they are a fairly strange and unhappy lot and now many
      > of them are unemployed due to outsourcing.

      Regarding the unemployment situation, I agree. The problem is that the evolution of the Internet has allowed the majority of programming opportunities to be outsourced to such countries as India, where the cost of living is reportedly much lower but the quality of the programming is reputedly relatively high.

      Regarding the unhappiness, however, I am not so sure. I think that this issue depends on the individual. There was one computer “science” professor who once walked into a class he was teaching in Data Structures and Programming Techniques back in college in 1991, and said, “It’s too nice a day for computer science.” Apparently, he didn’t like his own subject. A different professor for algorithms at the same college later quit a research job to become a comedy writer. The son of a professor in computer “science” at the same department whom I used to know chose not to become a professor, but later became a professional dancer who wrote his own choreography.

      However, there are also those who genuinely enjoy the subject. Alan Perlis once said, “I think it’s extraordinarily important that we keep the fun in computer science.” He apparently thought that the subject was fun.

      Programmers have been said to be those people who enjoy starting at code for ten hours per day. I think that this assessment is quite true. Personally, I get tired after about two hours once a week. I tend to like to write short programs in short, intense batches, when I sit down and follow an interesting textbook, such as Structure and Interpretation of Computer Programs or The Haskell School of Expression, or somehow come up with my own idea for an innovative program. Occasionally, I come across a book that is genuinely fun to read, such as The Little Schemer.

      I wish that there were more storybooks about programming, or even role-playing games in which the protagonist advanced through writing better programs to solve puzzles, rather than defeating different kinds of monsters with different skills and magic. It should be possible to create a multimedia role-playing game involving programming, in which the protagonist would come across a problem that required writing a computer program. The game would have a mini-interpreter, which would parse the code and run it to see if the output matched when given a series of inputs for non-referentially-transparent programming languages such as Scheme, and perhaps test the correctness of the code for a referentially transparent programming language such as Haskell.

      A good reference for designing such a game would be Project Euler. For example, consider the following programming problem posted on that site:

      Add all the natural numbers below one thousand that are multiples of 3 or 5.

      By itself, this is just an (admittedly bland) mathematical exercise. However, it can be spiced up by giving it a story in a programming-based role-playing game, in the following manner:

      You are Merlin’s apprentice. Merlin has asked you to enter the Mist jungle and retrieve a collection of Land Iguana eggs. Using a Scheme spell, you can convert a collection of local rocks to containers holding either 3 or 5 items each, but you can only cast the spell once without returning, and need to specify the number of containers. The spell is unstable and evaporates unless all the containers are used before exiting the forest. You wish to surprise Merlin with a large batch of eggs. There are 999 eggs in front of you. Write a Scheme spell to minimize the number of eggs left.

      Given appropriate forest sound effects, beautiful scenery, and a dramatic spell effect upon casting, lo and behold! We have a role-playing game in which even non-mathematicians can enjoy programming in Scheme! The game would be designed as a series of quests with a connecting and evolving overall story. It could be designed so that programmers who use advanced constructs such as continuations and hygienic macros would travel to more exotic regions and times than those who don’t, and the story could use some kind of time travel. If I were the designer, I would model the story on something similar to the online game “Final Fantasy XI Online,” which has a story that gradually changes and reveals itself depending on the player, but would use Scheme spells instead of regular magic spells. It might even have different programming languages for different types of spells, so that black magic attack spells would be written in Scheme, white magic healing spells would be written in Haskell, and blue magic spells learned from monsters would be written in Squeak.

      > I’m happy to be an artist and not a programmer and even if I’m not rich I
      > do make a living doing what I like to do.

      Good to hear! When I was in college, I took a number of courses in English poetry and some in Japanese poetry in translation. Whenever I am either very happy or very unhappy, I tend to express myself in poetry. When I was in college, my English writing professor liked my English haiku enough to walk me personally to the college library microfiche section to recommend that I apply to graduate school.

      Ever since graduation, I have had a dilemma about applying to graduate school: I majored in computer “science” (I’m putting double-quotes around the term “science” because the subject is not a true science, but a procedural epistemology), but have never had much of a flair for either most areas of mathematics or for programming. However, I have always enjoyed writing, but did not major in a liberal arts subject. I was only one course short of a major in Japanese Language and Literature (only missing the Senior Essay), but chose the wrong topic for my senior essay, which ended up requiring more knowledge of linguistics than expected.

      As a result, whenever a friend recommends that I apply to graduate school, I do not know what subject in which to apply. I have suggested English poetry, but have been told that it is difficult to earn a living with that subject. It would be fun to study the style of Dante Alighieri in La Divina Commedia and La Vita Nuova (I model some of my English poetry on the style of those works) in my epic poetry.

      I used to own a Handspring Visor Deluxe Ice PDA, on which I wrote many poems while strolling the streets of Manhattan when feeling deeply depressed. Unfortunately, one day the PDA was stolen at an Internet cafe, and being both poor and partial to Palm OS, I have never been able to replace it. I enjoy writing on a touch-pen keyboard while walking, and strongly dislike writing by hand.

      What would be really nice would be a way to combine writing poetry with designing a story for a three-dimensional role-playing game that did not require knowledge of linear algebra to write and in which regular spells were replaced by programming spells, and preferably writing the entire project within another role-playing game. That way, I wouldn’t get bored while writing the project.

  3. Reblogged this on justanotherhumanoid and commented:
    You must read this if you have read Joel’s article on the same topic. We averages deserve a living too.

  4. I am just better than a mediocre programmer [ to keep my self-esteem from hitting rock bottom ], but I am somehow interested in it. Your article serves an inspiration to me. Thank you.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: