AFUP Forum PHP 2019 Baromètre Planète PHP

La parole est aux speakers : Frédéric Hardy (AFUP Day 2019 Lyon)

Jusqu’à l’AFUP Day 2019 Lyon, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

Quel est le rapport entre TCP, UDP et la programmation orientée objet ?

La programmation orientée objet doit permettre la conception de programmes fiables, évolutifs, facilement et rapidement, à l’aide de briques de code réutilisables. Pourtant, il est rare de pouvoir réutiliser du code orienté objet dans un contexte différent de celui pour lequel il a été conçu. De plus, parvenir à faire collaborer des objets qui ne sont pas issus du même écosystème n’est pas forcément trivial. Les programmes ont pris de l’embonpoint en termes de quantité de code et de complexité, et ils sont donc dans la plupart des cas très gourmands en ressources intellectuelles et techniques pour leur conception et leur mise en œuvre. De plus, ils deviennent souvent rapidement difficiles à faire évoluer, et leur fiabilité est incertaine et délicate à maintenir sur la durée, si tant est qu’elle soit suffisante dès leur première mise en production. Le constat est donc cruel : la programmation orientée n’a pas tenu ses promesses ! Quoique… l’Homme a une tendance naturelle à accuser l’outil plutôt que la façon dont il l’utilise. Et si nous laissions le bénéfice du doute à la programmation orientée objet durant cette conférence et que nous en profitions pour remettre en cause la façon dont nous l’appréhendons?? En réalisant un parallèle entre les protocoles de communication UDP et TCP à la base d’Internet et la façon dont nous écrivons du code orienté objet actuellement, j’espère vous faire douter de vous-même et à nouveau vous faire croire aux promesses d’Alan Kay !

SupInfo
17/05/2019
09:20-10:00

Ces dernières années on a souvent parlé de DDD, microservices ou d’architecture hexagonales. Tu vas nous parler de POO, TCP, UDP : des principes qui ont des dizaines d’années d’existence. Penses-tu que ce retour à la base est le meilleur moyen de garantir la simplicité ?

L’objectif derrière le fait de mettre en relation ces concepts est d’apporter un éclairage différent sur la POO par rapport aux pratiques actuelles.
En tant que développeurs, nous avons tous pour objectif de produire facilement et rapidement du code qui répond aux besoins des clients ou des utilisateurs et qui soit simple à maintenir et à faire évoluer.
Et pour y parvenir, nous avons à notre disposition tout un tas de recettes de cuisine ou d’outils qui s’appellent TDD, DDD, architecture hexagonale, design pattern, « if less programming », « object calisthenics », SOLID, et il y en a beaucoup d’autres.
Pourtant, malgré cette pléthore de bonnes pratiques et de recommandations, dans les faits, la plupart du temps, cet objectif n’est que partiellement atteint.
Un jour ou l’autre, nous sommes dans l’impossibilité de faire évoluer le code simplement, et nous sommes alors obligés de produire de la dette technique qu’il faudra rembourser à plus ou moins long terme.
Et comme la dette appelle la dette, elle va donc rendre plus compliquée la maintenance du code et rendre plus complexe son évolution.
Or, la POO a été conçue justement pour répondre à cette problématique, et non pour la provoquer.
C’est en cherchant à comprendre l’origine de ce paradoxe et en revenant à ces origines que je me suis aperçu que nous faisons de la POO, mais que nous ne la comprenons pas réellement.
Nous utilisons la POO pour développer des programmes qui sont une suite d’appel de fonction, alors qu’elle est censée permettre la conception d’un protocole de communication et de l’implémenter.
C’est pour illustrer cela que j’utilise TCP et UDP dans cette conférence, mais je n’en dirais pas plus maintenant.
Si vous voulez savoir exactement ce que j’entends par là et si ce « retour à la base » permet effectivement de « garantir la simplicité », il faudra venir à ma conférence 😉

Tu donnes souvent des formations à des développeuses et développeurs qui débutent dans le métier. Vois-tu un gap important entre ce que nous apprenons à l’école et ce qui est utile en entreprise, notamment au niveau de l’approche de la programmation (orientée objet) ? S’il y en a un comment pouvons nous le réduire ?

