Du développeur Android au DevOps

Nous continuons une série d'articles sur ceux qui font des projets de leurs propres mains. Avec Stepan Goncharov, nous avons discuté de la manière de changer organiquement la direction de l'activité professionnelle, et en même temps, de changer nos compétences de développeur Android en DevOps. Ils ont posé des questions sur le cycle de publication et les processus de Grab , une entreprise dans laquelle 40 personnes ne développent que pour Android. Ils ont expliqué où trouver des idées de jeux, ont interrogé Stepan Archetype et kOptional sur les projets OpenSource.



À propos de l'invité : Stepan Goncharov ( stepango ) développe des applications et des jeux pour Android depuis 2008, depuis des temps immémoriaux, lorsque le SDK Android n'est pas sorti. Au cours de sa carrière, il a réussi à jouer le rôle de QA, manager, marketeur, blogueur, analyste, conseiller et bien d'autres. Il a participé au développement d'applications inconnues et d'applications avec des millions d'utilisateurs à travers le monde. Il travaille actuellement chez Grab, utilise beaucoup Kotlin et Rx et consacre plus de temps à OSS.

Voici le décodage du texte du podcast Run Loop . Présentateurs: Ilya Tsarev, Alexey Milyaev et Roman Busygin.

Ilya: Dites-moi dans quoi Grab est directement impliqué et quel est votre rôle. Êtes-vous en train d'écrire du code ou quelque chose de plus?

Stepan: Au départ, Grab est un service de masquage de trajet. Vous pouvez commander un taxi, ils viendront à vous, viendront vous chercher et vous prendront. Mais récemment, la société a de plus en plus accès à des services supplémentaires tels que la livraison de nourriture et son système de paiement. Lorsque je suis arrivé chez Grab, j'ai dirigé l'équipe de développement d'applications de pilotes. Il est ensuite passé à l'application passagers. Un de mes projets récents était une refonte complète de l'application passagers . Maintenant, je fais plus de DevOps - configuration de CI, optimisation du temps de construction et tout ça.

Devops


Alexei: Stepan, et si ce n'est pas un secret, pourquoi avez-vous décidé de passer à DevOps et CI? J'entends souvent une histoire lorsque les développeurs mobiles arrivent sur la plate-forme, sont enthousiastes, pompés à des hauteurs incroyables, puis décident de se lancer soudainement dans des tâches non productives.

Stepan: En fait, tout s'est avéré, je dirais, organique . Pendant que j'étais en train de repenser l'application, nous avons eu une migration d'urgence vers GitLab en raison du fait que les instances CircleCI ne pouvaient plus construire notre projet. Il s'est avéré être trop volumineux et consommait beaucoup de mémoire, mais il n'y avait pas d'instances CI appropriées. D'une manière ou d'une autre, je suis resté bloqué pendant plusieurs semaines à essayer de migrer nos processus et, en général, tout ce qui concernait l'IC vers GitLab. Ensuite, une fois le projet terminé, nous avons formé une nouvelle équipe de plateforme. Alors que j'ai passé 3 semaines en vacances, toutes les autres tâches ont été prises, donc quand je suis revenu, ils m'ont dit: " C'est ça, vous optimisez la vitesse de construction et l'IC."

Différents rôles et activités


Ilya: Nous avons aussi des oiseaux - pas ceux qui ont des micros en boucle, mais toujours sur la queue, ils vous ont informé que vous avez visité QA, en tant que manager, et un marketeur, et un blogueur et un analyste - en général, j'ai passé par beaucoup d'activités différentes . Veuillez nous dire plus en détail comment vous vous êtes engagé dans tous ces rôles, depuis combien de temps y êtes-vous, qu'aimez-vous dans chacun, peut-être, n'a pas aimé? Peut-être que vous aimeriez revenir aux blogueurs maintenant?

