Building a team that can efficiently deliver high quality Xamarin C#, Android Java, and iOS Obj-C/Swift apps comes as a daunting task to most companies that attempt to offer all three development approaches. Thoughts of different tool sets, programming languages, and even testing practices are points organizations often weigh when choosing either to go 100% platform native or 100% Xamarin for their mobile needs. However, building a team that can effectively deliver mobile solutions via all three approaches will put your organization in a much stronger position to succeed in the coming years.
The key to maximizing productivity and profitability in modern mobile development workflows is to harness the very best of the three top native mobile development platforms and integrate them through common workflows and shared support tools.
- Native iOS using Xcode, Objective-C and/or Swift using Apple Frameworks
- Native Android using Android Studio and Java and the Android Frameworks
- Native Xamarin.Forms using Xamarin Studio or Visual Studio with C#, Xamarin.Forms PLUS the native Apple and Android frameworks and API's
A team that chooses to support all three platforms could easily fall into the trap of utilizing completely different workflows for each development platform. In this article, we will outline a path for integrating all three development approaches using shared development workflows.
Integrating Xamarin Development
Although we recommend Xamarin.Forms for many native mobile app projects, there are still times when separate platform native development is preferred. Porting existing apps to Xamarin from separate-platform native projects requires skills that transcend both environments. Additionally, there are millions of apps that have been built over the past 7 years with Java for Android and Objective-C for iOS and it will be necessary for organizations and teams to support those existing active and legacy projects for many years to come. Finally, Xamarin.Forms development requires the latest versions of Xcode and the iOS SDK along with Android Studio and the Android SDK which simplifies cross-training and utilization.
Cross-training as a Culture
Mobile app development, regardless of platform, is mostly about common paradigms and hardware features, design patterns and user expectations. The more your developers know about each platform, the better they will perform on their primary platform.
We highly recommend cross-training your iOS and Android developers in Xamarin.Forms and empower them to utilize the power of both native frameworks and API's. We also recommend cross-training your Android Java developers in iOS Objective-C/Swift development and vice versa where possible so both sides have a better understanding of their counterparts challenges and advantages. Even if you choose not to cross-train your native developers in the counterpart language, it's still important to have them spend time learning the parallel APIs for each major hardware or OS feature on the other platform. The more they learn about what is possible through the other platforms frameworks, the more they can understand where mobile development is headed overall.
Finally, cross-training both groups in Xamarin.Forms and C# will enable your organization to better utilize your entire development workforce. It's not easy to maintain consistent utilization of both your iOS and Android development teams. When there are reductions in utilization for either platform, those developers can be repurposed to build cross-platform apps in Xamarin.Forms using their existing skill sets.
Remember, the most important skill set in native app development, is the experience that comes from building, testing and shipping native mobile apps on any platform. The language and framework specifics of a given platform can be taught much more quickly than the foundational aspects of native mobile development in general.
Shared Development Workflows
Your mobile development teams will realize greater efficiencies if they utilize similar workflows across development platforms including less time learning and increased awareness. By choosing the right tools, your company can maintain a cohesive workflow across all three, making it easier for businesses to achieve Xamarin competency long-term. Productive Edge’s Xamarin Enablement Services include training and support beyond Xamarin to cover the wide range of recommended Mobile Development tools and workflows necessary for success.
Shared Design Workflows
All mobile development, regardless of platform should utilize the same or similar design workflows. This starts with using the same user interface design, graphics production, prototyping and assets handoff workflows for all three platforms. For all new mobile development projects, we exclusively recommend a specific design workflow that includes Sketch, Craft Plug-Ins and InVision App although Adobe XD is beginning to gain ground as a single solution for both design and prototyping. For existing projects it is necessary to include support for Adobe Photoshop, and Adobe illustrator.
Shared Workflows for Continuous Integration, Cloud Testing, Distribution and Beyond
Regardless of the development platform, continuous integration workflows should be managed identically across teams. We recommend establishing standard best practices processes, procedures and tools across all three platforms for frequent daily code commits, automated builds, automated unit testing and automated cloud device user interface testing.
We recommend tools like TestRail for documenting test cases and plans from the inception of the project and SonarQube for Static Analysis to make sure your developers’ code is according to best practices and predefined format expectations. Visual Studio Mobile Center is the only solution that allows for the same CI workflows to be applied across all three development platforms. VSMS Integrates GitHub, Hockey App and Xamarin TestCloud for automated builds, Hockey distribution and automated testing driven by Code commits.
Having all of your teams using the same workflows will greatly improve coordination between teams and simplify cross-training. Make sure to include feedback SDK’s into your app before release such as Appsee, Google Analytics, Fabric Answers, Optimizely and HockeyApp. Once an app has been released, your team should obsess over customer reviews, action analytics and other feedback.
Tooling Flexibility for Client Needs
Not all clients are alike and some will require use of their specific design or workflow tools. The above workflow recommendations are a guideline, not a mandate, based on our extensive experience, in-depth research and actual experience with various tools and workflows for native iOS and Android development as well as Xamarin.Forms development.
While some clients might require the use of a particular tool, most are open to considering tooling alternatives if a strong case is made for how different workflows can speed development, simplify communication and reduce costs. Wherever possible, the more your teams can all use the same exact tools for all mobile projects whether Android Java, iOS Objective-C/Swift or Xamarin.Forms, the more efficient your overall operations will be. For example, If it is necessary to support an alternative crash reporting or analytics platform like Fabric.io or AWS App Analytics or an alternative design workflow like Photoshop with Adobe XD the key is to develop workflow insertion standards that allow your teams to utilize the remaining modules in your overall workflow both before and after that insertion point.
If you would like to find out more about cross-training your native developers in Xamarin.Forms or in the workflows recommended above, contact Productive Edge today about our Xamarin Enablement Services.