The world of mobile development is moving faster than most of us can keep track. IBM recently announced our mobile enterprise solution, MobileFirst. We sat down with a few of our mobile leaders to ask some common development questions. Have more questions to ask? Post them in the comments and our leaders will answer!
Meet the leaders
Charles Rankin is a Senior Software Engineer who has worked for IBM in Austin, Texas for the past 19 years. He has worked in a variety of roles including test, development, architecture, and management. Presently, he works as a member of Rational's Chief Technology Officer team, focusing on mobile development strategy. Charles graduated from the University of Florida with a Bachelor of Science degree in Electrical Engineering. Connect with him on Linkedin.
Dirk Nicol is the Program Director for IBM Mobile Strategy and Product Management responsible for IBM’s mobile platform. Prior to his current position, Dirk led IBM's Cloud standards program and was a founder of the Cloud Standards Customer Council initiative. Dirk also conceived and led the development of the developerWorks project. Dirk holds a masters degree in electrical engineering and an MBA at the University of North Carolina. You can reach him at email@example.com..
Michael Rowe spends his time defining and driving the strategy for IBM’s Rational software brand. His primary areas of focus are those aspects of the Rational portfolio that bridge across the brand and the rest of IBM, including DevOps, Mobile, Cloud, and business models such as Software as a Service. Michael has 28 years of IT operations, Systems Integration, development, consulting, and global project management experience. He records a podcast on utilizing gaming techniques and technology in business called Games At Work dot BIZ (available on iTunes). Michael also has an MBA from Duke University's Fuqua School of Business. Follow him on Twitter.
1. What makes a mobile app stand out from the rest?
Charles: Fundamentally, it must meet the expectations of the mobile user. In part, this expectation may be by following the established guidelines for the platform. In some cases, it may be following the established guidelines of the larger application's brand. But, fundamentally, it must feel like a "mobile" application from top to bottom. Today's mobile consumers are quick to turn away from repackaged web applications and applications that do not use the full capability of their devices. Keep in mind that it is first and foremost a "mobile" application, and you'll be in a much better position for your application to stand out.
Dirk: A great mobile app has three elements: engagement, context, and intelligence. First, an app must be engaging with an easy-to-use, simple design. It uses the unique capabilities of the phone such as the camera, GPS, accelerometer, and it is designed to use the small form factor of the device. An engaging app is also task-oriented in that it does not try to do too much but rather focuses on solving a specific task that the user has. A great mobile app also uses context to help the individual solve a particular task leveraging information about the situation. Contextual information such as past behavior, insight about the environment, and the user’s identity can enable the app to help the user to complete a task at hand. Finally, a great mobile app uses intelligence to analyze the task at hand to predict the next best course of action. This will help the user to become much more efficient as the right resources and information are delivered to them in their moment of need.
2. How important is testing and a focus on quality to mobile app development?
Michael: Testing and quality are critical, the key thing; however, is that much of the formal testing process, has now become part of stealth product releases, i.e. beta testing. Quality is more than just functional, it is the overall experience. This includes things like battery performance, and the ability to handle network drops and latency.
Dirk: Testing for mobile devices is more complicated than traditional application testing. It seems that every day a new mobile phone or tablet is announced with an increasing number of players entering the market all the time. This apparent endless supply of mobile devices is great for the consumer in that it provides more choice. However, this creates a challenge for a mobile development team who might not have much control over the device they must support for their customer or employees. For the development team, the challenge lies in the diversity of mobile platforms that must be considered for testing. The development team must consider not only the variation of devices, but the variation in operating systems and device features. Things get even more complicated when you consider the fact that the app might function slightly different depending on the network it is running on. Even the carriers can make minor changes to the underlying OS (in the case of Android) which can introduce even more variability. It is possible to have a test matrix of hundreds or thousands of permutations. The problem gets compounded with the seemingly weekly release of new devices or OSs in the market, which means new device models must be incorporated into your test plan regularly. As much as 20 % of your devices may need to be replaced with new models that are introduced into the market each quarter just to maintain appropriate test coverage.
In addition, the mobile app will likely connect to a broad set of mobile services and back-end systems, which will create more challenges with testing. Setting up and maintaining back-end systems for testing can be costly and take time. Setting up and shutting down back-end test environments can add overhead that is not welcomed in a development effort that needs to move quickly. Here are a couple of approaches that can help with testing:
Device clouds: Access to a broad set of devices can be simplified by using a device cloud where banks of devices are hosted and can be ‘rented’ for use virtually over the cloud. There are several device clouds that are available in the market today. The advantage is that device can physically reside in the various parts of the work allowing for validation against different networks and environments. Reducing the cost of procuring and managing a mobile device can significantly reduce the cost and speed of development.
Automated testing: The ability to perform automated testing can significantly reduce the time and effort for testing a mobile app. For functional testing, scripts can be developed based on interaction with an app during development. Automated test scripts can be generated that then can be applied to other devices and device types. Having automatic playback and validation of test scenarios can greatly reduce the test process.
Virtualized back-end systems: Standing up various back-end systems only to tear them back down after a test is complete can be costly. Instead of setting up physical back-end systems, a virtual environment can greatly reduce cost and increase execution speed. Virtualized back-end environments that simulate traditional back-end systems can be helpful during early phases of development. As the project progresses, actual back-end systems can be added for further testing.
3. Can an organization leverage their back-end software investments effectively in the new mobile first environment?
Charles: Not only "can" organizations leverage these systems, they "must". A company's existing systems of record are one of its most powerful assets. Creating high-quality mobile applications that expose these systems of record to mobile consumers in compelling ways is one of the keys for a successful "mobile first" enterprise.
Michael: Absolutely, exposing exiting back end services to systems of engagements on mobile, allow organizations to improve their customer service, customer experience, and customer engagement.
4. Are there proven strategies that can help a development team keep up with the pace of change of mobile apps?
Charles: There is no one silver bullet to solve the problem of changing mobile apps, but here are some ways to improve the situation. First, adopting agile methodologies can be beneficial to reduce overall cycle times. Remember to keep your agile processes agile themselves so that you can continue to adapt to the changing demands of the mobile landscape. Second, by using tools and processes to provide a collaborative environment where all team members are aligned on common goals, you can significantly reduce time-consuming rework late in the cycle. Third, examine places where you can insert continuous delivery techniques to provide consistent results across your build/install/test cycle. Using automated processes in these areas frees up team members for more productive work and establishes essential baselines for all team members.
Michael: Simply put, “DevOps”. Minimal viable product strategies allow for fast, iterative deployments of functions to the mobile community. Running A/B testing of features, allows for user-based testing and prioritization of functions, allowing for multiple parallel streams for delivering functions. This requires strong SCM and change management, as well as continuous build and test capabilities.