Code Monkeyism

Programming is hard by Stephan Schmidt

Paul Graham!

Paul Graham is a funny guy. From one point in history, where he wrote an unmaintainable (they had to drop it) and unsuccessfull (Amazon has beaten them) piece of software which he sold to someone clueless (Yahoo will go down in flames) with too much money (they again buy companies without clue), he extrapolates (from this random event) his view to the whole craft of software development. Funny to read, but pointless. If you read Paul Graham, Nostradamus might be a good reading for you too.

Especially when reading his ramblings about painters, one gets the impression that it depends on the tool an artist uses whether the art he creates is good or bad. Oil is good, crayons are bad. Somehow then he applies this to software development. Funny! I’ve seen good code in Basic, Ruby, Lisp, Machine Code, Java, C and a dozen other languages. And I’ve seen bad code in Basic, Ruby, Lisp, Machine Code, Java C and a dozen other languages. And I’ve seen good and bad developers writing code in Basic, Ruby, Lisp, Machine Code, Java, C and a dozen other languages. In reality good code usually depends on the production enviroment and the skills of the developer. Not on the tools (Which does not mean you should not choose adequate tools).

A worthy goal for life would be to comment every blog post about Paul Graham with a link to Fooled by Randomness (No there is no partner link because I want to make money from your quest for knowledge) and a link to Hacknots faery tales.

About the author: Stephan Schmidt is currently a team manager at ImmobilienScout24 in Berlin. Stephan has been working as a head of development and CTO. He has used a lot of different technologies in the last 20 years including Java, Rails and Python. Stephans main field of interest is maintainablity and productivity in software development. Want to know more? All views are only his own.

If you did like this article but you don't want to subscribe to new articles with your reader, you can follow me on Twitter or subscribe to new posts with your email:

Comments

It’s hardly Paul’s fault that his software got rewritten and then obsoleted. By that point he wasn’t involved, as far as I know.

He chose a language, wrote some software, it worked well, it got bought, it got rewritten in someone else’s choice of language. I can’t imagine how that is a failure on his part.

stephan

“It’s hardly Paul’s fault that his software got rewritten and then obsoleted. By that point he wasn’t involved, as far as I know.”

I have to slightly differ. If someone writes code which others can’t maintain because others don’t know the tools (which are way out of mainstream), or because of quality problems or because the code is not understandable (again because of quality or tools or languages), he has chosen the wrong enviroment to write code. Creating unmaintainable stuff and then telling the others it’s their problem might boost someones ego but is rather not ethical (even if it is because of their stupidity).

Perhaps they shouldn’t have bought it, that’s another question. Perhaps he should have told them that they might not be able to maintain it (he might have, I don’t know).

But either way, IMHO Paul is fooled by randomness.

That’s faulty logic. If I write a program in Java, and sell it to a company who use .NET, and they then rewrite it, it wasn’t a mistake of mine to write it in Java.

Lisp was actually his advantage (or so he asserts) at the time - in times before Python, Ruby, etc. It’s not a mistake to play to your advantages. As you say, it may have been a mistake to buy it instead of just being one of Paul’s customers.

stephan

If I use a programming language, lets call it STEPs, which very few people use and only 5 people on earth can read, then well yes, I might feel I need to warn the people who want to buy from me, that they might have problems to locate the 5 people on earth that can read STEPs. But I can see that this is subjective.

For the advantage, every blog post about the Paul-Graham-Lisp-Advantage should end with a disclaimer and a link to Hacknots Faery Tales.

Does writing about Paul Graham in this way eliminate oneself from Y? :-)

I agree with Stephan, Paul Graham is making some serious sampling errors.

But I’m not sure that it was a mistake to write Viaweb in Lisp. In the parallel universe where he chose a good production language, he might not have been able to leverage his skills (and Morris’s), and therefore may have lost the race. It’s worse-is-better, in the twisted sense where Lisp is “worse”!

If Paul Graham simply said, “Using Lisp by a few Lisp hackers is the best way to get a website to the point where you can edge out your competition and sell out to a big company” I think he’d be right. But as you say, that’s not his conclusion.

stephan

@Lawrence: I guess you have a point. With Lisp it was possible for PG to edge out his competition so it may have bee the best he could do. But the the draws the wrong conclusions.

Stephan, aren’t you making the same mistake you’re accusing Paul Graham of making? Do you think Paul’s evaluation of Lisp is based solely on the fact that he made a lot of money selling a product that was written in Lisp? The fact that he made a ton of money in that venture may certainly depend on many factors outside of his control, but if you’ve read much of his writings about Lisp, I think you’d find much evidence for Lisp being a good choice for many situations besides a one-time business deal that went exceptionally well.

Regarding your statement about “good code usually depends on the production environment and the skills of the developer”, Paul made a very relevant comment about the latter which you may find interesting. It’s at the bottom of my blog post below:

http://lojic.com/blog/2008/01/17/2008-programming-language-plan/

Also, do you have evidence that Yahoo found the code unmaintainable? Surely you realize there are many possible reasons why a corporation would do what they did, and only some of them are technical.

