So you have an app idea and it’s going to be the next big thing! You're excited to get the ball rolling and start drawing up some screen layouts (called wireframes) for the app and think to yourself “this will be easy!” However, this is only the beginning...
My job is to take someone's thoughts and turn them into a functioning, secure and, hopefully, profitable application. There are a number of aspects to building an app or software product that can be easily overlooked by the person who conceived the idea simply because they are not aware of all of the pieces of the puzzle. This article will guide you through the key elements that you should be aware of for a large majority of apps.
Data input, collection, store, display, calculations, location tracking and monitoring. These are all examples of parts of a workflow that must be considered when creating your new app.
What is a workflow?
A workflow is the sequence of operations that you intend for a user to perform when interacting with your app. Overall, an app is just a set of workflows joined together to fulfill a task. Depending on the posture of your app (See article "Choosing app posture"), your desired product will ultimately determine the number of workflows you need to look at producing. For example, I would consider an app such as Uber to have one primary workflow (actions leading to booking a ride) but a product such as Microsoft Word would have many primary workflows. These are directly correlated to the posture of the application.
A Transient application like Uber needs focus. It is designed to have a trigger and a short usage time so only one primary workflow is needed.
A Sovereign application like Word is focused on holding your attention for a long period of time. This being the case, it needs many different features to occupy the extensive time you will be paying attention to it for.
To determine what type of app you are going to build, ask yourself “What problem does my application solve?” Start with the problem you are solving so the idea can be extrapolated based on First Principles thinking.
First Principles Thinking
First Principles is breaking something down to the absolute truths and is the creative methodology used by many of the most amazing minds like Albert Einstein, Elon Musk and more. For example, SpaceX was built based on this theory. Musk understood the issue with space flight was how expensive it was and questioned why this was so. The answer was all the parts of a rocket can only be used once. After rigorous testing, he concluded that making the rocket parts reusable could dramatically reduce costs and would open up more opportunity for space flight in the future.
The message here is start with the problem and find a solution with no bias to the current assumption you are working with because it could be wrong. For an app, start with the key function and start to list out what you need to make that function work.
Having a deep understanding of your software product and how it will be used will influence whether logins, accounts and authentication are needed, and if so, to what extent. If you are building an app that sends out a daily inspirational quote for example, then a login and account may not be needed. Alternatively, if you are building a banking app then a high level of login and authentication security will be necessary.
Now you’re probably thinking that accounts and secure logins are a must for every software product, however this is not always the case. With extra security comes more touchpoints (points where a user needs to input, accept, press a button, etc.) These touchpoints can create friction and friction can result in users abandoning the product.
Think about it. You have just been told about this new app or website by a friend and you just want to check it out and see if it might be useful to you. However, that software product requires a username, password, email, phone number, DOB, address, bank details and setup of 2 factor authentication. It’s just too much. The barrier to entry for testing the software product is too high and someone who was a perfect user may get scared away before they even get a chance to try it. Most users want to try with no commitment.
When deciding what authentication requirements your app will need, it’s useful to consider two points:
1. Roles - Admins, Users, Viewers, Buyers, Sellers, etc...
Something often overlooked, especially in one sided apps (apps where only the consumer will use it), is that often more than just a user role is required. For example, if you have ever created a facebook page you will know they have different roles you can allocate and these roles have different privileges. Some roles can control everything on the page, some can control most things, and others can only view or edit content. Even the most basic apps would require, at a minimum, a super admin and a user.
The super admin is you and your controls. Yes this is something you need to build. This is quite possibly the most forgotten and neglected part of a software product but, in fact, it is extremely important. The super admin is where you access and control everything about your application. It is where you can approve or revoke access, write copy, make layout changes, emulate users at their request, update product lists, set pricing and more.
On the other hand, a user can only have as much control as you allow. Their capabilities on the app are limited to the features that help them solve the problem the application is built for.
2. Personal Settings
There should be a reason you have a login for your app. This usually is due to some sort of customisability, even if it’s only to change the email and password for that account. Personal settings can be quite important for making the user experience more personal.
As a tip, if this is something you are going to want, it can often be a good screen to start with when drawing wireframes or creating user stories. I often start with this when creating a workflow to help me think through the other functional elements required in the software product.
A dashboard or main page is just a start and finish point for your users. It can begin the user’s navigation or it can serve as a place to get an overview of the rest of the application. Either way, it is a very important screen to get right. A screen like this should be simple and have clear next steps. At the end of the day, this is the screen the user will start and finish at so it should lead somewhere and that somewhere should be clear.
The main function of a dashboard is to display at a high level what is going on in the application or better understand what is being tracked.
Apps are meant to be intuitive and many apps share common features so that they can be navigated easily by the user. However, usually the app has been created to perform a unique task or perform a task in a unique way. To help explain to your users how to use your app, there are a few options you can take but one of the simplest is to use an onboarding tour. The tour needs to consist of screenshots of the app with explanations on how to use that screen.
Good practice is to have skip options on all the screens of the on-boarding tour and to show how many screens there will be in the tour (common for dots to be used) to avoid scaring off users who don’t necessarily want to take the tour.
One purpose of the onboarding tour is to seamlessly help a user setup their profile with the minimum information needed to make your app function. You want to work really hard on minimising the number of steps necessary and making as many of the steps optional as possible. Users are getting less and less comfortable handing over personal information so the rule we use is, if it's not going to break it, don't get it. In other words, if it doesn’t affect the use of the app then make it optional.
It is likely your software product will have some paid components for the users to it. With this in mind, you will need a way to handle payments. This is where payment gateways come in. A payment gateway is a third party solution that gets integrated into your product. It is highly recommended to use one of the existing and established gateways as they have spent millions of dollars on developing them to ensure security. They also deal with any risk that may be involved. When payments go wrong or there is an issue with the gateway, it’s up to that company to solve it, not you.
Payment gateways allow you to set pricing, automate billing, issue refunds and much more. They usually have their own dashboard that you as the owner and creator will control. Some of the popular examples of payment gateways are:
All of these charge fees for their service and not all of them will work for your application so spend some time researching what gateway will work best for your application.
It is common for many applications to have the capability to allow users to communicate with each other. This could be through posting short and long form text, real time chat, voice call or video call. There are a number of methods to allow this functionality, here are a few that we have found useful:
Communication capabilities help to build a community which can be essential in bringing new users to your app. Communication is important in many applications from an eCommerce store to a Telehealth app. There are a number of options and pre-built solutions that can be integrated with your project so research which ones would be most useful for the style of your app.
It is apparent that there are many different factors that contribute to a successful, working app and if you’re not fully aware of these elements, your app idea may struggle to reach fruition. The key to ensuring your app has all the necessary components is having a deep understanding of how your users are going to be using your app. The best way to gain this understanding is by talking to your target audience.
With so many elements to consider, it may also be worthwhile seeking help from a software agency that specialises in app development. If you are struggling with your app development, feel free to contact us at Digital Basis here and we will work with you to help realise your app idea.