//-->

Ethical Software by Alex Bunardzic

December 27, 2005, 7:09 am

What Is Stupidity?

Filed under: End-user experience, Stupidity — Alex Bunardzic @

Arguably, one cannot get much stupider than documenting activities of a bunch of guys who are supposed to be the most brilliant people around, and in the process producing the most convincing example of stupidity. This is exactly what happened to the authors of the Aadvark’d: 12 Weeks with Geeks DVD.

According to the film’s main protagonist, Joel Spolsky, the geeks sported in this DVD have been chosen after a painstaking selection process. Joel went through a huge pile of resumes, looking for the most brilliant candidates, and, as revealed in his own confession, chose only the resumes that were so outstanding that they would almost levitate and glow in the dark. This sets the bar quite high at the very outset, setting the poor geeks for a spectacular fall.

The most shocking and disarming thing about this DVD is how it exposes the utter stupidity of its protagonists. There isn’t anything bright, sophisticated, smart or intelligent about any of the people portrayed in this film. This group of supposedly obscenely bright and intelligent people turned out to look like a group of retards. They all appear inarticulate, bland, boring, unimaginative. Basically, the people you would want to avoid spending any time with, at any cost.

The most depressing thing about this entire fiasco is how one gets the unshakable impression that this is not an exception, that pretty much all software developers are like that. If that’s the case, is it a small wonder that software products worldwide are so incredibly moronic and messed up?

How To Recognize A Smart Servant

Filed under: Software, Design, End-user experience, Smart servant — Alex Bunardzic @

In response to my previous post (Smart Master), Steven asked:

“What are typical behaviors of a smart servant?”

That’s a really good, and a very timely question, Steven. Servants certainly do not walk around with a smartness certificate stapled on their forehead. So it is vitally important for us to learn how to recognize if a servant is smart. And the easiest way to do that is to keep in mind several key points, which I’m about to discuss here.

Dumb Servants Can Do Smart Things

Just because a servant can do something smart, doesn’t mean that he is smart. How’s that possible, you ask? Well, consider a scenario where you are drowning and asking your servant to help you, and he responds with a very elaborate explanation of Einstein’s theory of relativity. Would you say that such servant is smart?

So we see that in order to qualify as being smart, a servant must exhibit certain degree of sensitivity. Insensitive servants, no matter how well educated and trained, are ultimately hopelessly dumb. A sensitive servant, on the other hand, always appears smart, even if his education and training leaves a lot to be desired.

Smart Servants are Aware of the Context

Same request, repeated under different circumstances, must not yield the same response. Smart servants know that. Dumb servants don’t know the difference that a context may bring. If you are lounging on your front porch on a hot summer day, and you ask your servant to bring you a cold beer, the servant should immediately obey your command and promptly bring you the beer mug. If, on the other hand, you are in the middle of fixing the garage door and ask your servant to bring you a cold beer, the servant should not shove the beer mug in your face while you’re in the midst of a very delicate task. But that’s exactly what a dumb servant would do. Dumb servants have no finesse whatsoever.

If the servant is smart, he will know that he needs to wait for the opportune moment before serving you the beer you asked for. He is aware of the context. He knows that there is a difference between the situation when his master is lounging, and when his master is absorbed in a more important activity.

Smart Servants are Extremely Attentive

The prime directive for a servant is to pay attention. The servant’s job is first and foremost to pay attention to what his master is doing. Servants have no other duty in the world but to do just that — pay attention to their masters.

Dumb servants are dumb precisely because they fail this simple test — they are not paying attention. They need you to tell them everything explicitly, and because they are not really paying attention to you, they need you to keep repeating yourself. This is the reason why dumb servants are so bloody infuriating.

Smart Servants are Extremely Keen on Learning from their Master

Paying close attention is not enough — servants are expected to learn from the experience of interacting with you, their master. Since you are not a mechanical contraption, there will be infinite variety in the way you do things and in the way you expect things to happen. Smart servants are dedicated to learning about these variations in your behavior and expectations. Smart servants readily embrace change.

Smart Servants Possess Very Reliable Memory

Dumb servants are easy to recognize on account of the fact that they are very forgetful. For example, if you are using Microsoft Word (a software servant) to create a document, upon telling your servant to store the document on the disk, the servant will try to shove it in the ‘My Documents’ folder. You may get upset about your servant’s decision (”What do you mean ‘My Documents’ folder? Whose documents would they be?”), and order him to store the document in the ‘Drafts’ folder. Of course, the servant won’t know how to do that, so you would have to hold his hand and help him navigate to that folder.

But in addition to such obvious idiotic incompetency of your servant, what you’ll discover later on is that he wasn’t really paying any attention to what you were telling him. Even though you took painstaking efforts to explain to your servant that ‘Drafts’ folder is the place you prefer to keep your newly created documents in, your dumb servant will promptly and blissfully forget all about it the next time you tell him to store the document you’ve created.

So, a dumb servant (and you cannot possibly get any dumber than Microsoft Word) is easily identifiable as someone who isn’t paying any attention to his master’s preferences. In addition, this dumb servant tends to promptly and merrily forget everything his master had showed him and had instructed him to do.

Smart Servants Make Correct Assumptions

Dumb servants are notorious for making wrong assumptions about their masters. Like in the previous example, when Microsoft Word made an assumption that you would like to store your documents in the folder that was idiotically named ‘My Documents’. Naming something that belongs to you as ‘My This’ or ‘My That’ is hardly the most intelligent choice of names. If I have produced something to begin with, it is obviously mine. So it would be utterly redundant to call it ‘My Something’.

Smart servants are easy to spot because they come with all kinds of reasonable assumptions about the way their master works. Smart servants assume that they should not insult their master’s intelligence by offering him to store his stuff in a location called ‘My Stuff’. And wouldn’t you know it, such an assumption is right on the money.

Furthermore, smart servants assume that their master prefers to be treated with respect. Again, this is a 100% correct assumption, as it would be literally impossible to find a person who would prefer to be treated with disrespect.

Another very important assumption that all smart servants share is the conviction that their masters would not like to be put on the spot. No one likes to feel inadequate. Knowing this for a fact, smart servants always do whatever is in their power to ensure that their master never feels inadequate.

Smart Servants Never Insist that their Master is the Wizard

I was once tasked with installing Oracle client on my system. When I complained that I am not an Oracle expert, the DBA assured me that I don’t have to be an Oracle expert to install the product on my system. The DBA explained to me that the product comes with a built-in smart servant, or in his parlance, a ‘wizard’.

This ‘wizard’ was supposed to come equipped with the expertise needed to install the product, so all I was supposed to do was follow the wizard’s guide.

Fine. I started the wizard, he introduced himself to me, and started telling me what to do. But then, all of a sudden, and without any forewarning, he started asking me what should he do next! Now, how did that happen? How did I, all of a sudden, become an expert in installing Oracle?

Needless to say, I felt betrayed. There I was, completely ignorant, tossed into the fire by this seemingly knowledgeable ‘wizard’. The ‘wizard’ was asking me how should he perform the next critical step, while at the same time warning me that a wrong decision on my part could jeopardize the entire installation.

I remember feeling infuriated. That ‘wizard’ definitely wasn’t a smart servant. So when choosing your next smart servant, make sure that he won’t be inclined to stab you in the back and turn the tables on you the way Oracle ‘wizard’ did on me.

Smart Servants are Never Intrusive

In a way, the difference between a smart servant and a dumb servant is similar to the difference between a smart waiter and a dumb waiter. Smart waiter is not necessarily more knowledgeable about the menu and the specials than his colleague, the dumb waiter. But a smart waiter will have the finesse to know exactly when to approach you, what to ask you, and what to tell you. He will also know when not to approach you.

The reverse holds true for a dumb waiter. This is a servant who is very intrusive. He tends to approach your table when you least need him (i.e. when you’re in the middle of a very important part of the conversation). Dumb waiters typically lack the discretion. You usually know when you’re dealing with a dumb waiter because whenever you really need him (to order your lunch, to ask for another beer, or to ask for a bill), he is nowhere to be found. But when you absolutely need to be left alone with your friends or colleagues, the dumb waiter would incorrigibly be bumbling around your table.

