A place to cache linked articles (think custom and personal wayback machine)
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

index.html 12KB

  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang="fr">
  4. <!-- Has to be within the first 1024 bytes, hence before the <title>
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset="utf-8">
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name="viewport" content="width=device-width,initial-scale=1">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>On Priorities (archive) — David Larlet</title>
  13. <!-- That good ol' feed, subscribe :). -->
  14. <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
  15. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  16. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
  17. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
  18. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
  19. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  20. <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
  21. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  22. <meta name="msapplication-TileColor" content="#f0f0ea">
  23. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  24. <meta name="theme-color" content="#f0f0ea">
  25. <!-- Documented, feel free to shoot an email. -->
  26. <link rel="stylesheet" href="/static/david/css/style_2020-06-19.css">
  27. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  28. <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>
  29. <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>
  30. <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>
  31. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  32. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  34. <script type="text/javascript">
  35. function toggleTheme(themeName) {
  36. document.documentElement.classList.toggle(
  37. 'forced-dark',
  38. themeName === 'dark'
  39. )
  40. document.documentElement.classList.toggle(
  41. 'forced-light',
  42. themeName === 'light'
  43. )
  44. }
  45. const selectedTheme = localStorage.getItem('theme')
  46. if (selectedTheme !== 'undefined') {
  47. toggleTheme(selectedTheme)
  48. }
  49. </script>
  50. <meta name="robots" content="noindex, nofollow">
  51. <meta content="origin-when-cross-origin" name="referrer">
  52. <!-- Canonical URL for SEO purposes -->
  53. <link rel="canonical" href="https://vgpena.github.io/on-priorities/">
  54. <body class="remarkdown h1-underline h2-underline h3-underline hr-center ul-star pre-tick">
  55. <article>
  56. <h1>On Priorities</h1>
  57. <nav>
  58. <p class="center">
  59. <a href="/david/" title="Aller à l’accueil" tabindex="1">🏠</a>
  60. </p>
  61. </nav>
  62. <hr>
  63. <h2><a href="https://vgpena.github.io/on-priorities/">Source originale du contenu</a></h2>
  64. <h2 class="article-info-piece" id="article-subtitle"> And our responsibility to look for them </h2>
  65. <p>Over the past few weeks, numerous companies, projects, and working groups have put forth statements outlining their new racial equity efforts. There is a <em>lot</em> to unpack in these corporate initiatives, but I want to focus on the specific dimension of how racial equity work is prioritized.</p>
  66. <p><p>This post references patterns I have observed in tech and adjacent industries. It does not refer in totality to specific events at any specific company.</p> <hr/> <p>By default, I reject zero-sum thinking and am most interested in how to get to <code>A &amp;&amp; B</code> instead of <code>A || B</code>. This mindset is how I understand and survive in the world and the tech industry. I also see it as the cornerstone to dismantling patriarchal and white supremacist systems which, by nature, thrive on exclusion and on defining the world as zero-sum (e.g., “It’s nice that we want to hire more Black people but then what about all the white candidates who we’ll have to turn down?”)</p> <aside class="aside"> <p class="aside-body"> Some changes are superficially win-lose (e.g., white peoples’ comfort no longer being centered) but are actually win-win (because EVERYONE will thrive more outside of a white supremacist system) </p> </aside> <p>That said, time and energy are measurable, finite quantities that we can only access a bit at a time. And I respect that. This is where prioritization comes into play.</p> <hr/> <p>Over time, yes, Virginia, you can have it all. You <strong>can</strong> have an inclusive and safe environment, you <strong>can</strong> raise your profit margin, you <strong>can</strong> win all the work awards, you <strong>can</strong> recruit easily, you <strong>can</strong> operate efficiently. But in the short term, if any of these systems need fixing, you need to figure out where the effort to make the fix is going to come from. If you’re spinning up a task force to improve recruiting, or to guarantee pay equity, where do the group members come from? <a href="https://www.washingtonpost.com/technology/2020/06/26/black-ergs-tech/">Are they current employees who will need to swap this work out for their current 9-5 responsibilities?</a> Then you’re probably taking an efficiency/quality-of-work hit. Are you hiring a third-party consultancy? Then may lessen your coveted profit margins. (And so on.)</p> <p>Any of these options can be correctly executed on, but my point is that <strong>if you need to fix your white supremacy and you can’t tell me what you will sacrifice to make this possible, then you’re not part of the solution.</strong></p> <hr/> <p>I have been circling around prioritization for a while now, so I’ll finally come to it directly, in terms many tech workers will find familiar. Some features are launch-critical/P0 (e.g., having a navigation on your website). Other features are nice-to-haves/P1 (adding page transition animations). Articulating priorities makes it OK to lose a P1 in order to complete a P0.</p> <p>I see many companies claim that equity &amp; inclusion (E&amp;I) is “a priority” or that they intend to “put in the work”, but so far I overwhelmingly see efforts that demand E&amp;I be fixed <strong>at no cost to anything else.</strong> ERG members are not given time within the 9-5 to do this work; companies shy away from third-party consultancies; chains of accountability and empowerment remain as-is.</p> <p>If E&amp;I is a P0 — if Black employees’ safety and health is a P0 — you are pulling every lever possible that does not compromise other P0s (e.g., job security; keeping the business solvent). You're delaying release dates, reducing ERG members' normal workload, prepping notes for your shareholders on why your profits stayed flat this quarter.</p> <aside class="aside"> <p class="aside-body"> At time of writing, this blog is hosted on Github Pages, signaling that I prioritize keeping a consistent coding/deployment platform over divesting from a company that works with ICE. I know I need to fix my shit. I’d prefer that Github fixed their shit instead, but I can’t control that. </p> </aside> <p>So, my personal commitment, and what I encourage from the reader, is to ask yourself and your employers: <strong>if we’re making a change, where do these resources come from? What are we giving up, even a little, while we fix our white supremacist M.O.?</strong> (And what are we OK <em>having</em> lost/”lost” once these systems have been fixed? But that’s another blog post.)</p> <hr/> <p>If there’s no answer to this question, or the answer is “we’re not giving up anything”, reflect on what this implies. And reflect on how powerful this change can possibly be when it’s coming in addition to everything, at the cost of nothing. E&amp;I being a non-prioritized “priority” is one manifestation of the #causeascene guiding principle that <a href="https://hashtagcauseascene.com/">“Intention without strategy is chaos”</a>. </p> <p>These are reasonable questions to ask of any large-scale effort or project. Articulating them may not be easy, and you may be met with defensive reactions. Stand by your questions. If you can expect priorities out of a software feature list, you can expect the same from a corporate restructuring effort.</p> <p>Know that I will be here with you, also asking these questions, also evaluating the answers.</p> <hr/> <p>P.S -- This has <em>always</em> been the question. Whethere it's about encrypting data, hiring women, time off policies, or ad-buying, always look for what is being put on the line to achieve a professed "priority".</p></p>
  67. </article>
  68. <hr>
  69. <footer>
  70. <p>
  71. <a href="/david/" title="Aller à l’accueil">🏠</a> •
  72. <a href="/david/log/" title="Accès au flux RSS">🤖</a> •
  73. <a href="http://larlet.com" title="Go to my English profile" data-instant>🇨🇦</a> •
  74. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">📮</a> •
  75. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">🧚</abbr>
  76. </p>
  77. <template id="theme-selector">
  78. <form>
  79. <fieldset>
  80. <legend>Thème</legend>
  81. <label>
  82. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  83. </label>
  84. <label>
  85. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  86. </label>
  87. <label>
  88. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  89. </label>
  90. </fieldset>
  91. </form>
  92. </template>
  93. </footer>
  94. <script type="text/javascript">
  95. function loadThemeForm(templateName) {
  96. const themeSelectorTemplate = document.querySelector(templateName)
  97. const form = themeSelectorTemplate.content.firstElementChild
  98. themeSelectorTemplate.replaceWith(form)
  99. form.addEventListener('change', (e) => {
  100. const chosenColorScheme = e.target.value
  101. localStorage.setItem('theme', chosenColorScheme)
  102. toggleTheme(chosenColorScheme)
  103. })
  104. const selectedTheme = localStorage.getItem('theme')
  105. if (selectedTheme && selectedTheme !== 'undefined') {
  106. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  107. }
  108. }
  109. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  110. window.addEventListener('load', () => {
  111. let hasDarkRules = false
  112. for (const styleSheet of Array.from(document.styleSheets)) {
  113. let mediaRules = []
  114. for (const cssRule of styleSheet.cssRules) {
  115. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  116. continue
  117. }
  118. // WARNING: Safari does not have/supports `conditionText`.
  119. if (cssRule.conditionText) {
  120. if (cssRule.conditionText !== prefersColorSchemeDark) {
  121. continue
  122. }
  123. } else {
  124. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  125. continue
  126. }
  127. }
  128. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  129. }
  130. // WARNING: do not try to insert a Rule to a styleSheet you are
  131. // currently iterating on, otherwise the browser will be stuck
  132. // in a infinite loop…
  133. for (const mediaRule of mediaRules) {
  134. styleSheet.insertRule(mediaRule.cssText)
  135. hasDarkRules = true
  136. }
  137. }
  138. if (hasDarkRules) {
  139. loadThemeForm('#theme-selector')
  140. }
  141. })
  142. </script>
  143. </body>
  144. </html>