Today I want to talk to you about the concept of "situational applications". The term is relatively new, but the concept is not. The concept is KISS (Keep It Simple, Stupid).
First let's define a situational application: "A situational application is 'good enough' software created for a small group of users with specific needs. . . as the requirements of a small team using the application change, the situational application also continues to evolve to accommodate these changes."
Many of the best applications begin as situational. For example, SMTP, which is the standard protocol for sending email, was initially developed as a simple way to send electronic messages, after the introduction of many bloated formats (including Mail Box Protocol and FTP Mail). Many early internet providers found these original protocols, although comprehensive, too complicated to implement. SMTP, which stands for Simple Mail Transfer Protocol, was developed as a simple way to send text-based messages from point A to point B. The simplicity of the framework caught hold, ultimately became the standard, and has since been enhanced with the features you know as an e-mail user.
Web services are another great example. The original vision manifested as Simple Object Access Protocol (SOAP), which was a comprehensive, complex protocol for allowing different systems to talk to one another. Ultimately, SOAP grew in comprehensiveness and complexity. As a result, Representational State Transfer (REST), a simple protocol that does the same thing as SOAP but without all the bells and whistles, was developed. The result is that REST has taken hold as the preferred standard. REST has continued to evolve to meet additional needs as they gain traction, but its evolution is organic, not forced.
I've had the opportunity to build a lot of new software products for great companies. And the more applications I build, the more I realize that most (if not all) of them are in fact, situational, and should be treated as such. Instead of trying to build the end-all-be-all in release 1, I've found we're more successful successful if we build an application that can addresses the core business problem, and getting it out into the user community quickly. Ultimately, the user community will drive the direction of the application. If a core need is met quickly, the app will be used; and if the app is friendly and appealing enough, users will want to give ideas on how it can continue to make their lives/jobs easier. In all of my years building applications, the most time-tested and well received, have inevitably started by simply solving a "situational" problem. Over time, they have become much more than that, but they all started with a laser focus.
If you are a product manager (or if you work for one) remember to Keep It Simple. Get the product out early and request feedback from users often. Use Agile Software Product Development to get that first release out quickly. The methodology lends itself to this approach. Stay focused on business value and work to achieve it as quickly as possible. Do not try to solve every problem for everyone right away, instead solve the BIG problem for everyone first. Everyone will line up behind you and your product after that to take care of the small stuff.
Please use the comments below to share ways that you Keep It Simple in your software product development, or share your experiences of how your 'situational applications' have become THE application because of laser focus on solving real business problems.
As always, thanks for reading.
-J
Whoa. . .this post was picked up by CIO.com.
Subscribe to:
Post Comments (Atom)

5 comments:
This exactly what "Getting Real" by 37signals is all about (among other things). Its a great book.
It is a very interesting point of view, and one I have advocated for quite a while. It also applies to implementation of inherently complex systems (SAP, for example). If you try to throw the whole thing in at once, you usually fail because it's just overwhelming.
The flip side is that for inherently complex processes, the KISS principle can backfire, because tools designed for a simple purpose cannot always be expanded to encompass the greater complexity. Lotus Notes, for example, is an outstanding collaboration tool, but a lousy application platform, and try as they might, IBM has not been able to make the transition.
A good analogy is that no matter what you do and how much you spend, you will never turn a Hyundai into a Ferrari. If you need Ferrari performance, you're better off just buying the Ferrari.
Great points David. But I have to say it, does anyone really need a Ferrari? :-) It's like Lance Briggs crashing his Lambo, some people just can't handle the horespower and need something smaller.
But you are absolutely right, even situational apps need to be architected in a way that's scalable and flexible, and the original point of the app has to be kept in mind so it doesn't outgrow it's original purpose.
I completely agree with the approach of getting a 1st cut in front of the users/stack holders as soon as possible for as little cost as possible. You can always trade up from a Hyundai to a Ferrari or something in the middle like a Lexus if needed. Over the past few years I have learned to embrace the Agile development methodology and the idea of time boxing to be great ways to build applications.
Great blog J.
The "situational application" can be a great approach to solve departmental needs or even corporate wide needs where the feature set is narrow in scope. I've always tried to build these applications with a tool set/stack that allowed for the application to scale with the expanding requirements that come over time. If the tool set/stack can't scale beyond a certain point, it needs to allow for the ease of data (and maybe even logic) export so that when you out grow it, you can easily move to a more robust solution.
Post a Comment