NOW SOCIAL, UNE APPLI AU SERVICE DES COWORKERS

Découvrez Now-Social, la toute nouvelle application mobile  développée par notre agence lyonnaise.

Gamification, matchmaking… elle a tout pour favoriser le travail collaboratif et l’échange !

La communauté, un accélérateur business 

Chez Now – 5 sites, 2000 coworkers, 400 métiers – le Coworking va au-delà du simple partage d’espace de travail dans des sites atypiques. Les fondateurs, Pascal Givon et Edouard Laubies, vont plus loin dans leur concept en favorisant les interactions et en misant sur la notion fondamentale de communauté.
Pour faciliter la mise en relation, ils ont confié à TheCodingMachine Lyon le développement de leur application sociale interne : Now Social pour encourager les échanges et les rencontres entre coworkers.

Une appli complète qui favorise le travail collaboratif 

Appli now social

L’application se veut pratique, ludique et propose des features complémentaires :

Nous avons ainsi développé un trombinoscope permettant à chacun d’être facilement identifiable : métier, centres d’intérêts, description, localisation… mais pas que !

Toujours pour favoriser l’échange, il devient très facile de rentrer en contact avec les différents coworkers, notamment grâce à l’ouverture d’un chat directement via le profil.

Les coworkers peuvent également créer des groupes de discussions, et suivre facilement leurs conversations à l’aide de notifications push ou d’identifier les statuts des autres utilisateurs.

Gamification & matchmaking pour développer l’engagement !

Pour augmenter l’acceptabilité et l’usage de Now Social, nos équipes ont également développé un système de gamification basé sur les récompenses et l’entraide.
Le système de badge qui a été mis en place se découpe en 3 niveaux (Bronze, Argent et Or) et s’articule autour de 5 piliers :

– L’expérience

– La participation aux événements

– Le nombre de publications et d’échanges sur le chat

– Le nombre de coup de main donnés aux coworkers

– La complétion de son profil


Toujours dans l’esprit de partage, un matchmaking est proposé au coworkers sur la base de leurs centres d’intérêts : IoT, Webdesign, Business Development…
L’entraide et l’échange créent un environnement sécurisant, collaboratif et créatif. D’ailleurs chez Now, 100 % des coworkers ont déjà travaillé ensemble ! 

Et la technique dans tout ça ?

Cross-device, open-source, évolutive… nous avons naturellement choisi de développer l’application en React Native. Cette technologie moderne et éprouvée, permets d’accroitre la performance de l’appli mobile. Aussi, son langage unique pour l’ensemble des plateformes permet une réduction des coûts significative.
L’application sera bientôt disponible en Open-Source afin que chacun des coworkers puissent développer des fonctionnalités et collaborer en la faisant évoluer.
Côté méthodologie, nous avons opté pour une application MVP, nous permettant ainsi de faire intervenir un échantillon de la communauté pour avoir des feedbacks réguliers et ainsi d’offrir aux coworkers l’expérience la plus fluide qu’il soit.

Data Gouvernance et IA : comment exploiter vos données ?

Face à un afflux considérable de données et à un renforcement de la législation, la Data Gouvernance et l’Intelligence Artificielle (IA) sont de précieux alliés pour traiter, exploiter et gérer votre patrimoine de données.

Data Gouvernance : qu’est-ce que c’est ?

La Data Gouvernance, ou gouvernance des données, se construit autour de quatre piliers :

  • La stratégie
  • L’organisation/ Les process
  • Les technos
  • Les métriques (KPI)

Avec notre partenaire Myriad, nous avons pour objectif de favoriser la collaboration entre les métiers et les Systèmes d’Information (SI), grâce à l’intégration de technologies adaptées, à la digitalisation et à l’automatisation des processus.
Ensemble, nous avons pour ambition de soutenir les entreprises dans leurs processus de transformation, de définir les axes de changement dans le respect de la stratégie mise en place et de les accompagner grâce à nos solutions techniques.

Etablir une chaîne de valeur des données 

La structuration des données est le point de départ de la Data Gouvernance. Pour qu’elle soit possible, il est indispensable de définir une organisation en intégrant des outils et des technologies pour piloter les différents projets.
En parallèle, les données sont rendues exploitables grâce au cheminement suivant :

  1. Faire une cartographie des données, un inventaire
  2. Traduire et modéliser les données en processus, créer un chemin des données par un Data Lineage
  3. Définir les rôles et les responsabilités de chacun

Chez The Coding Machine, nous intervenons sur la conception des outils et des technologies en mettant en place des plateformes web qui vous permettront de piloter l’ensemble de vos données.

Et l’IA dans tout ça ?

L’Intelligence Artificielle permet d’améliorer l’efficacité de traitement et la structuration des données. L’exploitation des données se traduit par un besoin d’automatisation du traitement en intégrant des technologies de :

Le tout est de pouvoir répondre à des besoins de prédiction, de prévention, de personnalisation, de compréhension et de structuration.

Un exemple concret d’IA en matière de traitement de données est l’application SkillMiner : une application packagée, conçue par TheCodingMachine en partenariat avec Myriad, qui permet d’automatiser la lecture de CVs pour faire correspondre les compétences du candidat avec les emplois proposés au sein d’une entreprise.
 

Vous aussi vous avez un projet orienté Data ?

N’hésitez pas à venir nous le présenter dans nos bureaux de Paris, Lyon, Hong Kong ou Lisbonne !

CONTACTEZ PIERRE POUR EN PARLER !

DE STAGIAIRE À DIRECTEUR DE PROJET, RETOUR SUR LE PARCOURS DE PIERRE

QUEL EST TON PARCOURS, TA FORMATION ?

Après une classe prépa, j’ai intégré l’ENSIMAG, l’École Nationale Supérieure d’Informatique et Maths Appliqués de Grenoble, reconnue pour son niveau de formation.
À la suite d’un premier stage en business intelligence, j’ai effectué ma dernière année à l’Université de Calgary au Canada, au sein du département Computer Science où j’ai appris le développement web, l’UX/UI et l’imagerie en particulier.

COMMENT AS-TU ÉVOLUÉ DE STAGIAIRE À DIRECTEUR DE PROJET ?

