
Design - peterkchen
http://paulgraham.com/design.html#hn
======
ErrantX
This is a sadly shallow article; where I think it fails is in recognising (and
responding to) the core of the criticism levelled at Arc. Instead there is
some pithy comparison to 70s cars.

The 911 is timeless for a number of reasons: Porsche have spent years keeping
the brand and style consistent. It was expensive and exclusive, which made it
desirable.

But that care was _very hard to drive_. If you don't know what you're doing
then you will not get anything like the true performance it can give.

It was also very expensive, so only those with the adequate resources could
afford one. These were not always people who could get the true performance
out of the car.

The Cad, on the other hand, is a fantastic car in its own right. Widely
available, easy to get its maximum performance, perfect for almost any job.
OK, so it doesn't look as sexy, and for seriously hardcore tasks it doesn't
perform as well as the Porsche. But if I had to pick a car that was most
likely to be reliable _today_ then the Cad is an obvious choice.

Even more damning; Caddillac, like Porsche and the 911, were still making that
brand of car up till ~2006. You wouldn't recognise it though because the shape
and performance has evolved to meet modern needs.

It's sad to see his list of languages; whilst I would agree C is a
ridiculously good language, smalltalk and lisp? They've always struck me as
pretty specialist. Conversely a lot of production code still uses Cobol and
Pascal. And what about Fortran? Or Delphi (wasn't Skype written in Delphi
originally?).

I know we're hackers, and so it's hip to drive Prosche's. But it is sometimes
sad to see how we forget about a massive section of our industry who also do
cool things, but tend not to have blogs...

~~~
rmrfrmrf
>Porsche have spent years keeping the brand and style consistent. It was
expensive and exclusive, which made it desirable.

I'm not a car person at all, and immediately I was able to see that the
Porsche is (more) timeless than the Cadillac.

~~~
skrebbel
I wasn't at all. I had to read the next paragraphs to figure out that the
Porsche was intended to be the "better design".

I suspect that this might be due to me being European though. Classical
American car designs, like that Cadillac, are very rare here and (possibly as
a result of that,) considered quite classy. For one, I'd rather have the
Cadillac parked on my driveway than the Porsche.

~~~
onemorepassword
Please don't make us "Europeans" look bad. The part of Europe I come from
those kind of American cars are only considered "classy" by white thrash. Or
people own them "ironically".

Then again, it's also been a few decades since owning a Porsche was a sign of
good taste...

~~~
mackwic
France here, and the Porsche seems to be a sort of toy, something like a
Renault twingo[1], and don't ask me which one I prefer. :)

On the other side, the Cadillac has nice berline curve and make me think of
our Citroen C6[2].

So, as we can see, design cars are culture local. Can we say the same thing
for UI design ? Maybe the ideal design for an american differs that the ideal
design for an european or an asiatic person ?

I have always thought that only the job, the grade, and the period-to-
computers-exposure change the way users interact with their machines.
Obviously the problem is bigger.

I am convinced that this essay touch right in the hearth something fundamental
about cultural differences and their influences in design choices. In the same
way that the GP languages for real people are not Lisp and Smalltalk but
Java/C#, Python and Ruby. If Lisp is a widely used language, so are Ocaml and
Erlang, but the let's face it: they're not.

So in conclusion, I think I will definitely not design the same UI for an US
pg than for an EU pg, it need being study in details but there _is_
differences in the mind and in the tastes, so that one have to adapt to the UI
of the others.

Any idea/link about that ?

[1]
[http://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Ren...](http://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Renault_Twingo_front_20080709.jpg/280px-
Renault_Twingo_front_20080709.jpg)

[2]
[http://images.caradisiac.com/logos/6/2/4/9/136249/S5-Citroen...](http://images.caradisiac.com/logos/6/2/4/9/136249/S5-Citroen-C6-un-
haut-de-gamme-chevronne-42105.jpg)

------
roryokane
I very much disagree with this: “Look what happened with the 911. It's so
obviously superior to the Cadillac that a child could tell it's better.”

