Blog ENI : Toute la veille numérique !
Jusqu'à ce soir ! : -25€ dès 75€ sur les livres en ligne, vidéos... code FUSEE25. J'en profite !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Software Craftsmanship
  3. Savoir penser
Extrait - Software Craftsmanship L'art du code et de l'agilité technique en entreprise
Extraits du livre
Software Craftsmanship L'art du code et de l'agilité technique en entreprise
1 avis
Revenir à la page d'achat du livre

Savoir penser

Introduction

« Any fool can know. The point is to understand. » - Albert Einstein

Nous y sommes, à la dernière partie, bientôt la fin d’un livre et le début d’une nouvelle aventure. Une aventure où vous serez armés d’anecdotes, de conseils et de pistes pour développer vos propres convictions et votre sensibilité face aux différents enjeux.

Nous vivons dans des sociétés en constante mutation et où l’informatique occupe désormais un rôle moteur. En moins de dix ans, nous sommes passés de montées de versions applicatives trimestrielles à un modèle de déploiement continu. Nous pouvons citer le cas d’Amazon qui réalisait, il y a 5 ans, des mises en production toutes les 11.6 secondes. Ce rythme, aujourd’hui, ne fait que s’intensifier, rendant les connaissances techniques acquises à un instant T obsolètes à T+1. Ce volet suggère certains réflexes à avoir et certaines pratiques à mettre en place pour maintenir une fraîcheur, voire une vitalité technique.

Faire sa veille, connaître les professionnels qui tirent les ficelles et influencent les tendances, aller au-delà de ce qui est apparent et penser avant d’agir, voilà ce qui sera abordé dans les prochaines sections !

images/04DP00.png

Veille techno. et non Vieille techno.

Nous avons pris connaissance des 4 valeurs du Manifeste Craft, à savoir : réaliser des logiciels bien conçus, avec un apport constant de valeur, entouré de professionnels et clients, avec lesquels doivent se construire des partenariats productifs.

La veille technologique est un ingrédient indispensable à tout aspirant craft. Entendez par veille toute démarche qui permet d’obtenir de l’information, de façon continue, sur l’évolution des technologies et des méthodologies utilisées par la communauté. In fine, ces connaissances peuvent s’avérer utiles et constructives pour l’implémentation d’un logiciel.

Il m’est arrivé de recevoir en entretien technique une personne à qui j’ai posé une question devenue désormais classique : « Faites-vous de la veille techno. ? » À mon grand étonnement, la réponse fut : « Pas du tout, je ne fais pas de vieille techno., que des technologies récentes ». À cet instant, j’ai plaidé le quiproquo, le candidat avait sûrement entendu vieille plutôt que veille. En creusant un peu plus, il s’est avéré qu’il ne connaissait pas le terme « veille technologique » et qu’au-delà, il n’en faisait pas du tout. Cela peut faire sourire et pourtant, il travaillait avec des technologies avancées, récentes, raison pour laquelle il avait été retenu en entretien. La fin de l’histoire, c’est que ce n’était pas dû à une démarche personnelle, mais plutôt induit par l’utilisation de ces mêmes technologies dans des expériences professionnelles passées.

images/04DP01.png

Faire de la veille technologique

Malheureusement, ce cas n’est pas un cas isolé et bon nombre de personnes se retrouvent dans cette situation. Ceci non par manque d’intérêt pour les nouvelles technologies, mais par manque de discipline ou de sensibilisation à l’importance de ce type de démarche. Faire sa veille technologique c’est comme faire sa toilette le matin, c’est une histoire d’hygiène technique.

En effet, comment peut-on savoir...

Qui est Martin Fowler ?

Alors qui peut bien être Martin Fowler ? Très bonne question, et pour y répondre, il suffirait de rechercher sur Google ce nom, de survoler deux ou trois articles et le tour serait joué. Surprise ! Ce n’est pas l’objet de cette section. Avant d’en révéler le contenu, prenons le temps d’une petite parenthèse et parlons football.

Qui connaît Pelé ou bien Maradona ? Qui connaît Messi ? Et Rivaldo ? Amoureux du foot ou pas, je suis sûr que toute personne connaît au moins deux noms sur les quatre. Et il est certain qu’un fan de foot connaît très bien les quatre.

