Whether you are a one-person dev shop or working on an international enterprise development team, executing similar tasks will promote best practices in your mobile application development. Your team will need to plan and execute product specification, quality assurance, software architecture, software development and product design. It's wise to create and execute a plan for each element as it all factors into the mobile app's end-user experience.
While it is true that incorporating best practices into each of these stages increases the initial cost of delivering your mobile UI development, doing so will lower the lifetime cost of deploying and maintaining your app. As a result, your mobile apps will deliver higher end-user value. In this first of a series of articles, we will cover these technical and process elements that will get your mobile app development on an efficient, value-driven delivery schedule.
Before your fingers ever begin to hammer out code, your understanding of the value your mobile app delivers to your end users should be clear enough where you are able to present the value proposition to a stranger in 10 seconds. Take the time to ask yourself the hard questions like: Will users adopt this product? Can I realize the kind of return I want on the investment of developing, delivering and maintaining this app? Why would a user choose my app over a competitor's? These questions can help determine the potential success of your application, and perhaps failing early will lead you to join a different project that you are more passionate about.
If your market research comes back in favor of developing your idea into a mobile app, it's time to create your product backlog. User stories that precisely describe the units of functionality that create user value are logged in an issue tracking software system where they can be prioritized and organized into product releases.
If you try to address every possible future use case of the app, you will be paralyzed by over-analysis.
With user stories forming the basis of end-user value in the mobile app, it is now time to design a useful and attractive user interface and define the core user experiences the app provides. The app's design should support the goal of delivering end-user value. If your experience is in desktop or Web application development, take the time to study mobile device interaction and expectations. For example, tapping with a finger rather than clicking with a mouse is much less precise and much of the user interface needs to take that fact into account.
The end user's goal in using a mobile app is also very different from using desktop software in that user sessions are typically very short. The mobile UI development and experience should be understandable without a user manual. Do your designs account for the device platform capabilities such as GPS, sensors and the external resources available in your app via the cellular connectivity of the device? A change in mind-set into the mobile end user's is critical to designing a successful mobile app.
Think about the end-user experience and what you want to accomplish with that and design accordingly.
With the application design and product requirements in hand, a good next step is to plan how all of the necessary software capabilities connect to deliver end-user value. A developer might be asking questions like: "How does the external data that powers your app get fetched?" or "How do you represent the data once it's in the app?" Does your design consider how the app needs to reference that data once the user is interacting with the mobile app? Are there other subsystems necessary to support the user-facing functionality described in the product spec and design? How do those subsystems talk to each other?
Balancing the need for future flexibility with a simple architecture that suits the current requirements is critical in the design of the software architecture. If you try to address every possible future use case of the app, you will be paralyzed at this point by over-analysis, and you will wind up creating an overly complex software architecture that could contribute to future bugs and performance problems. If you entirely ignore the future requirements of the mobile app, you may need to address a complicated refactor of the simple architecture that you likely could have avoided with a little foresight.
QA is too often an afterthought to the application development process. If you are not planning for and monitoring quality throughout the mobile UI development of the app, you will ultimately pay a more expensive price for achieving the quality your users demand after the buggy software is live. Putting out fires around quality issues detracts from ongoing development efforts, dilutes your return on investment and frustrates your users. We will cover quality assurance in mobile app development in depth in a future article.
If you come to this series of articles from a software development background, hopefully this will be the most straightforward part of your mobile application creation process. The previous efforts detailed above should help you focus on what you need to get done. In a way, you should almost be working from a punch list of items that needs to be completed and that is detailed through a test plan, user stories entered into the issue tracking software system and through the graphical outputs from the product design effort.
Remember that the app stores you ultimately will distribute your mobile application on are crowded, competitive places. Your app needs to be thoughtfully conceived of and created in order to meet user expectations and garner the positive reviews that will in many cases drive the adoption of your app. We will revisit many of the mobile UI development topics introduced in this article and take deep dives on best practices and practical advice to help you decide how much to invest in each.
Jenner Lochridge is a mobile software engineer specializing in usable, high-quality iOS app development.
What best practices do you recommend for new mobile UI development projects? Let us know.