À mon retour en 2012, j’ai choisi de faire mon stage chez TheCodingMachine qui m’offrait la possibilité de découvrir une structure à taille humaine, bienveillante et proposait de belles perspectives d’évolution.
J’ai commencé sur un projet « from scratch » avec la refonte du site de la Fondation Pathé et que je gère d’ailleurs toujours actuellement !  Ensuite, mon évolution s’est faite de manière assez naturelle vers des projets de plus en plus complexes et des clients de plus en plus importants et nombreux.

COMMENT VOIS-TU TA CARRIÈRE CHEZ THECODINGMACHINE ?

Je peux facilement la découper en 3 cycles de 3 ans, et d’ailleurs on peut retrouver ce schéma dans n’importe quel job :

  • La 1ère année à un poste est toujours un peu compliquée car c’est l’année de la découverte et de la prise en main de son métier. Il faut être capable de se remettre en question, savoir sortir de sa zone de confort ; de prendre en compte de nouveaux process et de nouvelles connaissances.
  • La 2ème année est celle que j’appelle l’année de la maîtrise.
  • Quant à la 3ème année, il ne s’agit plus que d’optimisation.

Ma carrière chez TheCodingMachine suit ce schéma : mes 3 premières années, j’occupais le poste de Chef de projet junior, plutôt orienté sur le développement web. Puis les 3 années suivantes, j’ai évolué en tant que chef de projet expérimenté, avec des compétences plus axées sur la gestion de compte et le management, avec deux à trois collaborateurs à accompagner.
Depuis un peu plus d’un an je suis devenu Directeur de projet : je manage une équipe de 7 personnes, participe au Comité de Direction et suis de plus près des sujets transverses comme la facturation, le staffing, le recrutement ou le commercial.

AS-TU RENCONTRÉ DES DIFFICULTÉS PARTICULIÈRES ?

La première année en tant que directeur de projet a été très particulière, surtout en termes de management : la bienveillance est une valeur primordiale à mes yeux et il m’était essentiel que les membres de mon équipe se sentent bien au quotidien. Je me suis donc posé beaucoup de questions pour accompagner et former au mieux mes collaborateurs.
Au-delà du côté humain d’un chef d’équipe, j’ai aussi rencontré des difficultés du fait de la complexité de gérer une multitude de projets. En effet en tant que Directeur de projet, je dois porter toutes les responsabilités qui lui sont inhérentes, notamment en termes de rentabilité ou de satisfaction client par exemple.
Finalement on peut dire que je suis à l’étape 1 de ce nouveau cycle, j’aborde donc l’année de la maîtrise avec une grande sérénité et motivation !

À QUOI RESSEMBLE LA SEMAINE TYPE D’UN DIRECTEUR DE PROJET ?

Chez TheCodingMachine chaque Directeur s’organise comme il le souhaite. En ce qui me concerne et au-delà de la gestion de projet quotidienne, je rythme ma semaine autour de deux temps forts :

  • Tous les jeudis nous organisons un point projet d’une heure avec toute mon équipe :

Nous commençons par ce que j’appelle une « météo », c’est à dire un moment où chacun peut parler librement de ses émotions et de son ressenti tant dans son travail que dans sa vie privée. Cet exercice permet d’exprimer ses frustrations sur un projet ou sur une situation interne plus globale.

Ensuite nous parcourons tous les projets de l’équipe – soit une dizaine : nous abordons les risques, les avancées, les choses à faire, les éléments marquants, les actions à mettre en place, le suivi des métriques et de la facturation. Ce moment permet aux chefs de projets qui ne travaillent pas ensemble de partager leur expérience et de faire connaître leurs sujets aux autres membres de l’équipe.

  • Les vendredis tous les Directeurs de projet se retrouvent au Codir, où nous échangeons moins sur des aspects techniques mais plus sur la gestion en soi de TheCodingMachine :

La facturation, la partie commerciale, le suivi des projets au niveau de l’ensemble des équipes ou encore les besoins en recrutement et le staffing. Ce moment d’échange et d’émulation est aussi très formateur pour moi car chaque Directeur a ses propres expériences et vision des choses.

QU’EST-CE QUI TE FAIT TE LEVER LE MATIN ?

Ce qui me fait me lever le matin ? C’est venir dans ces supers locaux et retrouver mes amis et mon équipe ! J’aime les gens avec qui je travaille mais aussi j’adore le côté imprévisible de mes journées qui sont toujours faites de surprises.
Chaque jour, mon travail est différent et évolue. Finalement, je me sens un peu comme un couteau suisse entre projets et tâches plus transverses à l’entreprise ce qui est vraiment enrichissant !

QUELS CONSEILS DONNERAIS-TU AS UNE PERSONNE SOUHAITANT DEVENIR DIRECTEUR DE PROJET ?

Chez nous, nous recrutons très peu d’expérimentés, notre stratégie de recrutement étant principalement basée sur des profils juniors, les opportunités d’évolutions sont nombreuses et il faut être capable de les saisir !
Tout le monde a sa chance, mais pour ça il faut être motivé, organisé et rigoureux, mais surtout il faut être bienveillant et savoir faire confiance pour être capable de déléguer. Chaque parcours est différent et je pense que TheCodingMachine laisse une grande liberté à ses collaborateurs pour progresser et atteindre ses ambitions professionnelles et personnelles.

Posted in TCM

VOUS AVEZ DIT HONG KONG ?

TheCodingMachine s’exporte à l’international et s’installe en Chine,

plus précisément à Hong Kong !

Après une ouverture à Lyon en 2017, TheCodingMachine poursuit le déploiement de son activité à l’international en lançant une nouvelle filiale à Hong Kong.

 

UN MARCHÉ PROMETTEUR

TheCodingMachine Hong Kong Limited
Avec son taux de chômage très bas, ses secteurs d’activités dynamiques et un secteur tertiaire particulièrement développé, Hong Kong a de nombreux arguments pour séduire nos équipes.
L’économie du territoire est florissante : finance, automobile, informatique, tourisme, commerce … autant d’atouts qui font de Hong Kong un territoire propice à la création d’une nouvelle filiale TheCodingMachine.
C’est d’ailleurs avec une immense fierté que nous avons lancé un premier projet de développement d’application mobile sur le secteur du luxe avant même d’avoir bouclé nos valises !