Intrusiveness is thus perceived not only as ‘in your face’ annoying attitude, but also as absence of assistance when you most need it. Smart servants, like smart waiters, are never in your way, and are always next to you just when you need them. They are aware of the context, and have the finesse to watch you attentively and to learn from you.

Smart Servants Avoid Foolish Consistency

Machines are characterized by foolish consistency. Their behavior is mechanical, and thus predictable. Machines have no finesse.

Humans are all about finesse. Variety in behavior. Slight unpredictability of the responses to the familiar stimuli.

Because of that, humans appreciate servants who are not dumb as a doornail. And servants who insist on being consistent in everything they do are indeed dumb as a doornail. Foolish consistency, exhibited by almost all dumb servants, is something human masters despise. As such, foolish consistency is something smart servants tend to avoid.

Why Does Software Have the Potential to be the Most Perfect Smart Servant?

Even the most devoted human smart servant cannot compete with software when it comes to several crucial characteristics. For example, there isn’t anything in the world that could approach software’s ability to pay close attention to what’s happening. Machines, and especially software products, have infinite patience. They possess the stamina to keep fixated and undivided attention for indefinite amount of time, and as such, can outperform even the most dedicated human servants.

In addition, machines possess unlimited and flawless memory. They can memorize, down to the tiniest detail, everything that ever transpired during the interaction with the human master. Not only is their memory infallible, it is also lightning fast. Machines can recall any event, regardless of how long ago it happened, in a split second.

Because of their practically unlimited memory and undivided attention, machines are perfectly positioned to learn from their masters. They possess unlimited capacity for learning. This is in stark contrast with human servants, who tend to reach the point of saturation and tiredness rather quickly.

Why is Software Not Smart?

Despite the fact that software has a built-in capacity to pay perfect attention to what the master is doing, plus it possesses the unlimited capacity for memorizing everything and thus the ability for unlimited learning, most software servants in existence today are excruciatingly dumb. You may be wondering why such a huge discrepancy between software’s awesome ability and its lousy capability in real life?

Basically, the primary reason for that discrepancy is software’s lack of common-sense. As we’ve seen, software doesn’t seem to be aware of the context. This awareness is only possible if servants possess certain degree of common-sense.

Furthermore, most of the dumb software servants in existence today suffer from not being able to make correct assumptions. Again, if you wish to be able to make correct assumption, you need to operate from the common-sense standpoint, which is something current batch of software servants is sorely lacking.

In addition to that, smart servants manage not to be intrusive by applying their common-sense judgement. This is closely related to the ability to make correct assumptions. And both these abilities are closely tied with the ability to think in common-sense terms.

Finally, it takes plenty of imagination for a servant not to fall into the foolish consistency trap. Presently, machines lack that kind of imagination, and are thus invariably foolishly consistent.

Learning From Other People’s Mistakes

Often times, people tend to get mystified by the concept of a smart servant. The problem is that we still don’t have sufficient evidence that such a thing is possible. Most software products in existence today are far from being exemplary of the smart servant concept. So all we have to refer to is a whole gamut of more or less dumb servants. The trick now is how to learn from other people’s mistakes.

It helps if we learn about the most hideous examples; this experience will at least teach us what to avoid at all costs. But most people don’t even know what the most hideous examples are. This is due to the fact that most people have never been exposed to a half-decent smart servant, and so cannot perceive the contrast between lousy and decent services.

If in doubt when trying to learn what to avoid at all costs, I suggest you look into Microsoft’s products. They are the indisputable champions when it comes to creating dumb servants. All Microsoft products offer all the horrendous features that lace the typical dumb servant: they are rude, they treat their masters with disrespect, they don’t pay attention to what their master is doing, they need to be told how to do something over and over again, they have extremely lousy and unreliable memory. Plus, they enjoy putting their master on the spot, making him feel utterly inadequate.

In addition, Microsoft products are incredibly intrusive, they tend to make all the wrong and unwarranted assumptions, they refuse to learn anything from their masters, and they are foolishly consistent in insisting that their masters are always wrong (they like to torture their masters with reporting incomprehensible errors that incomprehensibly occurred because the master did something).

Please, if at all possible, learn from Microsoft’s mistakes. They are very blatant, very in your face. When creating software servants, please keep in mind not to repeat any of the typical mistakes found in the Microsoft’s products.

December 24, 2005, 9:50 am

Smart Master

Filed under: Software, Design, End-user experience, Smart servant — Alex Bunardzic @

You’ve heard me talk about the concept of smart servant on more than one occasion (HLL Vs. VHLL, What Is A Software Product, Ruby on Rails Value Proposition, Verbal Communication and Software Industrialization or Software Craft?). I first heard of that concept ten years ago, when I made the switch from the machine-centric to human-centric software development. I’ll continue to explore this fascinating subject, but today I’d like to make a slight detour and talk a bit about the flip side of the coin — the smart master.

Two Kinds of Servants

The situation is basically very simple — if you can afford to have a servant (or servants), you can either enjoy the services of smart servants, or the services of not-so-smart servants. Smart servants are the ones who have the ability to understand you well. They can take hints, read between the lines, and thus save you a lot of hassle.

Dumb servants lack the ability to spare you the grief. With such servants, you are forced to spell everything out. You need to hold their hands, explain every little detail to them, and be prepared to keep repeating yourself till you’re blue in face.

You may find yourself wondering if having dumb servants is actually worth it. Since you have to explain to them everything anyway, and you also have to hold their hand and clean up after their mistakes, maybe you’d be better off without them?

Still, you may find it tempting to keep the servants, even if they’re unbelievably dumb. Having servants in your employ is a symbol of a certain status, so it may be worth the extra grief of keeping them around.

Two Kinds of Masters

In the same way how you can have two kinds of servants (smart or dumb), you can belong to one of the two categories of masters — smart or dumb. If you luck out and manage to hire smart servants, you’re not out of the woods yet. It is incredibly easy to mess up the otherwise advantageous situation with having smart servants around you.

All you need to do to mess things up is start being overbearing with your smart servants. Start breathing down their neck. Try holding their hand, explaining each little detail to them. That is guaranteed to piss them off, and make them resent being in your employ.

If you are to take the advantage of being incredibly lucky to have smart servants at your disposal, you need to make sure that you yourself are a smart master.

Tools are Our Servants

Similar to the situation with human servants, you should also view tools as your servants. Tools are made by humans, for humans. Their only purpose is to serve human needs. And similar to the human servants, tools can be dumb or smart.

Typically, mechanical tools are dumb. These tools don’t have mind-like qualities. But software tools tend to be much more powerful than mechanical tools, and can exhibit certain mind-like qualities.

Still, just because software tools are many orders of magnitude more complex than mechanical tools, that doesn’t automatically mean that software tools are guaranteed to be smart. Quite the contrary, most software tools are incredibly dumb, even right down stupid.

It is very unlikely that you’ll easily bump into a smart software tool, but even if you did, you still won’t be out of the woods. Same as with human servants, in order to take advantage of a smart software tool, you need to act like a smart master. And that’s easier said than done.

December 23, 2005, 9:50 am

The Age Of Machine Worship

Filed under: Software — Alex Bunardzic @

At the peril of sounding like some lame-ass Hollywood movie producer, I feel the urge to point at the rampant machine-worship attitude we seem to be immersed in today. This is a societal phenomenon that had penetrated almost all aspects of our lives. I’ve already discussed this in one of my last month’s posts (Google Minds). Now I want to talk some more about the barriers such a mindset seems to be erecting around us.

Machine Worship

People have been building machines from the times immemorial for two reasons:

  1. Curiosity
  2. Utility

Building and using machines have originally been activities meant for human amusement. At the end of the day, all those artifacts built by humans were meant to merely serve human needs.

But then something went haywire and, in an incredibly bizarre way, machines became more than just an amusement, more than just a utility. Instead of being mere slaves to their makers, machines became the masters.