I performed an experiment when I read this article, comparing the two cars
based on just the pictures. I had read the paragraph after the pictures, about
telling good design from bad design, but not the paragraph before, saying that
what each model of car was designed for. And I tried to compare the design of
the cars based on just the pictures, seriously. At first, I thought that the
911 might be better because it is more aerodynamic, a criterion that it is
objectively better at. But then I noticed that the Cadillac has more
headlights in the front, which possibly might provide better light. And I saw
that the Cadillac seemed to be a convertible, which is more a matter of taste
and your goals for a car. I concluded that both cars seemed pretty decent in
their own way. Thus, I was surprised to read the claim that the 911 has
obviously superior design to the Cadillac.

Perhaps Paul Graharm is right about language design, but this failure of his
claim to withstand an experiment lessens my confidence that he has examined
the evidence _before_ making his conclusion. Though as I am, in my opinion, a
“good programmer”, I certainly hope he that is right, and that languages aimed
at good programmers are the ones whose ideas will become popular in time.

~~~
ericd
I think he's referring more to the visual aesthetic. The 911 is literally
timeless, because the broad strokes of the shape have been nearly unchanged in
the past 40 years, and it's still one of the most beautiful and lusted after
cars on the road. The Cadillac looks ugly.

~~~
tolmasky
I have always hated the design of the Porsche. As a kid I was so surprised to
learn that this was the famous "Porsche" I had heard so much about. I am not a
car guy, and thus perhaps my opinion doesn't matter, but I can at least
understand the visual appeal of a Lamborghini or a BMW. Or perhaps put a
better way, I can at least see what they're going for. With a Porsche, I'm
just kind of reminded of a smart car. Its so tiny and stumpy that it looks
ridiculous and straight out of the 80s to me. I actually start considering the
fact that it only has two seats (as opposed to most sports cars which I
usually forget when just looking at it). It neither looks fast nor classy, I
just don't get it. Also, to me it doesn't look timeless, it just looks old.
When I see a new one I imagine a scene from an 80s wallstreet movie or
something.

~~~
rafski
Same here. 911 to me is an acquired taste. I can appreciate their design now,
especially the recent iterations but I remember I said it looked like a
squashed frog with bulgy eyes when I first saw one as a kid.

~~~
nijk
"Mere exposure" effect. "Social proof". Anything long-loved and popular
becomes attractive.

~~~
larrys
Also happens with people's faces. A person who at first might appear ugly I've
found gets better looking the more you see them. They don't become good
looking or anything but appear less ugly.

~~~
ericd
And sometimes you fall in love instantly. Happened for me with the 911 and the
Countach, without me knowing that they were expensive.

------
tikhonj
Heh, the car comparison really does resonate with me: I like the Porsche _far_
more because it is a _simple_ design, aesthetically. Sure, the actual
implementation--the weird engine position and all the mechanisms needed to
compensate for it--is relatively complicated. But this does not compromise the
minimalist aesthetic. Quite a nice feeling, especially for a car from that
era. The great performance is just a boost.

The Cadillac, on the other hand, is probably simpler mechanically. It's a much
more conservative, reasonable car: after all, who would be mad enough to put
an engine at the _rear_ of their sports car? But, wow, is the design _busy_.
Little fiddly bits, fins, wheel-covers, too much chrome...

Perhaps the best way to think about it is that the Porsche is a car with a
small surface area (metaphorically) and a large depth. The Cadillac is the
opposite: larger surface are but less depth. I much prefer the former.

And this preference carries over into programming languages. I always like a
language with nice aesthetics--simple semantics--even if it's harder to
implement efficiently. I want a language which is simultaneously simpler and
more flexible than the alternatives. And good performance certainly wouldn't
hurt!

At a high level, these qualities mirror preferring the Porsche, which is why I
like this metaphor. Sure, it's not perfect--but it isn't supposed to be. I
don't even think of it as an argument in favor of one aesthetic over another;
instead, I think it's just a great way to describe why I like what I like.

~~~
weinzierl

        > after all, who would be mad enough to put an 
        > engine at the rear of their sports car?
    

The rear-end is where all racing cars have their engine. Sports cars are
modeled after racing cars. The rear weight bias allows for increased rear
traction and therefore better acceleration.

Off course a rear-engine is difficult to drive, so there are sports car with a
front-engine, but it's far from optimal from a performance stand point.

The conflict between performance and appeal to the masses: that is in my
opinion what Paul's essay is about.

