Skip navigation

Computers are not perfect tools. They are not direct embodiments of thought. They are just tools.

While seemingly not a world-shattering conclusion, this tacit assumption might be the basis for many developments in the last few decades of computer history.

In fact, Microsoft’s approach to the development of software (in stark opposition to some competitors) seems to have been to just keep adding features instead of trying for perfection of it’s overarching system structures. In a sense, Microsoft has been “worse is better” since the beginning.

If computers are not perfect tools, it makes sense to have extensive, complicated libraries, for example, that instead of enforcing “the right way” have all possible workarounds and options and hacks and tweaks you can imagine, in a chaotic pattern sometimes but nevertheless containing every possible function that a developer might wish for.

This will, obviously, mean that no one really knows all the workings of the thing, but everyone finds his own way to work with it.

And what i mean is that it is dirty and professional at the same time. It makes completeness impossible, for it is so entangled and intertwined that you can’t even formalize what are the completeness conditions, but it also makes incorrectness manageable.

So for example, Microsoft Word can’t be said to be a “perfect” text-processing system, but it definitely does a lot of things and in the end almost anyone can come around to processing texts in it. In fact, you can’t even say exactly what Word should do that it doesn’t or what amongst the things it does is “not text processing”. It’s a big, sprawling, set of things. So much so that in the end Microsoft had to create the “ribbon interface” that is supposed to make the program easier to manage.

It is a tool to allow us to use another tool!

The implicit realization in all of that is: even a complete, simple and mathematically-proven-correct algorithm is just a tool, it is not perfect. It is not a perfect solution to the exact problem, it is just a procedure that has useful effects. And the usefulness of effects is largely independent of both correctness or completeness.

That is why it still makes sense for Microsoft Office to have way beyond 10 times more so-called-functionality than anyone can use realistically (i.e. feature creep). That is also why it makes sense to simply keep throwing more hardware at performance issues.

And Microsoft has almost always treated developers well. Hymns might be sung over this or that widget toolkit, but Microsoft has always been keen on feeding well it’s developers.

{In fact, it is a curious thing that many of Microsoft’s first products were actually language interpreters, mainly BASIC, of course, but there is an interesting symmetry in that maybe you can view the OS as a set of helper-libraries for the developer, but i digress…}

In this sense, Microsoft’s approach to computation is more akin to PHP (just bundle a lot of things and add glue code until it is outputs something useful!) than Python (which has just one way to do things!). It is more R2D2 than HAL (and yes, it also has a tendency to go 3PO, right?).

But the curious thing is that, for exactly the same reason, now it is a better bet to go for leaner, cleaner, lighter approaches.

As the Office-Ribbon thing makes clear, the amount of complicatedness of the overall system has undermined it’s complexity. In other words, there is so much stuff around that putting to use stuff that was unused is paying off better than creating new stuff. To the point that the new stuff is just meta-stuff. This trend seems to be manifesting itself in actually some pretty diverse places and guises.

I actually believe that we might see some new trends, some things that go in directions unexpected, like the less-powerful notebook and so. With a bit of luck maybe even (my personal grail) the less-cool looks might come to pass ;-). But i am not making any predictions here!

One way or the other, the basic idea remains as valid as ever: computers are just tools. And not perfect tools. Now how that interacts with our present system is a very, very good question.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: