Laatst kreeg ik een email met een vraag van Jeroen. Hij vroeg zich af of hij betere apps kan bouwen via "Xamarin": een manier om op verschillende besturingssystemen in één keer een app te bouwen. Dat noemen we "cross-platform app-ontwikkeling" en is in feite een manier om sneller en goedkoper apps te bouwen. Ik gaf hem uitgebreid antwoord en dat mocht ik van hem gebruiken op mijn website. In dit artikel vind je dus uitleg over cross-platform app-ontwikkeling, en waarom je daar wel of juist niet mee aan de slag kan gaan!
Lees het artikel of bekijk de samenvatting in de video:
Beste David,
Met veel plezier lees ik de e-mails die je verstuurt over het ontwikkelen en onderhouden van mobiele apps. Na gesprekken te hebben gevoerd met applicatie ontwikkelaars voor het ontwikkelen van mijn app-idee, kwam ik erachter dat sommige ontwikkelaars Xamarin gebruiken. Op dit moment twijfel ik erg tussen het kiezen voor een ontwikkelaar die native ontwikkelt, en een die in Xamarin ontwikkelt. Een cross-platform app-ontwikkeling.
Ik heb verschillende posts op internet gelezen over de voor- en nadelen van Xamarin, echter hebben deze mijn keuze niet makkelijker gemaakt. Wat is jouw visie op cross-platform app-ontwikkeling?
Met vriendelijke groet,
Jeroen