~~~
tikhonj
Racing cars--and many sports cars--are _mid_ engined. That is, the engine is
behind the driver but _not_ behind the rear wheels. The 911, on the other
hand, actually has its engine all the way in the back, partially _behind_ the
rear axle. It's a very different layout and rather uncommon.

------
diego
If we're talking about "designed to appeal to the average driver" then why
(cherry) pick the Cadillac? I'd choose the Volkswagen Beetle. It was simply
known as Volkswagen at first, which literally means "people's car." I cannot
think of a more "timeless" car than the VW bug.

<https://en.wikipedia.org/wiki/Volkswagen_Beetle>

[https://www.google.com/search?q=vw+beetle&safe=off&s...](https://www.google.com/search?q=vw+beetle&safe=off&source=lnms&tbm=isch&sa=X&ei=2xSGUY7eN4H9iwK80oCAAg&ved=0CAoQ_AUoAQ&biw=1440&bih=721)

~~~
geon
That is a bit funny, since the beetle was designed by Ferdinand Porsche
himself.

------
Swizec
> "We want thinking in Arc to feel like driving a 911."

A car notorious to be nigh impossible to drive until they started adding so
much electronics that it practically drives itself and the driver is only sort
of there to enjoy the ride he is being given.

~~~
chris_wot
So in other words, the 911 was amazing design. I dunno about you, but to me a
car that practically drives itself sounds _awesome_.

~~~
rdl
The 911s pre-1989 were really hard to drive. They didn't start adding
electronics into them until a lot of people had died in 911 accidents.

I don't actually think the 911 is a good design at all. There's good
_engineering_ to make a bad design work, but it's pretty much inferior to a
genuinely well designed car which doesn't require quality engineering.

The AK-47 is a better assault rifle than the AR-15, in that an illiterate dude
with a stamping machine can turn out a reliable AK-47 which can be operated by
children, whereas the AR-15 requires pretty high tech materials to work well
(the right lubricants, the right barrel linings, etc.), and while it's easy to
shoot, does require some maintenance which illiterate children aren't going to
give it.

Now, the older MX-5 Miata, that's a good design. Simple, cheap, drives well.

~~~
nijk
Whoa, so the Porsche 911 (very appropriate name in the USA!) is _Windows_.

------
readme
In this article, PG makes the claim that "Even a child would think the Porsche
911 is a better design than the cadillac"

Am I the only one who looks at these cars, and sees two quality cars, both
with different design goals? I've driven a TON of cars, too.

Use the right tool for the job.

~~~
rafski
As a child I said the 911 looked ugly, like a squashed frog with bulged eyes.
For years I didn't understand the hype that surrounded it (I always favoured
the 928). I do like them now but it's a result of decades of societal
conditioning...

------
duopixel
A design becomes "timeless" when the problem is solves spans several
generations. The need for paperclips hasn't declined, and this is because of
it's simplicity and performance (timeless needs).

I do think, however, that the car metaphor is flawed: technology is changing
at such an amazing pace that within a couple of decades this might read this
as discussion about what's the best horse-drawn carriage.

The craft of programming is particularly young, I'm not sure that coding of
the future will look anything like what's done now. It has certainly changed a
lot in the past 40 years. In other words: I'm not sure we will be driving
cards in the future.

~~~
seanmcdirmid
Let's be honest though, when was the last time any if us saw or actually used
a paper clip? I know they still exist and are used, but they never make it to
my desk.

Programming also has changed very little in the last 20 years. Driving hasn't
changed much since at least I was born (~40 years)

------
bobm_kite9
Maybe it's the images you chose, or a sense of nostalgia, or retro kitsch, but
to me both those cars look completely awesome now.

On the other hand from a maintenance point of view... probably not so much

~~~
lmm
Maybe I'm just being contrarian, but the Cadillac looks nicer to me; the 911
is too curved, making it look like a Mini or a Beetle.

~~~
Nav_Panel
I agree.

>[The 911 is] so obviously superior to the Cadillac that a child could tell
it's better.