Stepan: En principe, dans chacun de ces rôles, d'une manière ou d'une autre, il s'est avéré organiquement se dérouler en douceur de l'un à l'autre. Tout a commencé avec le fait que je me suis intéressé au développement Android avant la sortie du premier appareil sur Android . J'étais intéressé par l'idée elle-même - un système d'exploitation en Java - quelque peu inhabituel. En conséquence, tout en étudiant à l'université, au lieu de faire des travaux de laboratoire en C ou d'autres problèmes universitaires ennuyeux, j'ai progressivement réduit tout à Android. Le professeur n'était pas opposé, il était également intéressé à apprendre quelque chose de nouveau et j'ai écrit des applications Android.

Au moment où j'ai obtenu mon diplôme, j'avais déjà une certaine expérience. J'ai écrit ma première application, je l'ai lancée sur le marché, ce qui a déclenché ma passion pour le marketing . J'avais ma propre application et je devais en quelque sorte la promouvoir. J'ai commencé à déconner un peu et à écrire des blogs.

En 2010, j'ai trouvé le travail d'un développeur Android, alors c'était presque impossible - il n'y avait pas de marché, personne ne connaissait Android. Je suis entré dans une entreprise d'externalisation et j'ai dû recruter une équipe avec seulement six mois d'expérience et 2 candidatures publiées.

Du marketing et des blogs, je suis donc retourné au développement. Puis il est diplômé de la magistrature, a déménagé à Saint-Pétersbourg - également pour externaliser. Là, j'ai commencé à m'impliquer dans les tests automatisés, et il s'est avéré que j'ai développé la direction de Robotium dans l'entreprise et enseigné à QA comment écrire des tests automatisés, jusqu'à mon départ pour Singapour , où j'ai à nouveau recruté mon équipe pour l'une des startups de Singapour. Après cela, il a commencé à se développer davantage dans le développement Android. Maintenant, je suis entré dans Grab - d'abord pour les managers, puis pour DevOps.

Roman: Stepan, dites-moi, vous manquez cette fois où vos tâches ont suffisamment changé? Maintenant, grosso modo, chaque jour vous buvez du DevOps - et c'est tout?

Stepan: En fait, pas encore. J'ai récemment terminé un grand projet, et en principe, il y a encore assez de tâches. Ils peuvent sembler, bien sûr, les mêmes - c'est-à-dire que l'objectif est un, mais ce que je fais, c'est beaucoup, beaucoup de choses différentes , y compris, par exemple, le profilage de la mémoire, travailler avec CI. Maintenant, je regarde Amazon Analytics sur S3. C'est tout nouveau pour moi jusqu'à présent . Je ne pense pas que je serai engagé dans l'IC et l'optimisation du temps d'assemblage pendant longtemps. Par exemple, au cours du prochain trimestre, je passerai probablement à autre chose.

Roman: Par exemple, j'ai un cycle de transition d'une direction à l'autre pendant environ 2 à 2,5 ans . J'ai commencé avec les tests, puis je suis passé aux tests de charge, puis je suis devenu développeur. À quelle fréquence changez-vous vos intérêts et domaines de travail?

Stepan: Quelque part dans la région de 1,5 à 2 ans. Mais récemment, cela a duré six mois.

Les jeux


Alexei: Qu'est-ce que tu aimerais le plus faire? Idéalement, vous aimeriez peut-être quitter le développement, ne rien toucher avec vos mains? Ou peut-être qu'au contraire, vous aimeriez creuser dans des choses indigènes profondes? Que voulez-vous le plus précisément?

Stepan: C'est une bonne question! En fait, je n'ai pas décidé. Je suis toujours intéressé par pas mal de choses . L'un des plus intéressants pour moi, où je n'ai pas pu accéder, est le développement de jeux. Pendant mes études à l'université, j'aimais écrire toutes sortes de jeux. J'avais des projets sur Flash. Ma deuxième application Android était également un jeu. J'ai même travaillé pendant un mois dans une entreprise de jeux, mais cela n'a pas fonctionné pour moi.

En principe, je voudrais essayer la conception du jeu , mais c'est toujours difficile. Plus je passe de temps et développe sur Android, plus cette transition sera difficile, si elle se produit.

Ilya: Styopa, si nous avons abordé le sujet des jeux, alors la question est - de quoi parlait votre premier jeu?

