Réflexions sur mon stage chez CloudOps

September 9, 2020 / Julia Hohenadel

On serait porté à croire qu’il est difficile de définir la culture d’une entreprise lorsque l’on n’a jamais mis les pieds sur place ni rencontré ses collègues en personne. Pourtant, chez CloudOps, on a réussi l’exploit de propager la culture même dans un environnement virtuel.

De nombreuses activités sont organisées pour renforcer la cohésion au sein de l’équipe, comme des pauses-café virtuelles et des rencontres en personne autour d’une crème glacée, afin de préserver, même dans le télétravail, cette culture d’exception. Cela dit, la culture est un concept qui est difficile à décrire en mots. On dit qu’une image vaut mille mots, alors voici en images quelques-uns de mes meilleurs moments chez CloudOps.

Rencontres autour d'une bière

Chaque vendredi, 16 heures, tout le personnel de l’entreprise se rassemble pour une mise à jour hebdomadaire, les employés l’appellent le « beer meeting ». Au cours des 5 premières minutes environ, tout le monde jase et raconte un peu sa semaine, ensuite, certains groupes se dispersent dans différentes conversations zoom pour discuter davantage. C’est un 5 à 7 hors du commun. La photo ci-dessus fut prise lors de notre concours du meilleur arrière-plan virtuel, ce fut une réussite à tous les niveaux!

concours du meilleur arrière-plan

Rencontres autour d'une crème glacée

Une fois que les restrictions autour de la COVID-19 se sont relâchées, CloudOps a organisé des rencontres en personne autour d’une crème glacée. Comme je demeure à Guelph, je ne pouvais pas me rendre à Montréal pour joindre l’équipe, mais nous, les gens de la grande région de Toronto, y assistions virtuellement.

rencontre virtuelle avec crème glacée

Distribution de victuailles

Pat, mon gestionnaire s’est rendu, en vélo, chez tous les membres de l’équipe pour leur apporter des bagels. Guelph étant un peu trop loin pour faire le trajet, il m’a envoyé deux douzaines de bagels de Montréal. Tellement délicieux! En plus d’un ordinateur, j’ai aussi reçu une boîte remplie de surprises portant le logo de CloudOps, un kangourou, des stylos, des carnets de notes, des collants et même des figurines lego.

Julia avec ses bagels

Mission Tiktok

J’ai collaboré avec l’équipe des RH afin de créer une série de vidéos Tiktok sur le thème des valeurs fondamentales. Pour les visionner, cliquez sur ce lien : @_cloudops

