A place to cache linked articles (think custom and personal wayback machine)
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

4 anos atrás
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708
  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,minimum-scale=1,initial-scale=1,shrink-to-fit=no">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>Brilliant Jerks in Engineering (archive) — David Larlet</title>
  13. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  14. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons/apple-touch-icon.png">
  15. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons/favicon-32x32.png">
  16. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons/favicon-16x16.png">
  17. <link rel="manifest" href="/manifest.json">
  18. <link rel="mask-icon" href="/static/david/icons/safari-pinned-tab.svg" color="#5bbad5">
  19. <link rel="shortcut icon" href="/static/david/icons/favicon.ico">
  20. <meta name="apple-mobile-web-app-title" content="David Larlet">
  21. <meta name="application-name" content="David Larlet">
  22. <meta name="msapplication-TileColor" content="#da532c">
  23. <meta name="msapplication-config" content="/static/david/icons/browserconfig.xml">
  24. <meta name="theme-color" content="#f0f0ea">
  25. <!-- That good ol' feed, subscribe :p. -->
  26. <link rel=alternate type="application/atom+xml" title=Feed href="/david/log/">
  27. <meta name="robots" content="noindex, nofollow">
  28. <meta content="origin-when-cross-origin" name="referrer">
  29. <!-- Canonical URL for SEO purposes -->
  30. <link rel="canonical" href="http://www.brendangregg.com/blog/2017-11-13/brilliant-jerks.html">
  31. <style>
  32. /* http://meyerweb.com/eric/tools/css/reset/ */
  33. html, body, div, span,
  34. h1, h2, h3, h4, h5, h6, p, blockquote, pre,
  35. a, abbr, address, big, cite, code,
  36. del, dfn, em, img, ins,
  37. small, strike, strong, tt, var,
  38. dl, dt, dd, ol, ul, li,
  39. fieldset, form, label, legend,
  40. table, caption, tbody, tfoot, thead, tr, th, td,
  41. article, aside, canvas, details, embed,
  42. figure, figcaption, footer, header, hgroup,
  43. menu, nav, output, ruby, section, summary,
  44. time, mark, audio, video {
  45. margin: 0;
  46. padding: 0;
  47. border: 0;
  48. font-size: 100%;
  49. font: inherit;
  50. vertical-align: baseline;
  51. }
  52. /* HTML5 display-role reset for older browsers */
  53. article, aside, details, figcaption, figure,
  54. footer, header, hgroup, menu, nav, section { display: block; }
  55. body { line-height: 1; }
  56. blockquote, q { quotes: none; }
  57. blockquote:before, blockquote:after,
  58. q:before, q:after {
  59. content: '';
  60. content: none;
  61. }
  62. table {
  63. border-collapse: collapse;
  64. border-spacing: 0;
  65. }
  66. /* http://practicaltypography.com/equity.html */
  67. /* https://calendar.perfplanet.com/2016/no-font-face-bulletproof-syntax/ */
  68. /* https://www.filamentgroup.com/lab/js-web-fonts.html */
  69. @font-face {
  70. font-family: 'EquityTextB';
  71. src: url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff2') format('woff2'),
  72. url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff') format('woff');
  73. font-weight: 300;
  74. font-style: normal;
  75. font-display: swap;
  76. }
  77. @font-face {
  78. font-family: 'EquityTextB';
  79. src: url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff2') format('woff2'),
  80. url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff') format('woff');
  81. font-weight: 300;
  82. font-style: italic;
  83. font-display: swap;
  84. }
  85. @font-face {
  86. font-family: 'EquityTextB';
  87. src: url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff2') format('woff2'),
  88. url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff') format('woff');
  89. font-weight: 700;
  90. font-style: normal;
  91. font-display: swap;
  92. }
  93. @font-face {
  94. font-family: 'ConcourseT3';
  95. src: url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff2') format('woff2'),
  96. url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff') format('woff');
  97. font-weight: 300;
  98. font-style: normal;
  99. font-display: swap;
  100. }
  101. /* http://practice.typekit.com/lesson/caring-about-opentype-features/ */
  102. body {
  103. /* http://www.cssfontstack.com/ Palatino 99% Win 86% Mac */
  104. font-family: "EquityTextB", Palatino, serif;
  105. background-color: #f0f0ea;
  106. color: #07486c;
  107. font-kerning: normal;
  108. -moz-osx-font-smoothing: grayscale;
  109. -webkit-font-smoothing: subpixel-antialiased;
  110. text-rendering: optimizeLegibility;
  111. font-variant-ligatures: common-ligatures contextual;
  112. font-feature-settings: "kern", "liga", "clig", "calt";
  113. }
  114. pre, code, kbd, samp, var, tt {
  115. font-family: 'TriplicateT4c', monospace;
  116. }
  117. em {
  118. font-style: italic;
  119. color: #323a45;
  120. }
  121. strong {
  122. font-weight: bold;
  123. color: black;
  124. }
  125. nav {
  126. background-color: #323a45;
  127. color: #f0f0ea;
  128. display: flex;
  129. justify-content: space-around;
  130. padding: 1rem .5rem;
  131. }
  132. nav:last-child {
  133. border-bottom: 1vh solid #2d7474;
  134. }
  135. nav a {
  136. color: #f0f0ea;
  137. }
  138. nav abbr {
  139. border-bottom: 1px dotted white;
  140. }
  141. h1 {
  142. border-top: 1vh solid #2d7474;
  143. border-bottom: .2vh dotted #2d7474;
  144. background-color: #e3e1e1;
  145. color: #323a45;
  146. text-align: center;
  147. padding: 5rem 0 4rem 0;
  148. width: 100%;
  149. font-family: 'ConcourseT3';
  150. display: flex;
  151. flex-direction: column;
  152. }
  153. h1.single {
  154. padding-bottom: 10rem;
  155. }
  156. h1 span {
  157. position: absolute;
  158. top: 1vh;
  159. left: 20%;
  160. line-height: 0;
  161. }
  162. h1 span a {
  163. line-height: 1.7;
  164. padding: 1rem 1.2rem .6rem 1.2rem;
  165. border-radius: 0 0 6% 6%;
  166. background: #2d7474;
  167. font-size: 1.3rem;
  168. color: white;
  169. text-decoration: none;
  170. }
  171. h2 {
  172. margin: 4rem 0 1rem;
  173. border-top: .2vh solid #2d7474;
  174. padding-top: 1vh;
  175. }
  176. h3 {
  177. text-align: center;
  178. margin: 3rem 0 .75em;
  179. }
  180. hr {
  181. height: .4rem;
  182. width: .4rem;
  183. border-radius: .4rem;
  184. background: #07486c;
  185. margin: 2.5rem auto;
  186. }
  187. time {
  188. display: bloc;
  189. margin-left: 0 !important;
  190. }
  191. ul, ol {
  192. margin: 2rem;
  193. }
  194. ul {
  195. list-style-type: square;
  196. }
  197. a {
  198. text-decoration-skip-ink: auto;
  199. text-decoration-thickness: 0.05em;
  200. text-underline-offset: 0.09em;
  201. }
  202. article {
  203. max-width: 50rem;
  204. display: flex;
  205. flex-direction: column;
  206. margin: 2rem auto;
  207. }
  208. article.single {
  209. border-top: .2vh dotted #2d7474;
  210. margin: -6rem auto 1rem auto;
  211. background: #f0f0ea;
  212. padding: 2rem;
  213. }
  214. article p:last-child {
  215. margin-bottom: 1rem;
  216. }
  217. p {
  218. padding: 0 .5rem;
  219. margin-left: 3rem;
  220. }
  221. p + p,
  222. figure + p {
  223. margin-top: 2rem;
  224. }
  225. blockquote {
  226. background-color: #e3e1e1;
  227. border-left: .5vw solid #2d7474;
  228. display: flex;
  229. flex-direction: column;
  230. align-items: center;
  231. padding: 1rem;
  232. margin: 1.5rem;
  233. }
  234. blockquote cite {
  235. font-style: italic;
  236. }
  237. blockquote p {
  238. margin-left: 0;
  239. }
  240. figure {
  241. border-top: .2vh solid #2d7474;
  242. background-color: #e3e1e1;
  243. text-align: center;
  244. padding: 1.5rem 0;
  245. margin: 1rem 0 0;
  246. font-size: 1.5rem;
  247. width: 100%;
  248. }
  249. figure img {
  250. max-width: 250px;
  251. max-height: 250px;
  252. border: .5vw solid #323a45;
  253. padding: 1px;
  254. }
  255. figcaption {
  256. padding: 1rem;
  257. line-height: 1.4;
  258. }
  259. aside {
  260. display: flex;
  261. flex-direction: column;
  262. background-color: #e3e1e1;
  263. padding: 1rem 0;
  264. border-bottom: .2vh solid #07486c;
  265. }
  266. aside p {
  267. max-width: 50rem;
  268. margin: 0 auto;
  269. }
  270. /* https://fvsch.com/code/css-locks/ */
  271. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  272. font-size: 1rem;
  273. line-height: calc( 1.5em + 0.2 * 1rem );
  274. }
  275. h1 {
  276. font-size: 1.9rem;
  277. line-height: calc( 1.2em + 0.2 * 1rem );
  278. }
  279. h2 {
  280. font-size: 1.6rem;
  281. line-height: calc( 1.3em + 0.2 * 1rem );
  282. }
  283. h3 {
  284. font-size: 1.35rem;
  285. line-height: calc( 1.4em + 0.2 * 1rem );
  286. }
  287. @media (min-width: 20em) {
  288. /* The (100vw - 20rem) / (50 - 20) part
  289. resolves to 0-1rem, depending on the
  290. viewport width (between 20em and 50em). */
  291. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  292. font-size: calc( 1rem + .6 * (100vw - 20rem) / (50 - 20) );
  293. line-height: calc( 1.5em + 0.2 * (100vw - 50rem) / (20 - 50) );
  294. margin-left: 0;
  295. }
  296. h1 {
  297. font-size: calc( 1.9rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  298. line-height: calc( 1.2em + 0.2 * (100vw - 50rem) / (20 - 50) );
  299. }
  300. h2 {
  301. font-size: calc( 1.5rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  302. line-height: calc( 1.3em + 0.2 * (100vw - 50rem) / (20 - 50) );
  303. }
  304. h3 {
  305. font-size: calc( 1.35rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  306. line-height: calc( 1.4em + 0.2 * (100vw - 50rem) / (20 - 50) );
  307. }
  308. }
  309. @media (min-width: 50em) {
  310. /* The right part of the addition *must* be a
  311. rem value. In this example we *could* change
  312. the whole declaration to font-size:2.5rem,
  313. but if our baseline value was not expressed
  314. in rem we would have to use calc. */
  315. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  316. font-size: calc( 1rem + .6 * 1rem );
  317. line-height: 1.5em;
  318. }
  319. p, li, pre, details {
  320. margin-left: 3rem;
  321. }
  322. h1 {
  323. font-size: calc( 1.9rem + 1.5 * 1rem );
  324. line-height: 1.2em;
  325. }
  326. h2 {
  327. font-size: calc( 1.5rem + 1.5 * 1rem );
  328. line-height: 1.3em;
  329. }
  330. h3 {
  331. font-size: calc( 1.35rem + 1.5 * 1rem );
  332. line-height: 1.4em;
  333. }
  334. figure img {
  335. max-width: 500px;
  336. max-height: 500px;
  337. }
  338. }
  339. figure.unsquared {
  340. margin-bottom: 1.5rem;
  341. }
  342. figure.unsquared img {
  343. height: inherit;
  344. }
  345. @media print {
  346. body { font-size: 100%; }
  347. a:after { content: " (" attr(href) ")"; }
  348. a, a:link, a:visited, a:after {
  349. text-decoration: underline;
  350. text-shadow: none !important;
  351. background-image: none !important;
  352. background: white;
  353. color: black;
  354. }
  355. abbr[title] { border-bottom: 0; }
  356. abbr[title]:after { content: " (" attr(title) ")"; }
  357. img { page-break-inside: avoid; }
  358. @page { margin: 2cm .5cm; }
  359. h1, h2, h3 { page-break-after: avoid; }
  360. p3 { orphans: 3; widows: 3; }
  361. img {
  362. max-width: 250px !important;
  363. max-height: 250px !important;
  364. }
  365. nav, aside { display: none; }
  366. }
  367. ul.with_columns {
  368. column-count: 1;
  369. }
  370. @media (min-width: 20em) {
  371. ul.with_columns {
  372. column-count: 2;
  373. }
  374. }
  375. @media (min-width: 50em) {
  376. ul.with_columns {
  377. column-count: 3;
  378. }
  379. }
  380. ul.with_two_columns {
  381. column-count: 1;
  382. }
  383. @media (min-width: 20em) {
  384. ul.with_two_columns {
  385. column-count: 1;
  386. }
  387. }
  388. @media (min-width: 50em) {
  389. ul.with_two_columns {
  390. column-count: 2;
  391. }
  392. }
  393. .gallery {
  394. display: flex;
  395. flex-wrap: wrap;
  396. justify-content: space-around;
  397. }
  398. .gallery figure img {
  399. margin-left: 1rem;
  400. margin-right: 1rem;
  401. }
  402. .gallery figure figcaption {
  403. font-family: 'ConcourseT3'
  404. }
  405. footer {
  406. font-family: 'ConcourseT3';
  407. display: flex;
  408. flex-direction: column;
  409. border-top: 3px solid white;
  410. padding: 4rem 0;
  411. background-color: #07486c;
  412. color: white;
  413. }
  414. footer > * {
  415. max-width: 50rem;
  416. margin: 0 auto;
  417. }
  418. footer a {
  419. color: #f1c40f;
  420. }
  421. footer .avatar {
  422. width: 200px;
  423. height: 200px;
  424. border-radius: 50%;
  425. float: left;
  426. -webkit-shape-outside: circle();
  427. shape-outside: circle();
  428. margin-right: 2rem;
  429. padding: 2px 5px 5px 2px;
  430. background: white;
  431. border-left: 1px solid #f1c40f;
  432. border-top: 1px solid #f1c40f;
  433. border-right: 5px solid #f1c40f;
  434. border-bottom: 5px solid #f1c40f;
  435. }
  436. </style>
  437. <h1>
  438. <span><a id="jumper" href="#jumpto" title="Un peu perdu ?">?</a></span>
  439. Brilliant Jerks in Engineering (archive)
  440. <time>Pour la pérennité des contenus liés. Non-indexé, retrait sur simple email.</time>
  441. </h1>
  442. <section>
  443. <article>
  444. <h3><a href="http://www.brendangregg.com/blog/2017-11-13/brilliant-jerks.html">Source originale du contenu</a></h3>
  445. <div style="float:right;padding-left:5px"><a href="/blog/images/2017/brilliantjerks.jpg"><img src="/blog/images/2017/brilliantjerks.jpg" border=0 width=380><br></a><center><font size=-1><i>Notice board at Ericsson, Stockholm (pic by <a href="https://twitter.com/DeirdreS">DeirdreS</a>)</i></font></center></div>
  446. <p>Many of us have worked with them: the engineering jerk who is brilliant at what they do, but treats others like trash. Some companies have a policy not to hire them (eg, Netflix&#39;s &quot;<a href="https://www.slideshare.net/reed2001/culture-1798664/36-Brilliant_Jerks_Some_companies_tolerate">No Brilliant Jerks</a>&quot;, which was one of the many reasons I joined the company). There&#39;s also the &quot;<a href="http://amzn.to/2zitvVd">No Asshole Rule</a>&quot;, popularized by a bestselling book of this title, which provides the following <a href="http://en.wikipedia.org/wiki/The_No_Asshole_Rule">test</a>:</p>
  447. <ul>1. After encountering the person, do people feel oppressed, humiliated or otherwise worse about themselves?<br>
  448. 2. Does the person target people who are less powerful than him/her?</ul>
  449. <p>Here&#39;s a test for you or your company: Would you tolerate a brilliant engineer who is also an asshole? (Or the more company-polite version: would you tolerate a brilliant jerk?)</p>
  450. <p>There are numerous articles and opinions on the topic, including <a href="https://retrospective.co/brilliant-jerks-cost-more-than-they-are-worth/">Brilliant Jerks Cost More Than They Are Worth</a>, and <a href="https://hbr.org/2015/12/its-better-to-avoid-a-toxic-employee-than-hire-a-superstar">It&#39;s Better to Avoid a Toxic Employee than Hire a Superstar</a>. My colleague Justin Becker is also giving a talk at QConSF 2017 on the topic: <a href="https://qconsf.com/sf2017/presentation/am-i-brilliant-jerk">Am I a Brilliant Jerk?</a>. </p>
  451. <p>It may help to clarify that &quot;brilliant jerk&quot; can mean different things to different people. To illustrate, I&#39;ll describe two types of brilliant jerks: the selfless and the selfish, and their behavior in detail. I&#39;ll then describe the damage caused by these jerks, and ways to deal with them.</p>
  452. <p><strong>The following are fictional characters.</strong> These are not two actual engineers, but are collections of related traits to help examine this behavior beyond the simple &quot;no asshole rule.&quot; These are engineers who by default act like jerks, not engineers who sometimes act that way. </p>
  453. <h2>Fictional Alice, the selfless brilliant jerk</h2>
  454. <p>Alice is a brilliant engineer. Alice cares about the company.</p>
  455. <p>She is direct and honest. If she believes that an unpopular position is right for the company, Alice does not hesitate to voice it. She will even browbeat others to make her point, often coming across as mean-spirited. Alice would point out that she wasn&#39;t being mean, she was just stating what is right, and that being mean shouldn&#39;t hurt the company anyway. She has little empathy for the feelings of others, and sees little business value in having it.</p>
  456. <p>Alice is great at working individually on hard engineering problems. She gets along fine with her immediate team and manager, who understand her personality. She doesn&#39;t get on well with others whom she only meets occasionally. Outside of her team, Alice is known as a jerk, and people try to avoid working with her.</p>
  457. <p>Alice is great at fixing hard bugs, writing test suites, doing code merges, and other unglamorous work. If the company needs it done, she&#39;s happy to do it, and doesn&#39;t care much whether it furthers her own career.</p>
  458. <p>While selfless jerks can be a net positive for the company, they can become more effective if they learn that being kind results in greater productivity. This topic was covered in the <a href="http://boz.com/articles/be-kind.html">Be Kind</a> post by boz. Different companies may have different attitudes towards Alice: whether to tolerate her behavior or not (most reviewers of this post said &quot;no,&quot; one said &quot;it&#39;s a grey area&quot;). Startups may tolerate Alice, for example, since the company is so small that everyone knows Alice and understands her personality.</p>
  459. <p>But I&#39;ve described selfless jerks primarily for contrast with <em>selfish</em> jerks.</p>
  460. <h2>Fictional Bob, the selfish brilliant jerk</h2>
  461. <p>Bob is a brilliant engineer. Bob cares about Bob.</p>
  462. <p>He is selfish, lacks empathy, and has delusions of grandeur. He believes that any behavior is justified that benefits himself, including abusing and exploiting others, for which he shows no guilt or remorse. He can be charming and charismatic to get his way, causing people to ignore or excuse his bad behavior.</p>
  463. <p>Below is a list of attributes that describe Bob, an extreme example of a brilliant engineering jerk. Not every brilliant jerk exhibits all of these behaviors, but I&#39;ve seen each and every one of them firsthand.</p>
  464. <p><strong>Bob interrupts others, and ignores their opinions</strong>. He believes that he is the most important person in the room, and has no interest in what others have to say, frequently interrupting them. He can monopolize conversations with long, exaggerated stories that flatter himself. Less-assertive engineers are effectively silenced, even if their opinions on the topic are the most valuable.</p>
  465. <p><strong>Bob only does work that benefits himself</strong>. He can work well on hard engineering problems, but only works on those he enjoys, or that help his career or promote his own earlier work. He creates new projects and immediately claims credit, but leaves the dirty work of finishing them to others, and avoids responsibility if they fail. He is brilliant at convincing the company to let him do what he wants, even when that ignores market demand or his own past performance. He never seriously mentors or trains other staff – he does not see that as useful to his own career.</p>
  466. <p><strong>Bob bullies, humiliates, and oppresses individuals</strong>. With non-technical people, he wins arguments by bamboozling them with irrelevant technical detail, making them feel dumb. With junior technical people, Bob likes to ridicule their ideas, letting everyone know how stupid they are, and how much smarter he is. When his technical specialties are needed, he makes people beg and grovel for his help, as another way to humiliate them. When others make mistakes, he enjoys shaming and mocking them with biting sarcasm and witty insults. He uses similar rhetoric in arguments, where he must always win, no matter the cost.</p>
  467. <p><strong>Bob engages in displays of dominance in front of groups</strong>. Bob likes to show everyone how important he is by how much he can get away with, including sheer rudeness. He is late to meetings (on purpose), puts his feet up on the table, then looks at his phone or laptop while ignoring everyone around him. He sometimes makes obscene remarks in the office, bragging: &quot;If anyone else said that, they&#39;d be fired!&quot;. He also insists on having a better laptop/desktop/monitor than everyone else, to display his status.</p>
  468. <p><strong>Bob tries to assert authority over all areas of the company</strong>, including those where he has no expertise at all. Areas he cannot control, he denigrates: eg, as an engineer, he will claim that marketing is stupid, useless, unnecessary, and that &quot;anyone could do it.&quot;</p>
  469. <p><strong>Bob is negative</strong>. He trash-talks other technologies, companies, and people behind their backs, always finding something negative to say. He elevates his own status by slamming other people. He also attacks technologies that either don&#39;t leverage his own prior work, or don&#39;t conform to his own beliefs. Other engineers avoid new technologies, for fear of damaging ridicule from Bob.</p>
  470. <p><strong>Bob manipulates and misleads</strong>. Sometimes he misleads subtly, by presenting facts that are literally true in a way that is intentionally misleading. At other times he will simply lie, and do it with such confidence and assertiveness that he is almost always believed. He states his own preferences and opinions as facts.</p>
  471. <p><strong>Bob uses physical intimidation</strong>. Bob glares at those he doesn&#39;t like, and may invade people&#39;s personal space. He may also use violent gestures such as slamming fists on desks.</p>
  472. <p><strong>A string of good employees have quit because of Bob</strong>. Some engineers become fed up with Bob and quit. Talented engineers are driven out by Bob on purpose, to eliminate threats to his own status. Bob demonizes those who left, attributing past failures to them, and their successes to others who stayed, especially himself. In this way, he convinces management that losing those staff was good for the company, and stops them from realizing that the real problem is Bob. Some who have left, if asked, will cite other reasons for quitting, hoping to avoid becoming victims of Bob&#39;s smear campaigns.</p>
  473. <p><strong>Bob gives great talks &ndash; about himself</strong>. Because he is a brilliant engineer and a great public orator, he is a popular speaker at technical events. In talks, he narrates self-enhancing stories and rewrites history to flatter himself, taking credit for other people&#39;s work &ndash; if not blatantly, then tacitly or by implication. He has a group of spellbound followers outside of the company who hero-worship and idolize him, and would love to work with him. He is well liked <em>from afar</em>.</p>
  474. <p><strong>Bob exploits junior engineers</strong>: Bob finds junior engineers who admire his brilliance, and encourages them to do work that elevates Bob&#39;s ideas and projects, reflecting glory back onto Bob. They become so invested in helping Bob&#39;s career growth that they have none of their own.</p>
  475. <p><strong>Bob is a negative role model</strong>. Bob can drag down the workplace or community by becoming a negative role model and having others imitate his behavior. Those who admire Bob become negative, bully others, and engage in similar personal attacks, hoping for his approval and to become Bob themselves. Others simply use Bob to excuse their own pre-existing bad behavior: if Bob can do it, so can I.</p>
  476. <p><strong>Some of Bob&#39;s coworkers become accomplices, and gaslight his abuse</strong>. They were there when he attacked and humiliated others, and they did nothing – or laughed along, encouraging Bob to continue. Bob likes to surround himself with such enablers. They may be otherwise reasonable people who have yet to understand that what they are witnessing is abuse. They may publicly defend Bob and deny that abuse happened, or minimize it, gaslighting Bob&#39;s victims (&quot;everyone&#39;s a jerk sometimes&quot;).</p>
  477. <p><strong>Bob refuses to change</strong>. Bob knows that his behavior hurts people, but &quot;that&#39;s their problem.&quot;</p>
  478. <p>It bears repeating: I have seen each of these behaviors firsthand, from multiple brilliant jerks. Bob is an extreme fictional case who exhibits <em>all</em> of these behaviors. One particular person may exhibit only some, without necessarily being a jerk. But, if you recognize many of these traits in a colleague – or in yourself – then, yes, you&#39;re probably dealing with a major-league jerk.</p>
  479. <p>Some reviewers of this post have said that Bob seems unbelievable: no one could be anywhere near that bad! They are fortunate not to have experienced a Bob, which is the lesson here: your understanding of a &quot;brilliant jerk&quot; may differ from that of someone who has actually worked with a Bob, or another severe type of jerk.</p>
  480. <h2>The problems caused by brilliant jerks</h2>
  481. <p>Problems caused by Alice, the selfless jerk, may include:</p>
  482. <ul>
  483. <li>Alice hurts or offends some employees with her attitude.</li>
  484. <li>Alice causes her team and manager to spend energy mending fences with others.</li>
  485. <li>Alice&#39;s projects may be less successful, as others avoid working with her.</li>
  486. <li>Alice discourages others from asking her questions, so her technical expertise is often wasted.</li>
  487. </ul>
  488. <p>But Bob, the selfish jerk, can cause these additional problems:</p>
  489. <ul>
  490. <li>Bob silences many technical opinions, lowering the company&#39;s technical IQ.</li>
  491. <li>Bob creates extra work for others who must fix his abandoned projects.</li>
  492. <li>Bob demoralizes many staff, which hurts productivity.</li>
  493. <li>Bob causes stress-related psychological and physical illness in his victims.</li>
  494. <li>Bob causes some staff to occasionally skip work: increasing absenteeism.</li>
  495. <li>Bob drives staff to quit, who will never come back.</li>
  496. <li>Bob may strengthen the company&#39;s competition, who hire those who quit.</li>
  497. <li>Bob makes it difficult to hire other good staff (word gets around).</li>
  498. <li>Bob discourages customers and investors (word gets around).</li>
  499. <li>Other staff devise processes to work around Bob, reducing the company&#39;s efficiency.</li>
  500. <li>Other staff may sabotage Bob&#39;s work, which sabotages the company.</li>
  501. <li>Bob inspires other staff to imitate his behavior, multiplying the problem.</li>
  502. <li>Bob creates a hostile workplace environment: an invitation to lawsuits.</li>
  503. </ul>
  504. <p>Chapter 2 in &quot;The No Asshole Rule&quot; covers more details (although for general staff, not just engineers), and has instructions for calculating your TCA: the Total Cost of Assholes for your organization.</p>
  505. <h2>Dealing with brilliant jerks</h2>
  506. <p>There are two parts to this: helping the victims and staff who witness the behavior, and dealing with the jerks themselves. Both are big topics that I&#39;ll discuss here only briefly.</p>
  507. <p>At some companies, no one is telling Alice or Bob that their behavior is inappropriate. Everyone sees the bad behavior, but thinks it must be tolerated because Alice and Bob are so brilliant and valuable. Wrong! One important step a company can take is to explicitly adopt a &quot;no brilliant jerks&quot; policy. Netflix has such a policy as part of the culture slide deck, now a <a href="https://jobs.netflix.com/culture">memo</a>, which reads:</p>
  508. <blockquote>On a dream team, there are no “brilliant jerks.” The cost to teamwork is just too high. Our view is that brilliant people are also capable of decent human interactions, and we insist upon that. When highly capable people work together in a collaborative context, they inspire each other to be more creative, more productive and ultimately more successful as a team than they could be as a collection of individuals.<br>&ndash; Netflix culture memo</blockquote>
  509. <p>This policy isn&#39;t some useless feel-good text from a nameless source: it was originally published on CEO Reed Hastings&#39; <a href="https://www.slideshare.net/reed2001/culture-1798664/36-Brilliant_Jerks_Some_companies_tolerate">slideshare account</a>. To be effective, such a policy for your company may also need to come from your CEO. All Netflix candidates are told to read the culture deck (memo) when interviewing, and are told that, yes, we take it seriously. While this helps people realize that jerks should not be tolerated, it doesn&#39;t necessarily stop jerks from being hired in the first place: Bob is brilliant and charismatic and would probably pass the interview. However, he would then find himself at a company where his colleagues recognize his bad behavior as unacceptable, and are empowered to speak up about it.</p>
  510. <p>In over three years at Netflix, I&#39;ve worked with zero brilliant jerks. The &quot;no brilliant jerks&quot; policy works, and it&#39;s been great. If we hired any in that time, they either changed their ways or left the company before I could interact with them.</p>
  511. <p>Some brilliant jerks can mend their ways: Alice might be motivated to change if she can be made to understand that her behavior is hurting the company, which she cares about. She should be encouraged to exercise empathy, and to leave others feeling positive and motivated to work harder, rather than demotivated. My colleague, Justin Becker, explores this in detail in his QCon talk, including the topic of emotional intelligence (EQ). In the next section I&#39;ll share an example.</p>
  512. <p>As for Bob: he should be told that his behavior hurts people and the company, and given the opportunity to change – but the reality is that he probably doesn&#39;t care. He firmly believes that &quot;nice guys finish last,&quot; and, so far, being a jerk has worked well for him. His managers have the power to change that equation, because they control things that Bob wants: they allow him to work on his pet projects and to speak at events, they give him promotions and bonuses, and ultimately they let him keep his job.</p>
  513. <blockquote>"I'd rather have a <i>hole</i> in my organization than an <i>asshole</i>."</a><br>&ndash; Fred Wilson, Velocity NY 2013 <a href="https://www.youtube.com/watch?v=fJOSX-W0yHA&feature=youtu.be&t=10m53s">keynote</a>.</blockquote>
  514. <p>As a colleague/victim/witness, you should report Bob&#39;s behavior to management, but you probably shouldn&#39;t ask them outright to fire Bob (among other reasons, what if someday you were thought to be a Bob?). Give management information, but let them decide how to act. Actually firing a brilliant jerk is a complicated topic for a separate post, ideally written by a manager who has dealt with this. There&#39;s usually a process to follow, which unfortunately Bob may exploit to his advantage, showing improvement when needed to keep his job, but then reverting back to his bad old ways. He may also have convinced management that his technical skills and fame are so important that the company would fail without him. This isn&#39;t true, but fear may cause management to hesitate.</p>
  515. <p>For management to deal effectively with Bob, they must themselves be convinced that his behavior should not be tolerated, regardless of his brilliance. For some companies, that will require truly understanding the damage that Bob causes (listed above), to justify taking action. For companies like Netflix with an explicit &quot;no brilliant jerks&quot; policy, it&#39;s much easier for management to take action, as they don&#39;t need to convince anyone that jerks are a problem: that&#39;s already covered in company policy.</p>
  516. <p>Regular one-on-one meetings with staff, and scheduled skip-level meetings, should also help inform management about the damage jerks are causing. Netflix does this well: I have scheduled one-on-one meetings with my manager once every two weeks, their manager once a month, and their manager at least once a year. That&#39;s three levels of management I talk directly and in private with, without even having to ask for a meeting. We&#39;re also encouraged to give other employees direct and honest feedback, intervene if we see harassment, and escalate up to and including the CEO.</p>
  517. <p>As for public speaking: Bob draws power from being a public face of the company. Speaking events should be shared among staff who want to speak, and training can be made available to improve their skills (various companies offer this), so that Bob isn&#39;t the only good speaker. Conference organizers can also adopt a &quot;no brilliant jerks&quot; policy (some already do), and attendees can avoid conferences that host known jerks. If Alice needs to learn empathy, Bob needs to learn both empathy and to stop being selfish, and sharing public speaking or other rewarding projects is an example of the latter.</p>
  518. <h2>When I acted like a jerk</h2>
  519. <p>Many people sometimes act like Alice, and it can be easy to talk them out of it (Alice herself is harder, since it&#39;s her by-default behavior). I&#39;ll explain this with a story, this time of a moment when I acted like a jerk.</p>
  520. <p>Early in my career, an engineer at my company made a big mistake in my area of expertise, and sent an email that dodged responsibility and showed no path to fix it. I was furious and phoned the engineer: my intent was to make him realize that he&#39;d made a big mistake, and put him on the right path. I was blunt, and told him off. I didn&#39;t enjoying doing so, but I felt I was doing a Good Thing for the company, and fixing a problem.</p>
  521. <p>A week later, his manager phoned me unexpectedly. He told me that he was aware of my phone call, and didn&#39;t think I was technically wrong, but did I know that the engineer has been demotivated and unproductive since I talked to him, and was it my intent to make his staff unproductive? No, of course not. The manager continued: do you think you could have told my engineer what you needed to, in a way that left them feeling positive and motivated to fix it? Sure, I probably can. Good. Always do that in the future, please. I did.</p>
  522. <p>The phone call lasted less than two minutes, and was immediately effective. I suspect the manager had done this before. Notice that he did not accuse me of being a jerk, rather, he posed two questions, which were basically: 1) are you intending to hurt the company?, and 2) are you able to act decently? There&#39;s only really one right answer to those questions. If he had just said &quot;you are a jerk&quot; I may have just replied &quot;no, I&#39;m not&quot;, but by asking questions instead, it put the onus on me to think about the answer, and triggered a moment of self reflection.</p>
  523. <h2>Additional topics</h2>
  524. <p>There are some additional topics I have not covered in detail here, but should mention:</p>
  525. <ul>
  526. <li><strong>What about jerks in open source communities?</strong> A good reference for this is the <a href="https://hypatia.ca/2016/06/21/no-more-rock-stars/">no more rock stars</a> post, where the rock star described is pretty much Bob. See that post for the section on: How do we as a community prevent rock stars?.</li>
  527. <li><strong>What about Bob as a manager?</strong> Bob may seek and be offered promotions into management, and become even more damaging to the company. Bob the manager exploits and threatens his subordinates. That&#39;s a topic for another post.</li>
  528. <li><strong>Does Bob sexually assault others?</strong> Is Bob more likely to be a harasser due to delusions of grandeur and a sense of entitlement (<a href="https://hypatia.ca/2017/07/18/the-al-capone-theory-of-sexual-harassment/">Al Capone theory</a>), or is he smart enough not to go that far, or, is he simply not that kind of jerk? I don&#39;t know. That&#39;s outside of my firsthand experience, so I didn&#39;t include it.</li>
  529. <li><strong>What about those junior engineers?</strong> The ones Bob exploits for his own gain. That&#39;s another big topic. Some related reading <a href="https://medium.com/@marlenac/the-blood-bag-co-narcissists-and-narcissists-in-tech-b6c78ae2aa5e">here</a>, <a href="https://medium.com/@marlenac/the-blood-bag-cutting-the-iv-line-e05496871f8a">here</a>, and <a href="https://medium.com/@marlenac/the-blood-bag-patterns-of-blood-bags-and-narcissists-in-tech-c41854605103">here</a> (from which I borrowed the words &quot;reflecting glory&quot;).</li>
  530. <li><strong>Is Bob actually brilliant?</strong> It&#39;s a little hard to tell, since Bob takes credit for the work of others. Bob also creates enemies in the industry, and some staff even sabotage Bob&#39;s work. In the long run, it hurts Bob&#39;s career. Not a brilliant result, really.</li>
  531. <li><strong>What if Bob is pretending to be brilliant?</strong> (Updated) The consequences for the company can be worse. I didn&#39;t explore this topic here, but it would be a character similar to Bob who isn&#39;t actually brilliant, but pretends to be, and has most people believing him. To quote from a <a href="https://news.ycombinator.com/item?id=15688692">HN comment</a>: &quot;The myth of &quot;brilliant jerks&quot; is harmful because it lets any jerk pretend he&#39;s doing it because he&#39;s brilliant, when chances are he&#39;s just afraid of being unmasked as mediocre.&quot;.</li>
  532. <li><strong>Does anyone exist who is really as bad as fictional Bob?</strong> Yes. Fortunately they are rare. One reviewer thinks that my post will not be effective unless I name such a real-life Bob as a concrete example. Maybe they are right, but I&#39;ve avoided that here. This isn&#39;t about one Bob, it&#39;s about all selfish brilliant jerks.</li>
  533. <li><strong>Should we publicly call out brilliant jerks in tech?</strong> It&#39;s a complex topic. The book <a href="https://www.amazon.com/Shame-Necessary-New-Uses-Tool/dp/0307950131">Is Shame Necessary</a> does make the point that shame and humiliation have a legitimate place in society when they are natural consequences to abusive behavior, which is also discussed in <a href="https://blog.valerieaurora.org/2016/10/24/when-is-naming-abuse-itself-abusive/">this post</a>. Calling out abusers may save future victims of abuse, so long as the calling out is proportional and not abusive itself. For victims of abuse, I could not make a blanket recommendation: I don&#39;t know your specific situation and how safe it is for you to speak up. I&#39;ve been in this situation myself, and was facing an extreme threat to myself and my family, and I understand how risky it can be.</li>
  534. <li><strong>How do I know if I&#39;m the jerk?</strong> If you always think that being right is all that matters, and don&#39;t consider your impact on teamwork or relationships, you might be an Alice or a Bob. If you think that hurting other people is simply doing what it takes to get ahead, then you might be a Bob. See the earlier sections for more characteristics, and my colleague&#39;s QCon presentation: <a href="https://qconsf.com/sf2017/presentation/am-i-brilliant-jerk">Am I a Brilliant Jerk?</a></li>
  535. </ul>
  536. <h2>Conclusion</h2>
  537. <p>Should brilliant jerks be tolerated? To explore this, I described two fictional brilliant jerks: Alice, who is selfless, and Bob, who is selfish. This makes it clear that the behavior of selfish jerks, like Bob, should definitely not be tolerated. Bob can kill companies. When CEOs and VCs sometimes say that brilliant jerks may be worth it, I imagine they are thinking of Alice, a selfless jerk, and not Bob. (Alice is debatable.)</p>
  538. <p>Early on in my career, I supported brilliant jerks of any type and thought they were worth it. I was wrong. People had warned me about them, that their behavior was &quot;not ok,&quot; but they never went into much detail as to why. I&#39;ve shared many details here. I didn&#39;t figure this all out until seeing the behavior and damage firsthand. (I&#39;ve not only experienced it, but I may have reached my lifetime dosage of asshole-rads.)</p>
  539. <p>Companies can adopt a &quot;no asshole rule&quot;, or more politely, a &quot;no brilliant jerks&quot; policy. Colleagues may be genuinely conflicted about how to deal with Bob: on the one hand, he is a real jerk, but on the other he is a &quot;high performer,&quot; so isn&#39;t it in the company&#39;s best interest to tolerate his behavior? A policy helps you decide, and it can be as simple as three words: no brilliant jerks.</p>
  540. <h2>Acknowledgements</h2>
  541. <p>
  542. Picture and editing by Deirdré Straughan. Thanks to review feedback and suggestions from Alice Goldfuss, Baron Schwartz, Ed Hunter, Justin Becker, David Blank-Edelman, Valerie Aurora, and others. References and related reading:</p>
  543. <ul>
  544. <li>Sutton, R. <i>The No Asshole Rule</i>. Grand Central Publishing, 2010.</li>
  545. <li>Babiak, P., Hare, R. D. <i>Snakes in Suits</i>. Harper Business, 2007.</li>
  546. <li>Jacquet, J. <i>Is Shame Necessary</i>. Random House, 2015.</li>
  547. <li>Sutton, R. <i>The Asshole Survival Guide</i>. Houghton Mifflin Harcourt, 2017.</li>
  548. <li><a href="https://hbr.org/2015/12/its-better-to-avoid-a-toxic-employee-than-hire-a-superstar">https://hbr.org/2015/12/its-better-to-avoid-a-toxic-employee-than-hire-a-superstar</a></li>
  549. <li><a href="https://retrospective.co/brilliant-jerks-cost-more-than-they-are-worth/">https://retrospective.co/brilliant-jerks-cost-more-than-they-are-worth/</a></li>
  550. <li><a href="http://boz.com/articles/be-kind.html">http://boz.com/articles/be-kind.html</a></li>
  551. <li><a href="https://hypatia.ca/2016/06/21/no-more-rock-stars/">https://hypatia.ca/2016/06/21/no-more-rock-stars/</a></li>
  552. <li><a href="https://www.youtube.com/watch?v=fJOSX-W0yHA&amp;feature=youtu.be&amp;t=10m53s">https://www.youtube.com/watch?v=fJOSX-W0yHA&amp;feature=youtu.be&amp;t=10m53s</a></li>
  553. <li><a href="https://www.slideshare.net/reed2001/culture-1798664/36-Brilliant_Jerks_Some_companies_tolerate">https://www.slideshare.net/reed2001/culture-1798664/36-Brilliant_Jerks_Some_companies_tolerate</a></li>
  554. <li><a href="https://jobs.netflix.com/culture">https://jobs.netflix.com/culture</a></li>
  555. <li><a href="https://qconsf.com/sf2017/presentation/am-i-brilliant-jerk">https://qconsf.com/sf2017/presentation/am-i-brilliant-jerk</a></li>
  556. <li><a href="https://hypatia.ca/2017/07/18/the-al-capone-theory-of-sexual-harassment/">https://hypatia.ca/2017/07/18/the-al-capone-theory-of-sexual-harassment/</a></li>
  557. <li>The blood bag series: <a href="https://medium.com/@marlenac/the-blood-bag-co-narcissists-and-narcissists-in-tech-b6c78ae2aa5e">part 1</a>, <a href="https://medium.com/@marlenac/the-blood-bag-cutting-the-iv-line-e05496871f8a">part 2</a>, <a href="https://medium.com/@marlenac/the-blood-bag-patterns-of-blood-bags-and-narcissists-in-tech-c41854605103">part 3</a></li>
  558. <li>(Updated) discussion on <a href="https://news.ycombinator.com/item?id=15688097">hackernews</a></li>
  559. </ul>
  560. </article>
  561. </section>
  562. <nav id="jumpto">
  563. <p>
  564. <a href="/david/blog/">Accueil du blog</a> |
  565. <a href="http://www.brendangregg.com/blog/2017-11-13/brilliant-jerks.html">Source originale</a> |
  566. <a href="/david/stream/2019/">Accueil du flux</a>
  567. </p>
  568. </nav>
  569. <footer>
  570. <div>
  571. <img src="/static/david/david-larlet-avatar.jpg" loading="lazy" class="avatar" width="200" height="200">
  572. <p>
  573. Bonjour/Hi!
  574. Je suis <a href="/david/" title="Profil public">David&nbsp;Larlet</a>, je vis actuellement à Montréal et j’alimente cet espace depuis 15 ans. <br>
  575. Si tu as apprécié cette lecture, n’hésite pas à poursuivre ton exploration. Par exemple via les <a href="/david/blog/" title="Expériences bienveillantes">réflexions bimestrielles</a>, la <a href="/david/stream/2019/" title="Pensées (dés)articulées">veille hebdomadaire</a> ou en t’abonnant au <a href="/david/log/" title="S’abonner aux publications via RSS">flux RSS</a> (<a href="/david/blog/2019/flux-rss/" title="Tiens c’est quoi un flux RSS ?">so 2005</a>).
  576. </p>
  577. <p>
  578. Je m’intéresse à la place que je peux avoir dans ce monde. En tant qu’humain, en tant que membre d’une famille et en tant qu’associé d’une coopérative. De temps en temps, je fais aussi des <a href="https://github.com/davidbgk" title="Principalement sur Github mais aussi ailleurs">trucs techniques</a>. Et encore plus rarement, <a href="/david/talks/" title="En ce moment je laisse plutôt la place aux autres">j’en parle</a>.
  579. </p>
  580. <p>
  581. Voici quelques articles choisis :
  582. <a href="/david/blog/2019/faire-equipe/" title="Accéder à l’article complet">Faire équipe</a>,
  583. <a href="/david/blog/2018/bivouac-automnal/" title="Accéder à l’article complet">Bivouac automnal</a>,
  584. <a href="/david/blog/2018/commodite-effondrement/" title="Accéder à l’article complet">Commodité et effondrement</a>,
  585. <a href="/david/blog/2017/donnees-communs/" title="Accéder à l’article complet">Des données aux communs</a>,
  586. <a href="/david/blog/2016/accompagner-enfant/" title="Accéder à l’article complet">Accompagner un enfant</a>,
  587. <a href="/david/blog/2016/senior-developer/" title="Accéder à l’article complet">Senior developer</a>,
  588. <a href="/david/blog/2016/illusion-sociale/" title="Accéder à l’article complet">L’illusion sociale</a>,
  589. <a href="/david/blog/2016/instantane-scopyleft/" title="Accéder à l’article complet">Instantané Scopyleft</a>,
  590. <a href="/david/blog/2016/enseigner-web/" title="Accéder à l’article complet">Enseigner le Web</a>,
  591. <a href="/david/blog/2016/simplicite-defaut/" title="Accéder à l’article complet">Simplicité par défaut</a>,
  592. <a href="/david/blog/2016/minimalisme-esthetique/" title="Accéder à l’article complet">Minimalisme et esthétique</a>,
  593. <a href="/david/blog/2014/un-web-omni-present/" title="Accéder à l’article complet">Un web omni-présent</a>,
  594. <a href="/david/blog/2014/manifeste-developpeur/" title="Accéder à l’article complet">Manifeste de développeur</a>,
  595. <a href="/david/blog/2013/confort-convivialite/" title="Accéder à l’article complet">Confort et convivialité</a>,
  596. <a href="/david/blog/2013/testament-numerique/" title="Accéder à l’article complet">Testament numérique</a>,
  597. et <a href="/david/blog/" title="Accéder aux archives">bien d’autres…</a>
  598. </p>
  599. <p>
  600. On peut <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">échanger par courriel</a>. Si éventuellement tu souhaites que l’on travaille ensemble, tu devrais commencer par consulter le <a href="http://larlet.com">profil dédié à mon activité professionnelle</a> et/ou contacter directement <a href="http://scopyleft.fr/">scopyleft</a>, la <abbr title="Société coopérative et participative">SCOP</abbr> dont je fais partie depuis six ans. Je recommande au préalable de lire <a href="/david/blog/2018/cout-site/" title="Attention ce qui va suivre peut vous choquer">combien coûte un site</a> et pourquoi je suis plutôt favorable à une <a href="/david/pro/devis/" title="Discutons-en !">non-demande de devis</a>.
  601. </p>
  602. <p>
  603. Je ne traque pas ta navigation mais mon
  604. <abbr title="Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33.184162340">hébergeur</abbr>
  605. conserve des logs d’accès.
  606. </p>
  607. </div>
  608. </footer>
  609. <script type="text/javascript">
  610. ;(_ => {
  611. const jumper = document.getElementById('jumper')
  612. jumper.addEventListener('click', e => {
  613. e.preventDefault()
  614. const anchor = e.target.getAttribute('href')
  615. const targetEl = document.getElementById(anchor.substring(1))
  616. targetEl.scrollIntoView({behavior: 'smooth'})
  617. })
  618. })()
  619. </script>