The following is an excerpt from Alex Bratton’s upcoming book, Billion Dollar Apps℠.
Mobile apps done right are deceiving in their level of end user simplicity compared to the skills necessary to make it happen. It is rare for a single person to have even half of these skills let alone the full stack.
From experience in building our own “full stack” teams, we know that understanding the layers of mobile app development is critical to selecting a partner or building a mobile apps team. Make sure you understand where they fit in the overall skill stack, how they overlap and connect with the team you already have and what gaps you’re going to need to manage in the future.
There are 9 key skills necessary to successfully design & implement an app, after going through the hard work of figuring out the right app in the first place (that’s a whole other skill stack we’ll cover in the future).
1. Analyst – What are we doing?
Define the functionality and ‘user stories’ that describe the process and desired resulting impact of using the app (i.e. a sales person can enter a typical order on the app in 2 minutes or less).
2. User Experience (UX) – Make it simple.
What is the most intuitive and quickest flow through the app? Analyze the best way to accomplish the goals set out in a mobile environment and run through the workflow to simplify steps and remove screens or touches.
3. UI Design – Make it awesome.
Create a compelling visual interface design that moves a user through the work flow with visual queues and calls to action.
4. UI Build – Give the user something to touch.
Implement gesture & touch handling, smooth animation & transitions and build the page flow.
5. Core logic – Provide the brain.
Handle local data storage, business rules, data and object models and any thinking the app needs to do on the device.
6. App Communications – Let it talk to the world.
Serious apps need to interact with information outside the mobile device. Call web services on remote systems, parsing data, handling binary data conversion, work with JSON, XML and other data encapsulation over multiple types of network transports.
7. Web Services – Streamline chatty web services.
Processes need to be re-examined to make them less ‘chatty’. A chatty web app may make a large number of calls to back end web services to get the data it needs and being on a fast connection to the back end that can still work. A mobile should make as few calls as possible to a back end to speed up user interaction.
8. Server logic – Make the server smarter.
Tailor existing back end web services to how a mobile consumes information. Web services likely need to be slimmed down to cut out the typical bloated data they serve up. Additional business rules may be required to synchronize mobile transactions intelligently with existing web transactions.
9. Data – Get to the goods.
Data probably exists in multiple back end systems that need to be accessed. Handle the heavy lifting of interfacing with various parallel data and application systems to get the information the mobile is going to need.
Once you start looking at people and mapping them to the skill stack, you’ll immediately notice a difference in your perception of how good (or not) someone may be. There are many people who excel in just 1-2 skills in the stack but unless you’re building a large team where you can afford that level of specialization that awesome UI builder is going to need a deeper understanding of what happens behind the screen in the app.
Some sample types of people you’ll run across:
Garage developer — learned mobile development, has a couple apps in the market place to show off and says they can handle building an app. The reality is that unless they had a deep systems background before getting into mobile (which is a very small portion of the tech world) then they can probably string together some screens and crank out an app with some basic business logic (so covering just numbers 4 & 5 of the 9 layers). Unless you’re connecting to an easy Twitter/Facebook API, they will probably have a steep learning curve on the network coding side of things.
Systems engineer — comes from a deep systems background where they’ve been building end to end web services (skills 7-9) but have also written applications that can talk over a network with business logic to handle what to do with the data (sklls 4-5).
Customer experience architect — really understands how to dig in to what an app needs to do and what the end user expects. They can cross the analyst, UX and UI design roles to define and design an app.
Mobile app engineer — The ideal well rounded mobile app engineer knows the user interface standards for various mobile platforms and how to implement them based on designs. They can build all components of the mobile app and are comfortable defining the communications protocol the app will use in talking with web services. Preferably they can evaluate existing web services to make suggestions on how to optimize them for mobile consumption.
A cross functional team equipped to handle all 9 of these essential skills is critical for delivering a successful mobile app. Without it, linking apps to back end systems is likely to take much longer than it should and you probably won’t get the intuitive, awesome app your users deserve.
Stay tuned for additional excerpts from Billion Dollar Apps℠.