<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Productivity on The Cloud Optimist</title>
        <link>https://antoinedelia.github.io/cloud-optimist/pr-144/fr/categories/productivity/</link>
        <description>Recent content in Productivity on The Cloud Optimist</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>fr-FR</language>
        <lastBuildDate>Wed, 26 Jun 2019 22:49:13 +0200</lastBuildDate><atom:link href="https://antoinedelia.github.io/cloud-optimist/pr-144/fr/categories/productivity/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>La Méthode du Canard en Plastique - pourquoi ça marche ?</title>
        <link>https://antoinedelia.github.io/cloud-optimist/pr-144/fr/posts/2019/the-rubber-duck-debugging/</link>
        <pubDate>Wed, 26 Jun 2019 22:49:13 +0200</pubDate>
        
        <guid>https://antoinedelia.github.io/cloud-optimist/pr-144/fr/posts/2019/the-rubber-duck-debugging/</guid>
        <description>&lt;img src="https://antoinedelia.github.io/cloud-optimist/pr-144/fr/posts/2019/the-rubber-duck-debugging/duck.jpg" alt="Featured image of post La Méthode du Canard en Plastique - pourquoi ça marche ?" /&gt;&lt;p&gt;&lt;strong&gt;La programmation est un art complexe.&lt;/strong&gt; Vous êtes un véritable architecte et votre mission est de concevoir, construire, décorer et entretenir une application, un peu comme vous le feriez pour une maison.&lt;/p&gt;
