Whether you are a seasoned iOS developer or just starting out, one feeling is constant. You want to get started with your idea, and you want to get started now. Given the state of the app store ecosystem, this approach rarely yields success. There has never been a greater need to take a step back and answer important questions, perform necessary research and lay a solid foundation for your app before you type one line of code.
In this article, I’ll outline some steps you should consider before embarking on your next iOS app. I’m speaking from experience as I have developed apps in one weekend and have also spent the better part of a year on just one project. After many releases, I’ve identified successful practices that I now apply to every project to promote success.
These steps have been distilled into eight sections, and those are:
- Validate Your idea
- Create a Mission Statement
- Know Your Audience
- Analyze the Competition
- Create a Feature Set
- Create Mockups
- Research Potential Technology
- Repeat, Repeat, and Repeat!
Validate Your idea
Everything starts with an idea, but the harsh reality is that some of them are worth pursuing and some are not. The app store now boasts over 1,000,000 apps. That fact has been repeated time and time again, but it’s important to consider. You can no longer throw together an app and hope people buy it. The chances of success are low taking that route and you might have better odds playing the lottery. If there is one thing you don’t want to waste, it should be your time.
When you have an idea for an app, ask yourself these three questions:
- Has this idea been done before?
- Are people buying or searching for apps similar to this?
- Does this idea solve a problem or fill a need?
Has this idea been done before?
Don’t get discouraged if the answer to question #1 is no. Why? Because it almost always will be at this point. If you have genuinely come up with an idea that has not been done before, it’s likely worth investing time on. For the most part though, something you have come up with has been executed already in some form.
That’s okay, because you can always do it better. For example, there are several thousand weather apps available, but new ones are still released that become successful. Why? Because the developer executed differently on the idea or broke it down into smaller pieces. They found a niche audience within a broad user base who were looking for something else in a large genre.
An app like Dark Sky present weather information in a very design centric manner. It also has a marquee feature that most weather apps don’t have in that it can predict weather down to the minute. So if you have an idea that has been done before, try to fill a missing void within that area or find a new spin to put on it.
Are people buying or searching for apps similar to this?
Like any business, there needs to be demand. Fortunately, there are several ways to confirm your app will be searched for and wanted by a user base. There are helpful sites that let you browse data relevant to demand inside the app store.
One of those sites is the now ubiquitous AppAnnie. It offers free app analytics and market data with one of the free features being the ability to see what keywords are trending or are being searched for. It’s a good idea to run some potential keywords for the app you are considering and see if those are terms people are using to search for in the genre of your app.
Does this idea solve a problem or fill a need?
Apple has often reiterated that the best apps solve one problem and they solve it extremely well. It’s no mystery that successful software supplies a solution to a problem for the end user. When you are thinking about your app, be sure that you can answer this question without hesitation.
If you are having a problem figuring out what problem your app is helping to solve, it’s a good indication that you need to refine it. When you know what your app is helping to achieve, it can speed along development. Design and development decisions are easier to make, scope is more accurately assessed and profiling the end user is more accurate. This is because it helps form the app’s mission statement.
Create a Mission Statement
This step is critical to the development of your app. A mission statement defines in one or two sentences what your app will do. It doesn’t go into extreme detail, but rather touches on the big idea or marquee feature.
For example, suppose you were creating an app that is a simple to-do list. Returning to our earlier discussion of validating your idea, let’s assume you came up with a killer feature that’s not been done yet in a to-do list app. So, the mission statement might read:
“(App name) is a lightweight to-do list that uses (some killer feature).”
At some point you will brainstorm a full feature set for the app. When deciding what to include, drop, or save for an update, ask yourself if that particular feature supports the mission statement. This helps avoid feature creep and will aid in defining when your app is ready to ship.
Consider if you were debating adding support for multiple color schemes for the app. In our example, you might say:
“Does having multiple color schemes support this being a light weight to-do app that uses or enhances (some killer feature)?”
Since the answer is no, but the feature might still add value, you could save implementing that feature for a future update.
Know Your Audience
Once you’ve validated an idea and have a mission statement, it’s a good idea to start thinking about the end user. Again, this will also aid in developing feature sets. Consider who will being using it, their age, location, and overall demographics.
For any app, there are several different flavors of it available in the app store. Not any user will want the same type of experience even though they may be looking for an app to solve the same problem they and many others have. It probably wouldn’t make sense to make a game geared towards children that has flat and uninteresting graphics. Instead, a more mature audience may find the simple aesthetic pleasing.
When you know who you are trying to sell to, you also know the objectives they have. You know what they value, how often they are using mobile phones, if they are even experienced with mobile phones, etc. Visit this link to help profile your potential audience and figure out what kind of experience they might be expecting in a app.
Analyze the Competition
Since there are likely similar apps to the one you want to make, the likelihood of having feedback from users of those apps is high. This is important because you can see where your competition is succeeding, and more importantly, failing.
If users seems to enjoy a particular feature of a genre of apps, then that is an indicator your app should probably incorporate similar functionality.
Say that you are developing a weather app, and after reading several reviews of popular weather apps you notice a common theme. All of the users enjoy a widget included with the app so they can quickly glance at the forecast. Now you know that users have a particular baseline for weather apps, and you should work to meet it.
Conversely, one of the biggest advantages is knowing where your competition is coming up short. Be sure to pay close attention to reviews and create a list of all the things that people say are missing from the app. When you are finishing your feature set, you’ll know to try and include something to meet the needs that aren’t being met by the apps already out there.
Create a Feature Set
Creating a feature set will help dictate development of your app. It pays to be flexible here, as these features can fluctuate throughout development. Through beta testing or other means, you will discover some features don’t add to the experience or are not implemented well to provide benefit.
When creating your feature set, recall that each one should support the app’s mission statement. This will help avoid filler features that just add “bloat” to the experience. The feature set doesn’t have to be in depth, and I’ve found value in keeping them broad. This helps you refine them as your app matures through the development process.
It’s also not bad to have a verbose list of features. You can save a lot of ideas for a later update. Tease some of the features being developed to get the users excited for things to come as you continue to build up your audience once the app is released. Remember though, no matter how many features you have, each one needs to add to the overall experience of the app.
At this stage, creating mockups to demonstrate how the user progresses through the app will help developers get started. Some like mockups to exact detail, while others keep it at a high level.
There are many valuable tools to use for mockups, but the one I like most is Balsamiq. This wire framing tool can help you prototype something right away so you can get a feel for how the app will work. It’s valuable during development to have a reference point of how your app will be navigated by the end user. This aids in removing any ambiguity that might exist between a designer or user experience analyst and the development team.
Research Potential Technology
This is one of my personal favorite steps, as there are so many exciting options to use for your app. Even better, a lot of these options will be completely free for use in your project. Once you know what challenges you will face during development, finding the right tools to help you overcome those obstacles is key.
For instance, a lot of apps require a backend of some sort. A backend can help keep track of user data, uploads, or handle social features that so many apps require. A popular choice for this is Parse, which was recently acquired by Facebook. It’s free up to a certain point, but if you are crossing that point it means your app has exploded in popularity, so it’s a good problem to have.
Another good spot to look is github. I often browse the trending repositories for Objective-C and Swift to see if someone has already come up with a solution to a problem I am working on. This can help shave hours off your app and also provide a learning experience to see how another developer fixed an issue you were stuck on.
Repeat, Repeat, and Repeat!
Practice has always made perfect, and getting a process down for prototyping apps is no different. This process will likely look different for everyone, but the themes presented here will shine through in some fashion. It’s key that you repeat your process from project to project and tweak it as needed.
You may discover that some steps are not providing enough insight or answering enough questions about your app than you’d like. Maybe you are seeing that some steps need to have more time spent on them. Whatever the case may be, always be sure to improve your workflow and realize there are always ways to improve it.
I’d also like to point out that even though I encourage research and planning before you start on an app, it can also be freeing to just open up Xcode and start on an idea you have. Especially as a developer, sometimes it gives you a creative boost to start churning away on a proof of concept. In these situations, I’ve found that you can take these types of projects and later turn them into a fully fleshed out idea. Then, you can go through the steps outlined above.
Hopefully you’ll find some of these steps helpful. A lot of developers are very task oriented, and it’s beneficial to provide a structure to guide an idea through to fruition. Keep in mind, there is no perfect guideline for everyone when it comes to developing apps. Maybe you’ll only need to implement a few of these steps, or combine a several of them together. If you have any helpful practices that you’ve found key before creating an app, be sure to share them in the comments below.
Jordan Morgan is the founder of Dreaming In Binary. He loves teaching and learning about things related to iOS and game development. When he is not busy blogging about programming, he likes to kick back and play video games with his son and wife.
The Principles of Beautiful Web Design, 4th Edition
Learn PHP in One Day and Learn It Well
Docker for Web Developers