Friday, September 30, 2011

The concept of Mini (& Lean) Apps


After I installed the app from my bank on my phone, I never went back to the website to access my bank account. Even if the computer is in front of me, I still prefer to pick up the phone. The cell phone app from my bank is much more practical, concise and objective.

Why don't we follow the same principles of a mobile app for web sites? This is the idea of ​​Web Apps (see also http://en.wikipedia.org/wiki/Web_app).

My bank's website today is a white elephant. It has a lot of information and functionalities, but it gets all mixed in navigation. I can do almost everything on the website that I could do in the bank agency. In terms of availability, this is a great advantage. But by the side of objectivity, excessive opportunities are harmful.

Note: I'm a client of several different banks and their websites all have these same characteristics.

I'm advocating here the transformation of enterprise applications into several Mini Apps, with very practical goals, performing very specific tasks with simplicity. The users set up and work in their browser or their desktop the most common tasks, when needed, if needed. All set in accordance with their interests, as they do in their smart phones.

Lets see other examples:

How about Microsoft Word as a "marketplace" containing a lot of mini appsinstead of one big and complex desktop application? When you only want to create, open, edit, save or print a text document, you use the main app (simple and practical as a notepad). But if you want to insert Cliparts, Wordarts, Charts, Cross References, Symbols, etc., then these functions would be in a separated mini app, with a more specific and targeted navigation, much easier to use and the most important, visible only in case you need it.

And how about your company's intranet looking like the screen of your cell phone? The HR App separated from the app for corporate events, which are separated from the contact page of the staff's team. Each one with their own navigation, their simplified interfaces and peculiarities. You no longer need to navigate through a bunch of links to view your paycheck.

The idea is that each Mini App is a whole product and a peace of a large application. Independent and autonomous. You type your bank's URL in your browser and see in the home page only the apps you chose to use. If you have a credit card but have no investments with this bank, then you see the app to access your card in a practical and simplified way. The investments links would not be visible at all times, confusing you.


Developing Mini Apps

Developing complex applications as a set of Mini Apps is a great facility for users. But the biggest advantage is the development cost.

With Mini Apps, the development team can focus more precisely on the several Minimum Viable Products that the application has, and if they are developed independently of each other, with plenty of autonomy and following the Lean Code concepts, the cost of maintaining this software may drop considerably.


The LiveSource Mini Apps

When I started developing LiveSource I was often adding new functionalities to the source code without worrying about the amount of classes and source files that were being created. In a matter of few months, the code for LiveSource has become highly complex and very expensive to maintain. Not to mention the user interface, that every new feature makes the navigation more confused and harmed.

That's when the idea to separate LiveSource into several mini apps came. The original big application was divided into several Minimum Viable Products, such as a Product Backlog app (called EasyBacklog), separated from another mini app to generate and display a status task board (called Live Task Board), another to deal with the automatic generation of documentation from the source code, and another one for dealing with software metrics.


Figure1: The LiveSource Mini Apps


Notice in the lower left corner of the picture above, links to access the various mini apps provided by the LiveSource's website. Each one has its own "world", they are different products with independent user interfaces and independent source files.

.  .  .



The independence of the Mini Apps of a big application must be total. The user interface, configuration, source code, all autonomous, separated from one another.

The autonomy of the Mini Apps automatically brings tremendous visibility to the specific characteristics of the final product, characteristics that are often overlooked when the application is only viewed as a whole, as a big soup of features.

No comments:

Post a Comment