Mes Expériences Professionnelles

Emplois et expériences en relation avec Drupal

Développeur Drupal, Themer & Site builder

1 an en 2012 et 2013 chez 8P-Design à Montréal

 

Statut : CDI à temps plein en agence web à Montréal
Contexte : Voyage au Canada — Permis de travail obtenu via l'initiative Jeunes Professionnels de EIC (Expérience Internationale Canada)
Entreprise : 8P-Design
Type d'emploi : Développeur Drupal, Themer & Site builder
Durée : 12 mois en 2012 et 2013
Détails :  

Travailler chez 8P-Design a été m'a plus grosse expérience Drupal jusqu'à lors. Les nombreuses missions qui m'ont été confiées m'ont amené notamment à :

  • créer un certain nombre de modules Drupal sur mesure et ainsi à me familiariser avec l'API Drupal, les normes instaurées par la communauté, les bonnes pratiques à suivre et les astuces qui permettent de gagner du temps.
  • plonger profondément dans l'utilisation des modules Views et Rules qui n'ont quasiment plus aucun secret pour moi à présent
  • réaliser des solutions eCommerce avec Drupal Commerce
  • utiliser des outils tels que Boost, Varnish ou APC pour améliorer les performances de Drupal 7
  • acquérir de l'expérience sur la migration d'un site Drupal 6 vers Drupal 7
  • procéder à l'intégration de designs photoshop en thème Drupal
  • réaliser certains effets et animations jQuery et CSS3 comme par exemple le slideshow de la page d'accueil de 8P-Design ou encore le menu principal.

 

Créateur de sites web Drupal freelance + Coordinateur de CE à mi-temps

18 mois en 2011 et 2012 au CE de Microsoft EMEA

 

Statut : Auto-entrepreneur d'un côté mais aussi salarié à mi-temps en attendant de décoller financièrement
Contexte : Reconversion de Java EE vers Drupal
Entreprise : Comité d'entreprise de Microsoft EMEA (Europe Middle-Est Africa)
Type d'emploi : Créateur de sites web / Coordinateur de CE
Durée : 18 mois en 2011 et 2012
Détails :  

Occuper un poste à mi-temps m'a permis de me libérer du temps pour me former à Drupal dans un premier temps puis démarrer une activité de créateur de sites web à mon compte.

Si le but initial de ce travail a mi-temps était surtout de m'assurer un revenu stable le temps d'acquérir de l'expérience sous Drupal, ce poste de coordinateur au comité d'entreprise de Microsoft EMEA a finalement été très enrichissant. J'y ai accompli notamment :

  • la création d'un site web interne visant à promouvoir les offres du CE — en Sharepoint, dont j'ai appris seul à me servir
  • l'organisation d'événements sportifs, culturels ou d'entreprise ainsi que de voyages
  • leur promotion en interne via le site web, une newsletter mensuelle et des affiches
  • la clôture des comptes en fin d'année fiscale, le contrôle et l'estimation des budgets du CE

 

Emplois et stages avant Drupal, i.e. Java EE

La plupart de mes expériences antérieures à Drupal sont liées à Java EE. Lorsque vous jetterez un oeil à mes stages et emplois précédents, je vous invite donc à observer parmi les tâches que j'ai été amené à réaliser, quelles sont celles que l'on retrouve également dans tout projet PHP / Drupal. Je pense par exemple à la rédaction de cahiers des charges et de spécifications fonctionnelles, à la création de maquettes IHM en HTML ou encore à l'intégration web CSS, Ajax / jQuery...

Analyste, Développeur Java EE, Intégrateur Ajax / jQuery

4 mois en 2010 en CDI chez Excilys

 

Statut : En CDI chez Excilys, Société de Services en Ingénierie Informatique http://www.excilys.com
Contexte : 1ere mission cliente
Entreprise : Interforum Editis http://www.editis.com/
Type d'emploi : Analyse fonctionnelle, développement Java EE et intégration web CSS, Ajax / jQuery
Durée : 4 mois de Septembre 2010 à Janvier 2011
Détails :  

Création complète d’un programme en interne Java EE visant à répertorier l’ensemble des familles d’ouvrages existantes au sein d’Interforum.

  • Analyse fonctionnelle :
    • rédaction des spécifications fonctionnelles à partir du cahier des charges
    • création de maquettes IHM en HTML
  • Développement :
    • mise en place de l’architecture du projet (Maven, Spring, JPA/Hibernate)
    • implémentation du code métier (Struts, JUnit, SVN)
    • création d’une interface dynamique et ergonomique en Ajax / jQuery

 

Analyste, Développeur Java EE, Intégrateur Flex

6 mois en 2010 en Stage chez Excilys

 

Statut : Etudiant à l’ECE Paris http://www.ece.fr/
Contexte : Stage de fin d’études / Stage Ingénieur
Entreprise : Excilys, Société de Services en Ingénierie Informatique http://www.excilys.com
Type d’emploi : Analyse fonctionnelle, développement Java EE et intégration web Adobe Flex
Durée : 6 mois de Mars à Septembre 2010
Détails :  