Stepan: C'était en 2010, donc c'était assez simple. C'était un puzzle logique avec des lasers et des miroirs qui devaient être tournés pour que les lasers atteignent la cible. Malheureusement, ce jeu était alors hébergé sur le compte de mon employeur. Ce compte a été supprimé depuis longtemps et le jeu n'est pas là. Mais je l'aimais vraiment beaucoup. Il a été entièrement écrit sur Android View, ce qui, bien sûr, je le regrette, mais l'expérience a été excellente.

Ilya: Maintenant, prenez-vous le temps de développer des jeux?

Stepan: Non. Il n'y a absolument plus de temps pour les jeux maintenant. Outre le fait que je travaille dans l'entreprise, j'organise également des réunions Kotlin à Singapour et interviens lors de conférences. Autrement dit, le temps libre est complètement plein. Peut-être qu'un jour j'y reviendrai. Récemment, j'ai acheté Google VR pour essayer Unity quand le temps le permet, mais jusqu'à présent, cela n'a pas été possible.

Roman: Et dites-moi, s'il vous plaît, où avez-vous eu des idées de jeux? Comment vous sont-ils venus à l'esprit?

Stepan: Les idées de jeux me viennent généralement des innovations techniques. Je regardais habituellement quelques démos technologiques, ou, par exemple, en 2008-2010, il y avait une mode pour les moteurs physiques. Vous voyez une technologie cool ou un nouveau shader à la mode, et les idées elles-mêmes apparaissent en fonction de ce que vous voyez.

Roman: Votre hobby de créer des jeux est-il lié au fait que vous êtes vous-même un joueur - vous coupez dans la PlayStation, dans Switch, sur PC - y a-t-il une corrélation?

Stepan: Oui, je pense que oui. Enfant, j'avais Sega, puis PC, je passais beaucoup de temps à jouer à des jeux. Maintenant, j'ai à la fois PlayStation et Switch, mais maintenant je passe beaucoup moins de temps sur les jeux , je n'ai même plus à y jouer.

Roman: Et de quels jeux vous souvenez-vous le plus? Ou quel genre de jeux préférez-vous? Par exemple, je préfère les tireurs ou une sorte d'horreur de survivant.

Stepan: D'une manière ou d'une autre, je n'ai pas travaillé avec les tireurs. J'ai joué à Counter-Strike quand j'étais enfant, mais ce n'était pas le cas. L'un de mes jeux préférés est Space Rangers-2 , et la première partie est également épique, bien sûr. Puis de mémorable c'était Freelancer .

Alex: Freelancer est un jeu? C'est un style de vie!

Stepan: En fait, c'est un simulateur spatial, en gros, très proche des Space Rangers, mais du point de vue d'un tiers. The Witcher, Arcanum et Fallout sont comme ça.

Ilya: Il me semble que le développement de jeux est le rêve de la plupart des programmeurs . Comme il m'a toujours semblé, les gens ne vont généralement au développement que pour faire des jeux. C'est super cool! Mon premier projet iOS - c'était aussi un jeu, soit dit en passant. Qu'en pensez-vous?

Alexei: J'ai entendu dire que pour beaucoup de gens, le chemin de la programmation commence vraiment par le fait qu'ils veulent créer une sorte de jeu, ils aiment jouer à des jeux, ils veulent comprendre comment le faire. Pour une raison quelconque, je ne l'avais pas. J'étais plus intéressé par le fonctionnement des programmes - ce qui se passe lorsque vous cliquez sur Windows dans Windows. Mais à un moment donné, j'ai réalisé que je ne savais pas comment créer des jeux. Je comprends comment il est possible d'écrire telle ou telle application sur un téléphone portable, tel ou tel programme sur un PC - je n'imaginais pas comment faire des jeux. D'une certaine manière, j'ai été tellement mis sur une chaîne YouTube. Là, un mec de Java et Canvas a écrit son jouet à partir de zéro - un clone d'un jeu de RPG avec quelque chose de similaire à un mélange de Diablo et Final Fantasy. C'est vraiment très intéressant. Je conseillerais à tout le monde d'essayer de jouer avec pendant son temps libre , de comprendre comment il est généralement écrit, comment cela fonctionne. Ce fut une expérience très cool. Ensuite, je suis entré en quelque sorte dans les mêmes leçons, où le mec a vu un jeu simple sur Unity. Il est très intéressant de comparer les approches lorsque vous commencez à écrire votre moteur, et lorsque vous avez déjà quelque chose de prêt comme Unity, et que vous l'ajustez en quelque sorte pour faire le vôtre. Je recommanderais fortement d'essayer quelque chose comme ça, car c'est cependant très intéressant.