My first thought was that the Cadillac looked better even though the internals
of the 911 were certainly higher quality. Does that mean I have worse design
sense than a child? :(

>The Cadillac was carefully designed to appeal to the average driver. The 911
was designed for performance. Which one is better design?

It all depends on how you evaluate quality: there are so many ways to
determine the "best" that questions like this are almost meaningless.

Regardless of the car metaphor, I think PG's point makes a lot of sense.

~~~
danieldk
_Regardless of the car metaphor, I think PG's point makes a lot of sense._

Does it?

From the article: _C, Smalltalk, Lisp. The languages that were consciously
designed for "average" programmers (Cobol, Pascal, Ada) have tended to be
evolutionary dead ends._

COBOL and Pascal (via Delphi) are probably used more than Smalltalk and Lisp
in the real world. Also, Java and C#, designed for the 'average' programmer,
are immensely popular outside our little bubble. Java has been around for
twenty years and will probably be for at least two more decades.

I like tinkering with new and 'revolutionary' languages - I wrote a fair share
of Prolog and Haskell, but I have come to the realisation that that I like to
solve interesting problems (mostly in NLP and machine learning) far more. And
when you focus on solving an interesting problem it can be good that the
language and ecosystem are boring and predictable (Java, C, C++), so that you
can focus at the problem at hand. For example, in Java you can easily add a
library to a project via Maven and its usage will often be completely
predictable, you don't have to deal with the fact that the library writer was
in an existential typing, GADT, or arrows phase and fight with its API.

BTW. I still love Prolog and Haskell ;).