stephan

Brian, “but if you’ve read much of his writings about Lisp, I think you’d find much evidence for Lisp being a good choice for many situations besides a one-time business deal that went exceptionally well.”

Are there any indications of this? I know, just because I didn’t see a black swan doesn’t mean there is none. But there might be really no aliens.

I can’t see any evidence, perhaps you can point me to some,

http://www.hacknot.info/hacknot/action/showEntry?eid=49

Stephan, if you can’t see any evidence that “Lisp may be a good programming language for many situations”, then, in my opinion, it’s either because you’re not looking, or don’t want to see. The fact that you may not like it personally is irrelevant to the question of its effectiveness.

Regarding the writings of Paul about Lisp I was referring to that show evidence of the merits of Lisp, I’d check out:

“ANSI Common Lisp” and “On Lisp”

I believe the latter is out of print, but you can find online versions. I personally also like his Lisp related essays, but you may find them too fairy taleish :)

You can at least thank Paul for some blog traffic, eh ;)

I just read the hacknot link you provided. What a load of BS!

Are you interested in determining what tools would increase the productivity of a random population of individuals, or yourself? If you give credence to that article, then I can understand your views a little better.

“When a researcher allows their own biases to color their interpretation of experimental results.” Stephan, don’t let your personal bias color your interpretation - much better to let someone else run an objective experiment and tell you which tools are best for you ;)

stephan

Objective? PG?

“[...] individuals, or yourself?”

Actually individuals. Because from my point of view, software development is a team effort. Maintanence over 5 to 10 years surely is. So yes, I’m interested those who develop together with me and how will maintain the code after me.

But if your a lone-gun-coder, this might explain your views a little better.

“Regarding the writings of Paul about Lisp I was referring to that show evidence of the merits of Lisp, I’d check out: “ANSI Common Lisp” and “On Lisp”

Every Lisp discussion ends in pointless examples, see the last comments on

https://www.blogger.com/comment.g?blogID=28247382&postID=4500692205904440622

Views and opinions, nothing more.

After 25 years of programming, with Z80, 6502, 68k, Basic, E, C, Pascal, Oberon, Modula, C , Perl, Python, Logo, Prolog, Lisp, Scheme, Ruby, Java and lots of other languages, I’d like to have facts. In the end only experiments and examples will convince me in the future of functional languages.

And examples are more about: How to write and model an accounting package in Lisp, not about writing a square root function in a very abstract way.

stephan

“You can at least thank Paul for some blog traffic, eh ;)”

Well I don’t to adsense anymore so I only care about interested readers … not traffic :-)

Stephan, I think we’re probably both interested in increasing our effectiveness as programmers, and I agree that good programmers with inferior tools will probably outperform bad programmers with superior tools, but I think I feel the importance of programming language choice is more important than you do. I guess we can agree to disagree on that point.

BTW - when I said, “Stephan, don’t let your personal bias color your interpretation - much better to let someone else run an objective experiment and tell you which tools are best for you ;)”, I had a winking smiley to indicate sarcasm. My point was not that PG was objective, but that the article seemed to be saying, in effect, ignore your personal observations and run objective, scientific experiments, but what may work well for a random population of programmers may not be the best for you, or your team, or me in my opinion.

Also, I feel you changed the meaning of my statement quite a bit when you changed “random population of individuals” to “… individuals”, and then referred to your team members as the individuals. I’m not implying you should ignore the team, but that the personal observations/experiences of you and/or the team are particularly relevant - more so than an objective experiment with a “random population of individuals”.

In particular, I think the determination of the “best programming language” depends quite a bit on the capabilities of the programmers (and problems to be solved, etc.) i.e. the be best language for a large group of inexperienced programmers, is probably not the same as what would be best for a smaller team of very experienced programmers - that’s part of the difficulty with obtaining objective, relevant results from an experiment.

On the other hand, I’d like to keep an open mind, so if you are aware of objective experiments regarding programming language effectiveness, I’d be sincerely interested in hearing about them. I haven’t found many that I can put confidence in, but that’s not to say they don’t exist.

Tabbot

>> “I’ve seen good code in Basic, Ruby, Lisp, Machine Code, Java, C and a dozen other languages. And I’ve seen bad code in Basic, Ruby, Lisp, Machine Code, Java C and a dozen other languages. And I’ve seen good and bad developers writing code in Basic, Ruby, Lisp, Machine Code, Java, C and a dozen other languages.”

really? wow! you are so ….
I challenge you to show at least 1 example of good and bad code in each of ‘dozen’ languages.

stephan

@Tabbot: Well I can’t because those I used those languages over the course of 25 years, and truth told, I can’t remember what I did program 25 years ago. But perhaps you can tell me what you did program 25 years ago.

If you’re really interested, and this wasn’t just an ad hominem attack, just check with some open source projects. For a discussion on good code see “Beautiful code”, for bad code see “Refactoring” and “Working Effectively with Legacy Code.”

Leave a Reply