I wrote a large and thorough article about how to improve specifications in software development. read it here.
How many screens software application should have? That’s a hard question. Most desktop software applications have 1 screen. While most web applications have many screens. What is the best option? Let’s try to figure out.
One screen is the best option for simple tools. Almost all email clients, calendars, todo lists, graphic editors has a single main screen with some additional popups and dialogs. It helps to focus on your task and quickly access all actions in a single place.
Things is a great example of an application where single screen concept works best.
Many famous web applications have just few screens. They are quite simple and easy to understand. Twitter has few screens, Tumblr has few screens, Basecamp has few screens. There are several types of screens in general, we can easily categorize them:
- Single entity views
- Functional areas (calendar, planning area, settings area, etc.)
You can split every web application to these screens. Most desktop applications have a single area that contains list, entity view, functional area. Most actions served via popups.
Should we have a separate screen for every list? Should we have a separate screen for Add entity action? View entity? How many different functional areas should we have? What if you have 20 entities in application, does it means you should have 20 separate screens? Most likely not.
Most powerful/complex applications have many screens. In fact, I don’t know any powerful, but simple web application. Hope it will change in future, but honestly I did the same mistake myself. TargetProcess is a complex application (so far). We designed it with a goal 1 action — 1 screen. We designed separate screens for every business action like Prioritize work, Plan releases, Plan iterations, Track iteration, etc. It was a mistake. As a result, TargetProcess has ~100 screens and far from simplicity.
However, I think I know how to fix that. I believe it is possible to shrink any complex application to 3-4 screens that will be used daily, and N screens that will be used rarely.
The goal is to separate actions that people do often and actions that are rare. In this case you can simplify and merge screens, make them multi-functional yet simple enough to solve real problems with elegance and power. In that case it does not matter how many screens will be hidden from daily routine work, you can always access them with 2-3 clicks, but they should not clutter UI.
Also you should be creative and think whether you need separate screen for every list in you app. It may happen that you can live without lists at all or combine several lists together. For example, we can easily combine Features, Stories and Bugs in TargetProcess, but “traditional” thinking causes functional blindness and blocks your creativity.
Open your mind. Re-think everything. Re-invent anything again. Believe me, you can always do better. Copy-paste is not the best way to create new software products.