HONG KONG, LA CHINE CONTINENTALE ET L’IT 


TheCodingMAchine Hong KOng

  • L’IoT en forte croissance :$216 Mds de CA prévu d’ici 2020
  • Le cloud continue de croître :$104 Mds de CA prévu d’ici 2020
  • La 5G prévue en 2019
  • L’intelligence artificielle et semi-conducteurs, deux marchés porteurs
  • L’e-commerce, ma relation client et retail tech

 *Business France – Marché Chine & Hong Kong 
C’est aussi sans compter sur le gouvernement qui vient de mettre en place des mesures de soutien à l’innovation, sa nouvelle priorité.
Aujourd’hui avec près de 40.000 Français installés à Hong Kong et quelques 800 compagnies françaises implantées sur le territoire, notre filiale devrait rapidement trouver sa place.

TROIS PROFILS, UNE SEULE AMBITION

Originaire de ShenZhen, Nan Chen notre directeur régional est imprégné par la culture chinoise. Visionnaire, prévoyant, et multilingue, Nan a toutes les clés en main pour déployer TheCodingMachine HK Limited ! 
Jindun Shao est né en Chine mais a grandi et a passé ses études en France. Féru de programmation et de nouvelles technologies, il apportera le support technique nécessaire aux différents projets de l’équipe.
100% Frenchy et excellent communicant, Donatien Lefranc complète l’équipe avec ses talents de développeurs et prendra en charge la gestion de la relation client internationale.
Comme partout ailleurs dans le monde, nos profils d’ingénieurs sont particulièrement recherchés, c’est donc sans crainte que notre team saura déployer toute son énergie à Hong Kong !

Posted in TCM

GraphQL everywhere with GraphQLite

Comment rendre plus simple le travail des développeurs PHP qui souhaitent utiliser GraphQL ?

TheCodingMachine vous facilite la tâche grâce à sa librairie GraphQLite permettant de faire du GraphQL en PHP.

GRAPHQL C’EST QUOI ?

GraphQL est un langage de requêtes – ou protocole de communication – entre un client et un serveur. Développé par Facebook, il propose une alternative aux API REST et aux Webservices comme SOAP/WSDL.
Facebook fournit une implémentation par défaut en JavaScript: un client (Relay) ainsi qu’une librairie NodeJS (GraphQL.js) mais ce protocole peut être implémenté par n’importe quel langage et dans n’importe quelle technologie.
Par exemple en PHP, quelques librairies se démarquent comme Webonyx/graphql-php, la plus connue, ou Dagiaonline/graphql-php la petite nouvelle. Ces librairies vont analyser une requête GraphQL afin de l’exécuter.
Au-dessus de ces librairies s’en trouvent d’autres qui simplifient l’expérience utilisateur. Par exemple pour Symfony, API Platform permet de faire du REST et du GraphQL et depuis peu de temps, nous avons mis à disposition thecodingmachine/GraphQLite pour le PHP.
L’ÉCOSYSTÈME DE GRAPHQL
Pour utiliser GraphQL côté Serveur, il va nous falloir quelque chose qui sache analyser la requêtEcosystem GraphQlite e GraphQL, ce qu’on appelle GraphQL Middleware. En PHP cela va être Webonyx ainsi que les librairies au-dessus. En JavaScript ça sera Express-graphql.
Nous pouvons envoyer directement la requête HTTP mais il est plus simple d’utiliser un client GraphQL qui saura nous faciliter l’utilisation. ReactJS ou RelayJS fournis par Facebook, Apollo qui s’utilise en Vue, en Angular et avec React. 
Si j’utilise directement Webonyx, la ligne PHP me permet de déclarer mes types GraphQL. A chaque fois que j’ai un type, il va falloir que je le déclare. Une fois que le type est défini, il faut définir la query qui est le point d’entrée.  Cette méthode est certes longue mais complète. 
GRAPHQLITE
GraphQLite nous permet de faire la même chose, en beaucoup moins de ligne de code ! En PHP il y a des types, même s’ils ne sont pas obligatoires, et on tire partie du fait que PHP soit mieux typé que le JS afin d’automatiser le maximum de choses. En bonus : cette méthode marche bien avec TDBM (l’ORM de notre framework Mouf) car à partir du modèle de donnés on génère des objets PHP avec lesquels on arrive à générer des objets GraphQL. Cette méthode marche aussi avec Doctrine (pour les personnes faisant du Symfony). 
GraphQLite est un Framework agnostique que l’on peut utiliser dans Mouf, dans Symfony, dans Laravel… Il est basé sur Webonyx.
Les plus

  • Input types
  • Union types
  • File uploads  
  • External type declaration

Retrouvez toute la documentation sur notre site : https://graphqlite.thecodingmachine.io
What’s next ? 
Notre version stable de GraphQLite sera disponible dans quelques semaines. Lorsque cela sera fait, nous allons réaliser un module Symfony Flex, réaliser une refonte complète du support TDBM5 afin de rajouter des annotations directement dans la base de données et enfin nous voulons injecter des services dans la query par exemple.
Et côté JS ? 
Du côté client nous allons vous présenter Apollo avec Vue.JS, si vous utilisez les autres frameworks JavaScript comme React ou ADépendances Jasonngular le processus est pratiquement le même. L’installation d’Apollo est classique mais il ne faut pas oublier de rajouter les dépendances dans votre package.json, paquet propre à Apollo, et d’autres graphQL.
Comment fonctionne Apollo ? 
Apollo GraphQlite
Commencez par mettre le tag ApolloQuery en spécifiant la query GraphQL ainsi que la variable utilisée dans cette query (ici search qui est reliée au modèle de l’application). Cela va déclencher automatiquement la query et retourne les informations spécifiées dans le dossier GraphQL. Apollo vous retourne les états de votre requête : loading (pendant que la recherche est faite), error (si votre requête a rencontré une erreur) et le résultat data.