Salt-n-peppa (Let's talk about Slack)

Les abeilles de CloudOps

CloudOps a une ruche sur son toit! La ruche est un clin d’œil aux valeurs fondamentales de l’entreprise et est vraiment super cool. Il y a même des ateliers virtuels sur zoom pour vérifier la santé de la ruche. Il fait bon de travailler pour une entreprise qui redonne à l’environnement.

Alvéole sur la terrasse de CloudOps

Mon travail comme stagiaire en développement infonuagique

Mon est celui de développeuse de logiciel au sein de l’équipe « produits ». Comme c’est l’équipe qui est propriétaire du produit CloudMC, j’étais développeuse de pile complète pour une application Java web. J’ai corrigé des bogues, mis à jour l’interface utilisateur, refactorisé du code et même ajouté de nouvelles fonctionnalités, majoritairement au module d’extension de Kubernetes. On m’a demandé de faire des recherches approfondies sur les entités Kubernetes pour aider au développement de nouvelles fonctionnalités.

Durant mon stage, j’ai développé nombre de nouvelles fonctionnalités pour CloudMC, incluant celles offrant : un soutien pour les ressources Kubernetes et leurs détachements, tels que les déploiements, les services et les secrets, un soutien pour la création de certaines ressources Kubernetes telles que les pods, les déploiements, les services et plus!

J’ai aussi contribué au maintien du produit :

  • j'ai apporté de nombreuses corrections de bogues
  • j'ai effectué plusieurs évaluations d'acceptation sur le travail de mes collègues
  • j'ai écrit des tas de tests pour toutes les entités Kubernetes
  • J'ai fait plusieurs refactorisations d'implémentations différentes

Travail d'équipes d'équipe

Une des quatre valeurs fondamentales de CloudOps est l’esprit d’équipe. Nous approchons le travail comme une équipe d’équipes, c’est-à-dire que l’entreprise forme une grande équipe composée de ses plus petites équipes. Ainsi CloudOps m’a offert de nombreuses occasions de collaboration en dehors de ma propre équipe, par exemple:

  • assurance de la qualité pour le nouveau site Internet de CloudOps
  • présentation des nouvelles fonctionnalités dans CloudMC
  • création d'une série de vidéos Tiktok inspirées des valeurs principales de CloudOps.
Julia et Julia chantent pour un vidéo

Une autre des valeurs fondamentales de CloudOps est l’amélioration continue. Maintenant que mon stage est terminé, voici quelques compétences que j’ai acquises lors de celui-ci.

Habiletés techniques

  • Git
  • Programmation orientée objet (Java)
  • Kubernetes
  • Concepts Cloud Native
  • IntelliJ
  • Groovy (Essais unitaires)
  • Développement de pile complète
  • Codage souple

Habiletés non techniques

  • Évaluations de code
  • Discours en public
  • Leadership
  • Communication
  • Méthodologies Kanban et Scrum
  • Résolution de problèmes
  • Travail d'équipe

J’avais cinq objectifs en tête lorsque j’ai commencé mon stage.

1er objectif: avoir une meilleure compréhension des infrastructures et des structures infonuagiques.

Une grande partie de mon temps chez CloudOps fut consacrée à l’atteinte de cet objectif. J’ai travaillé majoritairement à l’expansion de notre soutien pour Kubernetes (près de 200 heures de travail uniquement sur Kubernetes).

Notez que : Kubernetes est un moteur d’orchestration de conteneurs de source libre pour l’automatisation de déploiements, la mise à l’échelle et les gestions d’applications conteneurisées. L’idée maîtresse de Kubernetes est d’abstraire davantage les machines, le stockage et les réseaux de leur implémentation physique vers le nuage.

Au cours de mon stage, j’ai travaillé sur des fonctionnalités de Kubernetes telles que…

Visualiser la liste d’entités de Kubernetes Visualiser les détails d’une seule entité de Kubernetes

J’ai effectué des opérations sur des entités de Kubernetes telles que… Créer des ressources des réseaux et de charges de travail Kubernetes Supprimer des ressources Kubernetes Modifier des ressources de configuration de Kubernetes

Certaines des fonctionnalités que j’ai mises en place étaient selon un modèle prédéfini, par contre, j’en ai également implémenté quelques nouvelles. Pour cela, j’ai dû lire une grande quantité de documentation sur Kubernetes. Même les fonctionnalités les plus simples nécessitent une recherche approfondie, car chaque entité possède ses propres caractéristiques. Ma recherche ne s’est pas arrêtée à de simples lectures de documents, j’ai aussi eu la chance de travailler avec quelques nuages publics en configurant un cluster Kubernetes sur Azure ainsi que sur Google Cloud Platform.

De plus, CloudOps a organisé une journée Cloud Native où on a présenté une série de conférences à propos des technologies et des solutions infonuagiques. J’ai assisté aux trois conférences suivantes :

« Untangling the Maesh - Thinking Outside the Net » (Défaire les mailles - Penser autrement), Une explication des « mailles » (services légers) et de leur futur dans l’univers de l’infonuagique. Kubernetes Needs the Zero-Trust Model’ (Kubernetes et le modèle confiance zéro), Une explication des problèmes relatifs à la sécurité auxquels font face Kubernetes et des solutions possibles. Le rêve Kubernetes, Une vision de l’avenir idéal de Kubernetes et comment s’assurer que ce rêve devient réalité.

Bref, j’ai su profiter des nombreuses occasions d’apprendre à propos des infrastructures et des structures infonuagiques que CloudOps m’a offertes. La preuve en est que je suis maintenant capable d’enseigner à d’autres ce que j’ai appris chez CloudOps!

2e objectif: gagner en confiance dans le côté frontal du développement web.

Honnêtement, je n’ai pas travaillé très fort à l’atteinte de cet objectif. La raison pour laquelle je me suis donné cet objectif c’est que ma zone de confort se trouve du côté serveur du développement web. Je n’ai pas pu m’en empêcher! C’était tellement passionnant d’écrire du code lié à Kubernetes en arrière-plan. Mes objectifs se trouvaient en conflit d’intérêts! Cela dit, j’ai quand même eu l’occasion de plonger dans l’univers de Java et de Vue.js lors de quelques corrections de bogues et j’y ai même appris un truc fascinant! Si l’on tape « debugger » dans JavaScript, cela crée un point de rupture, arrêtant le flux de code pour qu’on puisse le réparer. C’est pas mal l’étendue de ce que j’ai appris.

3e objectif: augmenter mes compétences dans les structures d'essais Groovy et Jest

J’ai si bien atteint cet objectif que j’ai pu en apprendre sur Junit, une autre structure d’essai, pour la correction d’un bogue. Par contre, ayant acquis tant de compétences avec Groovy, je n’ai pas vraiment l’intention d’utiliser Junit à l’avenir.

J’accorde une grande importance aux essais unitaires. Ce fut particulièrement vrai au début de mon stage alors que j’étais moins familiarisée avec la webapp - je procédais à un développement véritablement piloté par les tests, j’écrivais les tests avant même d’avoir exécuté mon code sur la webapp. Je m’assurais, pour chaque nouvelle fonctionnalité, d’avoir écrit des tests approfondis pour mon code, et pour chaque correction apportée, je m’assurais aussi d’avoir mis les tests à jour. Lorsque tous les tests réussissaient après que j’aie apporté une correction, je le prenais parfois comme un signe que je devais en ajouter d’autres! De plus, lorsque je constatais des différences de niveaux de couverture de code dans nos ressources Kubernetes nouvellement développées, je prenais la responsabilité d’ajouter les tests manquants, des douzaines de tests, puis je recommandais une meilleure couverture pour toutes les nouvelles entités dans le futur.

J’ai même écrit des tests avec des fonctionnalités que même des développeurs à temps plein ne connaissaient pas! Selon moi, c’est signe que j’ai bel et bien atteint mon objectif.

4e objectif: obtenir une meilleure compréhension des méthodologies et des pratiques exemplaires Kanban et Scrum

Je croyais avoir réussi cet objectif en participant à la pratique de chacune des méthodologies, un exploit plus facile à dire qu’à faire surtout dans une situation de télétravail. Une grande partie du processus Kanban fut le processus de révision de code, un sujet que j’ai étudié en détail, avec Pat, mon gestionnaire, et sur lequel nous avons collaboré à l’écriture de deux documents. Le premier document fut plutôt comme une feuille de référence expliquant pourquoi la révision de code est importante et fournissant des trucs et astuces pour les personnes qui y participent. Le second résume les points principaux de plusieurs bons articles portant sur la révision de code. Avec ces documents, nous avons élaboré une démonstration que nous avons présentée à toute l’équipe! Je me suis efforcée de participer à plusieurs autres rencontres liées à Kanban, incluant des rencontres d’attribution de tâches, des rétrospectives et des carnets de produits. Je suis heureuse de signaler que mes efforts ont été récompensés par une meilleure compréhension des méthodologies Kanban et Scrum.

5e objectif: apprendre à me sentir connectée à mon équipe même en situation de télétravail... et pourquoi ne pas pratiquer mon français quant à y être!

En toute franchise, j’ai surpassé mes attentes face à cet objectif. Au début de mon stage de travail, j’ai déployé de grands efforts pour interagir avec mon équipe, assistant à toutes les rencontres optionnelles que je pouvais, que se soit les pauses-café virtuelles de l’équipe de dev, les 5 à 7 hebdomadaires à distance de l’entreprise, les discussions techniques que je ne comprenais pas où encore, celles qui pouvaient être résolues en une phrase. J’ai assisté à chacune d’elles et grâce à cela, je me suis vite rapprochée de l’équipe d’équipes!

Chaque semaine, j’avais une pause-café spéciale. La première fut facilitée par l’application Slack « Donut », un charmant outil qui place les membres d’une même chaîne Slack deux par deux aléatoirement et leur donne deux semaines pour trouver le temps de prendre un café ensemble. Au début, je voyais ces rencontres comme un mal nécessaire, un temps pour converser avec une personne inconnue. Toutefois, une fois la routine établie, j’attendais ces rencontres avec impatience! J’ai pu discuter avec des tas de personnes, des gens d’autres équipes, des gens de notre entreprise sœur, même le directeur technique et le D. G.! Ces pauses-café furent très utiles dans la propagation de la culture de CloudOps et m’ont aussi fait sentir que je faisais partie de l’équipe!

La pause-café spéciale suivante fut appelée « café franglais », un espace où les victimes du piètre enseignement du français langue seconde de l’Ontario Public School System pouvaient pratiquer le français. Ou franglais, car nous parlions 50 % français et 50 % anglais. J’ai pu me lier avec une personne que je ne voyais presque jamais, mais avec qui j’aurais passé plus de temps si nous avions étés sur place, car elle était en stage dans une autre équipe. J’ai même pu pratiquer mon français!

Enfin, ma collaboration sur la campagne Tiktok s’est développée à partir d’une anecdote que j’ai partagée lors d’une soirée de filles virtuelle. Grâce à mes aventures Tiktok, j’ai pu travailler de près avec l’équipe des RH, j’ai aussi discuté avec une variété de personnes dans l’entreprise, car je devais leur demander (les supplier) de contribuer à nos vidéos. Ce petit projet parallèle a suscité une quantité surprenante de conversations et de camaraderie de la part de personnes provenant de partout dans l’entreprise, de mes collègues les plus proches en passant par des gens que je n’avais jamais rencontrés.

Pour conclure, cet objectif fut la clé de ma réussite et de mon bonheur lors de mon stage chez CloudOps, et je l’ai réalisé maintes et maintes fois.

Conclusion

Au tout début de mon stage, j’étais très appréhensive. Je ne savais pas comment se déroulerait le fait de travailler à distance et j’étais inquiète de ne pas recevoir le soutien dont j’allais avoir besoin. Même si le parcours fut parsemé d’embûches, la majeure partie de mon stage chez CloudOps fut harmonieuse. CloudOps m’a offert tout son soutien quant à mes objectifs et mes intérêts, malgré l’état des choses dans le monde, et maintenant que mon stage se termine, je sens que je fais totalement partie de l’équipe.

L’équipe de CloudOps m’a tellement bien soutenue. Toute la durée de mon stage, mon équipe n’était qu’à un seul appel zoom, toujours prête à m’aider en cas de besoin. Je me sentais écoutée et avais l’impression de pouvoir avoir un impact positif sur l’entreprise. Le fait de travailler chez CloudOps m’a aussi apporté de nombreuses occasions d’en apprendre davantage à propos de l’infonuagique, j’ai même eu la chance d’assister aux conférences de la Journée Cloud Native où j’ai beaucoup appris à propos du côté avant-gardiste de la technologie infonuagique. En fin de compte, ce qui a rendu mon travail chez CloudOps si agréable c’est que j’ai pu évoluer dans un environnement qui m’a permis d’apprendre et de grandir, tant en tant que développeuse qu’en tant que personne.

Remerciements

J’aimerais remercier sincèrement toute l’équipe de CloudOps qui a su rendre vraiment incroyable cette expérience unique de coopération. J’aimerais remercier mes collègues de l’équipe rouge, car vous étiez ma famille CloudOps, vous m’avez tant appris et m’avez tant soutenue, et m’avez fait tant rire! Un grand merci du fond du cœur. Un très grand merci à mon gestionnaire, Patrick Dubé, pour son appui constant tout au long de mon apprentissage. Je suis extrêmement reconnaissante de l’envoi de bagels par la poste jusqu’à Guelph, c’est probablement la chose la plus gentille que quelqu’un ait jamais faite pour moi, ils étaient délicieux. Je voudrais aussi remercier toute l’entreprise d’avoir facilité ma dépendance au café, surtout Pat, Milt, Stefan, et Jason. Merci à l’équipe des ressources humaines, particulièrement Jen, de m’avoir inclus dans les vidéos Tiktok. Ce fut une superbe expérience et une merveilleuse façon de collaborer avec des gens en dehors de l’équipe de production, comme l’autre Julia! (Vive les Julia!) La dernière, mais non la moindre, j’aimerais remercier Kate McRoberts de l’Université de Guelph, pour son soutien et ses conseils. Grâce à l’appui de toutes les personnes mentionnées ci-dessus et de nombreuses autres, cette folle expérience de coopération a su déjouer l’ennui de la pandémie et fut véritablement le meilleur moment de mon année.