Today, almost all humans living on the planet are slaving under the oppressive machines. I know this sounds melodramatic, but look around and witness the busy-body activity, almost all of it centered around serving the precious machinery. Barely anyone nowadays has the time to stop, step back, and view all these machines as being there merely for human amusement, for serving human needs.

Software — the Ultimate Machine

Of course, the ultimate, most perfect machine ever conceived of and built is software. Being many orders of magnitude more powerful than hardware, software has that much larger potential to enslave humans.

Not only are humans nowadays fascinated by software, they are also mystified by it. This is an explosive combination that is slowly but surely eating at our souls, robbing us of many uniquely human dimensions.

The volatility of the situation is nowhere more rampant than among the software developers. People who develop software tend to suffer from a systemic disease which is causing them to think like machines. This is hardly surprising — these are the people who spend 8, 10, 12 hours a day communicating with machines. They can’t help but grow very intimate, very close to the machines. The final consequence of such an arrangement is that, in the end, software developers begin to think in mechanical terms, and are inclined to behave like machines.

Alarming Behavior

Yes, but so what? Why would that be so alarming? After all, the population of software developers relative to the human population size is so tiny, that it is barely comparable to a drop in a bucket.

While the software development community is indeed tiny compared to many other communities out there, the impact of the software development community activities is nevertheless enormous. These are the people who develop machinery that controls many aspects of our lives. If they lose their soul and switch to thinking and behaving in mechanical, machine-like ways, we will all unavoidably start feeling the unpleasant effects of the products they push on us.

This is why I insist that the mentality and the attitudes of the typical software development community must be carefully examined. We need to understand what we’re up against. We have collectively bought into the idea that software will be tremendously useful in our everyday activities. We must now reclaim the humane aspect of these activities. We must not allow our fascination with machines take over and suffocate our humanity.

December 22, 2005, 1:29 pm

Ruby, Rails and The Art of Software Development — Audio

Filed under: Software, Web 2.0, End-user experience, Art — Alex Bunardzic @

Couple of months ago I’ve posted links to my presentation on Ruby on Rails. Finally, after some deliberation, they posted the audio (about one hour in length).

December 20, 2005, 1:32 pm

Apples And Oranges: HLL Vs VHLL

Filed under: Software, Design, Art — Alex Bunardzic @

Ever since I became aware of the ’smart servant’ programming language concept, I was expecting this to happen — the time has finally arrived where we’re starting to see some of the most prominent software industry heavyweights going clueless. The freshest example: Bruce Eckel dropping below the intelligible level with his blog entry The departure of the hyper-enthusiasts. Read it, and witness one of the most misplaced rants in recent high tech blogosphere.

Bruce Eckel commands a lot of respect among not only software developers, but also among the educators. His seminal book Thinking in Java still stands as one of the best treatises on the nature and the quirks of that language. I’ve been teaching Java courses for a number of years at the local colleges, and that book is always at the top of my most recommended Java books.

But now we see that Bruce has unfortunately lost his edge and had obviously reached the end of his rope when it comes to the leading edge in modern software development. His latest blog entry (the one I’ve pointed to above) is chock full of so much wrong-headed thinking that one is at a loss as to where to begin the critique. I will just restrict myself to pointing out one major issue — Bruce doesn’t seem to be aware that, with Ruby, he is up against the Very High Level Language (VHLL). While Java, Perl, C++, C# et al. are High Level Languages (HLL), Ruby is altogether a different beast.

Comparing HLLs with a VHLL, is like comparing assembler with HLLs. Is assembler better than C? Is it better than Java? Is assembler syntax better than, oh, I don’t know, Java syntax?

The question is meaningless. The problem domains that C or Java or COBOL or Fortran or Perl address is completely different than the problem domain that assembler specializes in.

Same goes for Ruby. It addresses completely different set of problems than the problems C, C++, Java, C# etc. address. As such, the two camps cannot ever be compared meaningfully. They may look quite similar to the uneducated observers, but anyone who did any serious work in VHLL such as Ruby, would never think of comparing it with any of the HLLs. Same as anyone who is familiar with High Level Languages would never compare them with low-level machine languages.

Frankly, I was very surprised to read Bruce’s views on Ruby. I was convinced that he knew better. Oh well, I guess we all have our boundaries to worry about.

December 19, 2005, 11:48 am

Zen Bloggin’ Is Now Happenin’

Filed under: Zen — Alex Bunardzic @

I’ve been itching to start my Zen blog for quite some time now. Finally I took the plunge, and now you can join us for some good old Zen blogging at Empty Cup.

So what’s the point in blogging about Zen? I’ve noticed that a lot of people tend to brush shoulders with Zen, either as a passing curiosity, or in order to give it a world and get involved with some hands-on Zen practice. Also, there’s been a lot of Zen-referencing flying around, especially when it comes to design and development. Principles such as less is more usually get attributed to Zen. This being so, it wouldn’t hurt if people learned a bit more about Zen, what is it, what does it take to practice it, and so on.

For those of you who have been flirting with Zen but never really succeeding in figuring out what the hell is that thing all about, maybe you’ll be able to find some rhyme and reason for all things Zen by participating in the blog. And hey, maybe you’ll finally be able to fathom what wabi-sabi is actually all about?

For those of you who are already up to here in Zen practice, jump right in!

December 17, 2005, 12:20 pm

Collective Intelligence, Individual Stupidity

Filed under: End-user experience, Stupidity — Alex Bunardzic @

Web is a very uplifting, and at the same time very infuriating place/experience. One of the things that make it so is the startling phenomenon that many things on the web work in a reverse kind of way — sort of like a mirror image of the real world. Or, maybe it would be clearer if we say that many things seem upside-down on the web.

Take for instance the expression of intelligence on the web. In non-virtual world (which is to say, in our traditional physical world), it is a well known and accepted fact that the more people join in on the conversation, the stupider the group gets. You can have a very intelligent bloke joined by another intelligent bloke, and the two would then engage in a very intelligent conversation. Bring another intelligent person in, and watch the overall intelligence level drop by a couple of notches. If you then include a couple of more otherwise very intelligent people, the level of intelligence in the ensuing discussion would go down the toilet. After not too long, the intelligence exhibited by the participants will end up in the gutter.

Common sense would expect that the same thing will happen on the web. But, surprisingly, that is not so. What we have on the web is something that never existed before. That something has a very strange name — collective intelligence. Today, the new business model tends to be centered around harnessing this elusive collective intelligence. What exactly does that mean?

Never before in the history did we have this notion of collective intelligence. Even if some people had a hunch that such a thing existed, they simply didn’t have the means for harvesting it. Even if collective intelligence was floating up in the air, amorphous and barely detectable, no one could grab it, turn it into a business, and run with it.

But today, for the first time, looks like we’re finally in the position to lay our greedy, sweaty hands on this mythical collective intelligence. How did that become possible? Simple — technology had advanced to the point where it became affordable for sufficient number of people who are finally able to plug themselves into the network (a.k.a. the matrix) . Now we see that this collective intelligence is appearing out of the woodworks before our very eyes. We can now begin to harness it and to harvest it.

It’s basically all about the law of big numbers. Large numbers of people consume-participate-contribute, and in the process spontaneously promote/marginalize respective brilliance/crappiness of the material offered on the web.

At the same time, the reverse effect of the web also plays its magic out with the levels of individual intelligence. Unlike the way things show up in the traditional world, most of the individual contributions on the web today are infuriatingly stupid. So, we see that what basically boils down to tons of individual stupidity and sloppiness, eventually tends to amount to collective intelligence.

Funny how things work out sometimes.

Why Top Ten Lists Matter

Filed under: End-user experience, Art — michael @

Alex’s recent take on the increasing popularity of Top Ten lists—including his own Top Ten List—got me thinking about why there are so many “Top Ten”, “Best of..” lists, and why they matter, perhaps more than we realize they do.

One possible answer is, according to this article, which I’ve excerpted a portion of,

“Awards and top 10 lists…help us focus on what deserves our attention from an ever-expanding menu of choices…”


