We’ve got five years — my brain hurts a lot
We’ve got five years — that’s all we’ve got
One of the arguments I often hear raised against Dreaming in Code’s contention that “software is hard” is what I call the “Web apps solve all our problems” stance. In this view, the Web 2.0 wave is not just about user convenience and nimble companies — it represents the final triumph over the beast of software-project delays and headaches, thanks to the ease of prototyping, the fast upgrade cycle and the tight feedback loop of user input characteristic of this approach.
No sane observer denies the importance of this trend. But I’m always a little skeptical of the pollyanna-ish view that moving our software onto the network and into the browser puts all of our old problems out to pasture.
Tonight as I caught up on my feeds I noticed two items from TechCrunch that resonated. First, Yahoo has taken its revised Web-mail interface out of beta, after years of development. (Farhad Manjoo at Salon’s Machinist has a good review.) Yahoo’s new mail system is based around that of Oddpost — a small startup that pioneered the “Ajax”-style Web interface back in 2002 before being acquired by Yahoo. I remember looking at it then and thinking, wow, this is a big deal. And it was, as the concept of updating data within a browser window without refreshing the entire page quickly spread over the next several years. But it took Oddpost from 2002 to 2007 to mature into Yahoo Mail.
Meanwhile, another key Web application that started up only a little after Oddpost, Bloglines, has introduced the first major upgrade to its interface since — well, since it began. Bloglines got acquired by Ask Jeeves years ago, and has had some problems keeping up with its masses of users and data. Even now, its new design — which looks very nice on first glance — is just entering a beta phase.
Put this together and it sounds like, after the phase of “gee whiz, we got a great idea, let’s buy a domain name and put it out there” — once reality kicks in — major Web applications have an upgrade cycle of once every five years or so. Small startups get acquired and face organizational integration challenges; small applications face the uphill struggle to scale for masses of users; and services sit through long “beta” periods to test interface choices, iron out bugs and see how they can handle running under load.
I’m not knocking Yahoo Mail or Bloglines here. But this is sobering data for those who argue that the advent of Web-based apps and services drives a silver bullet through the heart of software’s problems. Five years is no sprint. Funnily enough, it’s roughly the timespan of Windows Longhorn/Vista — or Chandler, the program I wrote about in Dreaming in Code.
[tags]software development, web 2.0, bloglines, oddpost, yahoo mail[/tags]
Post Revisions:
There are no revisions for this post.
Taking five years after launch to ship 2.0 (and in the meantime growing like mad and gaining the experience of supporting all those users) is far better than taking five years *before* launch.
Also, it’s not really a five year upgrade cycle. It’s very unlikely that there was any five year project to ship 2.0. Much more likely that they added features to the original software until this became too difficult to do, and then started on 2.0.
If the basic design supports five years of incremental development before a rewrite is needed, is that a success or a failure?
I believe myself to be sane (but then don’t most insane people), yet I’m willing to at least partially deny the notion that “Web apps solve all our problems.” I’m currently managing a project that will use a browser-based front end, and it’s kind of a nightmare. We normally use a fat client approach to our enterprise software, but for this application, we decided to try an Ajax approach because we needed the flexibility it will give us.
We’re within a couple of months of being done, and I don’t think it has taken any longer than a fat client approach would have taken, though it hasn’t been any faster either. But my biggest concern at this point is the maintainability of the application once deployed. Its logic is dispersed among Java files, JSP files, JavaScript, and XML files, and changes in any of those places can break logic in others, sometimes in very subtle ways, and there’s no IDE or other tool that will keep track of that the way that can now be easily done if all of your code is, say, Java. There is as yet no mature development environment that enables robust, reliable development and enhancement across even medium-sized development teams.
Yes, the Web 2.0 approach can offer the advantages you cite in your first paragraph, but an enterprise-ready development infrastructure hasn’t evolved around it yet. The good news is that this is a problem that’s affecting a lot of organizations and developers, so I don’t think that evolution will take long.
Brian — I’m not arguing that it’s a failure at all; just observing that the cycle seems to be a lot longer than the optimistic conventional wisdom. Even if you slice off some years for “adding features without a 2.0 product plan”…
Morgan: better tools will of course help, as always! For what it’s worth, the “sane observer” comment was about the importance of the browser-based approach; I think it’s perfectly sane to argue that the approach doesn’t “solve all our problems” — this is in fact my position, and of course I’m fully and entirely sane :-)
Scott,
I finished your book a little while back and its right on. Software is hard, web or client, it is very, very hard to do well.
I think the reason for apps succeeding is not that they are supposedly easier to build. Software is still hard. What is so different about web apps is that the web atomizes software. A web app only has to do one feature really well. Users are able to easily combine the best web apps for their needs since the web allows frictionless access to endless apps large and small. Desktop apps on the other hand need to be feature complete as there are no other options to solve a need not addressed since a desktop will usually only have one product per function. What that means is that a successful desktop product might need to have ten or twenty times the features of a web app. That increase in complexity is a big deal. The more complex software is, the more likely it is to fail.
The web is like Lego’s; each app is a brick that can be used with other apps. Desktop apps are like a car; lots of moving pieces which all must function perfectly together.
Maybe the dream of object-oriented programming is truly happening on the web? Now if we can only figure out a way for the data to flow between web apps…
I think you’re missing the boat here. The ‘2.0 version takes 5 years’ is a complete misunderstanding of the situation. Remember, UI is a small fraction of the total application (20% for an app like bloglines?). In the world of packaged apps the pressure was on to ‘freshen’ the UI with every release so that the ‘improvements’ in the application were visible to the end users. So bloglines spent five years making their software more robust, more scalable, more reliable, and they added a few new features (you can subscribe to a feed for package tracking for example, that wasn’t possible five years ago). Then about a year ago they decided (probably right after google reader shipped) to refresh the UI. So now, five years after the last major UI change, they update their look and feel, and the marketing folk say ‘hey, lets call it 2.0’. Here’s my question for you – is it any better? Sure, it looks nicer, but i’ve had the choice of going to Google reader for at least the last year, but i kept coming back to bloglines. Why? To be honest, i’m not sure, but its not because the UI was prettier :).
Lee, I think what you’re saying is consonant with my argument here. “…Bloglines spent five years making their software more robust, scalable, reliable” — that’s my point. That’s the stuff that eats up enormous amounts of any development process. Simply being a browser-based app doesn’t exempt you; if anything, it might make that stuff more time-consuming. For what it’s worth, I switched to Google about six months ago, but now I’m weighing giving Bloglines another try…
But my point is that its not a 5 year ‘upgrade cycle’. Things are getting better over time. Joel Spolsky says that ‘good software takes 10 years’. I don’t think the web has changed that. Its just a question of what the user experience is – continuous minor improvements vs occasional major upgrades. Its a process, not a ‘cycle’.