~~~
tikhonj
A false dichotomy. Somehow, these always crop up when discussing languages.
Sure, in Java you don't have to deal with GADTs. But you _do_ have to deal
with the fact that people think functions are dark magic and expect you to
extend an abstract class instead. (Yes, Swing, I'm looking at you!)

I've found that the advantages of using a nice high-level language like
Haskell _far_ outweigh issues with build systems and libraries and the usual
boring stuff Java _et al_ are supposed to excel at. This for very interesting
problems--most recently, program synthesis using MCMC. (Following the
"Stochastic Superoptimization" paper, but I honestly think that name is a bit
silly :P.)

Besides, have you ever tried to use the equivalent of Parsec or QuickCheck in
Java? Even boring, practical things like that are better in Haskell!

~~~
seanmcdirmid
Every time someone figures out how to solve a small programming problem
elegantly in Haskell, it is interesting enough for a 10 page ICFP paper with a
10 page appendix.

Sure, Java is inelegant and dirty, but you don't have to perform the thinking
needed to write a dissertation to use it.

~~~
tikhonj
Untrue for the things Java makes easy. After all, in the worst case, you can
just drop into Haskell's imperative subset.

Besides, it's mostly small programming problems like _practical_ STM,
deterministic parallelism, easy randomized testing or DSLs for describing
derivatives (alliterative). These are things not even _dreamed_ of in Java--
the only reason they're small is because Haskell _makes_ them small.

However, all this is not important. Sure, coming up with abstractions requires
research and produces papers. But _using_ the abstractions doesn't!

OOP and Java and the JVM are all based on a ton of CS research themselves, but
clearly you don't think that makes them impenetrable. The same applies to
Haskell--you don't have to create your own abstractions from scratch; instead,
just use the brilliant ones people have created for you.

~~~
seanmcdirmid
You still have to know a lot to use those abstractions...like category theory
(monads and arrows). You have to at least be able to read the paper even if
you aren't capable of writing it.

There is also a kind of compulsion to design elegant abstractions when using
Haskell, to think about and understand problems really well before you write a
solution. This is not just about the kind of people who are attracted to using
Haskell, but the language itself promotes this compulsion. Sure, you can drop
into Haskell's imperative subset, but it is frowned on and discouraged.

Java as a language gives you very little, and there is not much pressure to
obsess over the design of abstractions. This is both good and bad: good in
that you feel less guilt about writing dirty code fairly quickly and with less
understanding (to be acquired more gradually via trial and error), and bad in
that this code will probably incur more technical debt. Sometimes _worse is
better_ [1], ironically (or maybe not) a concept that comes from Gabriel, who
is a cornerstone of the common lisp community.

[1] <http://www.dreamsongs.com/WorseIsBetter.html>

~~~
tel
It's frowned upon because the imperative subsets tend to code that's less
general and harder to reason about. These critiques falls identically on Java,
though nobody misses it there because nobody practices the generality and
reasonability available in a very simple typed lambda calculus there.

It's remarkable how much more you have to keep alive in your mind to program
in Java (or even Clojure) over Haskell. The reason things are more complex is
because you're freed from having to think hard about state and execution
methodology except at bottlenecks of design and performance.

------
david_shaw
In my opinion, the "best" programming language is the best tool for the job at
hand.

Maybe you're writing high-performance backend software, in which speed is
everything. Sure, a functional or, hell, low-level language like assembly is
the "right" choice. In this case, it is the 'better' language.

Or, maybe, you're trying to write an easy-to-maintain script to manage log
files on your server. Who cares if it's costing you some CPU cycles to
interpret? Run Python or Ruby, or, hell, just write a shell script. That would
be the 'better' language.

I wholeheartedly agree with what I believe to be pg's intent in this writeup:
that good design should be timeless. I don't agree, however, that good design,
especially for a programming language, always has to be skill- or performance-
oriented.

Quick edit for clarity: Although the example I used for backend software _did_
equate "performance" to "speed," it's important to note that pg addressed this
by saying:

 _> Performance doesn't mean speed; that's taking the metaphor too literally.
Speed counts, but a programming language is first of all a tool for thinking
in._

My point is that clear thinking can be equally applied to easy-to-read code
working at a high level as it can be to any functional language designed to
induce algorithmic thought.

~~~
asperous
This is so true, but it's more than just cpu speed vs programmer speed. There
are philosophies that are built in to the language and you can see them in
decisions made about the language, the kinds of patterns baked in, the
libraries and the greater community.

Say you need high reliability. Erlang has fault tolerance model & hot code
reloading, it was built for telephone systems. Say you need tons of
statistical features: R. Infinite Recursion: Stackless Python. Mixins Galore:
_why's potion. Run a bunch of commands with little/no logic: Tcl. html
generation: php. Manipulate a flash canvas: Actionscript. Manipulate html dom:
javascript.

Be honest, your language isn't going to stick around forever. I say make a
language for a purpose with a specific problem space in mind, read papers and
implement surrounding philosophies that nail down that problem well. Then it
will become popular and overused to the point where it's used for things it
wasn't meant for.

------
brudgers
I know which car I would have chosen to live out of on the road as a salesman
in 1973. In '76 there were undoubtedly significantly more three year old
Caddilacs with 100,000 miles than Porsches.

The Caddillac was designed for high uptime during a three year depreciation
cycle. It was designed to handle rutted industrial parking lots. It was
designed to handle potholed urban streets.

Four adults could drive to Ohmaha with their luggage - and if the water pump
went, a mechanic in Council Bluffs could fix it without the Shim of the Black
Forest Gnomes.

In other words, the our first reaction to our thought that a design is bad
should be to examine our understanding of design intent. There is a
significant portion of the meanings of "designed to be driven" over which the
Porsche is poorly designed.

------
kayoone
Mh, both cars really had totally different philosophies and characteristics,
appealed to people with different priorities and tastes and were not in the
same price league. So just saying that the Porsche is obviously better
designed doesnt hold much value.

Asethetically ? Probably, but thats more a matter of taste, just like with
programming languages.

------
capex
PG has a date on each of his essays, this one doesn't have one. Neither can I
find it in his list of essays. What is it?

------
skore
Very good points, but the article a little bit and the comments here in
particular remind me of one of my favorite tweets:

> Let's argue about whether Haskell or Clojure is better while somebody else
> ships products using PHP and duct tape.

<https://twitter.com/agentdero/status/174965036928868352>

~~~
tikhonj
That's a blatantly false dichotomy.

Often the people doing the arguing are _also_ the most productive: witness Don
Stewart. Quantitative finance is more demanding than some PHP-laden startup,
and yet he still manages to write a bunch of libraries and surprisingly
performant code.

~~~
skore
> That's a blatantly false dichotomy.

Hint: A lot of jokes are based on one.

~~~
tikhonj
That tweet doesn't really come off as much of a joke. More like very thinly
veiled criticism.

~~~
skore
Criticism of what?

------
jbarham
Speaking of Arc, how much is it being used in production apart from serving up
HN?

Seems unlikely to become a "hundred-year language" if no one is using it for
the first decade of its life...

~~~
qu4z-2
Like Python, you mean?

In fairness, I'm not expecting python to be a 100-year language either.

------
jeffdavis
A Porsche is not what I'd call a practical car. It's not especially
comfortable if you're tall, the visibility is poor, it doesn't hold a family
or have much storage space at all, it's not efficient to operate or maintain,
and it's not cheap to produce.

So what's the real lesson here?

Maybe it's something about aesthetics, but then the part about designing for
expert drivers versus "average" drivers doesn't make sense.

------
projectileboy
The comments in this thread reinforce the arguments in the article so strongly
that I feel like this is all a joke I'm not in on.

------
skrebbel
Slightly offtopic, I like that this is about design in general, and not about
"css and pretty pictures", which is what the term "design" has unfortunately
come to mean on HN.

I often think that software design, API design (of libraries, not just HTTP
APIs), and so on, are somewhat underrated skills, contrasted with being an
"awesome super-fast programming ninja".

------
hnriot
Haha. What a poorly reasoned article. Smalltalk and lisp - seriously??? Java
was designed for the average programmer, nothing complex, all simple stuff,
and it's been very successful. Meanwhile, smalltalk and lisp are minority
languages that appeal to very few. Other than emacs can anyone think of any
successful app that is written in either?

Good design has nothing to do with users and its easy, as this article does,
mix aesthetics for design.

The 911 was expensive, hard to drive with its engine hanging out over the rear
end and not even comparable with the caddy.

Even c, who uses that much anymore? Software development (unlike the 911) has
evolved, today the level of abstraction is much higher. There is still c
development of course, but java, python, ruby, and php are the dominant
languages.

------
s00pcan
this article is about nothing.

~~~
huhtenberg
Technically this is not an article, it's a "Design Philosophy" page from the
Arc section of pg's site.

------
hrktb
Comparing design comming from two different countries with widely different
background breaks the analogy upfront. Lisp and C, Smalltalk, Cobol, Pascal,
Ada share the same american background, and were just designed with different
audience and purpose.

As diego also points out the Beetle, or even the Golf (though introduced a a
year after 1973) didn't change much either in terms of design during decades,
though they were targeted and designed for mainstream "average" users.

Even on the language front I'm not convinced. Java for instance is aimed at
average users and I don't see it going away anytime soon.

------
jamesgagan
i'm willing to accept the downvotes that will come along with saying both are
pretty magnificent vehicles.

~~~
s00pcan
Whew, glad we're past downvoting based on trivial programming language
choices.

------
perlgeek
There's always a market both for expert users and for the broad mass. Room for
both Arc and PHP.

Which one will still be used and developed in 30 years? I wouldn't go with
pg's argument that the one designed for experts will prove timeless, there are
simply way too many factors involved.

------
matthaeus
What a shame that even Paul Graham seems to be having his issues with a well-
considered use of the word "design".

Degrading "design" to mean nothing but "aesthetics" is a view of the past,
that young, savvy companies know well to avoid by integrating design from the
very beginning of product planning stages.

(Maybe I'm misinterpreting what PG means. Although why else would he feel the
need to use words like "fashion" and "hairstyles from the past" as an
analogy?)

I'm especially surprised he uses this example because it doesn't even serve
his argument well: The design of a programming language is only marginally
related to aesthetics. Why not use an analogy that compares to the more
prevalent criteria of a good/bad programming language?

On top of that, he makes an array of mistakes in his car analogy, and his use
of "good" and "bad" design.

>The Cadillac was carefully designed to appeal to the average driver. The 911
was designed for performance. Which one is better design?

This is a moot question, since in real markets, the answer to this question
depends on who you ask. Of course, the Porsche looks better according to
today's standards. It's also better engineered, has better aerodynamics, etc.
etc. etc. But the Cadillac was more widely available, had more leg room, more
space in the trunk. And it was probably less expensive. So yeah. Neutrally
speaking, both of these cars are designed well according to certain criteria.

>It's easier to tell good design from bad when you're not looking at current
fashions.

Considering that the 911 aesthetics have not dramatically changed since then,
looking at the image of a 1973 model will automatically feel more current,
modern and familiar to the viewer. And speaking of fashion: The Cadillac's
aesthetics have specifically gone out of fashion ever since car styling has
evolved in a more sculpted and organic direction. No matter what field,
anything that's recently out of fashion will be perceived as especially
unpleasant and outdated. So how is it fair to compare one product that
features aesthetics that are still largely regarded as fashionable, and one
that's very specifically regarded as "yesterday" and unfashionable?

>Good design is timeless

If this statement was true, the whole fashion industry would be producing only
bad design every single season. Timelessness of design is also nothing a
designer of a product has any long-term control over. A product might be
timeless in its design (=aesthetics? feature set? what does PG actually mean?)
at the moment of its conception. But if it unwillingly becomes part of a trend
(even if just because other companies imitate it), it won't be regarded as
absolutely timeless anymore. It will have become a witness of its time, and
the trends of that period. The first iPod could have been regarded as a
timeless design when it was launched. But today, it is an unmistakable part of
Apple's white plastic period. It is not timeless anymore.

"Design" stands for the planning/execution of all aspects of a product
together. That includes aesthetics, feature set, implementation technologies,
price point, launch date, market segment and much more. If PG had looked
beyond the rather narrow horizon of aesthetics, he could have actually created
an analogy that worked for him. Even if it included cars.

------
millstone
> _We've been criticized for designing Arc as a language for good
> programmers._

That doesn't seem likely. Does anyone know what criticisms PG was responding
to?

------
shared4you
So, according to pg, where do C++ and Java fit? "Average" category or
"performance"? I think he has deliberately avoided mentioning these.

~~~
philwelch
pg on Java: <http://www.paulgraham.com/javacover.html>

~~~
posharma
Never mind that most of the current big data tools are written in java: hdfs,
hbase, kafka, flume, etc, etc, Netflix, LinkedIn and many other recent highly
successful companies run their high performance empire entirely on java.

~~~
rmrfrmrf
Never mind the fact that all of his original points still stand to this day.

~~~
philwelch
For many applications, Java is simply the best programming language we have
available. Alas.

------
gnee
Cadillac was designed for drug dealers? hmm..

------
codex
TL;DR: One design is better than another because the photo "looks better" to
the modern eye.

I guess form doesn't follow function in this case.

The author then generalizes to language design with no supporting evidence,
and omits various counter-examples (Visual Basic, JavaScript, PHP) that don't
support his thesis.

------
cmbaus
I would take a convertible Cadillac ElDorado.

------
michaelochurch
I'm going to take this discussion away from cars (which I know next to nothing
about) and opine on technology designs.