Avec GraphQLite, il est maintenant très facile de créer une API. Cela fonctionne aussi bien avec PHP qu’avec JavaScript et TypeScript grâce aux nombreux outils déployés.

Mais il faut faire attention aux performances, nous pouvons vite faire des choses peu efficaces avec GraphQL.

VOUS AVEZ AIMÉ CET ARTICLE ET VOUS VOULEZ EN SAVOIR PLUS ? 

RENDEZ-VOUS TOUT DE SUITE SUR NOTRE BLOG TECHNIQUE !

thecodingmachine.io

BEST PRACTICE : GESTION DES ERREURS

« CA NE MARCHE PAS, J’AI UN ÉCRAN BLANC !»

« CA S’ARRÊTE SANS MESSAGE D’ERREUR ET SANS LOG !  JE NE COMPRENDS PAS POURQUOI ? »

« LA PAGE SE BLOQUE SUR LOADING »

Si comme nous vous avez déjà entendu ces phrases, vous savez à quelle point il est important d’avoir une gestion des erreurs solide et robuste ! 
A travers des exemples concrets, David nous présente un ensemble de bonnes pratiques qui vous aidera à gérer les erreurs comme un pro.
Retrouvez les slides de sa présentation au Meetup AFUP Paris :

SERVERLESS & PHP : MAIS OÙ EST PASSÉ LE SERVEUR ?

Traditionnellement, l’hébergement a toujours été orienté « ressource » : on paye un serveur, on loue un espace disque que l’on va gérer pour faire tourner nos applications et nos fichiers, avec toutefois certaines limites comme pour les montées en charge.

Matthieu Napoli, consultant technique indépendant, nous familiarise avec Serverless  :

L’APPROCHE SERVERLESS

Avec Serverless, on passe de cette notion de ressource à une approche qui est plus tournée vers le service. Concrètement, en tant que développeur, nous nous limitons au choix d’un service sans avoir à nous soucier de scalabilité, de ressources, de configurations ou de parallélisations.

  • Minimiser l’effort opérationnel

Grâce à Serverless, l’effort est considérablement réduit. En effet dans la mesure où l’on utilise un service et non plus une ressource, une grande partie de la responsabilité d’exécuter ce service est géré par le provider, c’est-à-dire Amazon, Microsoft, etc.
Par exemple, avec Amazon S3, l’effort opérationnel pour stocker les fichiers est réduit puisqu’il « suffit de les envoyer ». A contrario, gérer un espace disque implique de gérer le monitoring, la redondance, l’espace de stockage …

  • Améliorer la scalabilité

En s’appuyant sur des géants comme Amazon, la responsabilité du scaling est déportée sur le fournisseur de service et non plus sur le développeur qui se contente d’envoyer ses fichiers pour les stocker.
En effet, avec Serverless il n’y a pas de limite de stockage. Il est donc possible d’envoyer une très grande quantité de fichiers, sans risquer de faire « ramer » le géant du web.

  • Réduire les coûts

Contrairement à une ressource – payée qu’elle soit utilisée ou non – l’approche Serverless peut potentiellement vous aider à réduire votre facture. Avec l’approche Serverless, et notamment avec Amazon S3, vous ne payez que ce que vous consommez.
Pour certaines applications, vous n’allez pas y gagner beaucoup car vous exploiterez déjà parfaitement vos ressources, tandis que dans une bonne majorité des cas, il est possible d’économiser beaucoup à ne plus payer des ressources gâchées.

FUNCTION AS SERVICE

Avec PHP, nous avons déjà l’habitude d’avoir un process qui s’exécute quand une requête arrive avec PHP-FPM, ce qui match très bien avec l’esprit Serverless !  Paradoxalement, malgré deux architectures très proches, PHP est mal supporté dans les providers pour « Function as a service ».
Avec le service « exécuter du code » ou « FAS », l’approche Serverless est encore plus claire : Vous souhaitez exécuter une fonction ? C’est le provider qui va s’en occuper.
C’est-à-dire que vous avez dans votre application web, avec une requête http qui arrive et qui la déclenche :

Avec une approche dite traditionnelle, vous aviez un serveur qui tourne tout le temps, qui écoute et qui attend les requêtes sur le port 80, puis qu’il exécute lorsqu’elles arrivent :

Sur des applis de type traditionnelles comme Java, Node, Python, Go… il y a un gros refactoring, il faut enlever le serveur et on ne va écrire plus que nos Controller et le code qui va autour, ce qui demande un petit effort.
En résumé, ce changement signifie que nos applications :

  • Sont désormais exécutées par des évènements (une requête http, un job dans une message Q, un cron …) et ne vont plus tourner en tâches de fond de manière continue
  • Sont stateless, c’est-à-dire que chaque bout de code qui s’exécute pour gérer une requête va être complètement isolé des autres, il n’y aura plus d’interactions, plus de mémoire partagée, etc.

Toutefois cette situation n’est pas bloquante.
Par exemple ici on a créé dans Amazon une lambda, c’est-à-dire une fonction :

  • On télécharge le code en zip
  • On choisit son langage (attention php n’existe pas sur Amazon)
  • On choisit son Handler
  • Puis on configure l’évènement qui va déclencher votre lambda

Ex de code à zipper : 

CÔTÉ SCALABITÉ

En reprenant le schéma initial, si on a une requête alors le code s’exécute, si on a O requête le code ne s’exécute pas.

Mais que ce passe-t-il quand on a 1000 requêtes, au même moment, à la même milliseconde ?

Le code va être instancié 1000 fois, chaque code instancié va traiter 1 requête et ensuite va s’éteindre.
C’est stateless, c’est-à-dire que rien n’est partagé entre toutes ces instances : la seule limite théorique est la puissance de calcul d’Amazon.

CÔTÉ COÛT

Sur ce Graph du trafic en production, on observe des pics et des creux.
En prenant une approche orientée ressources, on va choisir des serveurs qui sont capables de gérer ces pics, dimensionnés par rapport à cette problématique.
On paie donc quelque chose qui va couvrir ce pic :

