Sunday, June 22, 2008
  A little something about dumbing code down to the lowest common denominator
When the productive have to ask permission from the unproductive in order to produce, then you may know your culture is doomed.
—Ayn Rand, via Matt Mower

update: Chalain nails it, especially when he writes “… she's right about those two little words: ask permission. And not about dumbing down code.” Although the examples he gives are nothing like the examples that crossed my mind.

I have been happiest when I have worked with people much, much smarter than I am, people who forced me to raise my game. I recall that when I worked on JProbe Threadalyzer, the three key people on my team were Steve Rosenberg, Christian Jaekl, and John MacMillan. Steve was my manager, and he forced me to raise my game as a team lead. Christian was our domain expert, he had written his Masters Thesis on analyzing the behaviour of concurrent software, and he forced me to immerse myself deeply in concurrency just to understand what he was designing. And John was a C++ Wizard. I recall him being extremely patient with me a I got up to speed writing production C++ code.

All three were patient with my shortcomings, but our culture was to help me be more productive, to help me understand their ideas. Not to hold them back so that I could stay in my comfort zone.

Comments on “A little something about dumbing code down to the lowest common denominator:
Of course, any time someone quotes Ayn Rand *and* talks about unfair markets and government coercion, it's obligatory to re-read Seth Finkelstein's "Liberatarianism Makes You Stupid" for the counterargument :)
Libertarianism makes you stupid

Well, I am about the furthest thing from a libertarian that you can imagine. For example, I railed against the RIAA colluding to provide Amazon with DRM-free music while preventing Apple from selling music without DRM.

Is that a stance in favour of a fully free market? Perhaps. But a free market is not the same thing as allowing business to be free to do as they please. Likewise a free society is not the same thinga s allowing individuals to do as they please.

If we give people the liberty to act in what they perceive to be their self-interest, the few will enslave the many.
I read Finkelstein's article, and (although I'm a small "l" libertarian) I thought it was rather over-simplistic.

As for the quote - it's a great quote, but I'm definitely not buying its application to software development.
You said,
"If we give people the liberty to act in what they perceive to be their self-interest, the few will enslave the many."

You have an Attila the Hun view of self-interest - plundering, forcing and violating other people - which is the implication of your use of the word slavery. That is not rational self-interest, the interpretation that Rand provides.

I guess you are an Attila, the "we" who is going to bestow "liberty" like a permission - as if it is yours to dispense. Jeez, man.
(allow me to skip the whole libertarianism debate :) )
I believe complexity is there, either implicitly, covered by a high level language/framework/design, or explicitly in lines and lines of "dumbed down" code. By dumbing down the steps needed to solve a problem, we're not making the problem easier, just worsening the solution (and paradoxically, making it more complex) . If you need to dumb down the code because somebody else can barely understand the solution, chances are that when that person does a modification will break something anyway. But there's a fine line between "this is a better solution" and "this is my solution, if you don't understand it, is your problem,... don't ask me to degrade it", I don't develop code in isolation, and I try to run my "clever" solutions by another member in the team so I'm sure it can be understood.
(coincidence... my last blog entry was about the same questions
If we give people the liberty to act in what they perceive to be their self-interest, the few will enslave the many

Ayn Rand didn't advocate that. She advocated a government that allowed the freedom to act for one's own rational self-interest while not initiating force against anyone else. Enslavement == badness! And Rand would agree.

(Hi, Reg! Small world.)
A similar thought from the design end of things:

"Lowest Common Denominator Design is a sure road to dumbed-down, content-deprived, interfaces that feature themselves. LCDD is based, at its heart, on contempt for users and for content."

"Instead, assume that users are smarter about the content at hand than interface designers. Such is often empirically the case; thus the best that design usually can do is to get out of the way and at least do no harm."

( Edward Tufte - http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=00036T )
Ayn rand didn’t advocate…

I am not saying what Ayn Rand said or didn’t say. I’m saying I am not a Libertarian, and in fact I am the furthest thing from a Libertarian you can imagine.

I am not debating “rational” self-interest vs. “irrational” self-interest. I am not smart enough to judge whether someone else’s perceived self-interest is rational or not. In fact, I do not hold humanity in such contempt that I would judge what I see happening in the so-called democratic elections as being irrational, or what I see happening with Big Oil as irrational, or what I see happening with monopolistic behaviour in the computer industry as irrational, or what I see happening pretty-much everywhere else as irrational.

All I can say with certainty is that I do not think Libertarianism is in my self-interest.
I believe Reg's point is that when the people are given the liberty to act in their "rational self-interest", the few with the means are also given the freedom to enslave the many without. This happened in Europe during the Industrial Revolution, in the US during the Gilded Age, and it's happening again now, all over the world.
Ha! I knew that was going to be an Ayn Rand quote the moment I saw it. :)
The lowest common denominator is 1, it's the reptile brain, and it's irrelevant. The greatest common denominator is what we're talking about.
Libertarians catch a lot of heat about corporate irresponsibility, and in my opinion (speaking as a former card-carrying libertarian) the criticism is well-deserved for two reasons.

