Entreprise

Derrière les coulisses de l'équipe mobile de Genetec

« Genetec recherche plusieurs développeurs mobiles motivés et curieux afin de créer une toute nouvelle équipe au centre-ville de Montréal. »

Cette annonce faite en 2018, n’était qu’un début pour les développeurs qui ont embarqués dans l’aventure avec nous....

Thibault Wittemberg
Solution Architect, R&D

Origine de l’équipe

« Genetec recherche plusieurs développeurs mobiles motivés et curieux afin de créer une toute nouvelle équipe au centre-ville de Montréal. »

Cette annonce faite en 2018, n’était qu’un début pour les développeurs qui ont embarqués dans l’aventure avec nous.

« Une toute nouvelle équipe »… cette facette de la proposition est suffisamment rare pour rendre le défi plus qu’intéressant. Bien-sûr, de nouveaux talents nous ont depuis rejoint, mais le mandat reste inchangé:

Accompagner la ligne de produits de Genetec en réalisant des applications natives, respectueuses de leurs plateformes, autour d’architectures et de conceptions communes.

« Autour d’architectures et de conceptions communes »… C’est le mojo de l’équipe mobile.

Nous sommes convaincus que les technologies natives fournissent la meilleure expérience utilisateur et la meilleure expérience développeur!

Cependant, les développeurs Android et iOS doivent pouvoir partager des paradigmes de programmation et des bonnes pratiques leur ouvrant un monde d’apprentissage partagé.

Vue sur le Mont Royal depuis les bureaux de Genetec

Comment faire d’un principe fondateur une réalité ?

Notre premier acte en tant qu’équipe fut de réunir l’ensemble des développeurs et de poser les bases d’une architecture commune et de définir des outils de conception transcendant les plateformes. 

Les principes SOLID

Nous ne ferons pas ici l’explication des principes SOLID (heureusement) puisqu’ils sont amplement documentés.

Nous nous y sommes cependant référés afin d’établir une isolation satisfaisante des préoccupations et d’identifier les mécaniques d’abstraction afin:

  • de partager un découpage similaire en terme de couches applicatives, respectant ainsi les principes énoncés par Uncle Bob dans sa Clean Architecture.
  • de mettre en place les mécanismes d’injection de dépendances produisant un code testable et évolutif.

La programmation réactive & la programmation fonctionnelle

Ces paradigmes de programmation nous permettent de poser les bases d’un flux de données unidirectionnel nous offrant la possibilité de:

  • ségréguer les effets de bords tels que les I/O et les mécanismes asynchrones.
  • s’appuyer sur des fonctions libres pour assurer les mutations de l’état applicatif.
  • tester facilement nos cas d’usages puisqu’ils s’appuient sur des fonctions dont les résultats sont prédictibles.

L’intérêt de s’appuyer sur ces techniques de développement est qu’elles fournissent des concepts agnostiques des plateformes. Nous écrivons donc des chaines de fonctions dont les syntaxes sont extrêmement proches en Swift et en Kotlin, facilitant d’autant la communication des bonnes pratiques au sein de l’équipe.

Notre armée de Bugdroids

Les architectures basées sur l’immutabilité de l’état

Nous avons fait le choix de gérer l’état applicatif comme seule source de vérité au coeur de nos applications.

Bénéficier de motifs de conception centrés sur un état immutable et reproductible nous apporte des garanties intéressantes :

  • aucune modification de l’état ne peut être propagée de façon non maîtrisée au sein de l’application. L’état étant immutable, toute modification entraine sa recopie. Nous profitons, par ailleurs, de la faculté des langages Swift et Kotlin d’offrir des moyens surs de gérer cette immutabilité, que ca soit à l’aide de structures de données « value type » ou des data/sealed class.
  • les demandes de mutations de l’état sont réalisées de façon encadrées, fournissant de facto un environnement sécuritaire pour les développeurs.
  • les mutations concurrentes de l’état sont, par conception, impossibles. 

flux de données unidirectionnel

Entretenir la passion

Une équipe de développement peut parfois se comporter comme un vieux couple: il faut en permanence cultiver la flamme et surprendre l’autre 😏.

Il est évident qu’une équipe qui se repose sur ses acquis technologiques est en train de mourir, cela n’a d’interêt pour personne. L’équipe mobile de Genetec doit être un espace où vous avez la possibilité de grandir et de vous développer.

Nous nous réunissons toutes les deux semaines en équipe complète afin de partager nos découvertes et avancées et de déterminer la possibilité de les introduire dans nos applications.

Par ailleurs, nous accordons une grande importance au fait d‘impacter la communauté de développeurs en allant régulièrement dans les meetups locaux, en publiant des articles techniques sur Medium, ou en assistant à des conférences de renommée internationale.

Nous sommes le “Wrecking Crew”

Des démolisseurs: c’est le mot d’ordre qui a été formulé lorsque nous avons constitué notre équipe mobile:

  • démolir les idées reçues quant au coût du développement natif.
  • démolir nos développements pour les rebâtir chaque fois que nous le jugeons nécessaire.

C’est extrêmement rassurant de savoir que l’entreprise encourage la prise de risque et promeut l’amélioration de notre technicité:

  • nous avons pu introduire un refactoring progressif d’architecture sur notre première application Android seulement quelques mois après sa première livraison avec le soutien et les encouragements des gestionnaires du projet.
  • en cours de projet, nous n’avons pas hésité à migrer nos pipelines d’intégration et de déploiement continu sur une nouvelle plateforme qui nous offrait davantages de fonctionnalités.
  • nous sommes dors et déjà en train de concevoir l’itération suivante de nos architectures communes afin d’y introduire davantage de programmation fonctionnelle et de promouvoir les techniques de composition.

Notre équipe est un centre d’excellence mobile au sein de Genetec. “Un grand pouvoir implique de grandes responsabilités”, l’indépendance technique qui nous est accordée s’accompagne d’une responsabilité quant à la qualité de nos réalisations pour garantir la valeur de la ligne de produits de Genetec.

 

Intéressé à vous joindre à l'équipe mobile de Genetec ?

Thibault Wittemberg

Thibault Wittemberg, Solution Architect, R&D, Genetec Inc.