En approche Serverless vous ne payez que le « bleu » et non plus la « grosse boite ».
Plus on a de rose, plus on paie pour de la ressource inutilisée et plus on perd de l’argent, et plus on est gagnant à passer sur un hébergement Serverless.

Aujourd’hui il y existe des approches auto scaling, mais elles restent compliquées à mettre en place. Avec l’approche Serverless, notre programme s’écrit on ne paie donc que l’exécution de notre programme.


Exemple de provider pour « fonction as a service » :

  • Amazon AWS Lambda, populaire, stable et robuste
  • IBM OpenWhisk, qui est un conteneur docker et qui permet d’utiliser PHP
  • Microsoft Azure, qui supporte PHP mais qui est peu documenté
  • Google Cloud Function

SI PHP N’EST PAS SUPPORTÉ PAR AMAZON LAMBA, COMMENT FAIRE ?

Une lambda est un conteneur, un conteneur, est une machine linux : PHP peut être compilé pour linux, qu’Amazon utilise dans ses lambda !
Alors Comment faire ?
En créant une lambda, puis en mettant le binaire PHP dedans ; on fait une lambda en Node, en Go ou en Python avec trois lignes de JavaScript et ce handler va exécuter PHP.
Ce bridge permet ainsi de pallier à l’absence de PHP sur Amazon lambda.
Cette solution est stable et fonctionne très bien car il n’est pas nécessaire de recoder un reverse proxy, un Varnish ou autre … : un lambda traite une requête ce qui rend la possibilité et la mise en place d’un bridge très simplement !
Vous trouverez beaucoup de scripts existants sur GitHub, mais la compilation peut être vite laborieuse : avec Bref (github.com/mnapoli/bref), une librairie d’abstraction de la technologie Serverless pour PHP, vous pourrez exécuter un binaire PHP via un handler JavaScript.

LES PERFORMANCES

Comparons deux lambda, Node et PHP :

En prenant la plus petite, les performances ne sont pas idéales, en effet si on a une application qui prend 100 ms, avec Node elle va faire 108ms et 420ms avec PHP.
On observe qu’en augmentant la puissance, ça se stabilise. Sur Node à partir de 1024M il n’y a plus d’overhead à l’exécution et on se stabilise entre 20 et 21ms.
Pour 80% des application PHP, 20ms reste acceptable : on gagne en effet une scalabilité phénoménale et un temps de réponse stable, d’autant plus en cas de pics de trafic. N’oubliez pas qu’il n’y a pas de file d’attente, tout est traité en même temps !

CE À QUOI VOUS ATTENDRE

  • Base de données: si vous avez l’habitude d’avoir une stack LAMP avec un serveur où vous avez PHP et MySQL, il n’y a plus MySQL dans les conteneurs ! Il faut penser à prendre une base de données séparée comme Amazon Aurora Serverless (MySQL et PostgreSQL « as a service ») : ils vont s’occuper de faire du scaling à une granularité très faible sur la base de données.
  • FileSystem:  le système de fichier est ReadOnly. En effet, pour que la lambda soit stateless, on ne peut rien écrire sur le disque. Il existe quand même un dossier temporaire si nécessaire.
  • Logs et sessions: Les stocker sur les disques n’est pas recommandé en terme de performances. Pour les logs, il existe Amazon CloudWatch, qui permet d’avoir une visibilité totale sur les ressources et applications. Quant aux sessions, ElasticCache ou DynamoDB sont de bons outils pour les gérer.
  • APCu ne fonctionne pas non plus puisqu’il s’agit d’un cache en mémoire partagée entre les process partagés, il y a Memcache, Reddis… Selonles applications cela peut demander un changement d’approche un peu plus radical.
  • Asset: si on déploie une API web http, cela ne présente aucun problème. En revanche, si vous déployez un site web avec du PHP mais aussi du JavaScript, du css … on ne peut pas passer par une lambda pour exécuter du code qui va servir à faire des fichiers statiques, il faut pousser les fichiers sur S3.

Retrouvez tous les articles de Matthieu sur son blog

LA RSE CHEZ THECODINGMACHINE

La Responsabilité Sociétale des Entreprises interroge l’entreprise sur son impact au niveau social, économique et environnemental.
Entretien avec Jean-Guillaume Dujardin, président de TheCodingMachine. 

EN TANT QUE DIRIGEANT, POURQUOI T’ÊTRE ENGAGÉ DANS UNE DÉMARCHE RSE ? 

Je suis convaincu que l’entreprise, quel que soit sa taille ou son secteur d’activité, a un véritable rôle à jouer dans la société.
En tant qu’organisation, nous sommes responsables de l’impact de nos décisions et de notre activité sur la société et l’environnement, et nous devons aussi prendre en compte les attentes de nos parties prenantes.

EN PARLANT D’ATTENTES, QUELLES SONT-ELLES ?  

Elles sont de plus en plus nombreuses !
Il peut s’agir de développement durable, de climat et d’environnement ou de bien-être au travail… Ces attentes peuvent venir aussi bien de nos clients, de nos partenaires qui demandent une grande transparence que de nos salariés eux-mêmes.
Ce que je souhaite, c’est que grâce à nos actions, en agissant différemment et en investissant dans le capital humain, nous ayons un impact positif sur la société.

INVESTIR DANS L’HUMAIN CHEZ TCM, ÇA VEUT DIRE QUOI ?  

C’est très simple : nous souhaitons que TheCodingMachine soit un lieu où il fait bon travailler, propice à l’épanouissement professionnel. Ainsi, la principale richesse de notre société repose sur la qualité de nos collaborateurs.
C’est pourquoi nous encourageons un esprit d’ouverture, de courage, de générosité, de respect et de solidarité pour que chaque collaborateur se sente libre de s’exprimer en respectant la charte éthique de notre société.

UNE CHARTE ÉTHIQUE ? C’EST À DIRE ?  

Les valeurs de TheCodingMachine s’expriment au travers de nos façons d’être et d’agir et, c’est pour cela que nous avons rédigé une charte éthique : elle met en lumière les principes fondamentaux de notre société que chaque collaborateur s’engage à respecter.
Par exemple on peut y lire

 « La loyauté et l’honnêteté entre les collaborateurs sont encouragées par TCM. Ces principes appellent les collaborateurs à se respecter. »

