Quoi de neuf sur Android ? droidcon UK 2017
Les 26 et 27 octobre derniers, nous avons eu l’occasion de nous rendre à la Droidcon à Londres. Pour l’un comme pour l’autre, c’était nos premiers pas dans une conférence de cette envergure, sur qui plus est, notre domaine de prédilection. Et nos attentes n’étaient pas des moindres : au sein de notre Tribu, la plupart des sujets du moment nous semblaient avoir été creusés de long en large, que ce soit au niveau de l’architecture, des librairies et méthodes de gestion de l’asynchronisme ou encore des avantages de Kotlin. Nous avions donc espoir de découvrir de nouvelles choses, de démystifier certains sujets d’apparence obscure et au final, de revenir avec les bras remplis de nouveautés à explorer (et de goodies).
La Google I/O de cette année a mis en avant Kotlin et leur multitude de recherches sur le Machine Learning et le Deep Learning (AlphaGo, TensorFlow, etc). Le programme de cette année était clairement influencé par ces domaines, ce qui n’était pas pour nous déplaire.
Ajoutons à cela une importante partie liée à comment ça marche “sous le capot”, une bonne dose de talks sur le développement des applications mêmes, tout ça saupoudré d’un peu d’humain, sans oublier les incontournables figures de la communauté Android.
Sous le capot
Cette année, une partie des talks était consacrée au fonctionnement interne du système Android. Certains talks ont fait office de rappels globaux,notamment le talk d’Effie Barak sur les « Android Internals for Developers », qui nous a parlé de la gestion des processus, de leur création à leur suppression par le système en passant par la communication entre eux. D’autres talks, un peu plus spécifiques, discutaient d’une bonne partie de la gestion des vues. Britt Barak nous a présenté tout le cheminement réalisé à partir d’un objet haut niveau vers un pixel affiché sur notre écran dans un talk sobrement intitulé « From View to Pixel », en passant par la mesure de la vue, son positionnement puis son dessin. Tout ça sur fond de modification des assets du système Android à travers la gestion d’un overlay de ressources.
Ce genre de talk fait un bien fou. Nous passons nos journées, nos mois que dis-je, notre vie à développer des applications du tonnerre, mettre en place les nouvelles architecture à la mode, migrer tout notre code en Kotlin ou encore chercher une énième façon de gérer l’asynchronisme dans nos projets. On finit par en perdre notre curiosité de ce qui se passe derrière chaque ligne de code que nous écrivons. Savoir que les IDs hexadécimaux de ressources que l’on voit parfois dans Android Studio sont en fait formés à partir d’un identifiant de package, de type et d’entrée ou que le système Android est principalement géré par trois managers (window, package et activity) lancés par un seul et même service, stimule cette curiosité en nous.
Nous ne voulions rater ces talks sous aucun prétexte et nous avons eu bien fait. Bien sûr, ce ne sont pas ces derniers qui vont nous permettre de rentrer en France avec des sujets à creuser plein la tête. Mais renforcer ses fondations ne fait pas mal !
Android App Development
Certains talks parlaient de sujets que nous connaissons bien au sein de la Tribu Mob. La Clean architecture et Kotlin en font partie.
Igor Wojda avec “Why do we need Clean Architecture” nous rappelle les grands principes de cette architecture et pourquoi il est grand temps d’arrêter le MVP. Sa vision de la Clean Architecture est très semblable à la nôtre. Par contre, Igor Wojda pense que la Clean Architecture n’est pas adaptée au petit projets et qu’il existe trop d’implémentations. Sur ce point, nous sommes en désaccord : c’est justement ces multiples compréhensions de l’architecture qui la rend adaptable à beaucoup de projets.
Quand à Kotlin, avec une apparition dans quasi tous les talks, Kai Koenig veut pousser le sujet des Coroutines avec “Kotlin Coroutine and Android sitting in a tree”. C’est essentiellement un test que nous retenons. Il crée une boucle de un million et, dans chaque itération, ouvre un thread qui ajoute un élément à une liste. Le programme met 1 minute à s’accomplir. Il écrit le même programme avec des coroutines, et le programme met 5 secondes. Une échelle totalement différente qui remet en question notre utilisation des threads !
Dans la catégorie “obscure”, nous avons les ConstraintLayouts ! C’était pour nous difficile de comprendre pourquoi passer à ce layout alors qu’on peut tout faire avec ces bons vieux LinearLayout et RelativeLayout ! Nous avions tort, et maintenant, nous savons pourquoi. Britt Barak avec “From View to Pixel” avait déjà énoncé la différence de performance entre ces autres layouts et le ConstraintLayout, Connie Reinholdsson avec “Three key lessons when migrating to ConstraintLayout” nous donne les clés pour s’y mettre. Un bon logiciel de comparaison d’image et un clic-droit “Convert To ConstraintLayout” et vous pouvez vous y mettre aussi. Performant et facile d’utilisation, nous avons donc remis en question notre jugement sur ce tout nouveau layout.
Chris Banes nous présente “Becoming a Master Window Fitter” qui nous démontre qu’Android fait déjà tout le boulot au niveau de nos fenêtres et qu’il n’est pas raisonné d’aller modifier son fonctionnement, comme changer la taille de la statusBar. Ajit Singh (“Online to Offline world of Mobile Apps”) et Chris Le Roy (“Hacking Android, a Hacker’s Narrative”) ont fait évoluer notre façon de concevoir une application par rapport au monde extérieur.
Penser aux endroits où le réseau est inexistant ou encore être rigoureux avec la sécurité de nos applications ne sont pas forcément les premières chose auxquelles nous pensons.
Enfin Jeff Corcoran et son talk (assez drôle) “So you made an app and nobody cares” nous donne les clés pour que nos apps ne tombent pas dans l’anonymat de la masse du PlayStore, tout ça, en se citant lui-même.
Toutes ces astuces, conseils et démonstrations ont attisé une curiosité qu’on ne pensait pas ou plus avoir sur certains sujets. Ces talks ont démonté nos préjugés sur le ConstraintLayout et ouvert nos yeux sur la pérennité de ce que l’on produit.
Big Stars in the Android Sky
Inutile d’essayer de le cacher, quand on se rend à la Droidcon, on est un peu comme des petits fous à l’idée d’aller s’installer dans la grande salle écouter ces personnes dont on parle presque quotidiennement avec les collègues lors des quatres keynotes.
Il faut savoir que la Droidcon est un évènement « ticketless », c’est-à-dire qu’en théorie, on se présente l’esprit léger et une carte d’identité suffit à récupérer son pass. Sur le papier, ça sonne bien. Sur place, pas tellement. Parmi la file d’attente, on appelle toutes les personnes dont le prénom commence par telle lettre pour les rediriger vers les guichets. Bref, au final tout le monde triche, c’est pas cool. Voilà pourquoi on se retrouve dès la keynote d’ouverture en salle de débordement.
Mais peu importe, à l’occasion des 10 ans de Android, Chet Haase et Romain Guy nous présentent une rétrospective de son évolution depuis ses débuts. On a l’impression de s’imprégner de cette histoire et, au final, d’être un développeur Android un peu plus complet.
C’est au tour de Lisa Wray de fermer la première journée. Beaucoup d’entre nous ont voulu se lancer dans l’aventure de la création d’une librairie. Lisa Wray nous donne les clés pour réussir, ou du moins, trébucher le moins possible (soulignons que ce sont les slides les plus cools qu’il nous ait été donné de voir). On retrouve un talk similaire en début de deuxième journée avec Florina Muntenescu qui nous parle des bonnes pratiques dans la création d’une API.
Ces deux talks nous font prendre conscience que lorsqu’on a un besoin, des milliers d’autres personnes ont forcément ce besoin aussi.
Que ce soit dans la création d’une librairie ou d’une API, on sort de ces keynotes avec une espèce d’oeil critique sur l’environnement qui nous entoure. On veut trouver le cas d’usage qui nous permettra de, nous aussi, nous lancer, de créer une communauté autour de notre produit et de le faire évoluer un peu à la manière d’une mini startup.
Quoi de mieux, après déjà une journée et demie de prise de notes intensives et des gnocchis, que d’aller s’installer au premier rang de la salle principale pour écouter Chet Haase et Romain Guy nous présenter leur nouveau langage de programmation censé remplacer le célèbre mais déjà obsolète Kotlin ? Je parle bien entendu du nouveau langage “Functional And Reactive Turing-complete language” (soit F.A.R.T.). Un comedy talk d’exception, allant jusqu’à une séance de questions-réponses à laquelle nos deux speakers se prêtent avec un sérieux déconcertant.
Pour finir ces deux jours de Droidcon, nous sommes allés dans la salle principale pour écouter Jake Wharton himself nous parler de bytecode. Bon ok, ça peut faire peur et je ne cache pas qu’il fallait s’accrocher pour suivre son talk. En voyant ce tweet, on pensait à une blague :
Et bien non, 339 slides de présentation pour être précis, présentant pas à pas différents exemples de bytecode. En fin de Droidcon, ça pique. Il déconne pas le Jake.
Le but du talk était de nous apprendre à lire du bytecode afin d’être en mesure de répondre à des questions telles que “Quel type de variable d’itération est la plus rapide” ?” ou encore “Comment sont backportées les lambdas de Java 8 vers Java 6/7 ?”.
Et au final, c’était captivant. En fin de talk, Jake nous fait la promesse qu’en regardant de temps en temps notre bytecode, nous deviendrons de meilleur·e·s développeurs·euses.
Cool Intelligent Android: What’s up in Machine Learning?
Deux talks traitaient du fameux mais terrifiant TensorFlow. C’est Erik Hellman avec “My app is smarter than your app” et Qian Jin avec “Heat the neurons of your Smartphone with Deep learning” qui ont tenté d’expliquer les réseaux neuronaux et les modèles de prédiction à un public de développeurs Android. Et c’était pas gagné.
Malgré la difficulté du domaine (qui lui a donné envie de jeter son bureau), Erik Hellman souligne la nécessité de s’y mettre : userexperience, automatisation… On peut, par exemple suggérer des hashtags sur une photo ou encore trouver automatiquement des commentaires négatifs, de harcèlement etc. En plus de TensorFlow, il ajoute qu’on peut s’amuser avec le CloudAI de Google qui contient déjà pas mal de réseaux (reconnaissance d’images, de vidéos, d’émotions dans une phrase, etc).
Qian Jin nous parle du projet Magritte : une application capable de reconnaître des fruits en les filmant. Elle nous montre l’évolution de son modèle de reconnaissance via Deep Learning et les moyens d’intégrer ce modèle dans une application.
Et ne l’oublions pas, nos smartphones sont de plus en plus puissants. Avec la nouvelle génération de CPU DSP, le Deep Learning devient accessible au mobile.
Ces talks ont été extrêmement importants pour nous. Après avoir passé des mois à regarder TensorFlow du coin de l’oeil, nous voilà complètement conquis par la possibilité de rendre nos applications encore plus intelligentes. L’intelligence est à portée de code : c’est décidé, on s’y met.
Be a developer, Be Human
Quand vous allez pour la première fois à une conférence technique, vous ne vous attendez pas à trouver des talks sur qui nous sommes et pas ce que nous faisons.
C’était pourtant le cas de ces deux talks, pourtant totalement différents : “Master your carreer: Tips and Tricks to Rule your Future” par Jose Nieto et “Authentic Developer” par Anastasia Lopez.
Dans le premier talk, Jose Nieto nous parle de l’importance d’attraper les opportunités dans nos carrières. Il a eu le choix entre partir en vacances ou aller à la Droidcon : il a choisi le second et les opportunités qu’il a eu depuis sont à la hauteur de l’investissement. Il faut dire “Oui” aux opportunités et avoir une attitude positive.
Son dernier conseil est de se fixer un ou plusieurs challenges en parallèle sur 6 mois (professionnels ou non), et de faire le point à la fin.
Là où Jose Nieto nous parlait de nous, développeurs, Anastasia Lopez voulait nous parler de nous, humains. Elle parle de son expérience, de la honte qu’elle a pu en tirer, de l’image qu’elle a d’elle-même. Elle nous parle de nous, de ce sentiment de ne jamais se sentir assez doué·e, assez drôle, d’être un imposteur. Elle nous donne 5 caractéristiques qui nous permettent de retrouver notre identité : Naturel, Sincère, Spontané, Ouvert et Véritable. Ces caractéristiques se travaillent. Elle nous encourage aussi de voir le monde à travers les yeux des autres.
You have the power to make the difference
Nous avons été fasciné par ce second talk. L’humanité et la vision d’Anastasia Lopez colle aux valeurs que OCTO souhaite partager. Parler de la honte que l’on peut ressentir face à notre boulot et le moyen de travailler dessus était très enrichissant.
On était venus avec de grosses attentes, on repart avec beaucoup d’idées. Une impression d’avoir réussi à dénicher des sujets à explorer et à partager avec notre équipe.
Parmi les nombreux talks auxquels nous avons pu assister, deux d’entre eux nous ont particulièrement marqués.
Sur le thème de l’humain, c’est le talk d’Anastasia Lopez sur l’authenticité qui nous a le plus apporté. On aimerait voir ce genre de talk plus souvent et que ce message soit entendu par le plus grand nombre. En écoutant Anastasia, on se rend compte qu’il suffit de parler pour débloquer des situations parfois difficiles.
Du côté plus technique, le talk d’Erik Hellman sur l’intelligence des applications a éclairci un sujet pour nous assez mystérieux et a piqué notre curiosité.
Grâce à la Droidcon, nous qui hier ne nous sentions pas capables d’aborder ce genre de sujet, sommes aujourd’hui convaincus des possibilités qui s’offrent à nous et motivés plus que jamais à les explorer.
Lors de l'événement Women Tech Makers organisé par le PAUG et le GDG à Paris, Marion Hayoun (AndroidMakers) nous faisait part de la difficulté de trouver des speakers femmes.
Les Keynotes de cette édition de la droidcon UK étaient paritaires. Sur l’ensemble de la convention, presque 22% des talks étaient présentés par des speakers femmes, chiffres plutôt impressionnants par rapport à la plupart des autres conférences. Ce sujet nous tient à coeur. Ce chiffre nous rassure et est encourageant pour la suite.