&lt;p&gt;Cependant, une difficulté émerge : &lt;strong&gt;vous devez communiquer des informations à une machine à travers des langages de programmation pour que tout fonctionne.&lt;/strong&gt; Alors que vous ne parlez pas à vos meubles pour les placer dans votre maison, n&amp;rsquo;est-ce pas ? &lt;em&gt;N&amp;rsquo;est-ce pas ?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Cette petite différence est cruciale, car il arrive parfois que vous rencontriez un problème sans savoir pourquoi il est là. Vous avez développé cette chose tellement parfaitement qu&amp;rsquo;elle ne devrait pas échouer. Et pourtant, voilà un bug, et vous ne savez pas pourquoi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La première chose à faire est bien évidemment d&amp;rsquo;accuser l&amp;rsquo;ordinateur.&lt;/strong&gt; Après tout, vous savez ce que vous faites, il n&amp;rsquo;y a aucune raison pour que vous ayez écrit quelque chose de travers. C&amp;rsquo;est probablement cet imbécile d&amp;rsquo;ordinateur qui vous fait encore passer pour un idiot. Mais la vérité est difficile à avaler.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;La machine fait exactement ce que vous lui dites de faire.&lt;/p&gt;
&lt;p&gt;&amp;ndash; &lt;cite&gt;Bill Gates, probablement&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Que vous le vouliez ou non, votre ordinateur est bête. Il récupère sans réfléchir l&amp;rsquo;information que vous lui fournissez et l&amp;rsquo;exécute. &lt;strong&gt;Et s&amp;rsquo;il échoue, c&amp;rsquo;est sans aucun doute de votre faute.&lt;/strong&gt; Je sais que ça fait mal, croyez-moi. Mais ne vous inquiétez pas trop, cela est arrivé à chacun de nous, et au final, tout le monde s&amp;rsquo;en est sorti.&lt;/p&gt;
&lt;p&gt;Maintenant, tout dépend de vous. Vous savez que vous avez fait quelque chose de travers, mais vous ne parvenez pas à savoir quoi. Que faire ? Faut-il chercher des réponses sur StackOverflow ? Démissionner de votre poste car vous n&amp;rsquo;êtes clairement pas à la hauteur ? La réponse est simple.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;La première étape quand vous êtes bloqué, est de faire appel à la sagesse du canard.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Je sais ce que vous pensez en ce moment : &lt;em&gt;Qu&amp;rsquo;est-ce que tu es en train de fumer et où puis-je trouver ça ?&lt;/em&gt; Mais croyez-moi, cette histoire de canard n&amp;rsquo;est pas une hallucination, c&amp;rsquo;est même LA meilleure façon de vous aider.&lt;/p&gt;
&lt;p&gt;Ne vous inquiétez pas cependant, vous n&amp;rsquo;aurez pas besoin de conduire à la ferme la plus proche et voler un canard pour appliquer ce conseil. Dans notre cas, un canard en plastique est tout ce dont nous avons besoin.&lt;/p&gt;
&lt;p&gt;Une fois que vous en avez un et que vous le placez sur votre bureau, la seule chose qu&amp;rsquo;il vous reste à faire est de lui parler. Allez-y, ne soyez pas timide. Et expliquez-lui ce qui se passe avec votre code.&lt;/p&gt;
&lt;p&gt;Je préfère vous en parler tout de suite pour que vous ne soyez pas choqué quand vous serez confronté à la vérité, mais le canard ne vous répondra pas. C&amp;rsquo;est déchirant, je sais. Cependant, &lt;strong&gt;il est l&amp;rsquo;auditeur parfait et sa patience est bien au-dessus de celle de n&amp;rsquo;importe quel autre être humain&lt;/strong&gt;, contrairement à vos collègues. De plus, le canard ne jugera jamais vos erreurs. Il est gentil et compréhensif.&lt;/p&gt;
&lt;p&gt;Et plus vous lui expliquerez vos problèmes, plus vous réaliserez ce qui n&amp;rsquo;allait pas dans votre code. En effet, le fait d&amp;rsquo;expliquer correctement au canard ce que vous tentez de faire mettra en évidence une petite incohérence entre ce que vous avez fait et ce que vous essayez d&amp;rsquo;accomplir. Petit à petit, vous serez bientôt capable de repérer la ligne exacte de code qui causait tous vos problèmes et de la corriger comme un pro.&lt;/p&gt;
&lt;p&gt;Et c&amp;rsquo;est pour ça que le canard est si utile. Non seulement vous laissez vos collègues travailler en paix, mais cet exercice vous oblige à prendre du recul par rapport à votre code afin de pouvoir l&amp;rsquo;expliquer à quelqu&amp;rsquo;un qui n&amp;rsquo;a aucune idée de ce qui se passe.&lt;/p&gt;
&lt;p&gt;Cet effort de mettre des mots sur le comportement attendu et ce que vous avez pu accomplir jusqu&amp;rsquo;à présent mettra en lumière toutes les erreurs potentielles que vous auriez pu commettre pendant le développement, des choses qu&amp;rsquo;on ne voit pas quand on passe huit heures à regarder son code sans s&amp;rsquo;arrêter.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;En décrivant ce que le code est censé faire et en observant ce qu&amp;rsquo;il fait réellement, toute incohérence entre ces deux devient apparente.&lt;/p&gt;
&lt;p&gt;&amp;ndash; &lt;cite&gt; &lt;a class=&#34;link&#34; href=&#34;https://www.sjbaker.org/humor/cardboard_dog.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Stephen J. Baker&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Alors, la prochaine fois que vous serez bloqué, ne dérangez pas vos collègues, économisez votre connexion internet et demandez simplement au canard !&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Si vous souhaitez en savoir plus sur cette méthode, je vous conseille vivement de jeter un œil au site qui a inspiré ce billet : &lt;cite&gt; &lt;a class=&#34;link&#34; href=&#34;https://rubberduckdebugging.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://rubberduckdebugging.com/&lt;/a&gt;&lt;/cite&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>FizzBuzz, la façon la plus simple et efficace de tester un développeur</title>
        <link>https://antoinedelia.github.io/cloud-optimist/pr-144/fr/posts/2019/fizzbuzz/</link>
        <pubDate>Mon, 27 May 2019 13:35:55 +0200</pubDate>
        
        <guid>https://antoinedelia.github.io/cloud-optimist/pr-144/fr/posts/2019/fizzbuzz/</guid>
        <description>&lt;img src="https://antoinedelia.github.io/cloud-optimist/pr-144/fr/posts/2019/fizzbuzz/fizzbuzz.jpeg" alt="Featured image of post FizzBuzz, la façon la plus simple et efficace de tester un développeur" /&gt;&lt;p&gt;Lorsque je suis sorti de mon école d&amp;rsquo;ingénieur, j&amp;rsquo;ai passé beaucoup d&amp;rsquo;entretiens dans l&amp;rsquo;espoir d&amp;rsquo;obtenir un poste de développeur. Mes expériences s&amp;rsquo;étant limitées à quelques stages, je redoutais cette partie de l&amp;rsquo;entretien où je devais me lever et résoudre un exercice de code sur un tableau blanc, ou même simplement répondre à quelques questions techniques. Je me trompais.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Aucun entretien ne m&amp;rsquo;a testé sur mes compétences en développement.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;aurais pu mentir tout au long de l&amp;rsquo;entretien et tout de même obtenir le poste.&lt;/p&gt;