De mon point de vue, le gap est malheureusement très important entre ce qui est enseigné dans les écoles et ce qui est réellement utile en entreprise.
Je vais me répéter, mais ce qui est utile à une entreprise, c’est que les développeurs soient en mesure de produire rapidement et facilement du code qui répond aux besoins et qui puisse évoluer à moindre coût.
La POO est l’un des moyens de parvenir à ce résultat, surtout si elle est combinée avec tout ce qui est relatif à la qualité logicielle.
Or, l’un et l’autre ne sont pas enseignés correctement dans les écoles, voir même ne le sont pas du tout en ce qui concerne les tests ou l’industrialisation du code.
Les notions d’abstraction, d’encapsulation, de polymorphisme ou de messages semblent ne pas être abordées durant les cursus de formation.
Quant aux tests, ils sont au mieux la cinquième roue du carrosse puisqu’ils sont la plupart du temps abordés en fin de cursus, alors qu’ils devraient être la première chose enseignée et que tout le reste devrait en découler.
Alors, comment pouvons-nous réduire ce gap ?
C’est une excellente question.
À titre individuel, outre le fait que je suis toujours disponible pour apporter mon soutien à mes collègues sur ces thématiques lorsqu’ils en expriment l’envie, je fais des conférences et je produis du code que je libère ensuite sur GitHub pour illustrer mon propos.
Mon employeur, Norsys, a fait le choix d’envoyer en formation pendant 10 jours les développeurs qui viennent d’être embauchés, ce qui leur permet de revoir sur une forme ludique les fondamentaux du web, les concepts fondamentaux de la POO ainsi que ce qui est relatif à la qualité logicielle et à la sécurité des développements.
Nous semons des graines, et nous espérons les voir germer, pousser, grandir et semer à leur tour d’autres graines.
Cela fonctionne, mais à une très petite échelle parce que nos moyens sont forcément limités.
Pour démultiplier l’effet, il faudrait revoir en profondeur la façon dont la POO et la programmation en général sont enseignées, avec notamment une mise en avant de la qualité logicielle.
Malheureusement, je n’ai pas l’impression que nous en prenions le chemin et j’avoue ne pas avoir de solution qui permettrait de faire évoluer significativement la situation.

As-tu déjà eu l’occasion de t’initier à la programmation fonctionnelle? Si oui, lui trouves-tu des avantages comparé à la POO?

Tu ouvres la porte à un troll absolument énorme, parce que j’ai effectivement fait un peu de programmation fonctionnelle, mais je n’y ai pas accroché.
L’approche fonctionnelle semble être trop « mathématique » pour mon cerveau et je peine systématiquement lorsque je m’y essaie, d’autant que je n’ai pas l’utilité dans mon quotidien et que je ne la pratique donc pas régulièrement.
À contrario, je fais de la POO quasiment tous les jours depuis maintenant 19 ans.
Mon avis est donc par nature totalement biaisé et au risque de décevoir, je vais donc laisser le troll dehors en m’abstenant de faire une comparaison entre la programmation fonctionnelle et la POO.
Par contre, je peux dire que la plupart des développeurs que je connais qui font de la programmation fonctionnelle s’y sont mis parce que de leur point de vue, la POO n’a pas tenu ses promesses, puisqu’elle ne leur permettait pas de produire un code simple à maintenir et à faire évoluer.
Ils ont donc vu dans la programmation fonctionnelle une planche de salut.
Est-ce qu’ils ont fait le bon choix ? C’est à eux de répondre à cette question.
D’ailleurs, je trouverais très intéressant que quelqu’un propose un retour d’expérience à ce sujet lors d’un événement AFUP.

Le speaker

Frédéric HARDY
Frédéric HARDY
Frédéric Hardy utilise PHP professionnellement depuis seize ans. Architecte logiciel, administrateur système, infographiste ergonome, consultant et formateur, il aime la programmation orientée objet, UNIX, les méthodes agiles, la facilitation graphique, les discussions intéressantes ainsi que la bonne cuisine et la bière. Il est de plus le créateur de atoum, un framework de test unitaire simple, moderne et intuitif pour PHP.

