At some stage, most ‘new business’ needs to write software or create a new software product. A common problem is that what seems a simple new product, feature or change is often much more complex due to ‘real world’ issues. The next time someone says something will be simple and easy, ask them to consider things like these:

  • Multiple time zones
  • Multiple languages
  • Multiple locales (e.g. date/time formats)
  • Multiple encoding schemes for data
  • Multiple preferred ways of paying across countries
  • Multiple currencies
  • Multiple country codes
  • Multiple network operators
  • Multiple phone number formats
  • Multiple input types

Other common app-related complexities include:

  • The user changing their SIM and hence their data connection or telephone number
  • What happens when the user is roaming (e.g. high data costs)
  • Maintaining or deleting data when a new version is installed
  • What happens when the phone runs out of memory or storage
  • What happens if the application gets interrupted (e.g. incoming SMS or phone call)
  • What happens when only part of a multiple-step operation succeeds (e.g. data atomicity)
  • The user changing their registration details (email, name, address etc)
  • The user opting out of a service (e.g. deleting data)