August 1, 2014 Leave a comment
As most are fully aware, our world is rapidly being transformed by the increasing prevalence of ‘smart’ devices that are carried around on our persons. Mobile phones, tablets and now wearable tech like Google Glasses or SmartWatches are providing consumers with new products to explore and new ancillary applications to utilize.
The wave of new devices has produced a veritable plethora of new utilities that users can leverage, whether they be mapping applications, social network widgets or simple games. There is not much of a limit on the type and nature of usable software on the myriad of smart phones and tablets that are available nowadays.
From the standpoint of producing an actual mobile application that is then made available to the consumer, the process to follow from a project management perspective is somewhat akin to other development activities, but with a few key differences. This post will attempt to cover some of the dos and don’t of effective project management in the mobile space.
A Word on Mobile & Tablet Technologies
There are various companies that produce various software packages for use on mobile devices along with many vendors who produce the hardware that these varied software applications utilize. In many cases, the vendors of the hardware also produce software for their own units, as might be expected. To provide a brief pre-amble to the discussion, here is a list of the various companies involved in the mobile space:
1. Apple – Produces the iOS operating system for use exclusively on iPhones and iPads. Also responsible for the creation and distribution of the hardware inherent to these devices. (Through third party contracts) The primary development language in use is Objective C.
2. Google – Produces the Android operating system and makes the OS available to everyone. Also owns the former Motorola Mobile Hardware division and uses that to produce its own hardware leveraging its own operating system. The primary development language in use is Java, an open source programming language now maintained by Oracle.
3. Microsoft – Produces Windows Mobile operating system, a derivative of the common Windows OS in use on many desktop computers. Has partnerships with Nokia on the creation of hardware to distribute Windows phones and also creates hardware of its own, primarily in the tablet space, such as the Surface product line. The primary development language in use is .NET, with most developers opting to use C#, an exclusive proprietary derivative of C++.
Additional note: there are numerous vendors that also produce hardware leveraging some of the technologies listed above. The most prominent operating system being used is Android, and that is being leveraged by companies such as Samsung, HTC, LG, Kyocera, and Casio.
Application Development for Mobile Devices
Development for mobile devices in an of itself is not entirely different from development in other spaces. As indicated above, many of the technologies that are used in both application or web development are portable for use on mobile devices. There are however, some key differences that need to be noted in regards to producing applications for use on mobile devices:
Generic Platform Development – While many individuals working on mobile development may opt to use the standard toolkits as they are individually for mobile devices, there are options that exist that will allow one to potentially write generic code that can be built and distributed across a variety of different device types. Several mechanisms exist that provide a singular way to write and publish code that can function on Apple, Android, Windows and other platform types without the need to have to write separate pieces of code for each device. Technologies such as PhoneGap, Titanium and Unity are but a few development toolskits and IDEs that can allow one to keep all code generic enough that it will be easily implemented from one platform to the next.
- Pros – Keeps coding simple and allows for easy distribution and maintenance of applications
- Cons – Performance can generally suffer due to abstraction layer of generic engine adding additional ‘weight’ to overall app
Distribution & Development Caveats
One major point to be aware of as it pertains to how one develops and distributes their applications is an understanding of how apps are marketed and downloaded by users. As most are likely aware, depending on your smartphone of choice, one will need to go through the ‘store’ that is made available by the main vendor in order to acquire an application. For Apple, it is the AppStore, for Google, it is GooglePlay and for Microsoft it is Windows Store.
With that being said, development and distribution of mobile applications must go through a vendor review and ratification process before an application is sanctioned for broad-based availability. This means that the development process itself needs to be mindful of the regulations and rules that an app vendor might have as it pertains to what can be distributed in their network. Additionally, as part of overall development, most vendors will have a sandbox area where apps can be uploaded and tested. Utilizing this sandbox is also part of the overall process of getting a particular mobile application ratified.
As the project manager, you will need to be cognizant of all these factors when performing your scheduling activities. Care must be taken to ensure that all policies as dictated by the vendor are followed. It is also advantageous to add flexibility and potentially some padding to the schedule to ensure that adequate time is provided for approval and potential rejection and re-factoring of the application as needed.
Application Maintenance for Mobile Devices
As most owners of Smartphones will already know, the applications you have on your device will generally have an update feature built into them. This can be either automatic or manual. The system is akin to updates of resident applications on personal computers; i.e. as new features and/or fixes are performed to the application, the changes are ‘pushed’ to devices currently leveraging the application.
From the standpoint of your own technology application, you need to be cognizant of these main factors:
- Fixes/Updates Need to be Continuous – As changes are made, especially bug fixes, those modifications should be pushed out studiously. Note that to avoid inundating the user with updates, ensure you ‘bulk’ push changes and updates, except in those corner cases where a critical fix is being rolled out.
- Keep your App Store Application Up to Date – As changes are being made to your already deployed app, ensure you have a policy in place to make sure the latest version of your application is available on the main download sites. Otherwise, your users will be forced to perform immediate updates to a recently downloaded application, which can be frustrating and gives the impression of a poor release methodology being in place.
- Monitor User Sentiment – While this is somewhat in the realm of product management, nonetheless, it is imperative you get a gauge of how your application is being perceived. Most app stores have rating and feedback systems built into their platform and it is important that those channels are monitored. There is actually software available that can track sentiment and feedback put out by users in app store spaces or in other social networking circles such as Facebook or Twitter. Utilizing some of this type of software can help stream effective feedback into actionable items that can be reviewed and acted upon by the team.
- Stay Up to Date on New Versions of Mobile Operating Systems – This is probably one of the more overlooked concepts, but it can be exceptionally hazardous if not monitored. Just as you and your team are updating your own application(s), Google, Apple, Microsoft and others are also making changes to their underlying platforms. In some cases, these updates are small, but in other cases, a new operating system is rolled out and like anything, it can be a bumpy ride for app developers. Changes to the underlying platform can cause your application to behave erratically or not function outright. In any case, from the team perspective, it is important to stay abreast of these types of changes and allocate adequate testing as part of the overall application timeline. From the project manager perspective, keeping track of these and other dependencies is of utmost importance.
In most cases, development of mobile applications is not too dissimilar from other software packages created by engineers and developers around the globe. However, there are distinctions as mentioned above that need to be considered an evaluated as part of the overall life-cycle of the application. Being knowledgeable of how things operate in the mobile arena and understanding the differences will allow one to more readily handle the issues that arise with mobile app development and be able to mitigate problems that might manifest.