carmen@rmen.ca
Carmen Alvarez
Développeuse de logiciels - Lyon, France
GitHub : @caarmen
Développeuse logicielle expérimentée avec une expertise en développement backend utilisant Python et Node.js, ainsi qu’une solide expérience en applications desktop et web Java, et en développement Android avec Kotlin. Polyvalente et capable de s’adapter rapidement à de nouvelles technologies et domaines.
Compétences
Langages Concepts Backend Devops Testing
  • Python
  • Kotlin
  • Java
  • Javascript
  • SQL
  • Conception technique
  • Refactoring & Modularisation
  • Injection de dépendances.
  • Microservices
  • Migration de BDD
  • Django REST framework
  • Node.js / Express.js / Sequelize
  • RabbitMQ
  • OpenAPI
  • MySQL / MariaDB
  • Intégration continue
  • Jenkins pipeline
  • Github Actions
  • Docker
  • Ansible
  • Unitaire / Intégration / End-to-end
  • Couverture de code
  • Sonar
  • Pytest / Mocha / Junit
  • Factoryboy / Monkeypatch / Mockito

Expériences

Genymobile, Lyon, France

mar 2022 - Aujourd'hui
Ingénieur Conception et Développements (Backend)
Développement sur une plateforme SaaS, avec une architecture basée sur des microservices, qui propose des devices virtuels Android dans le cloud
  • Développement de nouvelles fonctionnalités : endpoints et tâches pour la migration/importation de données.
  • Assister l'équipe SRE dans l'investigation des problèmes de production.
  • Conception technique, estimation et planification des epics des évolutions.
  • Coordination avec l’équipe front-end pour la conception des endpoints REST.
  • Optimisation des opérations SQL en s'appuyant sur l'ORM.
  • Maintenance : corrections des anomalies et mises à jour des dépendances.
  • Culture de documentation, test, et collaboration.
  • Organisation : Équipe avec backend, front, QA, PO. Scrum : sprints de 3 semaines : daily, rétro, grooming, poker planning.
Django REST framework (DRF), Python, Express (Node.js), AMQP (RabbitMQ), tests unitaires et E2E (pytest, Mocha), Swagger/OpenAPI/ReDoc, MariaDB/MySQL, GitHub, Jenkins, Kibana, gateway, GraphQL

Libon, Paris, France

oct 2018 - fév 2022 (3.4 ans)
Mobile Lead
Suite de l'expérience précédente : toujours le projet Libon mais au sein de l'entreprise Libon.
  • Développement des évolutions : intégration des nouveaux moyens de paiement (espèces via cartes à gratter ou qr code à scanner, carte bancaire via Stripe), refonte UI/UX, ajout de nouveaux produits à acheter.
  • Customisation du SDK Braintree pour améliorer l'UX de la validation 3DS pour les achats par carte bancaire.
  • Intégration de l'A/B testing pour le paiement par carte bancaire (fournisseurs Stripe vs Braintree).
  • Migration du code legacy vers des standards récents : migration des écrans avec toute la logique dans l'activity vers MVVM, migration des tests Robolectric vers Espresso, migration des AsyncTask vers Kotlin coroutines.
  • Modularisation du projet monolith à 60 modules, pour une meilleure organisation de la code base et l'élimination des dépendances cycliques.
  • Mise en place des outils pour améliorer le développement des deux plateformes iOS et Android : génération des release notes sur GitHub, suivi de la couverture de code, suivi de l'évolution de la migration Objective-C vers Swift, jobs Jenkins pour synchroniser des strings de Lokalise, job Jenkins pour builder un fork de libphonenumber pour iOS.
  • Organisation : 1 release par mois en moyenne, daily avec les équipes mobile, backend et support, PR (même avant l'intégration d'un deuxième développeur Android).
Android Studio/Gradle, Kotlin, Coroutines, MVVM, Modularisation, Androidx/Jetpack, Android Architecture Components, Room, LiveData, Data Binding, Paging, Material, Google Play Billing, Firebase Crashlytics, Linphone, Libphonenumber, Json, Glide, Volley, Mapbox, Brainree, Sripe, Github, REST, Junit, Robolectric, Espresso, Mockito, Jenkins pipelines, Jacoco, Detekt, PR, Code Review

Genymobile, Châtillon, France

aoû 2011 - sep 2018 (7.2 ans)
Ingénieur Conception et Développements (Android)
L’application Libon permet de passer des appels VoIPout vers + de 150 pays.
  • Développement sur l'application Libon avec d'autres développeurs Android basés à 3 sites (Châtillon, Lannion, Roumanie).
  • Intégration et customisation du SDK Linphone en C/C++ (NDK).
  • Augmentation de la couverture de code de 20% à 85%.
  • Modernisation de la code base avec la migration vers Kotlin, l'introduction des Google Architecture Components (LiveData, ViewModel, Room) et d'autres outils fournis par Google (ConstraintLayout, Data Binding, SMS Retriever).
  • Intégration des outils d'intégration continue (CI) dans un Jenkins avec Docker : Pipeline, Sonar, Jacoco, déploiement vers HockeyApp et Nexus.
  • Intégration des SDK Google Billing et Braintree pour les achats.
  • Point de contact avec les fournisseurs des SDK tierce partie.
  • Publication sur Google Play. Suivi des crashs sur Fabric/Firebase Crashlytics.
  • Intégration de l'A/B testing avec Firebase Remote Config.
  • Organisation : Feature et component teams, PR review, Scrum: sprint de 2-3 semaines, daily, rétro, démo.
Android Studio/Gradle, Eclipse/Maven, Kotlin, Java, C, C++, Shell, Linphone, SIP, RTP, Libphonenumber, Json, Retrofit, RxJava, Firebase Remote Config, Firebase Cloud Messaging (FCM), Crashlytics, Smartling, MVP, REST, Robolectric, Mockito, Wiremock, Gitlab, Github, Jenkins, Jacoco, Sonar, Scrum, Pull Request, Code Review

Ariba, Paris, France

oct 2006 - fév 2011 (4.4 ans)
Senior Consultant
Ariba fournit des applications et services B-to-B d’amélioration du processus d’achat.
  • Customisation du logiciel Ariba pour des besoins du client.
  • Lead d'une équipe de 2 autres développeurs.
  • Clients: AXA, Alstom, BNPP, Société Générale, Decathlon, RTE, Sanofi-Aventis.
  • Présence chez les clients ou depuis le bureau d'Ariba.
Java, Weblogic, Eclipse, Oracle, Maven, Windows, Svn, Perforce

ESR, Noisy-le-Grand, France

nov 2004 - sep 2006 (1.9 ans)
Consultant
Mission à la RATP
  • Développement d'un logiciel de supervision d'équipements dans les stations et gares de la RATP
C++, GCC, GDB, Makefile, Java, SNMP, Linux, CVS

Conférences

Optimizing SQL Queries in Django and SQLAlchemy: Tackling the N+1 Problem with ORMs

PyCon France, Strasbourg, 2024

One test suite to test them all, Instrumentation and Robolectric tests

AndroidMakers by droidcon, Paris, 2024

Publications

Formation

Maîtrise ès sciences, Informatique

Université de Montréal
Équivalent en France : Bac + 5/6

Bachelor of Science, Computer Science

California State Polytechnic University-Pomona
Équivalent en France : Bac + 4

Principes

Découpage en petites itérations gérables
Releases fréquentes
Mise à jour régulière des libs
Suivre les recommandations archi
Viser une bonne couverture de code
Refactoring séparé des évolutions
Bien documenter pour l'équipe et pour future moi