First, the non-initiation principle is incompatible with any form of government whatsoever, unless you think witnesses and jurors will show up for trials voluntarily.

Second, the legal fiction that a corporation is a person has nothing to do with the non-initiation principle, so why give it implicit support, especially given that corporate irresponsibility is an inevitable result of that fiction?
This is a total tangent, but I'm always fascinated by the fact that an Ayn Rand reference, in any context, on any topic, will invariably draw out a few people who want to make sure you understand that Rand was wrong, wrong, wrong. And usually something about how she was an awful person in real life, to boot. Followed, usually, by a cadre of people defending her, also ignoring the original topic.

I once had an uncle ask me what I was reading, and upon showing him the cover, he instantly launched into a heated tirade about how wrong and stupid Rand was.

I know of no other author who inspires this level of reflexive reaction.

(Also, just to toss some more mud into the waters, Rand was very vocal in her disdain for libertarians.)

(Meta-meta comment: Google's OpenID support appears to be broken; my first attempt to post this wound up at some "duplicate action" error page.)

<< Home
Reg Braithwaite

Recent Writing
Homoiconic Technical Writing / raganwald.posterous.com

What I‘ve Learned From Failure / Kestrels, Quirky Birds, and Hopeless Egocentricity

rewrite_rails / andand / unfold.rb / string_to_proc.rb / dsl_and_let.rb / comprehension.rb / lazy_lists.rb

IS-STRICTLY-EQUIVALENT-TO-A / Spaghetti-Western Coding / Golf is a good program spoiled / Programming conventions as signals / Not all functions should be object methods

The Not So Big Software Design / Writing programs for people to read / Why Why Functional Programming Matters Matters / But Y would I want to do a thing like this?

The single most important thing you must do to improve your programming career / The Naïve Approach to Hiring People / No Disrespect / Take control of your interview / Three tips for getting a job through a recruiter / My favourite interview question

Exception Handling in Software Development / What if powerful languages and idioms only work for small teams? / Bricks / Which theory fits the evidence? / Still failing, still learning / What I’ve learned from failure

The unary ampersand in Ruby / (1..100).inject(&:+) / The challenge of teaching yourself a programming language / The significance of the meta-circular interpreter / Block-Structured Javascript / Haskell, Ruby and Infinity / Closures and Higher-Order Functions

Why Apple is more expensive than Amazon / Why we are the biggest obstacles to our own growth / Is software the documentation of business process mistakes? / We have lost control of the apparatus / What I’ve Learned From Sales I, II, III

The Narcissism of Small Code Differences / Billy Martin’s Technique for Managing his Manager / Three stories about The Tao / Programming Language Stories / Why You Need a Degree to Work For BigCo

06/04 / 07/04 / 08/04 / 09/04 / 10/04 / 11/04 / 12/04 / 01/05 / 02/05 / 03/05 / 04/05 / 06/05 / 07/05 / 08/05 / 09/05 / 10/05 / 11/05 / 01/06 / 02/06 / 03/06 / 04/06 / 05/06 / 06/06 / 07/06 / 08/06 / 09/06 / 10/06 / 11/06 / 12/06 / 01/07 / 02/07 / 03/07 / 04/07 / 05/07 / 06/07 / 07/07 / 08/07 / 09/07 / 10/07 / 11/07 / 12/07 / 01/08 / 02/08 / 03/08 / 04/08 / 05/08 / 06/08 / 07/08 /