Roman: J'ai une expérience similaire. J'adore jouer, mais je ne suis pas un joueur passionné, mais en même temps, j'étais principalement intéressé à comprendre comment les programmes sont créés. Puis j'arrive à la conclusion que ce que j'aime, ce que j'aime, je veux essayer de le faire de mes propres mains. Mais en termes de jeux , tout commence par une idée . J'attends une idée qui puisse être implémentée dans n'importe quel temps libre, ou pour dégager mon temps et faire ce jeu.

Stepan: En ce qui concerne les idées, l'une des dernières qui m'est venue à l'esprit était liée à la génération automatique de cartes . Maintenant, cela peut être considéré comme une tendance, et certains jeux utilisent la génération d'énormes mondes pour les rendre très similaires aux vrais.

Il existe toute une classe d'algorithmes qui vous permettent de générer du terrain. Le paysage peut être construit pour qu'il y ait des montagnes et des mers. En principe, si une personne voit la vue de dessus de Google maps et le paysage généré, peu seront en mesure de les distinguer. C'est très intéressant, car vous pouvez créer du contenu pour le jeu par vous-même, sans avoir de grandes ressources, car c'est l'une des parties les plus difficiles. Du moins, je le pense.

Jour ouvrable


Alexei: Stepan, comment se passe ta journée de travail en général? Vous vous êtes réveillé, vous êtes arrivé au bureau ou vous n'avez pas obtenu - que faites-vous, comment allez-vous?

Roman: Je suis toujours intéressé par ce qui se passe avant d'arriver au bureau. Peut-être avez-vous des cafés préférés ou vos traditions préférées: par exemple, aimez-vous vous promener le long du jardin public devant le bureau? Qu'est-ce qui commence vraiment votre journée?

Stepan: Récemment, ma journée commence avec 50 pompes.

Alexey: Respect!

Stepan: À un moment donné, j'ai réalisé que je devais consacrer plus de temps à l'activité physique , et maintenant j'essaye de me forcer à le faire pendant mon temps libre. En principe, rien de spécial.

Étant donné que l'activité principale de l'entreprise est de se cacher, c'est-à-dire de commander un taxi, l'entreprise me paie un taxi. Par conséquent, la première chose que je fais le matin après le petit déjeuner est de commander un taxi et d'aller travailler.

Je travaille dans un bureau assez décent avec une vue magnifique sur la baie. Comme probablement la plupart d'entre nous, la première chose est, bien sûr, une tasse de café . Plus souvent qu'autrement, nous descendons avec des collègues au sous-sol du même bâtiment, allons dans l'un des cafés, prenons un café et allons discuter de nouvelles, de plans . C'est particulièrement intéressant si quelque chose se passe pendant cette nuit, qui est la journée aux États-Unis: quelque chose de nouveau est sorti, des nouvelles intéressantes, un nouveau cadre. Nous discutons de tout cela, et après cela, nous pouvons commencer à travailler.

Ensuite, tout est à peu près le même que tout le monde: vous allez à Jira , regardez les billets. Depuis quelques semaines, je suis de garde. C'est un tel développeur, sur qui tous les problèmes de production tombent, et vous devez en quelque sorte résoudre, déléguer ou dire - ce n'est pas un problème et l'oublier.

