Software interfaces are sexy

 I stand fast with my technological point of view that no solution will succeed without having an established interface. I tend to leave some of Bill Gate’s creations out of the mix because monopolies don’t play by the same rules as the rest of the world. I’ll also eliminate very small niche software. These tend to do a very specific task and have a very specific audience. The down side of a niche product is it it can easily be replaced. For that reason, I’ll leave these out as well.

The interfaces can take on any number of implementations. Lotus 123 supports macros. Photoshop supports plugins. Google Maps has its a JavaScript API. MySQL can be accessed using PHP interfaces. IBM Lotus Connections uses REST. Other products leverage RSS, Atom, and publish AJAX and REST mechanisms.

There are two types of interfaces - “service interfaces” and “user experience interfaces”. An example of what I mean by a service interface would be ‘creating a blog entry’. Another example would be ‘map a location’. An example of a user experience interface, as I define it, would be ’skinning WinAMP’. Another example would be ’a theme for WordPress’. Before we go on, I should admit that a WordPress theme can go well beyond just “look and feel” to include new functions. In this case it becomes a combination of both “user experience” and “service”.

Interfaces make the fundamental assumption …

You never know everything your customers want to do.

If you support the right interfaces, “not knowing” is “no problem”. More importantly, “not knowing” allows your customer to surprise you (in a good way). The trick is providing stable interfaces and listening to your users - they will tell you what interfaces to expose !

Dave Winer recently blogged about closed systems …

… these things point in one direction, esp Facebook. Closed systems are fine in the early stages of a new technology. They’re the training wheels for a new layer of users and uses. But, as we always see, the training wheels eventually come off, explosively, creating new systems … an explosive unbundling of the services that make up social networks. What was centralized in the form of Facebook, Linked-in, even YouTube, is going to blow up and reconstitute itself.

Source: It’s time to open up networking, again (Scripting News)

I’ve been on both sides of the “interface debate”. As a software developer, I struggled with creating “enough” interfaces to enable a wide variety of customer solutions while not making the interfaces overly confusing. As and end user, I used a number of interfaces.

When an interface impedes my ability to create a solution or takes more than a day to be productive, I throw it out and find something else. I have no tolerance for things that make me less productive rather than more. I think this is why there are more creative solutions being launched when the interfaces are exposed in scripting languages like PHP, JavaScript, and PERL and Internet interfaces like CGI, Web Services, REST, and AJAX. These methods are faster to adopt and require less “infrastructure” than the Java and C++ based solutions of the “heavy hitters”.

How many mashups would there be with Google Maps if you had to program in Java ? How many deployments of Wordpress would you find if it were written in C++ ? How about databases ? Would startups built on Oracle or IBM DB2 or MySQL ?

Price aside, easy deployment and interfaces weigh heavy on the choice.

Comments are closed.