Editor’s note: I’m a new contributor, a long-time associate of Alex’s. Appropriately, for me, the first friendship formed exclusively via the internet, then forged in real life a short time later. In the mid-1990s—almost exactly ten years ago, in the early, primitive days of the internet—when “Special Interest Mailing Lists” (in this case, a music-related list) emerged as one of the poineering ways for complete strangers from around the globe to actively communicate about shared interests, I noticed Alex’s writing, and was impressed by it. His voice stood out.

If you’ve been reading this blog for a while, or even for a few minutes, perhaps you’ll have seen what I did. No matter what Alex is talking about, it makes me sit up and take notice. “This is no ordinary musician”, I said to myself. In fact, I would have mistaken Alex for a professional writer, except that professional writers are usually dull compared to the best recreational ones.

Before long, we realized, we were the only two people actually talking. Like many Special-Interest Music Lists, most contributors were publishing catalogues, reorganizing discographies, and exchanging barely-legible notes about arcane hi-fi stuff. Well, we did that too, but we found that we had many other shared interests as well. After observing and amusing each other for a while, we began writing to each other directly, met each other in Vancouver the following year, and the rest is history.

Ten years later, I’m pleased to accept Alex’s invitation to join in this venture. Since Alex and I met on a “List”, it’s only fitting that my first contribution is about Lists, and why they matter.

As the author, J. Peder Zane writes, “I write not to bury awards and top 10 lists but to praise them…”

Michael Dougan– Seattle

Excerpted from Contests really take the prize, by J. Peder Zane


“Gore Vidal once observed that there are more prizes than writers…

(note: I saw in interview with Gore Vidal where he delivered a variation of this quote. He said “there are more serious writers of books than there are readers”. Chilling, funny, not quite true, but it tends to amplify what this topic is about–MD)

…Ours does seem to be an age of unrivaled excellence. Never before have there been so many “award-winning” authors, actors, journalists, doctors, plumbers, car mechanics, librarians and quilters — the Mary Diamond Butts Award, for example, honors fiber artists under 40 residing in the Canadian province of Ontario.

The standard reference work “Awards, Honors & Prizes” (Gale) runs more than 2,000 pages. And as James F. English observes in his provocative new book, “The Economy of Prestige” (Harvard University Press), it is adding “new prizes at the rate of about one every six hours.”

If this “prize frenzy,” as English calls it, seems straight out of “Alice’s Adventures in Wonderland,” that’s because it is. Remember the Cacus race where “everybody has won, and all must have prizes.”

Awards and top 10 lists serve the same function, helping us focus on what deserves our attention from an ever-expanding menu of choices.

The need for such guidance has never been greater. Technology has powered a fundamental shift during the last decade, dramatically decentralizing culture and empowering the consumer. Thanks to the iPod and online services such as the iTunes music store, the album has given way to the personal playlist, enabling us to buy only the music we want, and much more of it. TiVo means we no longer have to pick a particular television show at a given hour, but can watch what we want, when we want. The Internet has increased exponentially our sources of information so that we are no longer limited by the number of magazine and newspaper subscriptions we can afford.

When everything is available, anything is possible. Technology is allowing us to replace mass culture with personal preferences. Each of us is an impresario and ringmaster, designing lavish entertainments for an audience of one. Man, do I have good taste!

With choice comes responsibility. Which songs? Which programs? Which publications? It can make your head ache. In “The Paradox of Choice: Why More is Less” (2004) Barry Schwartz, a professor of psychology at Swarthmore College, argues that our cornucopia culture is damaging our mental health.

Perhaps. But that ship has sailed — the future will only bring more choice. In this context, prizes and top 10 lists are cheap forms of mass therapy, reducing the stress of selection. Consider them cultural Prozac.

Paradoxically, they also reflect how the traditional lines of authority are both collapsing and expanding. By making each of us a master of our own cultural universe, technology has diminished the power of the editors and record company and TV executives who once shaped a small menu of available choices… “

Read the full article at Triangle.com

December 16, 2005, 6:13 am

Consume-Participate-Contribute

Filed under: Web 2.0, End-user experience — Alex Bunardzic @

The evolution, or progress if you will, of humankind has been moving slowly from a passive, hand-to-mouth way of living toward a more active way of enjoying the fruits of growing economies. Not that long ago, only a select elite of privileged humans was in a fortunate enough position to sample lavish fruits of the high quality human products, such as works of art, finest gourmet cuisine, etc. Then, with the advancement of technological achievements, larger segments of society were given the access to the sizable consumption of sophisticated goods. The age of consumerism was born.

Shallow Fruits of Consumerism

Much as the consumer-oriented orgy appears attractive to the outsiders, the insiders, the privileged ones who live in the acquisitive societies, have gained first-hand knowledge that consumption in itself does not get us even remotely close to nirvana, to everlasting happiness. Quite to the contrary, incessant consumption of ready-made goods and services tends to drain one’s enthusiasm and optimism. It is obvious that, in order to be happy, we need more than just the ability to sit idly and consume material goods.

Participation Driven Enthusiasm

It is a well known fact that as soon as our lives get organized in such a way that we begin to actively participate in the decision making process concerning our immediate circumstances, we develop strong interest and enthusiasm for living and sharing. Immediately, our productivity is on the rise, our renewed optimism seems unstoppable, and the consequences of the consumer orgy blues and its related hopelessness seem to fade away.

This is the reason why many people feel that democratic societies offer higher quality of living compared to despotic, totalitarian ones. Democracy has been an ongoing experiment for many generations, in many geographic locations throughout the world. Today, we still see that the attempts at democratic way of living fall short of meeting the projected ideal. The reason for that is most likely the restricted communication channels that constrain many honest attempts at instigating the democratic process. The existing model is too crude, too flaky, too error prone to be practical.

The Promise of Communication Driven Technology

The Internet, and the world wide web, definitely bring increased abilities to effectively and democratically communicate in an almost real time fashion. This potentially changes how we may participate in the democratic process. Instead of relying on the old-fashioned mechanisms for soliciting and disseminating the decisions made by the population at large, the Internet offers much more efficient as well as more convenient ways of participating. This significantly lowers the barriers to entry and increases the participation rate.

All is not so rosy, however, in this world of communication driven technology. Several problems are looming large on the horizon, making it quite difficult to deliver on the promise of instant democracy. Some of the more prominent problems are:

  1. Identity crisis
  2. Corporate dumbing-down
  3. High financial barrier to entry

Identity Crisis

In one of my previous posts, I wrote about this problem from a technology point of view. Now I need to mention the end-user identity point of view.

Online interaction is peculiar in the sense that it comes sans the familiar physical dimension. While in the physical world someone’s identity gets established by their physical characteristics (e.g. male, early thirties, well groomed, etc.), in the online world such distinctions are non-existent. This is the world of radical trust (or, radical distrust, depending on one’s preference), where other participants agree that an individual participating in the interaction is who she is, based on the fact that she says so.

In the physical world, it is quite possible to fool and deceive others. But it takes a lot of nerve and skills to pose as someone else, because there are many physical clues that could possibly give the confidence trickster away. Things are much easier in the online world, where it gets incredibly easy to cloak one’s persona and impersonate someone else. The real problem is that we haven’t reached a collectively agreeable mechanism for establishing one’s identity online.

Corporate Dumbing Down

Corporations are entities founded on the principle of ownership. This principle plays nicely to the ingrained need of all humans (social animals) to evaluate everything according to the pecking order. The more one is aligned with the owner, the higher up on the pecking order ladder one is. Humans crave this kind of structure and tend to obey all the written and unwritten rules associated with it.

The problem with this ingrained behavior is that it cannot deal well with non-pecking order situations. Such as, for example, the Internet. As I’ve already mentioned in my Is Capitalism Dead? post, the peculiar thing about the Internet is that no one owns it. Consequently, no one can control it. And that’s something that corporate minded people seem to have difficulty coping with.

But at the same time, corporations, being greedy, see the huge value in the Internet proposition. Always on the lookout for increased profits, corporations would like to harness the powers of world wide web. Hence, we see many failed attempt coming from many corporations to dumb the web down, to drag it down to their primitive, territorial level.

While these attempts are doomed to fail from the very outset (simply due to the fact that no one owns the Internet and no one could ever control it), they are relentless and thus extremely annoying. Plus, they tend to slow the proceedings dramatically.

High Financial Barrier to Entry

Today, at the end of 2005, we still live in the world of haves and have nots. Only a small segment of the world population has unencumbered access to the web. Large number of people still can access the web only sporadically, and even larger masses don’t have any access at all.

This is quite discouraging. However, there are signs that things will improve (Google Offers Free Wi-Fi to San Francisco), and will hopefully spill over to other countries/continents. Tim Berners Lee, the web founder, made it clear that, in order for the web to truly flourish, the infrastructure on which it is running must be made free.

Right now, the situation is much better than it was only five years ago. Although the price of hardware is still considerable for the average population, it is now possible to enjoy a full stack of absolutely free software that is based on the world wide standards and that will enable users to surf and participate in the web activities.

What we need to see happening is the dramatic drop in price for the vanilla hardware/connection costs, so that more and more people can join in. Powerful, forward thinking companies such as Google and Yahoo, may be in the position to offer an incredibly useful assistance, such as a free wireless access to the net, and a plethora of free and useful software tools for leveraging the web-based experience.

Critical Mass

Apparently, there is a threshold (no one knows yet where is it actually positioned) in the number of online users that make a difference to what kind of a world the net will be. Right now, we still haven’t reached that threshold. But, if the trend continues, and we get the anticipated drop in the price of hardware/connectivity, sufficient number of people will join the party and will push us to the point where quantity gets magically transformed into quality, and the sparks will begin to fly (metaphorically speaking, of course).

Until then, we won’t be able to see much evidence that the mass participation can make a difference. Nevertheless, consider the following:

In the span of time it took me to type this sentence, some 50 blog posts have occurred. This is based on the recent observation that, on average, there seem to be about 10 new blog posts happening each and every second!

Now, assuming that not all those posts are purposeful (the analysis allows for approximately 5% of these posts as being fake, or spam), and assuming that the majority of those posts are typically frivolous or inconsequential, we are still left with an enormous quantity of published material that goes unaccounted for.

Still, this is just the tip of the iceberg. Of course, we’re talking about the potential iceberg; however, according to the study quoted above, if the observed publishing pace continues, the total number of tracked posts is expected to double every 5 months. This, at least in my mind, presents a considerable breakthrough when it comes to how we, as a society, and as human race, participate and share our opinions.

Contribution Factor

We still see that the portion of the population that is capable of contributing to the content on the web is rather small. Of all the people who do have unencumbered access to the online resources, only a smallish portion have the ability to actually post their own content. This is now rapidly changing thanks to services such as Flickr and other similarly positioned solutions, but is a far cry from the critical mass we need to reach in order to overwhelm the existing pedestrian channels of communication.

The largest problem, again, is financial — not too many people can afford high connectivity, but even smaller number of population can afford to pay for hosting their content.

The Solution?

Again, the altruistic businesses/individuals must step in and try to foot the bill. Either by donating their resources, or by raising the awareness. Eventually, we may reach the point where it will, indeed, be possible to publish one’s thoughts/opinions in a completely free, non-commerce driven manner.

When that happens, we will reach the threshold of the age of true democracy. It may mean that we have a steep and rocky ride ahead of us, but I’m bracing for it, because I feel that it will be worth all the trouble.

December 15, 2005, 10:49 am

Is Microsoft The Only Software Innovator?

Filed under: Software — Alex Bunardzic @

I’ve been doing software development since 1987, and of all the interesting, innovative and out-of-the-left-field initiatives I’ve witnessed, I think Microsoft takes the cake. What I’m trying to say is that I’ve never seen anyone else proposing and offering so many unique, peculiar ways of doing software development as Microsoft did (and, of course, still does).

I don’t know about you, but personally this strikes me as being kind of strange. Even to say that Microsoft is the leading innovator seems odd. Aren’t we talking about the big fat giant, the one that the open-range community is hoping will go through the same ‘the bigger they are, the harder they fall’ fate as IBM did in the early ’90s?

Again, I don’t know about you, but I am a big advocate of open source, industry wide standards (such as the ones managed by the W3C committee). I tend to believe that, in the matters of software design, development and implementation, not having much choice is a good thing. For example, I have no choice today but use TCP/IP for transporting bits and bytes over the wire. I strongly feel that it’s a very good thing. Also, I have no choice but use the HTTP for transferring my hypertext. And so on — lack of choice proves to be a very liberating proposition.

But what’s peculiar about the world of Microsoft is how much they tend to re-invent things. They seem to innovate all the time over at Redmond. This is not actually that surprising, seeing how they are the biggest software development company in the world. If anyone should innovate when it comes to the ways of doing software, it should be them.

The rest of us really don’t have the resources to go into such costly activities. We must learn to make do with what is already at our disposal. We must learn to embrace the constraints. Microsoft is so rich, that they can afford to discard the constraints, and to invent their own set of constraints. Hence, we see that they keep innovating like crazy.

Why Reinvent the Wheel?

Still, one cannot help but wonder: why keep reinventing the wheel? What exactly is gained from investing so much time and effort in reinventing something that’s already been solved?

One possible answer is that it must be cool to be in the position to do that. But that doesn’t make any business sense. It sounds like a mere waste of resources.

Something else must be the matter. Naturally, some may wonder — maybe Microsoft keeps reinventing the wheel for the simple reason that the existing wheel is somehow faulty, or is not good enough.

But we see evidence all around us that the existing solutions, existing standards, work very well, and are capable of delivering in time and on budget. Most exemplary, phenomenally successful high tech business ventures have been developed in and run on 100% non-Microsoft technology stack. Yet, they work like a charm (look at the success stories of Google, Amazon, et al).

Mixing Oil and Water

I think that the real reason Microsoft keeps being the leader in the software innovation world is due to the fact that they feel compelled to retain their focus on the desktop-centric world while at the same time feeling the mounting pressure to make all their solutions web enabled. At a first glance, that sounds like a very good, opportunistic business plan — leverage the existing supremacy in the desktop arena and use it to conquer the web.

But the problem is that desktop and web do not mash well. They represent two completely different paradigms. Trying to make those two paradigms overlap seamlessly is like trying to create a smooth, homogeneous mix of oil and water. Everybody knows that it cannot be done. Or, if it can be done by applying tremendous efforts, it will not be capable of holding together for any longer period of time.

Because of these challenges, Microsoft cannot help but innovate. If we look at their latest offerings, in how they propose to extend the desktop-centric world (mostly implemented as Microsoft Office suite of products) onto the web, we see many innovations, many unexpected ways to harness the fundamental stateless request/response architecture that characterizes the web. These simple, low overhead mechanisms that the web offers, cannot be used to extend the desktop apps. Instead, it is mandatory to innovate, to stretch the paradigms, to come up with startling new solutions. Consequently, products such as Microsoft Sharepoint tend to exhibit many signs of confused identity (i.e. not being able to make up their mind — are they desktop, or web applications?)

Meanwhile, the regular web-based community are free of any such doubts. Open source community is clear on the fact that they don’t pretend to be anything other than simple, vanilla web-based community. No plans to extend their dominion to the desktop. Consequently, there really is no urge, no push to innovate, to come up with stunning new solutions.

Maybe it’s better that way?

December 14, 2005, 5:56 am

Simplicity Is Not So Simple To Figure Out

Filed under: Software, Design, Art, Zen — Alex Bunardzic @

Martin Fowler recently proclaimed in his blog post on Humane Interfaces that “Humane interfaces do more work so that clients don’t have to.” Another blogger, David Crow, offered a similar observation in his Simplicity Rules post: “This is why frameworks like Ruby on Rails , Django , and TurboGears work so well. They do a lot of the work so that I don’t have to.”

While it is true that those frameworks and humane interfaces do encapsulate fairly large amount of work (I call it legwork), I don’t think that it is their differentiating factor. Other frameworks, the ones that are being touted as anti-simple, anti-humane (such as EJB, Struts, .NET, etc.) also do a lot of work so that we don’t have to. As a matter of fact, they probably do much more legwork behind the scenes than Ruby on Rails ever does. Still, these bloated frameworks could never, not even in our wildest dreams, qualify as being exemplary items for showcasing simplicity at work.