Autres interviews

En poursuivant votre navigation sur ce site, vous acceptez l’utilisation des cookies pour améliorer votre navigation. plus d'infos

1. Qu’est-ce qu’un cookie?

Un Cookie est un petit fichier texte enregistré sur votre terminal (ordinateur, tablette, smartphone, etc.), à l’occasion de la consultation d’un service en ligne grâce à votre logiciel de navigation. Il permet à son émetteur d’identifier le terminal dans lequel il est enregistré, pendant la durée de validité ou d’enregistrement du Cookie. Lors de la consultation de notre site Internet, des informations relatives à la navigation de votre terminal sont susceptibles d'être enregistrées dans ces fichiers dits "Cookies". Ces derniers sont installés sur votre terminal, sous réserve des choix que vous auriez exprimés concernant les Cookies et que vous pouvez modifier à tout moment.

2. A quoi servent les cookies émis sur notre site ?

Seul l’émetteur d’un cookie est susceptible de lire ou de modifier les informations qui y sont contenues.
Les cookies utilisés sur notre site permettent :

3. Vos choix concernant les cookies

Vous disposez de différents moyens pour gérer les cookies. Tout paramétrage que vous pouvez entreprendre sera susceptible de modifier votre navigation sur notre site et sur Internet en général et vos conditions d'accès à certains services de notre site nécessitant l'utilisation de cookies. Vous pouvez à tout moment exprimer et modifier vos souhaits en matière de cookies, par les moyens décrits ci-dessous. L'accord sur les cookies L'enregistrement d'un cookie dans un terminal est essentiellement subordonné à la volonté de l'utilisateur du terminal, que celui-ci peut exprimer et modifier à tout moment et gratuitement à travers les choix qui lui sont offerts par son logiciel de navigation. Si vous avez accepté dans votre logiciel de navigation l'enregistrement de cookies dans votre terminal, les cookies intégrés dans les pages et contenus que vous avez consultés pourront être stockés temporairement dans un espace dédié de votre terminal. Ils y seront lisibles uniquement par leur émetteur.

Le refus des cookies Si vous refusez l'enregistrement de cookies dans votre terminal, ou si vous supprimez ceux qui y sont enregistrés, vous ne pourrez plus bénéficier d'un certain nombre de fonctionnalités qui sont néanmoins nécessaires pour naviguer dans certains espaces de notre site. Tel serait le cas si vous tentiez d'accéder à votre compte ou à votre abonnement qui nécessite de vous identifier. Tel serait également le cas lorsque nous, ou nos prestataires, ne pourrions pas reconnaître, à des fins de compatibilité technique, le type de navigateur utilisé par votre terminal, ses paramètres de langue et d'affichage ou le pays depuis lequel votre terminal semble connecté à Internet. Le cas échéant, nous déclinons toute responsabilité pour les conséquences liées au fonctionnement dégradé de nos services résultant de l'impossibilité pour nous d'enregistrer ou de consulter les cookies nécessaires à leur fonctionnement et que vous auriez refusés ou supprimés. Les choix offerts par votre logiciel de navigation Vous pouvez configurer votre logiciel de navigation de manière à ce que des cookies soient enregistrés dans votre terminal ou, au contraire, qu'ils soient rejetés, soit systématiquement, soit selon leur émetteur. Vous pouvez également configurer votre logiciel de navigation de manière à ce que l'acceptation ou le refus des cookies vous soient proposés ponctuellement, avant qu'un cookie soit susceptible d'être enregistré dans votre terminal. Pour la gestion des cookies et de vos choix, la configuration de chaque navigateur est différente. Elle est décrite dans le menu d'aide de votre navigateur, qui vous permettra de savoir de quelle manière modifier vos souhaits en matière de cookies. Selon votre navigateur, consultez le lien ci-dessous pour configurer votre navigateur et refuser les cookies :