It’s been over 5 years since I embarked on an extensive journey to find a framework I could recommend to clients to use in order to build mobile applications.  I tried all the various JavaScript engines rendering semi-native controls in mobile web and nothing provided the performance and accessibility to native APIs I expected as a developer.  On the other hand, I had created the same application in Objective-C and Java for the respective platforms and realized that my clients would not have the developers on staff with the skill sets to create, maintain and extend these applications throughout its lifecycle not to mention the headaches associated with disparate code bases and version management.  It is hard enough to keep a cohesive.Net team together with the needed business knowledge let alone 2 to 3 different languages and frameworks.

It was at that time I happened across an up and coming company called Xamarin and the lights came on.  In those early days, there was push back on the cost and potential viability of the company.  Again, who wants to invest in something that will be gone a year or two later. Microsoft purchase and investment in Xamarin has significantly brought the price point within reason for all existing.Net developers and its integration into Visual Studio has been fairly seamless.

With that being said, it sounds like this should be the easiest project implementation for any neophyte group to undertake, correct?  Actually, I want to strongly caution seasoned.Net developers to check their egos at the door.  Xamarin solves a lot of issues related to disparate code bases, versioning, testing, and patterns but you still need to understand mobile development as it relates to iOS, Android and Windows.  Each platform has distinctly different UI idioms, deployment scenarios, libraries and memory constraints.  Here are some considerations that can make all the difference in your Xamarin development project:

  • Download all the SDKs and Tools necessary to build a simple test application that can run in an iOS simulator and Android emulator. Determine if your network is blocking updates from Apple and Google.  Do this the first day!
  • Create your application in Apple, Google & Azure at the beginning of the project with all the needed certificates, provisions, ids, configuration files and test them. Once tested, save all the artifacts in a secure location!
  • Setup your Change management system at the beginning of your project and this includes deployment and testing accounts like TFS, Microsoft Mobile Center, and TestCloud.
  • Identify quickly the business requirements of the application in order to determine the best navigation structure and avoid implementing boated frameworks and patterns. Keep it Simple.  Avoid the temptation to have classes that do everything.
  • Assume that the application will lose connectivity!
  • Assume the user will have problems clicking buttons or understanding what they do!
  • If you collect any sensitive information, you must implement some security!
  • Actually, perform a memory profile on the application before deployment! Don’t assume it is working because it hasn’t crashed yet.
  • If you are a large organization, if possible, build an in-house application first. Don’t use your customers as your guinea pig on a new technology.
  • If possible, have a seasoned Xamarin developer walk you through your first application!

Building a Xamarin Mobile Application can be an extremely rewarding experience and focus a positive light on a department when done right but like all new technologies, the first venture is highly scrutinized and success is a must.  Take the time to vet the project properly and get the correct resources and take the above suggestions seriously and your mobile application will be a success.