So we see that something else is needed in order to qualify a system, a framework, a product, an interface or a platform as being simple. But the trick is, what the factor, that makes something simple is, is not so simple to figure out. If it were, everyone would be doing it by now.

One way to try and figure out what the unknown simplicity-bestowing factor might be is to look at successful products/solutions that are being deemed as simpler-than-usual. Ruby, a general purpose programming language, is one such product. Ruby on Rails, a domain specific programming language, is another example of a product that created a lot of stir in the simplicity-hungry community.

What is it that both Ruby and Ruby on Rails share that makes them so obviously simpler than the competing products? Upon examining these two products, I find a number of interesting factors that may be contributing to the overall impression of simplicity. Some of these factors are:

  1. Reduce pressure on the short-term memory buffer (and I’m not talking about computer memory here)
  2. Augment the probable and diminish the possible
  3. Promote text, demote data
  4. Ease the way to do something in a new, unanticipated way
  5. Alias the behavioral labels

There are, of course, numerous other traits that I detect in these products, but for the sake of brevity, I’ll limit myself to the five main ones listed above. Let’s now examine them one by one.

1. Reduce Pressure on the Short-term Memory Buffer

Unlike machines, who are capable of managing a consistent state given the constancy of the power supply, humans tend to operate in an extremely transient manner. This means that the state that is encapsulated by the human brain is susceptible to quick and irreversible erosion. Another way to put it is to simply say that humans’ short-term memory is extremely volatile.

We are indeed very limited when it comes to our capacity to store any sizable amount of information into our short-term memory buffer. Not only that, but the stuff we manage to somehow cram in there is very short lived. It degrades very quickly, leaving no trace behind.

This is precisely why the activity of building software solutions is so risky, so fraught with failure. There simple are too many variables, too many balls floating up in the air, for us to be able to manage them all efficiently. Consequently, many of these balls fall into random, undesirable places, causing bugs in our solutions, forcing us to invest countless hours in those painful debugging sessions.

Any product or tool that helps alleviate this pain is doomed to be perceived by the human users as simpler than usual. Ruby is one such tool; Ruby on Rails is another such tool. Not surprisingly, anyone who’s ever learned how to use those tools, reports vast improvements in the area of simplicity. Both Ruby and Ruby on Rails have been designed from the ground up to relieve the pressures on the human short-term memory buffer. These tools do a lot of behind the scenes juggling in order to allow us not to worry about overflowing our short term memory.

It follows that any other product that wishes to be perceived as being simple must, by necessity, be carefully designed not to overflow the human short term memory.

2. Augment the probable and diminish the possible

Formally trained technologists have a very pronounced propensity for analyzing any system under study to the n-th degree. No stone is left unturned, all, even the remotest possibilities, get factored in.

Most technologists take huge pride in this ability to be extremely thorough in their analysis. They see it as a value-added proposition, as most-bang-for-the-buck, that they offer to businesses. That would be true, indeed, if the businesses would not be interested in common-sense approach. If the businesses were running on a set of formal criteria, examining all the possibilities would amount to the highest value proposition for them.

As it turns out, however, most businesses are not based on such premises. Most businesses operate on the set of common-sense principles, which favor probabilities and discard possibilities. What does that mean?

Given a sufficiently complex system (which pretty much every business is), it invariably turns out that anything’s possible. Yes, countless variables can vary in countless ways, producing infinitely varied results. If we were to account for covering all of these possibilities, we would need countless eons in order to implement such a solution. A more practical way would be to rank those possibilities, in terms of likelihood. Of all those possibilities that the analysis uncovered, which one is the most likely to occur?

