Working for the computer

June 5, 2009

in HCI,software development

A friend emailed me yesterday asking for a book recommendation so he can learn to write a webpart he needs for work. My immediate thought was that there really isn’t much to writing a basic webpart (which is all he needs), the complexity is more in getting it packaged up and deployed correctly.

Especially when one goes beyond a simple webpart and starts building custom site definitions or complex features with supporting files, for example, there is quite a bit one has to know about packaging and deployment to get one’s work onto the servers and functioning. Yes, there are some good walk-thrus, and tools such as WSP Builder and STSDEV, and yes, there are custom Visual Studio templates that will automatically create the various folders for the 12 hive. As with most things computerish, however, these are tools to help one deal with the complexity, not tools that eliminate the complexity.

As a developer, I certainly need to understand the SharePoint object model in order to write code for SharePoint. I shouldn’t, however, need to think about the 12 hive and its various folders, or deal with feature files, or editing ONET.xml, or any of the raw details of how SharePoint manages the various resources. My computer shouldn’t help me tackle complexity, it should eliminate the need for me to deal with the complexity at all.

A SharePoint list is a good example. If you’ve poked around in the databases at all, you know that a given list is pulled together on the fly from a bunch of individual bits of data that describe the list and its fields and the attributes of the fields and the event handlers that are attached to the list and the ACLs on the list, etc., etc. But as a user of the list, I don’t need to know any of that, I don’t have to deal with any of that, I could, in fact, have a completely wrong idea of how the list actually works, and I could still go to the settings page and do pretty much everything I need to do to create a custom list, change fields, modify views, etc. The SharePoint interface shields me completely from the complexity of the underlying system so that I can concentrate on doing *my* task rather than all the supporting tasks that the system requires.

Obviously writing software is more complex than creating a list, and has more moving parts, but still… I think we *expect* some things to be complex and because we expect it we don’t bother doing anything to tackle the complexity.

When I want to check the weather on my iPhone, I tap the weather icon and a screen opens up showing me the weather forecast for the next several days. I don’t have to know that my phone is connecting to the Internet and opening an http connection with some web site to get the weather data. I don’t have to know where it is getting the data from.  And I don’t *want* to think about those things. All I want is to know the weather forecast, and the app gives it to me without making me deal with any of the underlying complexity.

Sure, that’s an overly simple example, but it is a lot closer to what I think my systems should do than what they actually do. My computer insists that I give things names, that I tell it where to put things, even that I put things where it wants them to be. It expects me to understand what it needs in order to accomplish a task and to satisfy those needs, instead of just doing what I ask and not bothering me about the underlying details.

One of the Natal videos has a bit where the user draws a picture on a piece of paper and shows it (literally) to the system. The system immediately has a copy of the drawing that it can interact with and react to. No need for the user to figure out which application to use for drawings or what image format the image recognition system requires or any of the details at all. Just “here’s a picture, work with it.”

That’s the way a lot more of our systems should work. My computer should be working for me, not me working for it.

{ 1 comment… read it below or add one }

scott June 5, 2009 at 10:07 pm

There’s a lot about computers that assume we need to know a lot to use them. The whole malware issue on windows is a nice example. People who don’t know about security get infected. I’ve had to help some of those people get uninfected.

Unfortunately, the same people who brought you the Natal demo also brought you a lot of the complexity, or at least the attitude that “that’s just how computers are.” I get that from PC users a lot. I don’t like it. I don’t accept it. And I don’t care if it’s a PC or a Mac that makes me work too hard, it ticks me off.

BTW, cool as the Natal thing was, a lot of that is also being worked on by other people. Just ask yourself if Natal is the next Microsoft touch sensitive table, or if they’ll actually ship something someday. Who knows.

Leave a Comment

Previous post:

Next post: