I recently noticed more and more often how badly applications within the typical large-scale enterprise suck, and how much they would profit from some basic Web sanity applied to them. But for some reason, many enterprise software developers, whether they’re working with the .NET platform or with Java (more common among our customers), still believe that their software is different from what people use on the Web.
I’ve become convinced that you need something like an Eclipse RPC or Swing app only in very exceptional circumstances, most of which are usually not there in typical enterprise apps. The benefits of being able to centrally change something without having to deploy some sort of client alone usually outweigh any perceived or real disadvantages. But even if you don’t care about this aspect (because of the super-smart software roll-out solution you have), I still think that there are many more benefits of building Web apps:
- Your users probably don’t care much about the things you think they do. They basically want to find information, enter some data, hit a button, enter some more data, and be done with it. They don’t care about being able to use the right mouse button, don’t care for dragging and dropping things, and entirely happy with a pretty basic design.
- Even if you want to add some of these things, there are pretty easy to do nowadays with simply CSS and Ajax magic (no need for anything fancy like Air or Silverlight or Flash)..
But even if you buy into these arguments, many people still build Web apps that suck. Both within the enterprise as well as on the Web, I think good Web apps expose some, or ideally all of these characteristics:
- There are meaningful “entry points” into the app - URIs. (No, I’m not going to mention the R-word.) It’s simply entirely unacceptable for a Web app to expose only a single URI, break the “Back” button, and disallow linking. Frameworks that don’t support URIs for application concepts, such as every customer, order, contact report, document etc. should simply be banned.
- Application boundaries are a concern to developers, not users. The Web is about linking stuff together, without any concern about application boundaries. There’s absolutely no reason why you shouldn’t be able to follow a link in your CRM application that takes you to a product page in your online catalog, or from a customer record to the information about when they last logged in to the Web site, or from a page that’s part of a complex business process UI to the appropriate documentation and on to the discussion group where you can tell everybody how much it sucks.
- Documents are accessible in a standard way. The idea of accessing any kind of document, such as an insurance application form that’s been scanned in, a letter sent to a business partner last year, or a contract with a business partner, by any other means than an HTTP GET is just stupid.
In other words: Many web frameworks, especially those within the Java space, try to support the development of desktop applications that are delivered over the Web as opposed to “web sites”, and I believe this idea is deeply flawed: Any Web application should be measured against the criteria that are used to judge web sites.
If you are an enterprise developer building applications, I suggest that you consider turning them into web sites instead. Why not do what makes your users happy for a change?
Very nice article.