Software Engineering for MobileI was invited to give a keynote talk to computing students at the Imperial College during the kick-off event for their summer group projects, aimed at the development of an innovative web or mobile-based app. I was asked to talk about the specifics of software engineering for mobile. Based on this, we are launching a six part blog post series to summarize the content of this talk.

Because my audience were all computing students, I wanted to present content that goes beyond “just” technological aspects – assuming this is stuff they know already anyway or can easily figure out. I thought about key elements that perhaps don’t guarantee success but could at least increase the chances of launching a successful mobile app or product. Here are five key elements that came to my mind:

  1. Make the right technical platform choice for your context (Part 2)
  2. Get the UX right (Part 3)
  3. Choose the right methodologies in the areas of building a business, customer development and product development (Part 4)
  4. Enrich the functionality of your app by integrating Internet-based APIs (Part 5)
  5. Leverage the power of tools (rather than reinventing the wheel) (Part 6)

This post is the first part in which I cover the main differences between software engineering for mobile vs “conventional” software engineering and why it is actually worthwhile thinking about this difference.

We will publish another part every week, so make sure to check back soon.

I started out by engaging the students in an interactive discussion on why mobile is different, and consequently,why it requires different approaches — not just in software engineering but also in product development in a wider sense. As it happened, the students came up with almost all the differences I was to present in my slides later. The only area not covered in the discussion was market aspects.

I grouped the differences into four types:

  1. User behavior:

Three things influence user behavior. First, people using mobile apps on mobile devices are inherently mobile. So users interacting with mobile apps are a lot more distracted by environmental influences such as ambient noise, changing light conditions, or walking while typing. Research shows that continuous attention time spans are broken down into 4 to 8 second periods.

Secondly, limited hardware influences user behavior. We don’t have the classic interaction means such as keyboard, mouse, or a large monitor available. Nor do we have unlimited energy supply (battery) available, and computing power and bandwidth are more restricted (although this is becoming less of an issue).

And finally, users are in most cases tied into some sort of data plan provided by their mobile network operator, which means that additional cost can occur if an app transmits a lot over the mobile network.

  1. Heterogeneity:
Platform Fragmentation

Source: Tsahi Levent-Levi,

While “traditional” software engineering is for fairly homogeneous platforms like desktop operating systems or Web browsers, the world of mobile is far more heterogeneous. This heterogeneity mainly stems from various dimensions of fragmentation. Developers for mobile have to tackle device fragmentation. Even more of an issue today is platform fragmentation. Although there is clearly an established platform duopoly (Android and iOS) there are other platforms out there emerging including Web and HTML5/JS as the third most popular ecosystem among developers (see Vision Mobile’s recent Developer Economics report). In addition, there are several newcomers adding to the problem of platform fragmentation, such as FirefoxOS, Sailfish, Tizen, or UbuntuOS. Within a certain platform there are then several (or many, in the case of Android) different screen resolutions possible, which leads to a further intra-platform fragmentation.

  1. User interaction:

As mentioned earlier, on mobile while we don’t have the classic interaction means available, we actually have a very rich set of interaction possibilities to choose from. They include touch screens, gestures, all sorts of sensors (motion, acceleration, tilt, compass, GPS), haptics, speech-to-text and text-to-speech, and cameras for face recognition. Just the taste and smell senses are not covered yet (although some universities are working on olfactoric interfaces).

  1. Market characteristics:

The mobile app market shows some remarkable differences compared to traditional software markets. It seems that all time frames related to mobile apps are simply shorter (ephemerality): development time is shorter, and time to market is shorter.  The usage time by customer is considerably shorter, too – even to an extreme where the pattern that apps may only be downloaded once, used once and never again is more the rule than the exception. This and also the fact that there are already a large number of apps out there – over 1 million apps in Google Play as well as in Apple iTunes — have the consequence that user acquisition and more importantly, user retention, are tricky challenges.

Another difference lies in product distribution. The most predominant marketplace model is app stores with Apple’s iTunes and Google Play as the largest and most popular. Every current mobile app ecosystem has its central store. The emergence of the Web as the third-most popular choice for developers may change this.

Overall, developers need to think carefully about which platforms to support. It is impossible to develop and maintain a product for all platforms and every surrounding ecosystem, each with its own characteristics and dynamics. Platform characteristics and dynamics need to be considered in the business model (and revenue model as part of it) around the software product.

Is it worth considering the differences of mobile?

The numbers speak for themselves. It is a large, emerging — and still growing — market. According to the GSMA, by 2017 the global smartphone installed base will amount to 2,890 million and Benedict Evans showed that the smartphone and tablet unit sales are growing exponentially.

Vision Mobile sized the mobile app development market as a $68 billion industry in 2013 (which is about the size of the GDP of Cuba, a country of an 11m population) and expects that to more than double to $143 billion in 2016 (see Developer Economics report). This figure doesn’t even incorporate the opportunity that lies in wearable devices like intelligent and programmable armbands, watches, or glasses, or the Internet-of-Things vision or sensor networks. Cisco estimates this industry of a $14.4 trillion market by 2022. The characteristics of these types of devices are very similar to mobile phones and so is the software engineering.

Now that I have established the particular differences of mobile, the market considerations, challenges and opportunities, I will go into detail regarding the five elements themselves. First up is about making the right technical platform choices for your context which I cover in the next part of this series.