There are technologies that people decide to use. Then there are technologies
that people decide to _make other people_ use. Design quality is much higher
in the first category (badly-conceived ones die out) than in the second.

Most of what you encounter in a corporate software setup is in the second
category. It's built to sell well to IT managers, not be productive and fun to
use, because the people who will actually work with the product don't get a
vote. It's not so simple as to apply this to languages (Java is the right tool
for some purposes) but you get a feel for it after programming in a variety of
environments. There are some tools that leave you thinking, "Wow, the people
who set this place up really know what they were doing" and others that have
the opposite effect.

I'd start a flamewar if I singled out specific technologies-- and, in the real
world, it's not that simple-- but there's definitely an experience of
"corporate programming" that is really distasteful and mediocre. Then there's
the way people do things when they want to excel. They're different.

~~~
loup-vaillant
> _There are technologies that people decide to use. Then there are
> technologies that people decide to_ make other people _use. Design quality
> is much higher in the first category (badly-conceived ones die out) than in
> the second._

That's it: it's all in the selection process. If you select for the wrong
reasons (such as "please the manager"), you'll get sub-par results.

Now, if we could tell for a fact that many technologies are selected for the
wrong reasons, it would probably explain a good deal of the huge gap there is
between "real world" IT and the state of the art. Think of it for a minute: in
the 70s, we had Smaltalk, Scheme, and ML¹. Twenty freaking years later, the
best mainstream IT can come up with is _Java_. Which only makes sense when you
remember that Java has the highly familiar C syntax.

Apparently, backward compatibility warts aren't just for processor
architectures.

[1]:
[https://en.wikipedia.org/wiki/History_of_programming_languag...](https://en.wikipedia.org/wiki/History_of_programming_languages)

------
nijk
> the drug dealers that the Cadillac was designed for

Um.

This article seems more about rich geeks' love of sports cars, and telling
themselves that their ostentatious toys are a reflection of refined sense and
not of being nouveaux riche.

Porsche seems rather impractical for a family of 4 with luggage in the trunk.