Formation complète sur les principaux frameworks Java EE (Maven, JPA/Hibernate, Spring, Spring MVC, JSP/JSTL, Struts, JUnit, log4j / common-loggins)

Participation à l’amélioration d’une plate-forme de e-coaching - Capico - permettant entre autre la création de cours et exercices par des professeurs, puis leur planification à des élèves avec suivi à distance de leur travail. http://www.altendis.fr/capico.html

  • Analyse fonctionnelle :
    • échanges avec le client pour comprendre ses attentes
    • rédaction les spécifications fonctionnelles
    • création de maquettes IHM en HTML
  • Développement :
    • implémentation des améliorations côté back-end en Java EE (Maven, JPA/Hibernate, Spring, JUnit/Unitils/EasyMock)
    • intégration visuelle côté front-end en ActionScript / Flex
  • Compétences parallèlement impliquées :
    • travail concurrentiel avancé sous SVN
    • gestion de projets agiles avec SCRUM
    • Développement Dirigé par les Tests (TDD)

 

Analyste, Developpeur Java EE, Intégrateur Ajax / jQuery

3 mois en 2009 en Stage à l'ECE Paris

 

Statut : Etudiant à l’ECE Paris http://www.ece.fr/
Contexte : Stage Technique (avant dernière année)
Entreprise : ECE Paris
Type d’emploi : Analyse fonctionnelle, développement Java EE et intégration web CSS, Ajax / jQuery
Durée : 3 mois - été 2009
Détails :  

Réalisation complète d’une plate-forme dédiée à la gestion des projets scolaires au sein de l’ECE. Son but : permettre aux enseignants de créer de nouveaux types de projets et aux élèves de proposer des sujets, de former des groupes et de soumettre leurs documents en ligne.

  • Analyse fonctionnelle :
    • invention et rédaction du cahier des charges
    • création de maquettes IHM en HTML
  • Développement :
    • mise en place de l’architecture du projet (Java EE, JPA/Hibernate, JSP, SVN)
    • implémentation du code métier
    • d’une l’interface moderne & dynamique en Ajax / jQuery

 

Développeur PHP & ASP .NET

2 mois en 2008 en Stage dans une filiale d'Orange

 

Statut : Etudiant à l’ECE Paris http://www.ece.fr/
Contexte : Stage organisation de l’entreprise (1ere année cycle ingénieur)
Entreprise : w-HA, filliale de Orange France Télécom http://www.w-ha.com/
Type d’emploi : Adaptation de code Java EE en PHP et ASP .NET
Durée : 2 mois - été 2008
Détails :  

w-HA est une solution de paiement en ligne concurrente de Paypal. Un SDK était fourni aux marchands web pour qu’ils puissent vendre leurs produits en ligne. Le stagiaire devait recréer ce SDK en PHP puis en ASP .NET à partir des sources du SDK Java EE existant.

 

Développeur VBA Microsoft Excel

1 mois en 2007 en Stage chez Degrémont Suez

 

Statut : Etudiant à l’ECE Paris http://www.ece.fr
Contexte : Stage découverte de l’entreprise (2e année du cycle préparatoire)
Entreprise : Dégrémont, filliale du Groupe Suez Environnement http://www.degremont.fr
Type d’emploi : Création d’application Microsoft Excel avec Visual Basic (VBA)
Durée : 1 mois - été 2007
Détails :  

Création d’une application destinée à répertorier toutes les marques déposées de Degrémont à l’aide de Microsoft Excel, en Visual Basic.

 

Agent service courrier

1 mois en 2006 comme job d'été à la Coface

 

Contexte : Job d’été pour financer un voyage d’un mois en Chine (Shanghai & Pékin)
Type d’emploi : Agent service courrier
Durée : 1 mois - été 2006
Détails :  

Identifier et dispatcher le courrier entrant aux salariés. Remplir les courriers sortant en recommandés avec accusés de réception.

 

Compétences Java EE toujours pertinentes avec Drupal et PHP

Intégration & design web (CSS jQuery Ajax Photoshop ...)

Sur quasiment tous mes projets il m'a été donné de travailler non seulement sur la partie technique mais aussi sur l'aspect visuel graphique du site ou de l'application à développer.

Au fil de toutes ces missions j'ai donc acquis beaucoup d'expérience en intégration HTML / CSS, en création d'animations avec jQuery, CSS3 ou Ajax, en réalisation de designs sous Photoshop et de logos vectoriels sous Illustrator ou encore de bannières animées en Flash.

L'utilisation avancée de logiciels de gestion de versions (CVS, SVN, GIT)

J’ai travaillé sur de nombreux projets de grosse envergure nécessitant l'utilisation de logiciels de gestion de versions tels que SVN pour collaborer en équipe, maintenir le projet dans le long terme et avoir des environnements de développement, test et production séparés.

L'utilisation de ce type d'outil n'est je pense plus un secret pour moi, je suis notamment en mesure de résoudre des conflits de synchronisation, créer des branches et des tags ou encore les fusionner. Je pense aussi avoir appris quelles sont les bonnes pratiques à adopter par exemple le fait d'effectuer régulièrement des checkouts et par contre de ne faire qu'un seul commit pour toute une fonctionnalité une fois que celle-ci est fiable à 100%.