Maintenant, revenons au monde de l’informatique et remettons notre casquette d’aspirant craft. Quels sont les premiers noms d’informaticiens qui nous viennent à l’esprit ? Certains diront Steve Jobs, ou encore Bill Gates et je leur répondrai : en quoi êtes-vous fan de ces personnes ? Ils sont populaires, certes, mais pour quelle raison ? Il se trouve qu’ils ont en commun d’être américains, d’avoir réussi en tant qu’hommes d’affaires dans le milieu des technologies de l’information. Mais sont-ce pour autant des références pour tout aspirant craft ? En partie, oui…

Mais faisons le comparatif avec un Maradona ou un Messi. Ce sont là deux joueurs de foot qui sont extrêmement techniques. Dites-vous bien que chaque fois que l’un de ces joueurs essaye un nouveau trick sur le terrain, c’est toute une génération de jeunes passionnés et autres professionnels du ballon rond qui se mettent à imiter les gestes puis à développer de nouvelles manières de toucher le ballon. Alors, quels tricks de code Bill Gates ou encore Steve Jobs vous ont donné envie de reproduire ? En informatique, c’est la même chose, si on est fan, passionné par cette science, alors on devrait naturellement avoir tendance à connaître ces influenceurs, qui, à la présentation d’un concept, d’un algorithme ou d’une méthodologie, se retrouvent, par effet papillon, à transformer le paysage technologique et catalyser l’évolution de tout projet se voulant moderne....

Craftsmanship Thinking

« Behavior is the most important thing about software. It is what users depend on. Users like it when we add behavior (provided it is what they really wanted) but if we change or remove behavior they depend on (introduce bugs), they stop trusting us. » - Michael Feathers

images/04DP10.png

Libérez votre cerveau

Prenez la route de l’innovation et ouvrez-vous à différentes perspectives, à des schémas de réflexion abductifs. Le design thinking a vu sa genèse en 1950 et a gagné en popularité au cours de ces dernières années, autant dans le monde académique que dans celui de l’entreprise. Il se décrit comme un procédé d’analyse non linéaire qui vise à penser et valider des solutions à valeur ajoutée, pour l’humain, sur des problématiques complexes, voire ambiguës.

En parallèle, le Craftsmanship est un mouvement lancé en 2008 et qui aspire à relever le niveau des équipes en charge de produire des solutions logicielles. Le contexte ? Un monde d’hyper consommation, un marché numérique qui tend naturellement à exiger des approches innovantes, proactives et de plus en plus flexibles. L’une des valeurs citées dans le Manifesto for Software Craftsmanship est d’aller au-delà de l’adaptation au changement et d’ainsi veiller à l’ajout constant de valeur, tant d’un point de vue technique que d’un point de vue fonctionnel. Si Craftsmanship et design thinking étaient deux concepts, sur un site de rencontre, je dirais que nous aurions là un « perfect match ».

Les deux disciplines visent à faire émerger des produits à valeur ajoutée, en élevant l’intérêt des acteurs pour la compréhension des besoins. Ils sont comme le yin et le yang, dans la mesure où, dès lors que l’on cherche à apporter une solution logicielle novatrice, l’un nous ouvrira à penser « out of the box », en dehors des sentiers battus, tandis que l’autre aspirera à une technique meilleure, une volonté d’excellence pour mettre la valeur technique au service d’aspects tant fonctionnels que non fonctionnels....

Think First, Act Last

« If shit happens in production, fallback first, think after. » - Denis Lacroix, Amadeus

C’est le 21e jour, le XXIe siècle, le dernier jour de la dernière semaine et c’est le moment de finir en beauté. La citation de Denix Lacroix, un VP of Engineering du temps où j’étais chez Amadeus, est pleine de sens. En effet, dans une section où je vous invite à réfléchir avant d’agir, il semble assez paradoxal de prendre le contraire en ouverture de chapitre.