He Jeroen,
Goed om te horen dat de mails je zo bevallen :)
Als je voor de keuze staat voor een ontwikkelmethode, dan is het goed om te weten hoe een ontwikkelaar werkt. Wellicht heb je je al hierin verdiept, maar bij deze even de uiteenzetting.
Als een app geprogrammeerd wordt voor iPhone en Android, dan wordt deze voor ieder platform in zijn eigen programmeertaal gemaakt. Android apps worden geprogrammeerd in Java en voor iPhone wordt Objective-C of Swift gebruikt. Vergelijk het met Frans en Duits: twee talen die moeilijk verenigbaar zijn en als je erin wil communiceren, dan doe je dat voor iedere taal apart.
Omdat er twee keer geprogrammeerd wordt heb je ook twee keer de kosten. Daarnaast moet er ook twee keer een interface ontworpen worden: voor zowel Android apps als iPhone apps zijn gebruikers een ander interface gewend. Daarbij komt nog kijken: als de app ook beschikbaar gemaakt moet worden voor Windows Phone (dat in Nederland een marktaandeel heeft van ongeveer 1 procent), dan moet de app nóg een keer de kosten kwijt. In de talen analogie van Frans en Duits dan staat Windows Phone voor een app in het Slowaaks. Je gaat dan inderdaad opnieuw programmeren en opnieuw een interface maken. En stel je nou eens voor dat je onderhoud moet doen aan de app. Of functies wil toevoegen. Inderdaad: voor ieder platform apart.
Nu zijn er slimmeriken geweest die hebben gezegd: wat als we nu een universele taal gebruiken en vanuit daar automatisch vertalen naar ieder besturingssysteem? Zeg maar je app in het Engels via een automatische tolk vertalen naar het Frans, Duits en het Slowaaks. Super handig: dan maak je de app in één keer en ook onderhoud en aanpassingen gaan dan in één keer. Scheelt kosten, maakt de app beheersbaarder en de app is sneller klaar.
Verschillende leveranciers zijn hierin gesprongen: Apache Cordova (voorheen Phonegap), M2Active, Xamarin, Flutter en Maji Mobile zijn zogenaamde "Cross-platform" ontwikkelmethodes. Zij zorgen ervoor dat jouw app de eerste keer in een universele taal wordt geschreven, zoals HTML of C# en daarna via hun "automatische vertaler" wordt omgezet in een taal die de smartphone begrijpt.
Een voorbeeld hiervan is Yellowbrick. Zij willen iedere Nederlandse smartphonegebruiker bedienen, ook de Windows Phone gebruiker. Daarnaast zijn ze actief in verschillende landen, waar de app door andere omstandigheden zoals regelgeving, er heel anders uit zou zien. Met een traditionele aanpak waarbij voor ieder platform ontwikkelt wordt, moet de app 3 x het aantal landen ontwikkelt én onderhouden worden. Als ze bijvoorbeeld actief zijn in 8 landen, betekent dat 3 x 8 = 24 verschillende versies van de app die gemaakt en onderhouden moet worden. Een onmogelijke klus. Daarom koos Yellowbrick voor Maji Mobile, waarbij ze slechts één versie van de app hebben per land. Zo wordt hun app veel beheersbaarder en betaalbaarder. Zo verdienen ze de investering in hun app sneller terug, hebben ze minder onderhoudskosten en is hun "business case rond".
Heeft deze aanpak dan ook nadelen? Ja, helaas wel. Het is namelijk zo dat het automatische vertalen zijn beperkingen heeft. Ondanks dat deze platformen in de afgelopen jaren veel sneller zijn geworden (om allerlei technische redenen), kunnen gebruikers van oude of goedkope toestellen last hebben van vertragingen in de app. Ook betekent deze aanpak dat er vaak maar één gebruikersinterface wordt ontworpen. Oftewel, op zowel Android, iPhone en Windows Phone ziet de app er hetzelfde uit voor gebruikers. Vaak wordt er gekozen voor een nieuw interface dat niet lijkt op een van de drie, maar los staat van ieder besturingssysteem. Dat betekent dat gebruikers zich niet 100% zullen herkennen in het interface een hieraan zullen moeten wennen. Als laatste zal de automatische vertaler niet alle functies kennen. Stel, je wil van het betalingssysteem van Apple gebruik maken voor je app, dan zul je in veel gevallen een aanpassing moeten schrijven op de automatische vertaler voor alleen het Apple platform. Dat verkleint de beoogde beheersbaarheid en zorgt dat het implementeren van nieuwe functies langzaam kan gaan.
Dus, cross-platform app-ontwikkeling:
- maakt je app beheersbaarder;
- is betaalbaarder;
- heeft een kortere ontwikkeltijd, máár;
- vermindert het gebruiksgemak voor de eindgebruiker;
- nieuwe functies laten op zich wachten.
Een gebrek aan gebruiksgemak kan leiden tot frustratie bij de eindgebruiker. Uit ons eigen onderzoek blijkt dat frustratie met een app niet alleen zorgt voor de-installatie maar tegelijkertijd ook de belangrijkste reden is om naar een concurrerende app op zoek te gaan. Verder weten we dat gebruikers als ze op zoek gaan naar een app, vooral kijken naar het "nut" ervan: de toegevoegde waarde in de ogen van de gebruiker. Dit nut is een logisch gevolg van bestaande en nieuwe functies van een app.
Een bedrijf dat daar last van had was Rabobank. In het verleden lanceerden ze een nieuwe app die was gebaseerd op een cross-platform ontwikkelmethode. Binnen de kortste keren regende het klachten van gebruikers die o.a. op internet hun mening uitten. Hun meningen? De app was trager geworden, het interface was niet handig en functies die ze voorheen wel hadden waren nu verdwenen. Daar kwam nog eens bij dat doordat Rabobank een nieuw interface introduceerde waardoor mensen erg onwennig waren met hun app. En dat terwijl een bank juist vertrouwen en degelijkheid zou moeten uitstralen. Alles bij elkaar een problematische situatie voor de Rabobank, terwijl hun mobiele applicatie een steeds belangrijker contactpunt met de klant is. De concurrenten van Rabobank zaten ondertussen ook niet stil, zo was de ING al bezig met nieuwe "nuttige" functies, zoals een smartwatch uitbreiding van haar app en betalingsverzoeken. De cross-platform app-ontwikkeling heeft dus Rabobank's concurrentiepositie ondermijnd.
Eerlijk is eerlijk: de oud Rabobank app was ook gebaseerd op een cross-platform ontwikkelmethode en tot de vernieuwing ervan werkte deze app prima. Rabobank is een logge en bureaucratische organisatie, dus er is waarschijnlijk is er ook iets intern fout gegaan. Tegelijkertijd wil ik je laten zien wat de voor- en nadelen zijn van een cross-platform app-ontwikkeling en waar je op moet letten.
Gaat het zo lukken om een beslissing te maken?
Met vriendelijke groeten,
-David
Dag David,
Bedankt voor de erg uitgebreide informatie wat betreft de diverse ontwikkelmethoden die beschikbaar zijn voor mobiele applicaties. In je uiteenzetting benoem je een mogelijk nadeel voor een cross-platform als Xamarin zoals de gebruikersinterface. In het oriënterende gesprek dat ik heb gevoerd met de Xamarin ontwikkelaar, gaf hij aan dat er twee designs (Android & Apple) gerealiseerd zullen worden. Deze twee designs zullen gebaseerd zijn op de eisen en stijl van zowel Android als Apple. Klopt het dat dit mogelijk is? En vervalt hiermee dan in feite het nadeel dat je benoemd?
Nogmaals bedankt voor de uitgebreide informatie,
Met vriendelijke groet,
Jeroen
He Jeroen,
Ik moet zeggen dat ik Xamarin al een tijdje niet meer bekeken had, maar het blijkt dat zij vanaf mei vorig jaar inderdaad de mogelijkheid hebben een apart Android en iOS design te maken binnen hun platform. Dan wordt inderdaad een deel van het cross-platform app-ontwikkeling probleem opgelost. Wellicht zit je dan wel nog met een relatief trage app en beperkte mogelijkheden om nieuwe functionaliteiten toe te voegen.
Als je wil weten of de traagheid een probleem gaat worden, doe dan het volgende. Test met een oude of goedkope Android mobiel of de apps die een Xamarin developer al heeft gemaakt snel genoeg werken. Oude of goedkope toestellen zijn natuurlijk altijd trager, dus vergelijk met een aantal apps die er al op staan.
Als het gaat om de vraag of je genoeg nieuwe features kunt toevoegen: maak een zogenaamde MoSCoW analyse van je app. Hierin verdeel je de functies die je wil hebben of ooit wil laten maken in Must haves, Should haves, Could haves en Won't haves (vandaar de afkorting MoSCoW). Oftewel: zaken die essentieel voor het werken van je app (Must haves), dingen die er eigenlijk wel in moeten zitten maar niet essentieel zijn (Should haves), dingen die je wel leuk vind maar ook makkelijk uit je app gelaten kunnen worden (Could haves) en dingen die je in ieder geval niet gaat doen (Won't haves). Neem deze functionaliteiten mee naar het gesprek met de ontwikkelaar en vraag of deze ontwwikkeld kunnen worden in Xamarin. Mocht het zo zijn dat er enkele Could haves niet mogelijk zijn, dan is dat geen ramp. Maar als er Must haves of Should haves niet mogelijk zijn, dan moet je je achter het oor krabben. Zitten er beperkingen in Xamarin waar je niet omheen kan maar die in je Won't haves staan? Dan is cross-platform app-ontwikkeling met Xamarin waarschijnlijk niet voor jou.
Hopelijk ben je hiermee verder geholpen :)
-David
P.S. Cross-platform app-ontwikkeling en Hybride app-ontwikkeling lijken op elkaar, maar het is net even anders. Om dit artikel laagdrempelig te houden is er gekozen om het onderwerp cross-platform ontwikkeling te behandelen, waar Hybride onwikkeling onder valt. Ben je bezig met een app-idee, dan is het verschil waarschijnlijk niet interessant. Wil je verder in de techniek duiken, kijk dan gerust hier voor meer informatie over Hybride apps.
Vergelijk technieken zoals cross-platform app-ontwikkeling
Wil je een duidelijk overzicht van de verschillende technieken en hun voor- en nadelen? Download hieronder dan de Ontwikkelingsvergelijker en ontdek welke techniek het beste past bij jouw idee.
Vul je emailadres in en ontvang de vergelijker meteen in je mailbox.

Door het invullen van dit formulier worden je gegevens beschermd volgens onze Privacy Statement. Je ontvangt een mail met het aangevraagde document en daarnaast andere mails met tips voor je app, waar je je altijd voor kunt uitschrijven.
-David van AppSpecialisten