Een aantal maanden geleden sprong ik in het diepe. Ik begon met een nieuw project met een voor mij nog onbekende technologie. Als mobile .NET developer heb ik veel ervaring met het bouwen van mobiele apps, vooral met Xamarin en Xamarin.Forms. Mijn sprong in het diepe was het bouwen van een mobiele app met cross-platform framework Flutter!
Auteur: Duco Fronik
In de mobile wereld kan je niet meer om Flutter heen, overal hoor je enthousiaste geluiden: Flutter is snel, mooi en makkelijk te leren. Die dingen zijn allemaal waar, maar geldt dat niet voor ieder framework? De eerste stappen zijn vaak makkelijk, volg de “getting started guide” en 5 minuten later knippert ”Hello world” op je scherm. De tegenvallers komen vaak pas als je aan de slag gaat met een real world application. Veel van die tegenvallers hebben hun basis in oude kennis: je probeert problemen op te lossen op de manier die je gewend bent met het framework of de taal waar je veel ervaring in hebt. Andere tegenvallers komen wel degelijk door de onbekende technologie. Zo ondersteunt Dart (de programmeertaal voor Flutter) geen reflectie. Gebruik van reflectie zou het optimaliseren van de app binary te lastig maken. Dat betekent bijvoorbeeld dat het (de)serialiseren van JSON handmatig moet worden uitgetikt, of doormiddel van “Code Generation” moet worden gegenereerd. Een horde die makkelijk is te overwinnen na een uurtje speuren naar best practices.
Tegenvallers maken het leren van een nieuwe technologie soms frustrerend en ontmoedigend. Maar bestonden de eerste maanden dat je programmeerde ook niet uit een heleboel tegenvallers? Het belangrijkste is dat tegenvallers worden afgewisseld door overwinningen, want die geven energie! Toen ik jaren geleden begon met programmeren op een Arduino genoot ik van het ontdekken en puzzelen. Net zoals ik nu geniet van het ontdekken en puzzelen binnen Flutter en Dart, omdat ik stappen maak en doelen bereik. Nieuwe technologie leer je door uit je comfortzone te stappen met je kennis en ervaring zonder deze voor harde waarheid aan te nemen in de nieuwe omgeving. En het belangrijkste is te genieten van de stappen die je maakt! Ik geloof dat je jezelf als developer dit leerproces eigen moet maken. We hebben het nou eenmaal niet altijd voor het kiezen: technologie zou nooit leidend mogen zijn maar moet in dienst staan van de toepassing. De enige manier om zeker te weten welke technologie de beste oplossing biedt voor een toepassing, is af en toe een sprong in het diepe te wagen en zoveel mogelijk van een andere technologie te leren. Pas dan kan je een weloverwogen keuze maken.
Mijn ervaringen met Flutter zijn fantastisch, ik leer nog steeds elke dag nieuwe dingen. Flutter is bij uitstek geschikt om apps te bouwen met een prachtige UI. Toch zou ik voor een “data heavy” mobiele app met veel logica, zonder met mijn ogen te knipperen voor Xamarin kiezen. Wie weet of dat binnenkort .NET MAUI wordt, een veelbelovend redesign van Xamarin.Forms. MAUI is een simplificatie van de huidige architectuur en biedt desktopsupport en performance winst. Gebruik van het Generic Host model (dependency injection zoals in ASP.NET Core) en de UI keuze tussen XAML of declaratief met C# maken het een aantrekkelijk framework. Bouw ik mijn volgende app in .NET MAUI? Dat weet ik pas zeker na mijn volgende sprong in het diepe!
Bio
Duco is .NET developer met een specialisatie richting mobile development. Bij Team Rockstars is hij ook special agent (thought leader). In die rol adviseert hij klanten, spreekt hij op conferenties en schrijft artikelen.