Monday, April 28, 2008

Three Web Trends to keep your eye on

Trend #1: Do one thing and do it well.

In developing web apps, translate: "Replace feature-bloat with KISS and Integration." I learned this lesson in two or more areas of life separately and realized it's a global principle. The same principle was learned in the Industrial Revolution (throughout the 1800s) -- each worker can excel at making one simple part with a high level of quality and consistency, and the product can be put together with these many parts. Of course leaders of people know this same principle -- when each person has their tasks well-defined and knows how to accomplish them efficiently and excellently, there is little limit left as to what can be accomplished.

Why do I call this a trend? You've heard of the "KISS" concept -- Keep It Simple, Stupid. The more I use the internet (and I'm sure it's not just me), the more I find it's the simple services that are the most useful. The ones that simply do one thing for me, but they do it well, keep it succinct, stay out of the way and let me do my thing, not trying to do more (or make me do more) than I want. Gmail -- have you noticed that of all things it could be, it's remained ONLY an email service? All of the energy and effort has gone into making it easier to use, more intuitive to operate, and staying out of your way. Any extra tools (contact groups, etc) are kept in the toolbox, not in your hand.

This is also a psychological thing. People will come to your web app and think, what is this service? Notice: They don't think, "What can it do for me?", they think, "What need do I [already] have that this service can fill?" And then, "Is it worth the trouble?" This last question I don't think I've heard enough in a developer's evaluation of a web app. Some services are killer, the interface beautiful, the monetization simple and invisible, even the solution simple; but if it's not worth the trouble of using the site, the service is worthless. How can we navigate this psychological narrows? Make your app do one thing and do it well. Advertise the one thing it does. Feature-lacking? Open an API and connect with other sites. Add functionality by making separate and distinct web services yourself, and connecting the two. (If you own them both, of course you have advantages for integration, but do keep them separate and allow them to perform their distinct service to the world independently.)

Trend #2: Users are beginning to take Integration for Granted.

In practical terms: "Integration is Key. Do it."

In this wonderful world of online applications, this is something that started out as cool and somewhat helpful and has grown to something that is necessary to forward movement. The world of online applications must start to link arms in order to grow. Many of these simple applications (as following Trend #1) are so good on their own, but we all know they'd be even better together. Thus the word "Mashup" was birthed. Mashups combine two or more services into one to provide a more valuable service. That's great, but it's not the integration I'm talking about. I'm talking about in-app integration -- like access to your gmail contacts from gcalendar and gdocs. There's a really useful tool called "Presdo" that recently was publicized, that can export to several calendars. Real integration would mean any user can voluntarily "add" presdo data to their calendar app -- no matter what calendaring app they use.

But there's a problem. Integration is hard. Yes, most of my work in programming has been focused on integration of systems, migrating or communicating data, etc. I still say integration is hard. Why? Because 1) everybody manages a different type of dataset (one manages a calendar, the other manages a todo list), and 2) everybody organizes their data differently. It would be nice if everyone could structure their data the same way, follow global naming conventions, and provide the same API; but people also use their data differently, and some structures are more efficient for certain purposes. What I'm saying is, everyone's underlying data structures will always be different, and integrating systems on this level is hard; BUT the last idea, providing the same API -- or at least API language -- is not impossible. We already have standards such as XML and JSON that allow us to at least speak the same language. The same language for data. In the database world, we have SQL as a sort of standard -- it's a language that has been devised that very elegantly handles requesting specific data. But in the web world we have no standard. Communicating app-to-app is a new thing, and this new "language" will soon become necessary. It becomes evident with the somewhat recent birthing of "DataPortability" that we are on this path -- the prerequisite step of making our data usable to others in a secure manner is being finalized, and the step of standardizing how we communicate about this data is the next. Everyone who creates an API has to make up their own language, or set of request url's and query-strings, to communicate what data is being requested. We need a standard.

I'll post about this point further soon, and I think I'll entitle it, "He who will not work shall not eat."

Trend #3: Integration Bloat.

Wait a minute, you say. Isn't that contradictory to what you just ranted long and hard about? No, what I mean by "Integration Bloat" is what you get if you misuse the above principle. Users are beginning to take Integration for Granted. Think about this: What if Subway tried to convince you that they were better because they have mayonnaise? That would be ridiculous -- of course they have mayo. It's the same for web apps. We're coming to the point where I really shouldn't have to choose my favorite application based on who they connect with. I should be able to expect that they will integrate with other sites. Plaxo is an example of a failure here -- I don't know why they exist anymore (as in, what their focus is) because they accent so heavily on all their integrations. If they showed me one good reason to use their site, only ONE THING they do better than anybody else, I'd be likely to use them. But their integration bloat has gotten proud of itself and starts to get in the way.

(These trends are all related.)

Just a note on the topic of trends in general: these trends are all related. One gives birth to another, and the existence of one causes others to exist as well. Think just a little further and you will see connections between these trends, their parents, and the postmodern way of thinking that we live in. The good lessons from our culture we can apply to programming. The bad lessons we can learn from and fix. And if you haven't noticed it already, the postmodern mind is probably the first whose way of thinking has been primarily influenced by the paths of technological development. Things like wikipedia have both come from and contributed to the postmodernist's belief that the majority is right (and not because they choose the right thing but because they are the majority). The blog has both resulted from and fed back into the idea that we all have the right to express ourselves to the public at-large.


Please feel free to post comments, longer comments, or link to a response post on your own blog.