ou encore

 « L’entraide entre les employés est une valeur clé de TCM qui permet à tous de progresser et donc de faire évoluer la société.


ET  SINON EN TERMES D’ENGAGEMENT ENVIRONNEMENTAL, COMMENT AGISSEZ-VOUS AU QUOTIDIEN ? 

Nous avons introduit cette problématique de façon concrète dans notre quotidien.

  • Réduction des déchets et recyclage dans l’entreprise :

Les collaborateurs doivent minimiser leur impact sur l’environnement et favoriser la réutilisation ou le recyclage du matériel informatique par des Eco-Organismes.
Nous effectuons un recyclage des déchets rigoureux grâce à des poubelles de tris sélectif situées dans les parties communes.
A ce titre, aucune poubelle personnelle n’est autorisée !

  • Favoriser les transports non-polluants :

Quand nous avons décidé de changer de locaux pour nous agrandir, nous avons été très attentifs à l’implantation géographique et à l’accessibilité des transports en commun.
Être central c’est faciliter le déplacement de nos collaborateurs chez nos clients, mais surtout limiter leur temps de trajet pour se rendre au bureau et favoriser un équilibre personnel.

TU ABORDES LE THÈME DE L’ ÉQUILIBRE PERSONNEL, QU’EN EST-IL CHEZ THECODINGMACHINE ? 

Nous sommes à l’écoute des besoins personnels des collaborateurs, c’est pourquoi les vacances et jours de congés sont acceptés par défaut. Nous pensons en effet que c’est le refus du management qui doit être motivé auprès du salarié et non pas l’inverse.
Aussi, nous sommes conscients que chacun peut avoir des obligations externes et qu’il peut être parfois difficile de concilier travail et vie privée.  C’est pourquoi nous sommes extrêmement flexibles sur les horaires : tous les collaborateurs peuvent organiser leur temps de travail en fonction des horaires où ils se sentent les plus productifs.
Chez TheCodingMachine, bien qu’il n’y ait pas de pratique formelle, si une personne est en difficulté ou vit un moment particulier, tout le monde y sera attentif : la solidarité est une valeur clé de TCM. La démarche vers l’autre est naturelle mais chaque collaborateur respecte pour autant la vie privée de ses collègues.  Au-delà du cadre légal, des arrangements peuvent toujours être trouvés entre la personne concernée et la direction.
Autre exemple : Lors d’une naissance, nous favorisons le congé paternité auprès de nos collaborateurs. Comme en matière de congé maternité, les salariés en congé de paternité ne sont pas rémunérés par leur employeur mais par la sécurité sociale. Ils bénéficient donc de la même indemnité journalière de 80 % du salaire brut.
En conséquence, les salariés dont la rémunération est supérieure au plafond subiront une baisse de leurs revenus pendant le congé de paternité. Bien que rien ne nous l’impose, TheCodingMachine anticipe et complète cette perte de revenu.

ET EN TERMES D’ENGAGEMENT SOCIAL, QUELLE EST TON IMPLICATION ?

TheCodingMachine soutient trois associations :

  • 100 000 entrepreneurs : cette association vise à rapprocher les jeunes et le monde de l’entreprise. L’ambition est de développer l’envie d’entreprendre et particulièrement auprès des jeunes défavorisés. Nous avons eu l’occasion d’intervenir dans des classes de la 5ème à la Terminale à Pantin ou Paris La villette.
  • Fondation CGénial : elle a pour mission de promouvoir les sciences et les technologies ainsi que les métiers qui y sont associés. Elle œuvre également au rapprochement entre le monde de l’entreprise et celui de l’éducation pour faire face aux enjeux d’aujourd’hui et de demain.
  • Réseau Entreprendre : il vise à accompagner les entrepreneurs à travers l’obtention de prêts à taux zéro et un accompagnement bénévole par un chef d’entreprise.

Enfin nous intervenons de manière bénévole sur différents sujets tels que :

  • CNRS programme de pré maturation (sélection et jury) : l’objectif est de soutenir toutes les premières étapes de développement de projets émergents à fort potentiel d’innovation.
  • Centrale Paris option entrepreneur (encadrement d’équipes d’étudiants) : proposition de projets et encadrement de groupes de travail.
  • HEC Challenge + (jury) :  ce programme vise à accompagner la création d’entreprises innovantes et de haute technologie.

EN CONCLUSION, QUELS SONT LES BÉNÉFICES DE LA RSE  POUR THECODINGMACHINE ? 

La Responsabilité Sociétale des Entreprise est un vrai modèle d’analyse qui permet de réfléchir à l’impact de l’objet économique qu’est une société. Ces repères sont très utilies car  rien n’est parfait mais tout peut s’améliorer !

Posted in TCM

Interview : L'IMPORTANCE DE LA FORMATION INTERNE

Cette semaine, Thibaut Balmette et Kévin Nguyen vous parlent des formations internes chez TheCodingMachine.

TOUT D’ABORD, POUVEZ-VOUS VOUS PRÉSENTER ?

Kévin J’ai fait mes débuts chez TheCodingMachine il y a plus de 12 ans maintenant en tant que prestataire. J’ai très vite accroché avec l’esprit et j’ai été embauché pleinement en 2008, avant de devenir associé 2 ans plus tard. Mon rôle en tant que Directeur de projet est d’encadrer une équipe de 8 personnes, et en tant qu’associé de réfléchir à la stratégie d’ensemble de TheCodingMachine, notamment de la partie RH, ce qui inclus le recrutement et la formation.

Thibault A l’issue de mon cycle d’Ingénieur Logiciel à l’ISEP Paris, (École d’Ingénieur du Numérique) j’ai intégré TheCodingMachine début 2016 pour y effectuer mon stage de fin d’études. En juillet 2016, j’ai été embauché en CDI en tant que Chef de projet web. En interne, je m’occupe également d’organiser les formations internes.


POUVEZ-VOUS NOUS DIRE UN MOT SUR LA POLITIQUE DE RECRUTEMENT CHEZ THECODINGMACHINE ?

