The Google/Yahoo comparison is somewhat invalid - Yahoo is a portal, Google is strictly a search engine. Look at the "portalized" version of Google (i.e., iGoogle) and the similarities start surfacing.
I work for one of the top 25 sites on the tubes, and our homepage is also fairly busy looking. But it also has been relentlessly verified via both user testing and aggregate data analysis. UI guys hate when these numbers come out - but clean and elegant is not always the most efficient UI (for various definitions of efficient).
They also have completely different markets, and I'm annoyed by the number of times I see the Google search page trotted out as an example of what people want. Most of the users I deal with on a daily basis have their homepage set to either their Yahoo page, or their msn page, or something similar.
I don't think I've yet to sit down at a user's computer and find their homepage set to Google's search page.
Unless, of course, they installed Firefox and then forgot it was there.
Well, there's me. I don't want to wait for junk to load - I'm not a stim-junkie.
Also, consumer computers ship with Yahoo or MSN set as default, most defaults never get changed. So no actual info about user preferences there.
Then understand that you're not the average surfer. The problem with web geeks (especially UI web geeks) is that they presume their love for cleanness and elegance is a universal desire for all web users - this is simply not true.
Obviously I can't share any proprietary data here with you - but I work for a company that runs one of the largest sites anywhere - and our UI is kind of ugly, and definitely very busy. It is also the optimal UI - and we have teams of people relentlessly testing alternatives day in and day out. There's designing to your own aesthetic, then there's designing by user input, then there's designing by real live data from tens of millions of people.
What about all the people that aren't coming there? Perhaps your technique is an adaptive algorithm that learns to keep people who are already there, or something like that.
"Lazy" I get, but when he says "dumb" I think "humble" conveys the idea better. You shouldn't be "too smart", but that's not the same thing as being dumb. Letting go of preconceived notions to get to the root of a problem may involve "playing dumb", but that's still not the same thing.
Still, "dumb" sounds less chest-beating than "humble" (ironically enough) so if you think you're not humble enough about being humble, by all means start calling yourself dumb instead. :-)
But "experienced" is another one of those glowing words (like "smart") that emphasizes you knew your way around in the past. This is an external marker, something other people judge you by and you can advertise with. When you have to solve actual problems, it's no good to think of yourself as smart and experienced, because that will only frustrate you if your amazing talents don't immediately suggest a solution. Taking yourself out of the equation and treating each problem by its own merits rather than your own merits is what's required, and that's the point of the "lazy" and "dumb" epithets: they're a deliberate kick to your ego, something programmers can usually use less of. Your talents can take care of themselves.
This is a really convoluted way of conveying a few simple concepts: 1) automate what you can and 2) keep your mind and perspective fresh by continuous learning.
I don't see why we need to redefine the words lazy and dumb. Truly lazy and dumb programmers don't really accomplish much.
It's a hook to get attention, that's all. Have a title that sounds surprising and counterintuitive, then explain how you really meant something related but different. Would this have been submitted to HN if it argued "Programmers should automate tasks and learn new things" without the pretense? Probably not. It's one of the oldest tricks in the book. See also "worse is better", among others.
In the case of this article, though, I have to say that Larry Wall has already done it better with the "three virtues of a programmer":
Laziness: The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don't have to answer so many questions about it. Hence, the first great virtue of a programmer.
Impatience: The anger you feel when the computer is being lazy. This makes you write programs that don't just react to your needs, but actually anticipate them. Or at least that pretend to. Hence, the second great virtue of a programmer.
Hubris: Excessive pride, the sort of thing Zeus zaps you for. Also the quality that makes you write (and maintain) programs that other people won't want to say bad things about. Hence, the third great virtue of a programmer.
The author seems to be trying to pass off "programmers are lazy" as his own, unless he's really unaware of that meme. But I could write these "insightful" little counterfactuals all day:
Good classical composers are tone-deaf and forgetful, because they use dissonance and repeat things with variation.
True. I tend to get things done with less effort than my peers and I don't think it has to do with being smart. I just have an all round better understanding of the surrounding tools/ideas of a problem.
When a lot of people have a project in front of them, I see them jumping in with both feet with a very narrow focus. Afraid of going off in tangents.
Me? I spend most of my time sitting around drinking coffee. Walking. Reading useful stuff on the internet.
I've seen it written before: learn to procrastinate well. I think that's a better way of putting it, no real need to be too derogatory.
Not being a native speaker this confused me for a moment there. I'd like to add to that that most of the world's programmers (and this article's potential audience) are not native to the English language. Don't make the additional effort to confuse us mate.
20 comments
[ 4.8 ms ] story [ 64.0 ms ] threadI work for one of the top 25 sites on the tubes, and our homepage is also fairly busy looking. But it also has been relentlessly verified via both user testing and aggregate data analysis. UI guys hate when these numbers come out - but clean and elegant is not always the most efficient UI (for various definitions of efficient).
I don't think I've yet to sit down at a user's computer and find their homepage set to Google's search page.
Unless, of course, they installed Firefox and then forgot it was there.
Obviously I can't share any proprietary data here with you - but I work for a company that runs one of the largest sites anywhere - and our UI is kind of ugly, and definitely very busy. It is also the optimal UI - and we have teams of people relentlessly testing alternatives day in and day out. There's designing to your own aesthetic, then there's designing by user input, then there's designing by real live data from tens of millions of people.
Still, "dumb" sounds less chest-beating than "humble" (ironically enough) so if you think you're not humble enough about being humble, by all means start calling yourself dumb instead. :-)
I don't see why we need to redefine the words lazy and dumb. Truly lazy and dumb programmers don't really accomplish much.
In the case of this article, though, I have to say that Larry Wall has already done it better with the "three virtues of a programmer":
Laziness: The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don't have to answer so many questions about it. Hence, the first great virtue of a programmer.
Impatience: The anger you feel when the computer is being lazy. This makes you write programs that don't just react to your needs, but actually anticipate them. Or at least that pretend to. Hence, the second great virtue of a programmer.
Hubris: Excessive pride, the sort of thing Zeus zaps you for. Also the quality that makes you write (and maintain) programs that other people won't want to say bad things about. Hence, the third great virtue of a programmer.
Good classical composers are tone-deaf and forgetful, because they use dissonance and repeat things with variation.
Good marathon runners are slow.
Good comic artists draw poorly.
Etc etc.
True. I tend to get things done with less effort than my peers and I don't think it has to do with being smart. I just have an all round better understanding of the surrounding tools/ideas of a problem.
When a lot of people have a project in front of them, I see them jumping in with both feet with a very narrow focus. Afraid of going off in tangents.
Me? I spend most of my time sitting around drinking coffee. Walking. Reading useful stuff on the internet.
I've seen it written before: learn to procrastinate well. I think that's a better way of putting it, no real need to be too derogatory.
What OP calls "lazy", I call "efficient".
What OP calls "dumb", I call "open-minded".
I sure hope he doesn't name his variables as poorly as he names his adjectives. Now that would be lazy and dumb.
"In the beginner's mind there are many possibilities, in the expert's there are few" (Suzuki-roshi)