A week or so ago, I was chatting with someone about what I often bash as the "one kind fits all" approach to project management. The idea being that different kinds of projects have different risks and challenges, and therefore, require different techniques to really nail them. Anyway, this person mentioned another "one fits all" phenomenon where he worked... The customer (internal users) and the development team of this organization kept wrestling with this "one application that does everything." Over time, it seemed that this one in-house application had become responsible for nearly every aspect of operations. In other words, they had tried to automate every aspect of their business, and as if that wasn't bad enough, they were trying to do it inside a single application. This is enterprise software at its worst.
This "one app that does it all" approach is dangerous for a couple reasons, both having to do with complexity. First, there's the complexity for the user - good luck training someone on something that has a zillion whirly-dos, what's-its and gizmos, and has completely lost any resemblance to the original metaphor that was supposed to intuitively convey how to use the thing in the first place - or worse, is nothing but 45 tabs across the top of your page, each with another 20 tabs below them (you know who you are!) Second, there's the complexity for the developers. The more business rules and features crammed into a single code-base, the harder it is to maintain, the slower it is to innovate with and long story short, the more expensive it becomes (serious diminishing returns with each added bell or whistle, or whirly-do or gizmo).
And then the pendulum started swinging back the other way... Over the last year in particular (ok, maybe starting 2 years ago) there has been a significant movement back towards simple, single purpose apps. For anyone claiming to have nearly invented this, they're just too young to remember that before applications got so big and complex, they were in fact much smaller and more simple (ahhhhh, the good ol' days). I really hope nobody labels themselves the "Grandfather" of simple, single purpose apps. I've read there's a Grandfather of AJAX, but, really? Did he invent or write the XMLHTTPRequest objects that have existed in browsers from different vendors for years? People love to have a hero. But that's another story. We just got carried away with ourselves for about a decade, us and our big ol' enterprise apps, that's all.
So here's the paradox: (or maybe conundrum, I’m not sure which): Bigger, more sophisticated enterprise apps will always win the feature battle. Some functions just require a lot more flexibility and programmability than small, lightweight tools can offer. These monsters will always be expensive and time consuming, but they serve some purpose - assuming they're not taken overboard with the "one app for all needs" approach.
On the other hand, I've never been a big believer that businesses in particular have needs that are soooooooo unique that they can't possibly find an off-the-shelf tool to do about 80% of what they're looking for and then get all those really smart employees to use their brains, arms and hands to do the other 20% - thus avoiding the pitfalls of never-ending-software altogether. But, that's just me. It's a good practice to always look around for the commercial tool that does most of what you want and be realistic that it may not be cost-effective to try and build something from scratch just to get the other 20%. If you're building your own timesheet software, stop it right now! Shame on you! Never mind the fact that delegating every single aspect of your operations to a computer program tends to tie the hands of your employees, especially in situations of customer service. How many times have you heard, "I'm sorry, the computer won't let me do that. I can't help you." Gee thanks. Hooray for progress.
So I guess you could say, I'm warm to the "simple, single purpose app" movement - with one caveat: At some point, when people max out their potential with a simple app, they inevitably want more. So how do you give them more, and still keep the app simple and follow a single design metaphor? This is the product life cycle challenge that forces so many companies who at one point early in their lives sang the virtues of simplicity, to change their tune to one of feature richness and customizability. In short, they grew up. And so they traded one set of challenges (not having as many features as the big guys) for a different set of challenges (not being as nimble and easy as the little guys). It’s kind of like a 16 year old complaining he’s not being given enough responsibility and then turning 35 and wishing he was 16 again without a care in the world.
Truth is, there's a happy, blissful middle ground: the product suite. See, with the suite, you get a handful of related, compatible, yet independent "simple, single purpose apps" that talk to each other. The benefits, they are a plenty:
- Users get to dip their toe in the water by adopting one of the products in the suite without adopting everything at once and possibly being overwhelmed. They can grow with you and adopt other related tools as they need. Better still, they are motivated to use YOUR other tools instead of the competition’s, because yours are all integrated and that provides added value.
- Individual products can stick to a single metaphor and be super easy to use, but gain some of the benefits of "big" software by relying on and exchanging with their brother and sister products.
- Because the overall functionality of the suite has been split up among distinct products (something us techies call partitioning), complexity is reduced for the user and the development team, so everybody wins.
The only thing you're left with is the odd user saying, "I don't want 4 apps, I just want one." (lazy ;)), but with a good talking-to and maybe quoting a couple paragraphs from this blog entry, you can turn them around so they see the light. The one legitimate complaint I hear about having to use multiple apps, is having to log-in all over the place. Single sign-on is probably THE killer feature for a suite of products - don't forget it.
So, hooray for the movement back to simplicity in design - let's just not forget that sometimes people need more than one app can give, and let's get these apps talking to each other in meaningful ways instead of cramming everything into one box.