Étant donné que l'équipe est très grande ( plus de 40 personnes travaillent déjà sur l'application passagers - ce sont différentes équipes qui sont responsables de différents domaines), il est parfois assez difficile de trouver la bonne personne qui doit résoudre ce problème. Nous avons une telle rotation - chaque semaine, l'un des développeurs est engagé dans le ratissage des problèmes de production . Plus précisément, cette semaine, je prépare une version, il s'agit d'un correctif de problème de test, et encore une fois de trouver les bonnes personnes pour résoudre ce problème le plus rapidement.

Roman: 40 personnes sont uniquement Android, ou est-ce toute l'équipe qui fabrique l'application mobile?

Stepan: Ce n'est qu'Android.

Roman: Wow! Quand j'ai entendu le nombre de développeurs mobiles dans Uber, je me suis senti mal à l'aise. Mais votre équipe confirme cette tendance. Vous avez mentionné que vous étiez, en gros, en service sur les rapports de bogues. Dites-moi, comment se passe votre cycle de sortie?

Cycle de lancement de l'application


Stepan: En principe, je pense que c'est un processus plus ou moins ordinaire auquel les grandes applications essaient d'adhérer. Nous avons un train à libération fixe . C'est la semaine en ce moment. Autrement dit, chaque semaine, mardi, nous avons un communiqué. Un ingénieur de version est sélectionné pour cette semaine et, au début de la semaine, toutes les fonctionnalités qui entrent dans la version devraient être prêtes.

Si une fonctionnalité n'est pas prête, ils la jettent, la ferment avec un drapeau - faites tout ce qu'il faut pour l'empêcher de régresser. Dès que cette version, où toutes les fonctionnalités sont prêtes, est donnée à QA, le processus d'ingénierie de publication commence. Autrement dit, tous les bogues ouverts doivent être corrigés le plus rapidement possible , ils reçoivent la priorité la plus élevée. Même si le développeur travaille sur la prochaine fonctionnalité, qui sera publiée dans la prochaine version, mais qu'il y a un bug ou un problème qu'il connaît le mieux et qu'il a le moins de temps pour le résoudre, il lui est donné.

Cela nous arrive jusqu'à vendredi. Vendredi, nous essayons de mettre fin à la régression , de fermer tous les bogues de régression et de repartir avec une âme calme pour le week-end. Si quelque chose se produit soudainement, le lundi, vous pouvez le corriger rapidement, et déjà le lundi soir ou le mardi matin, publiez et déployez doucement - d'abord 10%, puis plus, plus, plus. Pendant une semaine, nous essayons d'en approcher une centaine et de sortir la prochaine version.

Tests et mises à jour


Roman: Composez et disposez rapidement - mais qu'en est-il du processus de test? Testeurs de personnes spéciales qui vérifient à quel moment le font-ils?

Stepan: Il y a beaucoup de testeurs, ils sont dans le temps. Je ne sais pas combien d’entre eux sont sûrs. La raison en est que la plupart des équipes ne sont pas à Singapour. Je ne me souviens pas du nombre de bureaux que nous avons, mais il y a au moins 5 autres bureaux où il y a des équipes de développement avec le contrôle qualité. Pendant le développement des fonctionnalités, ces équipes, en collaboration avec QA, déboguent ces fonctionnalités elles-mêmes et les testent. Au moment où le cycle de publication commence, les fonctionnalités ne devraient pas avoir de bogues ouverts . La régression se produit comme suit: un, peut-être deux QA de toutes les équipes se démarquent, et ils exécutent la régression en fonction de leurs caractéristiques. Juste cette semaine, lors de la recherche de bugs, les régressions sont corrigées.

Ilya: Il s'avère que vous avez un cycle de mise à jour hebdomadaire et que les utilisateurs ont le temps de mettre à jour dans un tel délai? Par exemple, nous avons été confrontés à une situation où les utilisateurs d'iOS ont le temps de mettre à jour, et Android - pas vraiment. Nos versions différaient directement pendant plusieurs semaines.

Alexei: Oui, il me semble aussi que la semaine se fait rapidement sentir.

