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 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  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` element
  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>Tech Companies Are Irrational Pop Cultures (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="#f7f7f7">
  24. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  25. <meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)">
  26. <meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)">
  27. <!-- Documented, feel free to shoot an email. -->
  28. <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
  29. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  30. <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>
  31. <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>
  32. <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>
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  34. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  35. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  36. <script>
  37. function toggleTheme(themeName) {
  38. document.documentElement.classList.toggle(
  39. 'forced-dark',
  40. themeName === 'dark'
  41. )
  42. document.documentElement.classList.toggle(
  43. 'forced-light',
  44. themeName === 'light'
  45. )
  46. }
  47. const selectedTheme = localStorage.getItem('theme')
  48. if (selectedTheme !== 'undefined') {
  49. toggleTheme(selectedTheme)
  50. }
  51. </script>
  52. <meta name="robots" content="noindex, nofollow">
  53. <meta content="origin-when-cross-origin" name="referrer">
  54. <!-- Canonical URL for SEO purposes -->
  55. <link rel="canonical" href="https://softwarecrisis.dev/letters/tech-is-a-pop-culture/">
  56. <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
  57. <article>
  58. <header>
  59. <h1>Tech Companies Are Irrational Pop Cultures</h1>
  60. </header>
  61. <nav>
  62. <p class="center">
  63. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  64. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  65. </svg> Accueil</a> •
  66. <a href="https://softwarecrisis.dev/letters/tech-is-a-pop-culture/" title="Lien vers le contenu original">Source originale</a>
  67. </p>
  68. </nav>
  69. <hr>
  70. <p>I’ve pointed out before that <a href="https://www.baldurbjarnason.com/2022/programming-is-a-pop-culture/">Programming is a Pop Culture</a>.</p>
  71. <p>But, this isn’t an issue that’s specific to programming or software development. It’s an issue that plagues the entire tech industry.</p>
  72. <p>In Alan Kay’s words:</p>
  73. <figure>
  74. <blockquote>
  75. <p>So I think what happened is computing has turned into pop culture and the universities are not helping in general, at least not in the US.</p>
  76. <p>So, Cicero—anybody know a good Cicero quote having to do with the present and past? Let’s check your classical education here. So, you know who Cicero was. He was one of those old Roman guys.</p>
  77. <p>So, Cicero once wrote: ‘He who knows only his own generation remains forever a child.’</p>
  78. </blockquote>
  79. <figcaption><a href="https://www.youtube.com/watch?v=YyIQKBzIuBY">Programming and Scaling</a> (Alan Kay, 2011)</figcaption>
  80. </figure>
  81. <p>In a later interview, he adds:</p>
  82. <figure>
  83. <blockquote>
  84. <p>
  85. But pop culture holds a disdain
  86. for history. Pop culture is all about identity and feeling like you’re
  87. participating. It has nothing to do with cooperation, the past or
  88. the future—it’s living in the present. I think the same is true of
  89. most people who write code for money. They have no idea where
  90. [their culture came from]—and the Internet was done so well that
  91. most people think of it as a natural resource like the Pacific Ocean,
  92. rather than something that was man-made.
  93. </p>
  94. </blockquote>
  95. <figcaption>Alan Kay, <a href="https://link.springer.com/content/pdf/bbm:978-3-319-90008-7/1.pdf"><em>Dr. Dobb’s Interview with Alan Kay</em></a></figcaption>
  96. </figure>
  97. <p>The symptoms of pop culture:</p>
  98. <ul>
  99. <li>A “disdain for history”. Pop cultures believe history doesn’t have anything to teach them.</li>
  100. <li>Newer is automatically better. Pop cultures are built on the assumption that anything new or different is superior to established. Or, in other words, older is inherently inferior.</li>
  101. <li>What’s next is going to be superior to what’s now. Pop cultures exist in perpetual anticipation of the next trend. Their disbelief of history appears to outsiders as a belief in progress.</li>
  102. <li>The “Pop” in “Pop Culture” stands for “popularity”. If it’s popular then it must be right.</li>
  103. </ul>
  104. <p>These traits are deeply irrational but they are the tech industry’s default mode of operation.</p>
  105. <p>A recent example of a pop culture trend taking tech by storm is layoffs. Every tech company is laying people off, even those whose financials are in good shape. But, as Jeffrey Pfeffer explains in this interview, these are decisions driven entirely by pop culture—‘social contagion’ to use his words:</p>
  106. <figure>
  107. <blockquote>
  108. <p>
  109. The tech industry layoffs are basically an instance of social contagion, in which companies imitate what others are doing. If you look for reasons for why companies do layoffs, the reason is that everybody else is doing it. Layoffs are the result of imitative behavior and are not particularly evidence-based.</p>
  110. <p>I’ve had people say to me that they know layoffs are harmful to company well-being, let alone the well-being of employees, and don’t accomplish much, but everybody is doing layoffs and their board is asking why they aren’t doing layoffs also.</p>
  111. </blockquote><figcaption><a href="https://news.stanford.edu/2022/12/05/explains-recent-tech-layoffs-worried/">Why are there so many tech layoffs, and why should we be worried? Stanford scholar explains</a></figcaption>
  112. </figure>
  113. <p>These layoffs are not rational: they are almost always bad decisions.</p>
  114. <figure>
  115. <blockquote>
  116. <p>Layoffs often do not cut costs, as there are many instances of laid-off employees being hired back as contractors, with companies paying the contracting firm. Layoffs often do not increase stock prices, in part because layoffs can signal that a company is having difficulty. Layoffs do not increase productivity. Layoffs do not solve what is often the underlying problem, which is often an ineffective strategy, a loss of market share, or too little revenue. Layoffs are basically a bad decision.</p>
  117. </blockquote><figcaption><a href="https://news.stanford.edu/2022/12/05/explains-recent-tech-layoffs-worried/">Why are there so many tech layoffs, and why should we be worried? Stanford scholar explains</a></figcaption>
  118. </figure>
  119. <p>The effect is even worse for software companies because <a href="https://www.baldurbjarnason.com/2022/theory-building/">employee churn is lethal for software</a>:</p>
  120. <figure>
  121. <blockquote>
  122. <p>Constant churn in a software development team, both among the programmers and designers, is absolutely devastating. It is the death knell for a software project. Makes deadlines meaningless. It turns software into a disposable, single-use product like a paper towel. Anything that increases team member churn threatens the very viability of the project and the software it’s creating.</p>
  123. </blockquote>
  124. <figcaption><a href="https://www.baldurbjarnason.com/2022/theory-building/">Theory-building and why employee churn is lethal to software companies</a></figcaption>
  125. </figure>
  126. <p>The only way to win is to not participate. Don’t chase trends. Don’t copy your competitors. Evaluate strategies, tools, and technologies on their <em>own merits</em>. Look at how they affect <strong><em>your</em></strong> organisation, systems, products and markets.</p>
  127. <p>Don’t let the industry’s pop culture drag you into making poor decisions.</p>
  128. </article>
  129. <hr>
  130. <footer>
  131. <p>
  132. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  133. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  134. </svg> Accueil</a> •
  135. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  136. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use>
  137. </svg> Suivre</a> •
  138. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  139. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use>
  140. </svg> Pro</a> •
  141. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  142. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use>
  143. </svg> Email</a> •
  144. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  145. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use>
  146. </svg> Légal</abbr>
  147. </p>
  148. <template id="theme-selector">
  149. <form>
  150. <fieldset>
  151. <legend><svg class="icon icon-brightness-contrast">
  152. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use>
  153. </svg> Thème</legend>
  154. <label>
  155. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  156. </label>
  157. <label>
  158. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  159. </label>
  160. <label>
  161. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  162. </label>
  163. </fieldset>
  164. </form>
  165. </template>
  166. </footer>
  167. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  168. <script>
  169. function loadThemeForm(templateName) {
  170. const themeSelectorTemplate = document.querySelector(templateName)
  171. const form = themeSelectorTemplate.content.firstElementChild
  172. themeSelectorTemplate.replaceWith(form)
  173. form.addEventListener('change', (e) => {
  174. const chosenColorScheme = e.target.value
  175. localStorage.setItem('theme', chosenColorScheme)
  176. toggleTheme(chosenColorScheme)
  177. })
  178. const selectedTheme = localStorage.getItem('theme')
  179. if (selectedTheme && selectedTheme !== 'undefined') {
  180. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  181. }
  182. }
  183. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  184. window.addEventListener('load', () => {
  185. let hasDarkRules = false
  186. for (const styleSheet of Array.from(document.styleSheets)) {
  187. let mediaRules = []
  188. for (const cssRule of styleSheet.cssRules) {
  189. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  190. continue
  191. }
  192. // WARNING: Safari does not have/supports `conditionText`.
  193. if (cssRule.conditionText) {
  194. if (cssRule.conditionText !== prefersColorSchemeDark) {
  195. continue
  196. }
  197. } else {
  198. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  199. continue
  200. }
  201. }
  202. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  203. }
  204. // WARNING: do not try to insert a Rule to a styleSheet you are
  205. // currently iterating on, otherwise the browser will be stuck
  206. // in a infinite loop…
  207. for (const mediaRule of mediaRules) {
  208. styleSheet.insertRule(mediaRule.cssText)
  209. hasDarkRules = true
  210. }
  211. }
  212. if (hasDarkRules) {
  213. loadThemeForm('#theme-selector')
  214. }
  215. })
  216. </script>
  217. </body>
  218. </html>