A place to cache linked articles (think custom and personal wayback machine)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 13KB

4 months ago
4 months ago
4 months ago
4 months ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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. <meta name="description" content="Publication mise en cache pour en conserver une trace.">
  14. <!-- That good ol' feed, subscribe :). -->
  15. <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
  16. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  17. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
  18. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
  19. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
  20. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  21. <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
  22. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  23. <meta name="msapplication-TileColor" content="#f0f0ea">
  24. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  25. <meta name="theme-color" content="#f0f0ea">
  26. <!-- Documented, feel free to shoot an email. -->
  27. <link rel="stylesheet" href="/static/david/css/style_2020-06-19.css">
  28. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  29. <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>
  30. <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>
  31. <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>
  32. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  34. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  35. <script type="text/javascript">
  36. function toggleTheme(themeName) {
  37. document.documentElement.classList.toggle(
  38. 'forced-dark',
  39. themeName === 'dark'
  40. )
  41. document.documentElement.classList.toggle(
  42. 'forced-light',
  43. themeName === 'light'
  44. )
  45. }
  46. const selectedTheme = localStorage.getItem('theme')
  47. if (selectedTheme !== 'undefined') {
  48. toggleTheme(selectedTheme)
  49. }
  50. </script>
  51. <meta name="robots" content="noindex, nofollow">
  52. <meta content="origin-when-cross-origin" name="referrer">
  53. <!-- Canonical URL for SEO purposes -->
  54. <link rel="canonical" href="https://vgpena.github.io/on-priorities/">
  55. <body class="remarkdown h1-underline h2-underline h3-underline hr-center ul-star pre-tick">
  56. <article>
  57. <header>
  58. <h1>On Priorities</h1>
  59. </header>
  60. <nav>
  61. <p class="center">
  62. <a href="/david/" title="Aller à l’accueil">🏠</a> •
  63. <a href="https://vgpena.github.io/on-priorities/" title="Lien vers le contenu original">Source originale</a>
  64. </p>
  65. </nav>
  66. <hr>
  67. <main>
  68. <h2 class="article-info-piece" id="article-subtitle"> And our responsibility to look for them </h2>
  69. <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>
  70. <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>
  71. </main>
  72. </article>
  73. <hr>
  74. <footer>
  75. <p>
  76. <a href="/david/" title="Aller à l’accueil">🏠</a> •
  77. <a href="/david/log/" title="Accès au flux RSS">🤖</a> •
  78. <a href="http://larlet.com" title="Go to my English profile" data-instant>🇨🇦</a> •
  79. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">📮</a> •
  80. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">🧚</abbr>
  81. </p>
  82. <template id="theme-selector">
  83. <form>
  84. <fieldset>
  85. <legend>Thème</legend>
  86. <label>
  87. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  88. </label>
  89. <label>
  90. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  91. </label>
  92. <label>
  93. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  94. </label>
  95. </fieldset>
  96. </form>
  97. </template>
  98. </footer>
  99. <script type="text/javascript">
  100. function loadThemeForm(templateName) {
  101. const themeSelectorTemplate = document.querySelector(templateName)
  102. const form = themeSelectorTemplate.content.firstElementChild
  103. themeSelectorTemplate.replaceWith(form)
  104. form.addEventListener('change', (e) => {
  105. const chosenColorScheme = e.target.value
  106. localStorage.setItem('theme', chosenColorScheme)
  107. toggleTheme(chosenColorScheme)
  108. })
  109. const selectedTheme = localStorage.getItem('theme')
  110. if (selectedTheme && selectedTheme !== 'undefined') {
  111. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  112. }
  113. }
  114. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  115. window.addEventListener('load', () => {
  116. let hasDarkRules = false
  117. for (const styleSheet of Array.from(document.styleSheets)) {
  118. let mediaRules = []
  119. for (const cssRule of styleSheet.cssRules) {
  120. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  121. continue
  122. }
  123. // WARNING: Safari does not have/supports `conditionText`.
  124. if (cssRule.conditionText) {
  125. if (cssRule.conditionText !== prefersColorSchemeDark) {
  126. continue
  127. }
  128. } else {
  129. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  130. continue
  131. }
  132. }
  133. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  134. }
  135. // WARNING: do not try to insert a Rule to a styleSheet you are
  136. // currently iterating on, otherwise the browser will be stuck
  137. // in a infinite loop…
  138. for (const mediaRule of mediaRules) {
  139. styleSheet.insertRule(mediaRule.cssText)
  140. hasDarkRules = true
  141. }
  142. }
  143. if (hasDarkRules) {
  144. loadThemeForm('#theme-selector')
  145. }
  146. })
  147. </script>
  148. </body>
  149. </html>