Depuis que je suis sur Drupal c'est donc sans aucun problème que je suis passé à GIT.

Les bonnes pratiques de développement

Mon expérience en entreprise m'a rapidement permis de comprendre que tout projet informatique est amené à durer dans le temps et à devoir évoluer. Qu'ainsi la mise en place et le respect rigoureux d'un certain nombre de normes dans le développement est impératif pour rendre leur maintenance possible par la suite. Voilà un certain nombre de réflexe que j'ai depuis adopté en ce sens :

  • Respect des normes de syntaxe de développement
  • Documentation du code + nom de variables intelligibles
  • Factorisation des redondances pour simplifier la relecture et optimiser la réutilisabilité du code
  • Organisation du code dans des fichiers séparés par thématique
  • Test de tout ajout de code ou de fonctionnalité supplémentaire

Le réflexe et le respect des tests unitaires

Mon expérience dans le milieu professionnel m'a également fait me rendre compte que la moindre mise à jour de code sur un projet informatique n'est jamais anodine. En effet j'ai pu constater que, malgré toutes les précautions mises en place, chaque fois qu'il s'agit d'ajouter du code supplémentaire l'application est susceptible de ne plus fonctionner correctement.

J'ai donc pu saisir comme la mise en place de tests unitaires est indispensable pour pouvoir contrôler le bon fonctionnement de toute application. Par ailleurs, j'ai même été amené à travailler en TDD : Développement Dirigé par les Tests, qui consiste à écrire les tests avant même d'implémenter le code final, afin d'être sûr de n'oublier aucun cas de figure.

Avec Drupal finalement, l'importance des tests est indiscutable dès lors que l'on crée des modules sur mesure.

La gestion de projets agiles (SCRUM)

Lors de mon stage de fin d’études de 6 mois, j'ai découvert SCRUM et donc la gestion dite "agile" de projets en général. Celle-ci sépare la réalisation des projets en plusieurs cycles très courts identiques et itératifs (analyse -> développement -> tests) contrairement aux méthodes classiques qui ne possèdent qu'un seul grand cycle. 

J'ai totalement adhéré à ce type de méthode agile qui possède selon moi deux avantages majeurs :

  • la suppression des coûts liés aux erreurs constatées trop tardivement

    le premier avantage est lié au constat suivant : plus on prend connaissance d’une erreur tardivement dans le cycle de réalisation d’un projet, plus les changements qui en découlent sont coûteux. Or il est impossible de prédire toutes les erreurs que l’on va commettre à l’avance... il y en a forcément dans tous les projets.

    Etant donné que dans une conduite de projet classique on fait tout pour empêcher ces erreurs de se produire, les seules que l'on rencontre sont donc les plus dures à prévoir et sont en toute logique celles qui apparaissent en fin de cycle. Elles ont alors de lourdes conséquences sur le projet.

    Avec une conduite agile, procéder par cycles courts redondants permet de constater les erreurs très régulièrement. On fait donc plus d'erreurs, mais les changements qu'elles impliquent sont alors assez faciles à prendre en compte et ne remettent pas en cause le bon déroulement du projet dans sa globalité.

  • une meilleure compréhension des besoins client

    le second avantage d’une conduite agile provient d’un autre problème bien connu dans la création d’applications. Dans la plupart des projets, les attentes du client ne sont pas suffisamment détaillées dans les spécifications au départ.

    Par ailleurs, plutôt que de demander plus de précisions au client, les développeurs ont souvent la fâcheuse habitude d’interpréter ce manque d’information tel qu’ils “pensent” que le client l’aurait souhaité. Malheureusement la plupart du temps ils se trompent.

    Avec une conduite classique de projet, le client se retrouve donc trop souvent avec une solution qui ne répond pas correctement à ses attentes. De plus, comme il ne s’en rend compte qu’en fin de cycle du projet, il est alors très compliqué d'appliquer les modifications souhaités. Tout le monde se rejette alors la faute : le client blâme les développeurs qui eux, estiment que c'est le client qui n’a pas été assez précis.

    Avec les cycles courts et répétitifs des méthodes agiles, les échanges avec le client sont extrêmement fréquents ! Ce dernier peu donc régulièrement donner son avis sur ce qui a été fait et éclaircir ses besoins si ceux-ci n’ont pas été interprétés comme il l’entendait. Il est alors possible de réajuster le tire pendant qu’il en est encore temps et les projets restent toujours à 99% fidèles aux besoins du client.

Le raisonnement algorithmique

Le développement informatique ne se limite pas à devoir connaître des langages de programmation sur le bout des doigts. Il me semble notamment qu'un développeur doit être capable d'adopter un certain type de raisonnement afin de transposer des besoins exprimés "en français" en des algorithmes qui soient compréhensibles par un système qui ne réfléchi pas de lui-même.

Cette capacité, j'ai eu maintes fois l'occasion de la faire se développer depuis mon arrivée en école d'ingénieur en programmant par exemple des intelligences artificielles ou encore des algorithmes de tri et de théorie des graphes...

En savoir plus...