As soon as we start viewing things this way, we make a shift from being focused on possibilities to being focused on probabilities. And probabilities with sufficiently high likelihood of occurring are much fewer than possibilities. Simple systems focus only on highly likely occurrences, and offload most edge cases, thus freeing the pressure on the short-term memory (see item #1).

Both Ruby and Ruby on Rails shine in this respect. They focus mostly on the most likely scenarios, and lay off the edge cases. No wonder most users of these tools grow to appreciate the thoughtfulness.

Any other products ambitious to achieve the same or even higher degrees of simplicity would do well to focus on the most likely scenarios.

3. Promote Text, Demote Data

For a tool to be perceived as being simple, it must focus on human needs. And humans do not think in terms of data. Humans prevalently think and operate in terms of text (see Verbal Communication).

Not surprisingly, both Ruby and Ruby on Rails seem centered around text. The users don’t have to go out of their way to explain to the tool whether certain snippet of text is meant to be a number, or a true/false flag, or a date, etc. The system is smart enough to figure that out. This deal frees up the users’ short term memory, allowing them to focus on more important things, such as articulating the rules, or the business logic.

4. Ease the Way to do Something in a New, Unanticipated Way

A complex tool can only be used in a certain way. And, needless to say, that way itself tends to be rather complex. Simple things, on the other hand, can be easily combined with other simple things and can thus yield a completely unanticipated solution.

Ruby and Ruby on Rails are perceived as being simple due to the fact that they don’t prevent users from inventing new, unanticipated ways of doing something. Because they are loosely coupled systems based on the communication protocols, users can repurpose the messages required by the protocol and in the process achieve new, startling results.

5. Alias the Behavioral Labels

Rigid tools require lots of additional training before one gets to the point of feeling adequate when using them. Such products are never perceived as being simple.

Flexible tools tend to be much more forgiving than the rigid ones. They don’t require intensive training, and allow their users to feel quite adequate even after the first couple of cursory trials. Such tools work hand-in-hand with the human users, leaning toward the human way of classifying and perceiving things.

One of the ways such tools achieve this is to introduce maximum leniency. This means that a particular behavior, such as supplying the quantity of constituent elements within an aggregate, usually gets labelled with multiple terms. This feature (also known as aliasing), allows human users to feel not so restricted by the formal constraints required by the tool. For example, if a human user wants to know the quantity of elements contained inside an aggregate, there is more than one way to do that. A user may formulate his question by asking for the size of the list, or asking for the length of the list. The question basically amounts to the same. And a simple tool is capable of understanding the question, regardless of the variety of ways it could be formulated.

Complicated tools are incapable of doing that. They are very adamant as to what they deem as being the only proper way of asking the question. As such, these tools drive an unforgiving wedge between themselves and the human users.

Ruby and Ruby on Rails are very lenient, and this is one of the reasons they are perceived as being some of the simplest tools out there. Both tools are designed to be cognizent of the directness of the ways human ask questions, but also take into account the unavoidable variety of linguistic constructions that may result from trying to formulate the question.

Any tool that aims at achieving acceptable levels of simplicity must take these idiosyncrasies into account. Humans have more than one way of expressing their desire to do what amounts to be the same thing. The leniency to understand that without encountering ambiguities must be built into all the tools, if a reasonable rate of acceptance is to be achieved.

Conclusion

Claiming that products that do some work on behalf of the user are the beacons of humane interfaces and simplicity may not be the best way to define simplicity. As discussed, there are numerous products that do tremendous amount of work on behalf of human users, and still such products are not even remotely close to being perceived as being simple, or humane.

Truly humane products that offer the experience of simplicity are the ones that have a designed-in sensibility to detect when to do the legwork on behalf of the user, and when to lay off and let the user drive.

Such a design is extremely hard to produce. In this article, we have discussed some of the factors that may assist us in achieving such design decisions. There are, of course, numerous other factors that are left unmentioned here, that may equally well affect the simplicity and the humaneness of the finished product. Discussions of these additional factors are left for some future posts.

Stay tuned.

December 13, 2005, 12:59 pm

What Makes Startups Start?

Filed under: Business — Alex Bunardzic @

Paul Graham wrote a significant piece on Inequality and Risk. His main thesis is that the sole motivator that is responsible for ensuring that the rate of daring, risky startups is sufficiently high is the prospect of getting unusually high financial rewards. Put slightly differently, the primus movens of all the startups today is the prospect of getting rich.

This I find utterly appalling. I’ve been involved in a number of startups, and while all of these ventures invariably had some key players joining in for nothing else but the prospect of monetary reward, most of the team was in it primarily for the buzz brought by the exhilaration that comes from sensing that one is doing something creative, something completely new.

I resent Mr. Graham’s absolutely unethical thesis that only big bucks can entice creative people to embark upon the startup venture. That’s utter baloney, and besides, the street level evidence does not support it one bit. Also, my own personal evidence goes against the grain Paul advocates. I’ve always been into startups only for the buzz of novelty. The money is usually to be found elsewhere.

So if that’s the reality of many startups, Paul’s main thesis that it is impossible to have technological advancements without harsh economic disparity is a load of bull crap. Boohoo for the pro-capitalist agenda.

Prime Directive

Filed under: Software — Alex Bunardzic @

Recent exchange with the end user experience experts made me stop and think real hard about the prime directive in software design/development. Like every other activity, software is a discipline that has its prime directive, be it tacit, or explicitly expressed.

I will now try to express what I think is the prime directive when it comes to designing/developing software:

Software products must be non-intrusive

Is that all, you ask? Well, pretty much. If a software product is not non-intrusive (which is just a roundabout way of saying that it is intrusive, that is, rude), so if a software product is intrusive, it will be not only useless, but potentially dangerous. Better not use it, then.

If a software product is not to be used, what good is it, then? So it follows that any software that does not obey the prime directive is a waste of time.

When I say that software should be non-intrusive, I’m not only talking about it not being unpleasant, rude, inconsiderate, etc. It is very important that you realize that I’m also talking about it not being pleasant, seductive, kick-ass. Both unpleasant and pleasant activities are distractive.

So we see that software should not be distractive. Same as a hammer should not be distractive. Building a hammer that is aesthetically so pleasing that one cannot take his eyes off it while trying to hit the nail is very disturbing. Better to make that hammer look ho-hum, and focus on it doing the best possible job at hitting that nail on the head.

So please spare me the sexy, seductive software experiences. Always make sure you give me a tool that’s going to make me hit the proverbial nail on the head, and then, as soon as I accomplish that, make the tool recede in the background. No big whoop, just a part of the daily job.

Is this too much to ask?

Dave Chapelle Endorses Radical Simplicity

Filed under: End-user experience — Alex Bunardzic @

Couple of nights ago, I caught the notorious comedian Dave Chapelle delivering his stand up routine in which he spoke passionately and convincingly about the need for radical simplicity. While talking about how most women are lamenting the death of chivalry, Chapelle remarked how it is they, women, who actually killed it. He blamed women-centric media (actually, women’s magazines) for writing phony articles about men and their needs. You see, women, said Dave, know absolutely nothing about men. And not knowing anything about the real needs of most men, they ruin everything by fantasizing about what is it that men truly want. These fantasies then get published in high circulation women’s magazines, which most women read and then form completely screwed opinions on how to deal with their men. Not surprisingly, this resulted in the death of chivalry, as men gradually shied away from the time tested principles governing the gentlemanly behavior.

Chapelle related how he recently saw a women’s magazine in his girlfriend’s apartment, which had the following headline on its cover: “100 Ways To Please Your Man”.

This is where Dave made his plea for radical simplicity. I’ll paraphrase here, but in a nutshell, here is what he said:

It is totally unreal to blab on about hundred ways to please a man. In reality, there are only four ways that a woman can please her man:

  1. Perform oral sex on him (Dave used a bit juicier language here, but you get his drift)
  2. Play with his testicles a bit (again, imagine a bit juicier language here)
  3. Make him a sandwich
  4. Talk less

So there you have it, in a nutshell, a radically simple list of only four ways a man will get full satisfaction from his woman. Basically, anything above and beyond these four activities will pretty much fail to impress most men. So, the advice is to stick with the radical simplicity and forsake all the unnecessary complications.

Software Should Not Kick Ass

Filed under: Software — Alex Bunardzic @

It is really refreshing to see the growth of the user-centric businesses and practices (Kathy Sierra’s Creating Passionate Users blog being one of the more notorious examples). After decades of almost complete indifference toward the end-user experience, software designers and developers are finally beginning to wake up from a dogmatic slumber and to realize what an important role their focus on end users can have.

But, at the same time, the hidden and ever present danger is that software designers and developers will, once again, get everything backwards. And, sure enough, we’re already seeing the signs that overzealousness and lack of experience is paving the way for intrusive, bull-in-the-china-shop type of mistakes.

Take for instance the above mentioned blog on creating passionate users. While the posts are loaded with all kinds of user-centric graphs and equalizers, making Kathy look like a purveyor of highest possible quality of the end user experience, what it all boils down to is one profane statement — according to Kathy, user-centric software should ‘kick ass’.

This is just one example how easy it is to slip into the over-the-top zealousness when recommending ways for solving the human-machine barrier. And, goes without saying, of course, that Kathy did this in the spirit of best intentions. But, as the saying goes, the road to hell…

One thing should be clear to all software designers and developers — software should never kick ass. Unlike other things, such as a fancy meal, or a good movie, or a great book, or a smashing CD, etc., software should simply serve its users. No more, no less.

While it is absolutely desirable to have a kick-ass experience from a delicious meal, or from having sex with the person you love, etc., it is down right ludicrous to expect to have a kick-ass experience from using a utility. And software is just that — a utility. When I flip the switch on the wall, I make the light bulb turn on. That’s a utility. Having the light fill out the room at night is an awesome utility. But it should never kick ass. Such experience is a preamble for other, more substantial, more enjoyable experiences. These more enjoyable experiences should kick ass, but not the basic infrastructure related experience. If I warm up my meal in the microwave oven, that’s a utility experience. But it should never be a kick-ass experience. A meal I’ve warmed up in the microwave oven should, by all means, be a kick ass experience.

Same is with software. Software products are there to serve us. They are there to enable us to have some kick-ass experiences. But they should never steal the show. Software is not there to be in our face type of an experience.

December 12, 2005, 3:09 am

Lessiness Is A Virtue

Filed under: Zen — Alex Bunardzic @

I still remember how stunned I was when, as a young lad, I first read the software development adage that laziness is a virtue. My upbringing made me want to jump up and protest (I was brought up to believe that only hard, industrious work counts), but my irreverent, subversive side felt like shouting hallelujah!

We all know the true virtue of laziness in the field of software development. But there is another, equally important virtue that pertains to that field. I call it lessiness, as a shorthand term coined to represent the famous less is more principle.

Less or Fewer?

When it comes to the less is more principle in software development, most people appear to be completely confused. To begin with, almost everyone seems incapable of discerning the difference between less and fewer.

Here is how to easily clarify any doubts: if you’re dealing with some kind of enumeration, such as a list of business opportunities, then lowering the number of those will result in fewer opportunities (not less opportunities). But even if your list of opportunities gets reduced to fewer available ones, that doesn’t mean that you are faced with less opportunities. As a matter of fact, you could be looking at more opportunities precisely because of the virtue of reducing the number of opportunities (i.e. having to deal with fewer number of opportunities).

The Advantages of Lessiness

We live in the world of inertia. More than a hundred years ago, our civilisation entered the age of industrialization. Gradually, this model penetrated all areas of our lives. Today, when we have left the age of industrialization and moved into the new, still nameless age (some call it the information age), we still retain all the traits that used to be valued during the industrial age.

For instance, one of the traits that was very valued in the old industrial days is busy body. There was a time when it was extremely important to look totally busy, all the time. These were the days of crude utilization. These were the days of “Jesus is coming, look busy” slogans.

Today, we are slowly starting to realize that there is no room for the busy bodies in our economy. Busy bodies are a nuisance, same as the insincere your call is important to us has been identified as the last beacon of phoniness and corporate dysfunctionality.

So less busy body is definitely a virtue.

Rather than spelling out everything else pertaining to the lessiness is a virtue principle, I’ll leave it up to you and to your imagination to fill out all the remaining spots. That will hopefully give you the right orientation for understanding the true value of the less principle at play.

Open Source Is Better

Filed under: Software — Alex Bunardzic @

Many developers get upset when they hear that open source products are deemed as being better than closed source ones. They self-righteously point out the indisputable fact the many open source products suck. And if so much of the open source stuff sucks, how can we say that it’s better?

It is obvious that there seems to be some kind of misunderstanding regarding the desirability of open source movement. I think it is important to clarify this confusion, in order to be able to utilize the best that modern software practices can offer.

When we claim that open source is generally a better practice than closed source, we are not saying that software, developed under the banner of open source, is always and necessarily of higher quality than software developed under the vendors’ cloak. There are numerous instances of fairly high quality closed source products, as are there numerous instances of lousy open source products. That’s not debatable. What is debatable, however, is the fact that closed source products, even brilliant ones, are a dead end. Committing ourselves to running our business on some closed source products is foolish, because even though these products may work great at the present moment, there is no guarantee that they will continue doing so down the road.

I have personally been through a number of disasters that resulted from a healthy closed source product getting purchased by a bigger vendor, and then abandoned by the waysides.

The open source community offers the way out of such death trap. By choosing an open source product, we are ensured that any future challenges will not ensnare us. In the worst case scenario, we will have the source code at our disposal, which we can use to fix/make the necessary transition out of trouble.

Another typical misunderstanding regarding the open source community is that it is reserved only for certain languages. Nothing in the open source model dictates that only certain languages qualify as being kosher. Any language will do, so long as it can be deployed on a non-proprietary technology stack. In this respect, only languages such as Visual Basic and C# do not qualify as being good for writing open source products.

December 11, 2005, 9:16 am

Is It Important That Users Kick Ass?

Filed under: Web 2.0, Design, End-user experience — Alex Bunardzic @

Recent blog post by Kathy Sierra (Have you updated your buzzwords?) ends with a simple question: “Tell me how this thing helps the user kick ass?” Ostensibly, she throws this questions out to all the entrepreneurs who are riding the new wave of social software (sometimes dubbed as Web 2.0). Kathy’s final verdict? “If you can’t answer that, don’t bother launching your power point.” Dayem!

But the rather problematic thing is that she never explains why is it important that users kick ass? And whose ass are they supposed to kick?

Changing The Sink Point

Up until recently me and most of my software development colleagues have been toiling under the assumption that the final destination, the final sink point that consumes our products is an individual user. Sort of like a book is being consumed by a lone person, tucked away from a busy flow of workaday life. Or how a film, or a TV show is being consumed by an individual viewer. Software products, too, were built with a lone user, a lone consumer in mind. This lone user is the sink point of the whole activity.

The rapid spread of the internet suddenly changed this arrangement. Instead of retaining the single lone user as a sink point for all the products and services offered via the web, this new arrangement turned the tables and made the group, the collective the sink point, the final destination that consumes products and services.

This is a very significant differentiation, the one Kathy is apparently not cognizent of.

Why Only Now?

Yes, you may say, but the internet has been with us for many decades. Why did we start doing social software only now?

The simple answer is — critical mass. Up until recently, only the elite segment of population had the unencumbered access to the internet resources. And the size of that population wasn’t sufficient to cause the mechanisms of collective behavior to start firing on all cylinders. We are still far off in that regard, however the first sparks have started to fly in the past year or so.

The awkwardness of the clash between the potential and the actual in this arena is best seen when looking at the tool we are using to access the web. The browser — what an anomaly! Web was never conceived with browsing in mind. Instead of viewing the content through a transparent, unbreakable glass pane, the true nature of web is to facilitate participation. And it is absolutely impossible to participate by browsing.

Web Participator

While we’re waiting on some ingenious entrepreneur, or some progressive-thinking open source collective, to conceive of, devise and implement this new generation of tools (web participators) which will replace the antiquated browsers and relegate them to the museum of dinosaurs, we can begin our conversation on what kind of empowerment should these new tools offer. Kathy Sierra advocates the ‘kick ass’ litmus test. I’m worried that this test is potentially very fallible, very inconclusive.

Suppose I was in position to offer a very advanced solution (such as a full blown web participator) which will deliver the punch and help its users kick ass. But suppose that I develop such a tool specifically tailored for people such as Saddam Hussein, or Adolf Hitler. Now, we know whose ass would these people start kicking once they lay their hands on some such hypothetical tool.

So, if it were up to me, I would abstain from delivering something that lets the users kick ass.

David Heinemeier Hansson is another colleague of mine with a similar mindset. Right now, he is in the position to deliver a solution that could help his users kicks ass. But he adamantly refuses to do that. Why? Because he advocates software that’s opinionated. In other words, and in his particular case, he refuses to build software that would kick ass by blowing the whistle on people.

If David were to listen to many of his paying customers, he would increase their ‘kick ass’ factor and make it jump through the roof by implementing the much coveted finger-pointing features in his project collaboration product (Basecamp). But he openly refuses to accommodate such unethical requests (’software should serve people, not spy on people’ is what I believe David is trying to say).

That’s why I believe Kathy is way off in her ‘kick ass’ manifesto. Individual users and their individual agendas are less important than the community centered benefits.

December 10, 2005, 4:28 am

Why Education System Sucks

Filed under: End-user experience, Art, Business — Alex Bunardzic @

I gave this article (written by Paul Graham on education) to my son, who, after reading the first two pages, became so agitated that he lamented: “Boy, this is so good, I am upset that it’s only twenty or so pages long. I’d like it to go on forever!”

He then proceeded to explain how he’s going to promptly distribute copies of that article to all his friends, even to his former teachers. But then he stopped, and asked the crucial question: “But why did the authorities ban Paul Graham from delivering such a marvellous, such a useful speech?” (Paul explains in the introduction to his article: “I wrote this talk for a high school. I never actually gave it, because the school authorities vetoed the plan to invite me.”)

I knew then that it was time to put on my intellectual Superman cape, and take my son for a ride through the history.

Education Is Reactionary

Listen son (this is me talking to my son as I was pulling up an armchair), each civilization, each culture, has a unique education plan, a unique education agenda. This agenda is typically driven by the economic forces. For example, in the age of industrialization, when the bulk of the economic activity was focused on mass producing mechanical goods, the educational agenda was to churn up as many mechanical engineers as possible. This was needed in order to fulfil the demand for the new job openings in the field.

In the age of building grandiose edifices which would glorify the church as being the sacred place standing for heaven on earth, the educational system used to favor construction skills. Generations of solid builders used to be produced via such educational systems.

Also, in the age of telecommunication, the educational agenda gets skewed toward producing communications experts. And so on, and on. So, you see, it’s mostly that education always seems to be at the very tail end of progress, covering the areas that have moved from being the leading edge venture to becoming a run of the mill mainstream venture. In that respect, education is reactionary. It is almost never proactive, or revolutionary.

Education Is Stale

Because of such subservient place in the overall scheme of human activity, education tends to foster stale and stillborn attitudes and practices. Instead of encouraging exploratory behavior, it enforces coagulated, ossified ritualistic behavior. Instead of emboldening open communication, it insist on vacuous ceremony.

By the time certain significant breakthrough becomes massively accepted, it is already too late to get into it. However, it is precisely at that point that education feels emboldened to embrace this ‘new fangled’ way of doing things. So it starts teaching children how to do something by the time this skill is slowly becoming obsolete.

For example, less than ten years ago no university was teaching how to develop applications using Java. Today, when the universities are finally getting to the point of opening up their curriculum to Java, it is already too late, because the next generation of business applications will be written in Ruby on Rails (which no university teaches today, of course).

So, it is hard to resist the conclusion that education kind of sucks, that it is just this make-believe system put in place to satisfy some superstitious urge for obeying the ceremony, obeying the ritual.

And if you want to really accomplish something, do as all the other notable people did — learn it yourself. Do what Van Gogh did, what Mozart did. Go at it with gusto.

That’s what Paul Graham was saying in his speech, and it is exactly because of that subversive edge that the education authorities vetoed his appearance.

Next Page »