Kévin Le marché de l’emploi est tendu et on rencontre des difficultés à embaucher des profils avec 1 ou 2 ans d’expériences. C’est pourquoi notre recrutement a toujours été axé sur l’embauche de stagiaires de fin d’études. Pour nous, c’est un moment privilégié pour prendre le temps de former un futur collaborateur correctement, mais aussi de nous assurer qu’il pourra s’intégrer facilement à notre structure, à nos effectifs et qu’il se sentira épanoui dans son travail. En effet, lorsque l’on parle de recrutement, on entend nouveaux arrivants mais il y aussi « garder les gens » et nous sommes convaincus que la bonne entente et l’ambiance sont des facteurs de rétention.

Thibault : En tant qu’ancien stagiaire, je peux confirmer qu’on est vraiment accompagné… le temps de trouver nos marques, de nous épanouir dans l’entreprise mais aussi dans le quotidien du métier : travailler en équipe, être confronté tôt à la gestion de projet ce qui n’est pas le cas de toutes les sociétés. Chaque entreprise a ses propres spécificités, qui ne sont pas des points abordés dans les cursus scolaires. Il est donc important que chacun comprenne la manière de travailler de sa société et s’y sente bien !


VOUS AVEZ TOUS LES DEUX LA RESPONSABILIT
É DE LA FORMATION. COMMENT S’OPÈRE CETTE VOLONTÉ RH AU NIVEAU DE LA FORMATION INTERNE ? 

Kévin : Quand on recrute beaucoup de bons profils mais inexpérimentés, la formation est un enjeu très fort. Les écoles préparent très bien les étudiants mais dans notre secteur, il y a beaucoup de choses à apprendre et qui vont au-delà de l’enseignement à proprement parlé : la réalité organisationnelle d’un projet, sa réalité financière, mais aussi la réalité « humaine ». Ces profils, qui n’ont pas encore d’expérience professionnelle importante, on a tout intérêt à les préparer au mieux à cette réalité du poste de chef de projet.

Thibault Chez nous les profils sont vraiment très différents : certains ont fait beaucoup plus de développement, alors que d’autres ont déjà abordé la gestion de projet dans leur stages précédents. L’idée de notre plan de formation interne est d’offrir un socle commun de connaissances, d’aborder considérations techniques plus poussées que ce qui a pu être vu en cours, et des compétences essentielles qui s’étendent sur tout l’éventail de notre métier, peu importe le cursus de l’étudiant.

COMMENT VOUS ETES-VOUS ORGANISÉS ?

Kévin : Aujourd’hui nous sommes un vrai groupe dédié à la formation, avec tout un éventail de compétences complémentaires pour mettre en œuvre notre plan de formation : un membre de la Direction Technique, de deux chefs de projets expérimentés et des responsables des ressources humaines et la communication. Nous nous réunissons tous les mois pour échanger sur le sujet.

Thibault
 : Chacun est partie prenante et a un vrai rôle à jouer ! :

  • Le pole RH nous informe des arrivées de nouveaux collaborateurs et à quel moment il est le plus opportun de lancer le cycle de formation,
  • La direction Technique et les Chefs de projets proposent des thèmes à aborder
  • La communication nous apporte son soutien pour la création des supports, pour diffuser en interne et sur notre blog nos différentes formations

Mais c’est aussi le fruit d’une concertation avec tous les collaborateurs : certains chefs de projet peuvent proposer des formations au groupe de travail, notamment s’il est expert d’un langage en particulier. Aussi, si un directeur de projet identifie des collaborateurs en situation de difficulté, il peut proposer alors une formation plus appropriée.


CONCR
ÈTEMENT POUR LES SALARIÉS, POUVEZ-VOUS NOUS DÉTAILLER UN PEU PLUS L’ACTIVITÉ DU GROUPE DE TRAVAIL FORMATION ?

Kévin :  Chez nous, chaque salarié est confronté très tôt à la gestion de projet ! Dès sa période de stage, un collaborateur est amené à travailler sur différentes phases d’un projet web, ou sur un langage de programmation particulier.
Pour l’accompagner au mieux nous avons mis en place ce qu’on appelle dans notre jargon des « Formations Noob ». Nous avons listé tous les sujets essentiels à aborder en tant que nouvel arrivant. Ensuite, sur la base du volontariat, des connaissances et de la disponibilité des chefs de projets expérimentés, nous avons organisé un planning de formation qui s’étend de mars à septembre au rythme d’une formation par semaine.  On alterne alors entre formation technique, managériale et gestion de projet.
Par exemple : comment interagir avec un client ?  Comment gérer un projet ? Quels sont les langages qu’on utilise au quotidien ? Mais on aborde aussi quelques particularités comme les nouvelles versions ou évolutions des langage… les technologies changent souvent et nous faisons évoluer nos formations pour rester à la pointe de notre expertise.

Thibault Nous ne nous adressons pas qu’aux nouveaux mais aussi à l’ensemble des membres de TheCodingMachine, qui a un vrai besoin de formation continue. Nous avons mis en place des formations managériales, qui portent plus sur le savoir-être que sur le savoir-faire mais aussi nous avons instauré le concept de « Point du vendredi » !

Chaque vendredi à 10h, n’importe qui peut proposer un thème dont il veut discuter : il peut s’agir de technique mais aussi de sujets orientés gestion de projet, ou bien même de stratégie marketing. 

AVEZ-VOUS D’AUTRES EXEMPLES DE CET ACCOMPAGNEMENT ? 

Thibault Avec la direction technique, nous proposons des sessions de Peer Coding.
L’idée c’est de proposer de passer deux demi-journées (1 mois après arrivée, 1 mois avant l’issu du stage) avec la personne, assis à son poste de travail, à la fois pour l’accompagner dans son développement, pour répondre à ses questions techniques ou de méthodologie, de l’aider … mais aussi de constater l’évolution de son autonomie et les progrès fait pendant le stage.


QUELLES SONT VOS PRIORIT
ÉS POUR LES MOIS À VENIR ?

