Project Management of Mobile Applications

mobiledevicesAs 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++.

4. Blackberry (formerly RIMM) – Produces the Blackberry operating system for exclusive use on its Blackberry devices. Also produces its own hardware, mostly nowadays just relegated to mobile phones. The Blackberry platform supports a variety of different programming languages that one can leverage, including C/C++, JavaScript, ActionScript and Java.

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Conclusion

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.

Dealing with Very Complex Projects

complexity-630By their very nature, projects can be complex entities. They can be multi-faceted, with deliverables and resources spanning both local and global geographies. They can consist of numerous stakeholders (both internal and external), large-scale dependencies and different phases of execution. Whatever the mix, a project can become quite daunting to even the most seasoned project manager as additional complexity is added.

While project management in general has numerous process methodologies and options for project managers when they are contending with an extremely complex project or program, oftentimes, rigid adherence to a particular methodology can often introduce more complexity than intended. The end result can often be a bureaucratic nightmare which ends up causing more problems than it solves.

With that in mind, what might be the best tactic to employ when attempting to tackle a complex project?

Start from the Ground Up

When staring at the various pieces of a complex project, it is easy for the project manager to become quickly overwhelmed. It is akin to looking at a Jigsaw puzzle splayed out across a coffee table, with all its component pieces in disarray. Yet as we all know, within that maelstrom of confusion lies the eventual solution. With that in mind, it is important to organize your project into manageable ‘pieces’. Going back to the Jigsaw example, people often start working on various sections of the puzzle individually before attempting to consolidate their work. In the same sense, try to look at how your project is structured and see what common denominators exist. Often times, functional areas will make this a little more obvious as well as the different deliverables that make up the project as a whole.

Organize Project into Manageable Parts

Following from the above suggestion, once you start seeing the component parts of your project a little more clearly, begin to organize the project into manageable parts. Usually, the best solution is to create an aggregate ‘program’ that will function as the overarching placeholder for all the component pieces. Once that is in place, you can begin to organize the various parts into functional projects of their own. By doing so, you can start to determine how the various pieces coalesce with each other, how the various resources working on your project are distributed and which stakeholders align with which functional project area.

For more information on projects and programs, please access the previous post: Program Management – When a Project Should Become a Program.

Devise a Solid Communication Plan

With complexity will come multiple individuals working in multiple roles within the overall project (or program) structure. This can include team members in multiple different locations and functional areas, different stakeholders that may only be involved in portions of the project while others are involved more holistically as well as potentially more than one project sponsor. With that in mind, how you disseminate information effectively will be crucially important to the project as a whole. Note everyone needs to be apprised of every change, so metering out information in a targeted fashion will be much more effective. Trying to encapsulate all pieces of data in more amorphous project status report may make it too unwieldy, thereby making it more likely that certain individuals will not be able to determine aspects of the project easily. What works better is to create separate communication zones that align with the individual project components, as they were structured. Each of these communication zones will disseminate communication relevant to the project it is aligned with. For a more holistic communication mechanism, have a program-based communication plan that leverages drill down into the component pieces of the projects. This will allow individuals to get a ‘summary’ view of the program as a whole while allowing them to link to additional details as needed.

Leverage PERT Analysis

One of the most important aspects of dealing with a complex project is handling dependencies. Nothing makes the job of a project manager trickier than trying to determine how and when various aspects of a program need to be completed to ensure everything is on track as a whole. As one tackles the various component pieces of an aggregate program, there will be instances where certain work needs to be performed first before other work can commence. Examples include laying the foundation for a home, installing hardware for use in a new software effort, or even getting various licenses and legal agreements signed and ratified before a project commences. All these must be considered and organized efficiently.

From the standpoint of techniques used to handle dependencies, one of the most well-known is the PERT analysis, which is an acronym that stands for Project(Program) Evaluation and Review Technique. A PERT analysis will yield a chart that will provide an excellent visual representation of how a project or program needs to be set up in order to maximize productivity and ensure all dependencies are factored in correctly. The PERT can then be leveraged to create either a GANTT based schedule or can also be used to assist in Sprint planning if one is leveraging Agile process methodologies.

As a sidebar, there is one massive benefit from performing an adequate PERT analysis: the ability to discern the ‘critical path’ for the project. For those who may be unfamiliar with the concept, the critical path is a way to determine the longest route through a PERT chart that will allow you determine the timeline for the completion of the entire project or program. Depending on the outcome, contingency tactics can also be employed by the project manager and stakeholders to ‘fast track’ aspects of the overall program if they determine the completion time for all deliverables exceeds their comfort zone.

For more information on PERT analysis, please access the following posts: The PERT Analysis – Part 1 and The PERT Analysis – Part 2.

Utilize the Correct Tools

As project managers, we are very familiar with leveraging various tools to make our job easier. Whether it be MS Excel or Project, Agile Backlog and Task software utilities, dashboarding programs to convey project status, and so forth. Knowing which tools to use and when is an important component of how we perform our day-to-day duties.

One thing to note: tools are there to help make our jobs easier, not get in our way. As such, it is important for the project manager to know when they should leverage a particular tool and when to avoid doing so. In some cases, especially when a learning curve is involved, a tool can become a hinderance, making things more difficult in the long run. And when contending with a complex project, one does not need to inject more complexity just for the sake of using something that happens to be there. In some cases, less really is more.

For information on how to effectively select the right tools, please access the following post: Project Management Software – Making You More Efficient.

Never Be Afraid to Ask for Help!

This may seem like a no-brainer, yet it is not uncommon for project managers to attempt to deal with all problems personally. While that may get them by with smaller, more manageable projects, it will make their lives a living hell if they attempt to deal with every problem and every contingency personally. With that being said, as part of the overarching communication strategy outlined earlier, the project manager should set up specific communication conduits with certain stakeholders and team members to reach out to when in need of assistance. Keep a list of these individuals and their functional roles handy, even if it’s a postit note on your computer screen. Know when to ask them for feedback or assistance and do not be afraid to call a meeting if an issue has manifested and you require input from your peers. In the end, it is far better to tell people something has arisen up front rather than having them find out when the problem has spiraled into something that could have potentially been dealt with earlier in the cycle.

Conclusion

Complex projects are no picnic. Anyone who has work on one can attest to that. Yet with adversity comes opportunity. We all strive to better ourselves and being the project manager of a complex project can be both daunting and rewarding at the same time. You will stress and you will sweat, but you will also learn a great deal. And ultimate benefit comes with the successful completion of a complex project and the praise and admiration you will feel for yourself, along with (hopefully!) the respect of your peers.

One final note: the suggestions above provide a rudimentary framework to leverage when tackling a complex project. There is a more formal technique available called, ironically, Complex Project Management. For those that may be interested, there is a fair amount of literature on the topic on the internet. Simple search for the ‘complex project management’ keywords in your favorite search engine. For those in the software space, there is a derivative of this technique referred to as ‘Extreme Project Management’, which is meant to function in tandem with Extreme Programming. You can learn a little more about that concept at the following Wikipedia article: http://en.wikipedia.org/wiki/Extreme_project_management.

Follow

Get every new post delivered to your Inbox.

Join 57 other followers