&lt;p&gt;Pour être honnête, je ne fais pas partie de ceux qui louent les questions techniques comme s&amp;rsquo;il s&amp;rsquo;agissait d&amp;rsquo;une formule magique pour détecter les bons développeurs. Je préfère penser qu&amp;rsquo;une personne avec un bon tempérament, passionnée et humainement agréable est beaucoup plus intéressante qu&amp;rsquo;un &amp;ldquo;je-sais-tout&amp;rdquo; qui ramène toujours sa science à la table sans vouloir entendre l&amp;rsquo;avis des autres. &lt;strong&gt;On peut combler un manque technique, mais on ne peut pas améliorer un mauvais caractère.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Cela étant dit, je crois qu&amp;rsquo;il est obligatoire de vérifier à minima la manière de penser de quelqu&amp;rsquo;un lorsqu&amp;rsquo;il est confronté à un problème. Parce qu&amp;rsquo;au final, c&amp;rsquo;est ce qu&amp;rsquo;il fera la plupart du temps : résoudre des problèmes. En ce sens, il est crucial de voir comment quelqu&amp;rsquo;un va réagir face à un problème. Va-t-il fuir ? Va-t-il immédiatement demander de l&amp;rsquo;aide ?&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est là qu&amp;rsquo;intervient le test &lt;strong&gt;FizzBuzz&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Cet article a été inspiré par la vidéo de &lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=QPZ0pIK_wsc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Tom Scott&lt;/a&gt; que je vous recommande vivement de regarder si ce sujet vous intéresse.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;L&amp;rsquo;idée de FizzBuzz est simple. Vous devez énumérer les nombres à haute voix en commençant par 1 jusqu&amp;rsquo;à 100. Mais, si le nombre est un multiple de 3, vous devez dire &amp;ldquo;Fizz&amp;rdquo; à la place. De même, si le nombre est un multiple de 5, vous devez dire &amp;ldquo;Buzz&amp;rdquo;. Maintenant, vous vous demandez peut-être : &amp;ldquo;Que faire si c&amp;rsquo;est un multiple de 3 et de 5 ?&amp;rdquo;. Eh bien, vous devrez simplement dire &amp;ldquo;FizzBuzz&amp;rdquo;. &lt;em&gt;Générique de fin&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;En lisant ce test simple, vous pourriez vous demander pourquoi il devrait être utilisé, car à première vue, même un stagiaire pourrait le résoudre assez facilement. Eh bien, c&amp;rsquo;est ce que je pensais aussi, jusqu&amp;rsquo;à ce que je tombe sur &lt;a class=&#34;link&#34; href=&#34;https://blog.codinghorror.com/why-cant-programmers-program/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;l&amp;rsquo;article de Jeff Atwood à ce sujet&lt;/a&gt;, où il explique être surpris de voir que ce problème donnait beaucoup de mal à des candidats, seniors compris.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Alors, essayons de le résoudre ensemble !&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Dans la plupart des entretiens techniques, vous avez généralement le choix du langage de programmation avec lequel vous souhaitez résoudre un problème (voir même d&amp;rsquo;écrire en &lt;a class=&#34;link&#34; href=&#34;https://fr.wikipedia.org/wiki/Pseudo-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;pseudo-code&lt;/a&gt;). Pour ce billet, j&amp;rsquo;utiliserai Python.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Avant toute chose, créons une boucle simple qui affiche tous les nombres de 1 à 100.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Premier piège ici, range exclut le dernier nombre que vous lui passez.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Ici, nous commençons bien à 1, et finissons à 100.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;101&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;On commence bien ! Maintenant, revenons à l&amp;rsquo;énoncé original : si le nombre est un multiple de 3, on affiche &amp;ldquo;Fizz&amp;rdquo;, si c&amp;rsquo;est un multiple de 5, on affiche &amp;ldquo;Buzz&amp;rdquo;. Ajoutons ces conditions.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;101&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Fizz&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Buzz&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Prenons un moment pour voir ce qu&amp;rsquo;on a fait ici. &lt;strong&gt;Pour vérifier si un nombre est un multiple de 3, nous utilisons le modulo avec le symbole &lt;code&gt;%&lt;/code&gt;.&lt;/strong&gt; Nous faisons la même chose pour les multiples de 5. Enfin, si le nombre n&amp;rsquo;est ni un multiple de 3 ni de 5, on l&amp;rsquo;affiche simplement.&lt;/p&gt;
&lt;p&gt;Ainsi, on obtient exactement ce que l&amp;rsquo;on veut !&amp;hellip; Sauf quand un nombre est un multiple de 3 ET de 5. Dans ce cas, &lt;strong&gt;les mots Fizz et Buzz ne sont pas affichés sur la même ligne !&lt;/strong&gt; Nous devons donc prendre en compte ce cas en ajoutant une nouvelle condition, et empêcher les deux premiers &lt;code&gt;if&lt;/code&gt; de se déclencher.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;101&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Fizz&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Buzz&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;FizzBuzz&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ça fonctionne enfin ! Mais à quel prix ? &lt;strong&gt;Ce code est un vrai désordre.&lt;/strong&gt; Et ce n&amp;rsquo;est en aucun cas un code facile à maintenir. Prenons cet exemple : que se passerait-il si nous voulions maintenant afficher le mot Fizz pour les multiples de 2 au lieu de 3 ? &lt;strong&gt;Nous devrons changer cette valeur à 4 endroits différents dans le code&lt;/strong&gt; pour que cela fonctionne.&lt;/p&gt;
&lt;p&gt;Cela peut sembler trivial avec un code aussi minimaliste, mais imaginez ce qui se passerait si cela arrivait dans un projet bien plus grand. &lt;strong&gt;Ce code est sujet à erreurs, complique sa maintenabilité et rend presque impossible l&amp;rsquo;ajout de nouvelles fonctionnalités facilement.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Essayons une autre approche pour rendre ce code plus élégant ! Déclarons d&amp;rsquo;abord une variable qui sera la valeur que nous voulons afficher à la fin. On la laisse vide pour l&amp;rsquo;instant. Chaque fois que nous avons une condition qui correspond, nous ajoutons simplement le mot correspondant à la variable. À la fin, vérifier si la variable est vide nous indiquera si nous devons l&amp;rsquo;afficher ou plutôt afficher le nombre.&lt;/p&gt;
&lt;p&gt;Voici ce que cela donne.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;101&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Fizz&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Buzz&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;C&amp;rsquo;est déjà beaucoup plus clair ! Non seulement nous avons réduit le nombre de lignes de moitié, mais nos vérifications &lt;code&gt;if&lt;/code&gt; sont désormais limpides et ne laissent aucune place à l&amp;rsquo;interprétation. De plus, nous pouvons facilement changer la valeur de n&amp;rsquo;importe quel nombre si nécessaire sans avoir à chercher toutes ses occurrences. Enfin, si nous devons ajouter une autre condition (pour les multiples de 7 par exemple), il nous suffira d&amp;rsquo;ajouter deux nouvelles lignes sans toucher au reste du code !&lt;/p&gt;
&lt;p&gt;Nous voyons enfin en quoi ce simple test FizzBuzz est si intéressant. Il nous a permis de tester la capacité d&amp;rsquo;une personne à utiliser des principes algorithmiques simples, mais aussi de vérifier sa manière de penser lorsqu&amp;rsquo;elle est confrontée à un problème, et si elle est capable de produire un code qui pourra être facilement maintenu dans le futur.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;En résumé, FizzBuzz est un bon moyen de différencier un développeur d&amp;rsquo;un bon développeur.&lt;/strong&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
