It’s kind of funny. The tech world is starting to catch up with what a bunch of us realized a long time ago. It’s all about the app (now if you read my last post – you know it’s not just about the apps, but how the apps combine with the device to form the best tool). I’ve managed to read at least 15 articles in the last week and a half about how important apps are and how you should build them. Some articles argue that you should go mobile first; others argue that you should do mobile only. There are the articles that claim you should only write in HTML 5 and others that say you should use products like Phonegap to hit all the different platforms with your app. It’s all one gigantic mess. Some still think you need to be in the business of building monolithic crapplications and others just throw their hands up. In almost every case they completely miss the point. It’s not about how you make these development decisions that look awfully like the IT decisions of old. It’s how you focus on enabling the user the best way possible.
Almost all the decisions that determine how you are going to write the app that you need are secondary. The first thing you need to figure out is what is the business need that you are addressing. What is the business strategy that you are building an app to fit into? How do you enable the end users, whether they are the customers of your company, or the employees? An app should never start in IT unless the app is actually being built for the IT department itself, and let’s be clear, they need their apps to.
The first thing you do is you meet with the business and find out what they are trying to do. They want the app so that they can meet a business requirement and that’s what you are there to do, help them get there. Once you start nailing down what the business requirements are, you still aren’t ready to build the app yet. The next step is to sit with the actual users you are trying to enable. You need to focus on what they need to do and design something that enables them to get it done.
One of the definitions of focus is “The state of maximum distinctness or clarity of such an image” while a second is “A condition in which something can be clearly apprehended or perceived” (from http://www.thefreedictionary.com/focus). These two definitions get to the heart of the problem of building an app. You need to have the clarity of understanding the business requirement while clearly perceiving what the users needs are. Once you have this clearly defined, you are ready to start planning your app. You can now shift your focus to building the best possible app. This mean the app you build will provide a user experience so that the users not only get their work done, but they can do it when they need to and where they need to. The combination of the app and the device gives your users a tool that fades into the background while they power through the task at hand.
It’s important to understand these needs first because just like you are creating a kick-ass UX for the users that allows there needs to be met, the same applies to you and the way you build the app. The goal is for the app to be designed in such a way that it is flexible and can be easily changed and updated. The same qualities of flexibility and agility must apply to the app design as well. This is why you do not choose what language or how you will write your app until you know what it actually needs to do. Why would you choose to only use a small hatchet tool to cut down trees when you find yourself in an old wood forest with 4 foot diameter tree trunks. Once you know the size of the trees and how many you have to cut down, it may make more sense to grab a chain saw as the tool of choice.
Once you decide the tools you are going to use, you look at the frameworks that are available that allow you to get to your data. Hopefully your company has invested in APIs that connect to your data sources and free that data up to be accessed properly. If those frameworks don’t exist, take the time to build them if you can. When you choose to free you data, you’ll find a lot of ways to give the user access to it and you’ll build multiple apps to meet the different needs that are out there.
The goal of creating great apps and avoiding crapplications is focusing on the needs and avoiding the scope creep that inevitably tries to influence your project. Your developers, now have the outline of what they need to build and they can very easily figure out the best way to do so. They still need to specify how they’re going to do it. This specification or blueprint is created before they start to do the actual coding, as development doesn’t start with the first line of code. It starts with understanding the need clearly and the building a beautiful blueprint that you actually develop your code to. These blueprints/specifications aren’t static either. The goal isn’t to file this away in a drawer but to build a companion living breathing document that follows the app. Nothing ever goes as planned and blueprints change, but the fact is your specification lives with the app and allows the app to grow as the needs change.
It all becomes one big cycle, because as you finish building the app, you go back to your users and the business to make sure that everything works that way it should. You see, building an app is solely about focus. You need to be clear what the business and the user want. You need to focus on the data that is needed by them and build a clear, easily usable tool that allows them to be productive and efficient. You see anyone can use a magnifying glass, but unless you focus that sunlight just right, you never get to burn the ants.