Stepan: Oui, ça l'est. Une semaine est assez rapide, mais nous n'avons pas d'objectif pour tous les utilisateurs de mettre à jour . Nous sommes passés d'un cycle de publication de deux semaines à un cycle hebdomadaire afin de réduire le fardeau de l'assurance qualité pendant la régression, car un grand nombre de fonctionnalités se sont accumulées sur 2 semaines. 40 personnes peuvent faire des affaires! Puis, à la fin de la deuxième semaine, nous avions l'habitude d'obtenir des bugs assez graves qui ont été obtenus en raison de l'imposition de ces fonctionnalités, et il était assez difficile de les résoudre. Il s'avère que nous avons effectué une panne hebdomadaire et réparti cette charge de test de manière plus égale.

Ilya: Quel pourcentage environ de votre base d'utilisateurs utilise la dernière version?

Stepan: Cela dépend de la période dont nous parlons.

Ilya: Pour le moment.

Stepan: Vous ne pouvez utiliser la dernière version que si vous êtes entré dans ce plan de rechargement pendant une semaine. Autrement dit, le rechargement à 100% se fera soit vendredi, soit lundi, car déjà mardi une nouvelle version sortira. Cela dépend déjà de la bonne chance. Mais nous n'avons pas un tel objectif que les utilisateurs soient toujours assis sur la dernière version. La seule chose à laquelle nous devons encore penser est la version minimale prise en charge. Nous forçons périodiquement les utilisateurs à effectuer une mise à jour forcée lorsqu'au moins 90% des utilisateurs seront sur la version minimale prise en charge, soit environ 3-4 mois.

Organisation du travail d'équipe


Alexey: Styopa, j'ai une telle question. Vous dites que 40 personnes utilisent Android - non? Est-il vrai que 40 développeurs font quelque chose?

Stepan: Oui.

Alexei: Il y a un moment tel qu'avec l'augmentation du nombre d'employés, en particulier dans un domaine de l'entreprise, c'est-à-dire spécifiquement dans le développement Android, les coûts de communication augmentent de façon exponentielle . Tous les processus métier se sont engagés à résoudre ce phénomène. Et comment cela se résout-il en vous? Quelle est la structure organisationnelle de cette machine de 40 développeurs?

Stepan: En fait, notre solution est assez simple. Ces 40 développeurs ne font pas la même chose , et ils n'ont essentiellement pas besoin de communiquer fortement entre eux. Il s'avère que les équipes de différents pays sont engagées dans différentes fonctionnalités. Fondamentalement, vous n'avez pas besoin de communiquer avec d'autres équipes. Vous communiquez principalement avec votre manager. En conséquence, le coût de la communication n'est pas si élevé, car l' équipe est composée de 5 à 6 personnes . Il y a des équipes de 1 à 2: par exemple, seule une nouvelle verticale commerciale est apparue, il y a un développeur et il a juste un responsable de l'ingénierie, qui est responsable de tout, y compris le backend, iOS et autres.

, , , .

OpenSource- Archetype kOptional


: . , OpenSource -. , OpenSource, .. , , — Archetype kOptional . ?

: kOptional . , Optional . - Null, . . , Java8 .

, . , , — , , . , -.

Archetype — . - , 90 Seconds . - : , , , . , : , — .

, - . . . , , : " ". Pourquoi pas?

— , - , . , 90 Seconds , NDA . , , 90 Seconds: , - , - .

, - , 90 Seconds. , , , , . , , , Rx. , , Kotlin, legacy.

, , , … .

: , OpenSource- . , , , , , . , !

. AppsConf . , , ?

AppsConf


: , AppsConf. , , : « ». , , , .

, , . , , . , , , , .

. , , . , . — , .

, . , , -, , -, , .

, . , , , . Mobius, . .

-, , , - , , - WorkManager, .

, Kotlin , , , - .

: , ?

: , . -, , , , . , , , .

, , — , , , subscribe. - , , . .

: , - OpenSource , ?

: . production-ready, , , GitHub.

:
, ! , , , AppsConf 8–9 .

AppsConf , , , .

Source: https://habr.com/ru/post/fr423297/


All Articles