I have been thinking lately about what characteristics make a successful web application. I’ve developed a number in the last few years (or rather, I’ve been the guy that funded and designed them or sold them). It’s something I’ve been doing a lot of thinking about, drawing ideas, and discussing with other people. Here are some of my current thoughts:
Basic long term planning
Consideration is rarely given for the financial and support needs long down the road. The seduction of build it fast and pay as little as we can is prevalent. I think the worst people can be developers themselves. I’ve met a bunch who just jump right into development with little regard for the future. This is something that Don recently wrote about and had some good thoughts on.
The lure of adding too many features
This has been discussed quite a bit lately and it has really struck home. I think when you’re developing software you hope it can be used by lots of people. Every new feature you add will be a dealbreaker for just one more person. By keeping software simple, more people can adapt it to work for their purposes. I think Celoxis is a perfect example of what to do wrong. This is a product we actually used about 3 years ago for a few months. It’s more complex than MS Project and Outlook combined to give you an idea of how massive it is. It has a steep learning curve, too. Consider Notepad. It’s so basic yet I use it all the time.
I think the lesson here is develop a web application that answers only a few burning problems and not try to build the space shuttle, just build a little SpaceShipOne. If you remember, the SpaceShipOne was towed off the runway with a pickup truck. Compared to the NASA space shuttle, it’s simple.
No learning curve
Great software shouldn’t have a learning curve. I should be able to get started right away. This goes back to the lure of adding to many features. If your web app is too big people won’t want to spend the time to learn it. The Celoxis program I linked to above took weeks to learn.
As a designer
Having to work with developers I find a common characteristic among some developers and it is that they jump before they look. I’ve handed far too many projects over to developers who didn’t take a realistic look at the overall project. They think “oh, I can do this, easy” and then get in over their heads dramatically underestimating the project. Far too often they end up bailing and ruin their reputation. So watch out.
Who is it for and how many users do you need?
Get feedback from test users and beta users, and calculate how many units you need to sell in order to recoup your investment. Sounds simple, but it’s important. Lastly, if you’re developing the application for yourself and planning to sell it to others, make sure your developers know this so it can be built with this in mind.
Think about your marketing first. The guys at 37signals have this area covered and it’s easy to watch and learn from the ways they market their products. If anything, think about maximizing the number of eyes who see and try your product.
Work with people who have an owners mentality
There are two types of people in this world: Employees and Owners. Working with people who have an owners mentality is your best bet. You don’t have to “own” a business to have an owners mentality. You just need to “own” your projects, “own” your desire to get up every day and do great work, and “own” your career choice. I’ll be talking about the owners mentality more soon.