123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290 |
- <!doctype html><!-- This is a valid HTML5 document. -->
- <!-- Screen readers, SEO, extensions and so on. -->
- <html lang="fr">
- <!-- Has to be within the first 1024 bytes, hence before the `title` element
- See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
- <meta charset="utf-8">
- <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
- <!-- The viewport meta is quite crowded and we are responsible for that.
- See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
- <meta name="viewport" content="width=device-width,initial-scale=1">
- <!-- Required to make a valid HTML5 document. -->
- <title>Qualité — David Larlet</title>
- <meta name="description" content="Quiconque cherche à circonscrire une discipline en lui imposant un cadre ne cherche généralement qu’à protéger son œuvre, et il le fait en perpétuant les standards qui ont permis son émergence. Celui-ci essaie de convaincre les générations à venir qu’elles doivent suivre les règles qu’il a édictées si elles comptent parvenir à l’excellence. Mais, comme disait Charles Bukowski, « il est quatre heures et demie du matin, il sera toujours quatre heures et demie du matin… ».">
- <!-- That good ol' feed, subscribe :). -->
- <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
- <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
- <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
- <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
- <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
- <link rel="manifest" href="/static/david/icons2/site.webmanifest">
- <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
- <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
- <meta name="msapplication-TileColor" content="#f7f7f7">
- <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
- <meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)">
- <meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)">
- <!-- Documented, feel free to shoot an email. -->
- <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
- <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
- <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
- <script>
- function toggleTheme(themeName) {
- document.documentElement.classList.toggle(
- 'forced-dark',
- themeName === 'dark'
- )
- document.documentElement.classList.toggle(
- 'forced-light',
- themeName === 'light'
- )
- }
- const selectedTheme = localStorage.getItem('theme')
- if (selectedTheme !== 'undefined') {
- toggleTheme(selectedTheme)
- }
- </script>
-
- <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
-
-
- <article>
- <header>
- <h1>Qualité</h1>
- </header>
- <nav>
- <p class="center">
- <a rel="prev" href="/david/2023/01/09/" title="Publication précédente : Indépendant·e">← Précédent</a> •
- <nobr>
- <a href="/david/" title="Aller à l’accueil" rel="up"
- ><svg class="icon icon-home">
- <use
- xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-home"
- ></use>
- </svg>
- Accueil</a
- >
- </nobr>
- •
- <nobr>
- <a href="/david/recherche/" title="Aller à la page de recherche" rel="search"
- ><svg class="icon icon-search">
- <use
- xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-search"
- ></use>
- </svg>
- Recherche</a
- >
- </nobr>
- • <a rel="next" href="/david/2023/01/11/" title="Publication suivante : Suspendu">Suivant →</a>
- </p>
- </nav>
- <hr>
-
-
- <blockquote>
- <p>Quiconque cherche à circonscrire une discipline en lui imposant un cadre ne cherche généralement qu’à protéger son œuvre, et il le fait en perpétuant les standards qui ont permis son émergence. Celui-ci essaie de convaincre les générations à venir qu’elles doivent suivre les règles qu’il a édictées si elles comptent parvenir à l’excellence. Mais, comme disait Charles Bukowski, « il est quatre heures et demie du matin, il sera toujours quatre heures et demie du matin… ».</p>
- <p>Nous sommes à ce point focalisés sur le chemin que nous nous efforçons de suivre, en voulant toujours tout faire au mieux, armés d’une dévotion sans faille pour notre discipline <mark>alors que les œillères de la peur nous empêchent d’envisager des terrains inconnus,</mark> que nos yeux restent fixés sur cette route, sur ces mains qui prennent appui sur des genoux. Et nous ne réalisons pas que nous ne faisons que suivre les règles promulguées par un homme qui a un jour disputé une course contre des chevaux, ou par un autre qui s’est frotté à un sommet de plus de huit mille mètres sans oxygène, ou par un autre encore qui a décidé de laisser chez lui ses pitons, ses cordes et la sécurité pour ne faire qu’un avec les murs à escalader. Nous suivons les lois de ceux qui en ont enfreint de plus anciennes.</p>
- <p><cite><em>Au-delà des sommets</em>, Kilian Jornet</cite></p>
- </blockquote>
- <p>On parlait de code et de qualité avec <a href="https://thom4.net/">Thomas</a>. Je lui faisais part de ma frustration vis-à-vis d’un code qui n’avait pas été écrit par moi et que je trouvais problématique. En creusant un peu (merci !), je réalise que ce qui coince est au niveau de la pérennité et de la transmission. Et j’ai aussi conscience de produire moi-même du code qui serait difficile à reprendre par d’autres personnes n’ayant pas les mêmes aspirations/compétences.</p>
- <p>En Python, on a la chance de pouvoir automatiser certaines conversions/vérifications qui tendent à aller vers une certaine uniformisation (et donc universalité ?) : <a href="https://github.com/psf/black">black</a>, <a href="https://flake8.pycqa.org/">flake8</a>, <a href="https://pypi.org/project/isort/">isort</a> ou <a href="https://mypy.readthedocs.io/">mypy</a> par exemple.</p>
- <p>Pour aller plus loin, le code en lui-même n’est peut-être pas si critique, mais ce que l’on a appris en le concevant et l’utilisant l’est bien davantage. C’est cette transmission qu’il est important de rendre possible au sein de l’équipe. Outiller la base commune est un moyen de <strong>plus rapidement</strong> passer à l’étape de partage des concepts importants/métiers, en ce souciant moins de la forme.</p>
- <p>Et peut-être au contraire, que cette <strong>vitesse</strong> acquise nous empêche d’échanger sur des concepts importants ? Des envies différentes ? Des choix à côté desquels on peut passer par manque d’attention.</p>
-
- <blockquote lang="en">
- <p>Tradition (n.): Peer pressure from dead people.</p>
- <p><cite><em>Lu plusieurs fois sur masto</em></cite></p>
- </blockquote>
- <hr />
-
- <blockquote>
- <p>🦋 Depuis quelques années, j’essaie d’écrire un code le plus direct possible.</p>
- <p>Mon objectif : diminuer au maximum ma charge cognitive.</p>
- <p><cite><em><a href="https://sklein.xyz/garden/020-keep-it-simple-stupid-le-plus-longtemps-possible/">Keep it simple, stupid le plus longtemps possible</a></em> (<a href="/david/cache/2023/646ebfa25432bc6b653e524b52d25c9a/">cache</a>)</cite></p>
- </blockquote>
-
- <blockquote lang="en">
- <p>⛵️ Many of the tools that we thought we could rely on broke down, whether it is Apple products, or software that require subscription services, DRM, etc. As an artist you spend time developing a skill, <mark>you become a Photoshop illustrator.</mark> When your connection to the internet fails and that the software locks up, that skill that you thought was yours was actually entirely owned by someone, and can be taken away.</p>
- <p>Even though we’ve been paying for this sort of software for years, the moment that you can’t have access to authenticate yourself that skill is gone. We didn’t expect this, it scared us.</p>
- <p><cite><em><a href="https://100r.co/site/weathering_software_winter.html">weathering software winter</a></em> (<a href="/david/cache/2023/c564325b28ec854b6b098950df5c8c8f/">cache</a>)</cite></p>
- </blockquote>
-
- <blockquote lang="en">
- <p>🔎 It’s important to remember concepts and high level approaches, but don’t worry about remembering the details. You can always look that stuff up when you need it.</p>
- <p><cite><em><a href="https://gomakethings.com/you-dont-have-to-remember-everything-to-be-a-good-programmer/">You don’t have to remember everything to be a good programmer</a></em> (<a href="/david/cache/2023/2f4b8ec8f6fd2cbc48a04dcac2cc7d24/">cache</a>)</cite></p>
- </blockquote>
-
-
- <nav>
- <p>
-
- <a href="/david/2023/accompagnement/"
- title="Liste de tous les articles 2023 associés à cette étiquette"
- rel="tag"
- >#accompagnement</a>
-
- <a href="/david/2023/qualite/"
- title="Liste de tous les articles 2023 associés à cette étiquette"
- rel="tag"
- >#qualité</a>
-
- <a href="/david/2023/technique/"
- title="Liste de tous les articles 2023 associés à cette étiquette"
- rel="tag"
- >#technique</a>
-
- <a href="/david/#tags-2023"
- title="Liste de toutes les étiquettes 2023"
- ><svg class="icon icon-tags">
- <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-tags"></use>
- </svg>
- tous ?</a
- >
- </p>
- </nav>
-
- <nav>
- <p class="center">
- <a rel="prev" href="/david/2023/01/09/" title="Publication précédente : Indépendant·e">← Précédent</a> •
- <a href="/david/2023/" title="Liste des publications récentes">↑ En 2023</a>
- • <a rel="next" href="/david/2023/01/11/" title="Publication suivante : Suspendu">Suivant →</a>
- </p>
- </nav>
- </article>
-
-
- <hr>
-
- <footer>
- <p>
- <nobr>
- <a href="/david/" title="Aller à l’accueil"
- ><svg class="icon icon-home">
- <use
- xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-home"
- ></use>
- </svg>
- Accueil</a
- >
- </nobr>
- •
- <nobr>
- <a href="/david/log/" title="Accès au flux RSS"
- ><svg class="icon icon-rss2">
- <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-rss2"></use>
- </svg>
- Suivre</a
- >
- </nobr>
- •
- <nobr>
- <a href="http://larlet.com" title="Go to my English profile" data-instant
- ><svg class="icon icon-user-tie">
- <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-user-tie"></use>
- </svg>
- Pro</a
- >
- </nobr>
- •
- <nobr>
- <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"
- ><svg class="icon icon-mail">
- <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-mail"></use>
- </svg>
- Email</a
- >
- </nobr>
- •
- <nobr>
- <abbr
- class="nowrap"
- title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"
- ><svg class="icon icon-hammer2">
- <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-hammer2"></use>
- </svg>
- Légal</abbr
- >
- </nobr>
- </p>
- <template id="theme-selector">
- <form>
- <fieldset>
- <legend><svg class="icon icon-brightness-contrast">
- <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-brightness-contrast"></use>
- </svg> Thème</legend>
- <label>
- <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
- </label>
- <label>
- <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
- </label>
- <label>
- <input type="radio" value="light" name="chosen-color-scheme"> Clair
- </label>
- </fieldset>
- </form>
- </template>
- </footer>
- <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
- <script>
- function loadThemeForm(templateName) {
- const themeSelectorTemplate = document.querySelector(templateName)
- const form = themeSelectorTemplate.content.firstElementChild
- themeSelectorTemplate.replaceWith(form)
-
- form.addEventListener('change', (e) => {
- const chosenColorScheme = e.target.value
- localStorage.setItem('theme', chosenColorScheme)
- toggleTheme(chosenColorScheme)
- })
-
- const selectedTheme = localStorage.getItem('theme')
- if (selectedTheme && selectedTheme !== 'undefined') {
- form.querySelector(`[value="${selectedTheme}"]`).checked = true
- }
- }
-
- const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
- window.addEventListener('load', () => {
- let hasDarkRules = false
- for (const styleSheet of Array.from(document.styleSheets)) {
- let mediaRules = []
- for (const cssRule of styleSheet.cssRules) {
- if (cssRule.type !== CSSRule.MEDIA_RULE) {
- continue
- }
- // WARNING: Safari does not have/supports `conditionText`.
- if (cssRule.conditionText) {
- if (cssRule.conditionText !== prefersColorSchemeDark) {
- continue
- }
- } else {
- if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
- continue
- }
- }
- mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
- }
-
- // WARNING: do not try to insert a Rule to a styleSheet you are
- // currently iterating on, otherwise the browser will be stuck
- // in a infinite loop…
- for (const mediaRule of mediaRules) {
- styleSheet.insertRule(mediaRule.cssText)
- hasDarkRules = true
- }
- }
- if (hasDarkRules) {
- loadThemeForm('#theme-selector')
- }
- })
- </script>
-
- </body>
- </html>
|