Kévin : Le cycle de formation spécifique aux nouveaux arrivants (formations noob) se termine à la fin du mois de septembre et nous auront toute une session de réflexion à mener pour aborder le prochain cycle 2019.
Cette année, nous avons mis en place des questionnaires de satisfaction à la fin de chaque session de formation, que nous les analysons ensuite avec le formateur afin d’identifier des axes d’amélioration, et surtout connaître les attentes de nos collaborateurs.

Thibault Pour la prochaine session, nous avons plusieurs objectifs :

  • Le premier est évidemment de continuer à proposer des thèmes innovants et qui collent à notre quotidien;
  • Le second est de permettre un meilleur engagement des nouveaux arrivants avec plus d’exercices pratiques pendant la formation
  • Le troisième est d’instaurer un système de questionnaire pour vérifier les acquis à l’issue de chaque point de formation

L’idée est de pouvoir identifier une personne en difficulté et lui proposer un meilleur accompagnement avec des solutions complémentaires, comme le Peer Coding par exemple.
Régulièrement nous nous remettons en question pour nous améliorer, rendre les formations les plus intéressantes possible et qu’elles soient au plus proche de notre réalité de travail.

Posted in TCM

[Formation NOOB] Tester sans se faire détester

Vous avez lu notre article  « Débugger sans peine » et maintenant vous souhaitez passer à votre phase de test ?
Dans cette vidéo vous apprendrez pourquoi et quand tester votre application, vous découvrirez également ce qu’est un test unitaire et ce qu’il implique. 

POURQUOI TESTER ?

Tout projet web est découpé en différentes étapes :

  1. Phase de développement
  2. Phase de test
  3. Phase de livraison

Lors de la phase de développement, vous pouvez être amené à opérer des changements majeurs : mise à jour de plugins, injections SQL, ajout de nouveaux champs à un formulaire, etc.
En théorie, 50% de votre temps devrait être alloué à re-tester la totalité de votre application et vérifier que tout fonctionne. Pourtant, en qualité de chef de projet junior, vous avez tendance à vous reposer sur votre lead développeur pour tester l’application, et en phase de recette vous vous dites que c’est le client qui doit tester la totalité de l’application.
N’oubliez pas qu’une recette avec des centaines de bugs – qui auraient pu être détectés au développement – est une recette longue et fastidieuse, pouvant mettre votre projet en péril !

TEST UNITAIRE : S’EVITER UNE RECETTE FASTIDIEUSE

Lire et comprendre une merge request n’est pas chose évidente…  C’est là que le test unitaire va vous aider. Il va vous permettre :

  • De tester la totalité de votre application pendant que vous développez et ce à n’importe quel moment,
  • D’assurer tous les comportements attendus depuis le début de l’application,
  • De réduire le cycle de test, particulièrement la phase de recette
  • De tester les cas qui n’arrivent jamais

Il permet aussi de réaliser un test manuel sur un comportement en particulier, toutefois vous devez connaitre à l’avance le comportement de l’objet, et non son fonctionnement !
L’injection de dépendance va fortement nous aider car il nous permet de mettre facilement en œuvre les tests unitaires.Vous devez donc éviter les factories et les singletons qui vont vous compliquer la tâche.
En effet, l’idéal est de tester un seul et unique comportement : chaque test unitaire doit pouvoir être exécuté seul.

ORIENTER SON DEVELOPPEMENT

Le « Test Driven Development » ou développement orienté par le comportement attendu, ne suit plus une logique algorithmique mais une logique de comportement.
Par exemple, si vous avez des objets à ordonner comme des contrats avec plusieurs gestionnaires et que vous avez réalisé un arbre de conditions, l’idéal est de coder tous vos tests à l’avance avant de développer pas à pas votre application.
En travaillant dans ce sens, vous aurez peu de chance d’avoir des erreurs ! En effet, si vous vous trompez dans votre code et inversez deux conditions, alors votre test ne passera plus.

L’EXEMPLE DE PHP UNIT

De nombreux outils existent pour vous aider, c’est le cas de PHPUnit qui est un framework qui vous permet d’implémenter des tests de régression, en vérifiant que les exécutions correspondent aux assertions prédéfinies.
Pour l’installer, vous pouvez utiliser le gestionnaire de paquets « Composer », il vous suffit de taper la commande « composer require phpunit/phpunit –dev ».
L’avantage, c’est que vous pouvez installer PHPUnit dans votre intégration continue comme Gitlab : quand vous envoyez votre code, celui-ci lancera automatiquement sa validation.
Exemple de test :

PhpUnit, comme la majorité des frameworks de test, utilise les assertions pour contrôler un résultat.
PHP unit assertion
Il est important de toujours utiliser l’assertion du même type que le résultat attendu, afin d’avoir un une erreur cohérente et compréhensible si celle-ci se produit.

Jeu de données
Si vous avez plusieurs jeux de données à tester pour une même fonction, il est possible d’utiliser des providers qui permettent d’écrire simplement un test avec un jeu de données multiples :

Vous ne devez pas tester plusieurs comportements dans un seul test, car vous devez garder une visibilité la plus unitaire possible, néanmoins vous pouvez lier vos tests :
Avec la règle @depends vous pouvez créer une fonction qui dépend d’une autre, toutefois cela complexifie votre test et reste à éviter au maximum !

Vous pouvez également faire des Mocks, qui vont vous permettre de simuler une base de donner derrière votre test.

Exemple Mocks
Par exemple avec prophesize, celui-ci permet de donner une valeur de retour à une fonction.
Dans l’exemple nous allons donner une valeur à la fonction getCode.
Nous pourrons donc totalement faire abstraction de la base de données.

Pour conclure, les tests unitaires sont plus qu’utiles pour contrôler la pérennité de votre projet et éviter au maximum les régressions de code. Il n’est pas demandé d’avoir un test unitaire sur chaque petite fonction du code (sauf dans le cas d’un paquet open source ou public), mais sur les zones compliquées.
Les tests vous sécuriseront aussi s’il y a d’autres intervenants que vous, car vous pourrez identifier plus rapidement les erreurs et cela avant votre client.
Tout le monde est gagnant, vous car vous sécurisez votre code et votre client qui a une application plus stable.