Vers le début des années 2000, le standard de développement chez Amadeus était le cycle en V. Des Products Managers entraient en contact avec le marketing, ils collectaient les besoins fonctionnels et rédigeaient des SOR (Statement of Requests). Après, ils sollicitaient les équipes de développement impactées. Ces dernières rédigeaient des spécifications fonctionnelles et techniques. Une fois l’exercice fini, les équipes d’assurance qualité (QA), qui représentaient l’expertise fonctionnelle, se retrouvaient conviées à passer en revue les spécifications pour les valider et rédiger des scénarios de tests, que les équipes de développement contre-validaient. Le cycle de développement pouvait commencer. Une fois terminé, plusieurs cycles de tests s’enchaînaient :

  • les tests d’intégration techniques puis fonctionnels sur des environnements d’intégration ;

  • la SVV1 (Software verification and validation 1) puis la SVV2 sur des environnements de tests ;

  • la campagne de non-regression sur un environnement de test proche des données de production ;

  • les Sanity tests et tests de performances/sécurité sur des environnements de préproduction.

À l’issue de ces différentes phases, les équipes de QA donnaient un go/no go pour autoriser le passage en production. C’est à ce moment, dans ce type de contexte de développement qu’il semble inévitable, à la rencontre du moindre incident critique, de revenir en arrière, d’éviter de prolonger un état applicatif dégradé pour les clients et de donner l’espace-temps nécessaire...

Synthèse et exercices

1. Takeaways

1)

Faire sa veille technologique, c’est comme faire sa toilette le matin : c’est une histoire d’hygiène technique.

2)

Trouver la juste balance qui correspond le mieux à chacun entre veille active (lecture, écriture) et veille passive (écoute, vue).

3)

Organiser sa veille à l’aide d’outils tels qu’Evernotes, Notion ou Google Keep.

4)

Le design thinking est un procédé d’analyse non linéaire, qui vise à penser et valider des solutions à valeur ajoutée, sur des problématiques complexes, voire ambiguës.

5)

Craftsmanship et design thinking, à eux deux, favorisent l’empathie et mettent l’utilisateur final au centre des étapes de conception et de réalisation.

6)

Il est nécessaire de faire abstraction de ses propres conceptions des choses, de sortir de sa bulle et d’aller vers les autres, comprendre leurs expériences et les motivations cachées derrière l’énoncé du problème.

7)

MVP signifie Minimum Viable Product. Il s’agit là d’une stratégie dite lean, pensée économe pour le développement de produits.

8)

Un MVP se doit d’être accompagné d’hypothèses et ce sont ces hypothèses qui structurent la démarche pour réaliser le design du MVP.

9)

Que ce soit un MVP, que ce soit un prototype ou un produit, il restera d’usage de faire du TDD, du Clean Code, d’aspirer à relever le niveau de toute...

Bonus - Craft appliqué au Machine Learning

L’intelligence artificielle s’impose de nos jours comme une approche incontournable pour la réalisation de solutions à forte valeur ajoutée. Des solutions intelligentes qui s’adaptent, avec le temps, aux usages de l’utilisateur et lui apportent une expérience sur mesure, unique.

Une recherche sur Google, par deux utilisateurs différents, retournera deux pages de résultats différentes. Netflix vous fera des recommandations en fonction de votre historique de visualisation. Des téléphones s’activent en reconnaissant le visage de leur propriétaire.

Le Software Craftsmanship prône quatre valeurs qui aspirent à relever le niveau de conception et de réalisation de logiciels. Il ne s’arrête pas à une typologie de technologies et de méthodologies. Il semble possible d’envisager que la démarche de création d’un réseau de neurones de qualité, afin qu’il ait une meilleure précision et une réelle valeur ajoutée, puisse être dans le giron de crafters qui évoluent dans ce domaine de l’ingénierie logicielle.

Dans cette section, nous nous proposons d’identifier une synthèse de ce qui me semble être le dénominateur commun des notions utiles pour structurer et améliorer la mise en place des projets d’intelligence artificielle. Il est préférable toutefois que vous ayez des connaissances préalables sur la constitution de réseaux de neurones et les bases du machine learning avant de pouvoir en faire plein usage.

1. Réglage de classificateur

Ce n’est pas simple de démarrer un projet d’intelligence artificielle. Souvent, on se retrouve avec des résultats en deçà de ceux attendus. Entre autres, des algorithmes qui se trompent une fois sur trois alors que ceux réalisés par d’autres semblent offrir de meilleurs résultats. Pourtant, tout semblait correct : nous avons collecté des jeux de données, nous avons utilisé le bon algorithme, nous avons configuré le nombre de couches recommandé sur un site web. Mais il n’y a rien à faire, notre algorithme ne s’améliore pas, et dans certains cas : on jette...