During the Agile 2007 conference, Shyam and I were preparing for our experience report presentation. While we wanted to focus on preparing our presentation, we could not get our hands and minds off the burning topic : “Is Enterprise application the right approach or should we focus on really small, focused applications, which do one thing well?”
Both, Shyam and I have had some really bad experience with the whole enterprise solution/architecture crap. Trying to integrate all the small little focused apps into one gigantic piece of application just seems so nice and beautiful on paper. You can also easily convince the CIOs and CFOs that this is the silver bullet and it will save the company millions of dollars. I’m sure the enterprise product vendor companies can come up with tens of millions of reasons to reassure them that this is the best solution (just that there is a little learning curve).
With my experience of building really large scale enterprise applications, I have concluded that “Enterprise Applications are Dead”! What we really need is small, well focused, single responsibility applications which does one thing well and that’s all they do. It just feels so easy to maintain them and migrate them to new technologies as time passes by.
Look at all those large enterprise applications. First of all, they contain tons of features which no single user will ever use. Some of them even collapse and die under their own weight. Secondly, the fact of life is, they get old and have to be migrated to new technologies. Guess what? When you have to migrate them, you end up with a 5 year migration project which takes millions of dollars. Also consider the amount of hardware, software and experts you need to maintain this monster. Now really think about the benefits. Aahhhh….well….don’t take your anger out on the monitor or the keyboard.
Look at companies like Google or Yahoo. They don’t have large enterprise projects. They have a lot of small little apps, that do the job. Some of them don’t even have the same look and feel. But guess what, functionality is more important than all the make up. One could argue that these apps are not data centric, which most enterprise apps are. I agree. But, really how much of a difference will it make? Also do they really have to be on one database box or they can have their own instance of database. Again, we at least need to think about these rather than just having the herd mentality.