Why are you doing this in the first place?
Sometimes developing an application just sneaks up on you. Your customers need you to solve a particular problem, and you find yourself creating a solution for them that involves software.
You give that to your customers, thinking “that’s done,” and the next thing you know they want changes, or they have ideas for other things that the solution can do for them.
As you dutifully satisfy those requirements to keep your customers happy, it dawns on you that you’re creating something that delivers real value, and maybe it can become a product that you might be able to sell to other like-minded customers. At this point, it’s time to shift from “accidental” to “intentional” product development.
On the other hand, you may have indeed set out to develop your application as a product from the start.
In either case, you’re now intending to take an application to market, and it’s time to ask—and answer—these questions.
What kind of application is it?
There are always structural decisions to be made that should be driven by value to the customer, but often are driven instead by developer prejudice. You’ll hear from your dev team about the cloud, browsers, mobile web and mobile native, tablet and handheld, and desktop. The overarching concern should be how your customers will interact with your product to get value from it. Here are some general observations that may help you in your specific situation, starting with what the choices are.
Desktop There are times when an application demands the full attention of the machine it’s running on. These applications are generally compute-intensive, highly interactive programs that perform specialized functions or interact with specialized hardware, such as computer-aided design, music or video editing, or machine controllers. These are applications that you still “install” onto a specific computer—your workstation or your laptop—that take full advantage of the capabilities of that machine.
Browser Nowadays your thought process should be, “Is there any reason why my application should not be browser-based?” There are two main reasons for choosing a browser interface. There’s no need to install anything on the user’s computer, so distribution and maintenance of the application is greatly simplified, which is really nice. But more importantly, if all that’s needed to run your application is a browser, then it can be used on any computer, from anywhere in the world. Welcome to the cloud.
Mobile Tablets, phablets, smartphones, and watches. The world of mobile devices is growing, but they share common issues. Your choice of which devices to support depends on how your user wants to interact with your product. If it doesn’t make sense to squeeze your user experience down to the size of a phone, then tablet-only it is. Can you specify a particular device, or can your customers choose their own?
So what will it be?
Before you even consider building a desktop application, it’s wise to ask yourself: Why not cloud? Why not mobile? As of May 2015, Google confirmed that there are more searches being conducted via mobile devices than desktop computers. Global PC sales peaked in 2011 and have been falling ever since. It’s an increasingly mobile world.
Even if your product is obviously not a mobile product, don’t assume that your users don’t still want a mobile component. There is a growing expectation that all apps should span all of the devices in the user’s life (“Why can’t I view the results of my data analysis on my iPad as I ride the train home at night?”).
Speaking of devices, there’s a whole world of hurt around deciding which devices to support. Android, iOS, or Windows Mobile? All of them? How many different flavors of Android (there are many)? Do you build separate apps in each platform’s own language, or do you pursue a single-codebase, cross-platform strategy? The impact of this decision on the development, testing, and support effort is profound.
As always, before you make a final decision on the right platform(s) for your application, study your market, and interview some potential customers. Understand their needs for mobility. Find out if there are any barriers in the customer’s mind that you may not have anticipated, such as privacy or security concerns.
What’s your revenue model?
Pricing is one of the most challenging aspects of developing a commercial application. Not just how much you charge, but how you charge for it. Should you charge a one-time license fee, or a monthly subscription? If it’s a multi-user application, should the subscription be based on the number of users, number of projects, or some other metric (number of reports, volume of data)? Ask your customers what makes sense to them, what price they would consider fair, what other applications have they used that are similar to yours, and how they were priced.
Of course you must also do competitive research to see the price of comparable applications.
There’s a growing practice of monetizing applications by offering a free version in which ads are displayed. There are even advertising services that will source the ads for you, so you don’t have to worry about selling ad space. But the more important question is, will users even be interested in the app if there are ads in it? Or will they resent you for it?
Pricing software products is a complex undertaking, and outside the scope of this guide. Just remember what I said earlier: if you’re lucky, you will never be done, so make sure that your pricing can support an ongoing development effort.
If you ask yourself these 4 questions, and answer them satisfactorily, then you will have a roadmap for your application development. You may still find yourself wandering down strange twists and cul de sacs – developing an application can be rife with uncertainty. But at least you will know where you are headed, and you will be prepared to start your journey.
This article was excerpted and adapted from The CEO’s Guide to Creating Great Software for Your Customers, When Software Isn’t What You Do, by Frank Zinghini. Click here to download the full guide for free.
hbspt.cta.load(2637494, ‘7be9b60b-533e-4a11-9fb1-d6f541024810’, {});