{"id":565,"date":"2026-09-02T08:26:47","date_gmt":"2026-09-02T13:26:47","guid":{"rendered":"https:\/\/davidwdrell.net\/wordpress\/?p=565"},"modified":"2026-09-02T08:26:47","modified_gmt":"2026-09-02T13:26:47","slug":"how-bots-made-me-16-8-times-more-productive-and-i-have-the-data-to-prove-it","status":"publish","type":"post","link":"https:\/\/davidwdrell.net\/wordpress\/?p=565","title":{"rendered":"How bots made me 16.8 times more productive, and I have the data to prove it"},"content":{"rendered":"\n<article style=\"max-width:100%;margin:0\"><div style=\"font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-size:11.5px;letter-spacing:.15em;text-transform:uppercase;opacity:.62;margin:0 0 12px\">Measuring four and a half years of commits<\/div><h1 style=\"font-size:38px;line-height:1.12;letter-spacing:-.028em;font-weight:600;margin:0 0 16px\">How bots made me 16.8\u00d7 more productive, and I have the data to prove it<\/h1><p style=\"font-size:19px;line-height:1.55;opacity:.82;margin:0 0 22px\">I have been building an embedded C++ control and image processing daemon on Jetson for four and a half years. It started with a small team; for the last two years it has been just me. Over time I started using co-pilot then claude. Here is how the project throughput increased over time.<\/p><p style=\"font-size:19px;line-height:1.55;opacity:.82;margin:0 0 22px\">This article doesn&#8217;t cover quality or performance, but let me address this briefly. The test suite has grown to more than 800 cases, over 400 of them added in 2026. Performance is up more than 20x, on the back of extensive CUDA work that would not have fit the schedule without bots. And end users have reported zero regressions in two years.<\/p><div style=\"background:#fcfcfd;border:1px solid rgba(16,19,25,.10);border-radius:7px;color:#101319;display:flex;gap:22px;align-items:center;flex-wrap:wrap;padding:22px 24px;margin:30px 0\"><div style=\"font-size:56px;font-weight:600;letter-spacing:-.04em;line-height:.9;color:#2a78d6\">16.8\u00d7<\/div><p style=\"margin:0 0 18px;line-height:1.62\">The median developer-week now moves <strong style=\"font-weight:600\">4,792 lines<\/strong> of authored source. In 2022 it moved <strong style=\"font-weight:600\">285<\/strong>.<\/p><\/div><div style=\"background:#fcfcfd;border:1px solid rgba(16,19,25,.10);border-radius:7px;color:#101319;padding:20px 24px 6px;margin:28px 0\"><h2 style=\"font-size:19px;line-height:1.25;font-weight:600;margin:0 0 12px\">First: how I calculated the numbers<\/h2><p style=\"margin:0 0 18px;line-height:1.62\"><code style=\"font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-size:.86em;background:rgba(128,128,132,.14);padding:2px 5px;border-radius:3px\">git log --numstat<\/code> will tell you a repository has churned 2.8 million lines. Most of that is not work anyone did, so I threw it out in three passes before counting anything. Here are the major areas excluded from my counts:<\/p><ul style=\"margin:0 0 18px;padding-left:22px\"><li style=\"margin-bottom:10px;line-height:1.6\"><strong style=\"font-weight:600\">Vendored and generated files<\/strong> \u2014 third-party trees, SDK headers, generated protobuf bindings, build output, training logs. <strong style=\"font-weight:600\">\u2212775,000 lines.<\/strong><\/li><li style=\"margin-bottom:10px;line-height:1.6\"><strong style=\"font-weight:600\">Structural moves<\/strong> \u2014 Relocate a file and git scores it as a full delete plus a full add. Rename detection catches that within a commit, but not a directory copied in one commit and the original deleted three weeks later. I identified those by blob identity: log with <code style=\"font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-size:.86em;background:rgba(128,128,132,.14);padding:2px 5px;border-radius:3px\">--no-renames<\/code> so every add and delete exposes its SHA, map each blob to every path it has ever occupied, and flag any add or delete whose exact content also lives at a different path somewhere in history. <strong style=\"font-weight:600\">\u2212666,000 lines.<\/strong><\/li><\/ul><p style=\"margin:0 0 18px;line-height:1.62\">What survived: <strong style=\"font-weight:600\">403,042 lines<\/strong> across <strong style=\"font-weight:600\">1,146 commits<\/strong> and <strong style=\"font-weight:600\">163 working weeks<\/strong>. Weeks with no commits (work stopped completely) are excluded everywhere below \u2014 every axis counts working weeks, never calendar weeks, so nothing here is diluted by time spent away from the keyboard. Every chart is built on that 14%.<\/p><\/div><h2 style=\"font-size:23px;line-height:1.25;letter-spacing:-.018em;font-weight:600;margin:40px 0 12px\">The Data<\/h2><p style=\"margin:0 0 18px;line-height:1.62\">Lines changed in each working week, with the number of distinct people who committed that week drawn underneath on the same timeline.<\/p><figure style=\"background:#fcfcfd;border:1px solid rgba(16,19,25,.10);border-radius:7px;color:#101319;max-width:100%;margin:30px 0;padding:18px 18px 12px\"><svg style=\"display:block;width:100%;height:auto\" viewBox=\"0 0 920 344\" role=\"img\" aria-label=\"Lines changed in each of the 163 working weeks, with the number of people committing each week beneath it\"><text x=\"54\" y=\"12\" fill=\"#4b515c\" font-size=\"10.5\" text-anchor=\"start\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\">LINES CHANGED PER WORKING WEEK<\/text><line x1=\"54\" x2=\"906\" y1=\"230.0\" y2=\"230.0\" stroke=\"#e4e7ec\" stroke-width=\"1\"><\/line><text x=\"45\" y=\"230.0\" fill=\"#858b96\" font-size=\"11\" text-anchor=\"end\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\" dominant-baseline=\"middle\">0<\/text><line x1=\"54\" x2=\"906\" y1=\"188.0\" y2=\"188.0\" stroke=\"#e4e7ec\" stroke-width=\"1\"><\/line><text x=\"45\" y=\"188.0\" fill=\"#858b96\" font-size=\"11\" text-anchor=\"end\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\" dominant-baseline=\"middle\">5k<\/text><line x1=\"54\" x2=\"906\" y1=\"146.0\" y2=\"146.0\" stroke=\"#e4e7ec\" stroke-width=\"1\"><\/line><text x=\"45\" y=\"146.0\" fill=\"#858b96\" font-size=\"11\" text-anchor=\"end\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\" dominant-baseline=\"middle\">10k<\/text><line x1=\"54\" x2=\"906\" y1=\"104.0\" y2=\"104.0\" stroke=\"#e4e7ec\" stroke-width=\"1\"><\/line><text x=\"45\" y=\"104.0\" fill=\"#858b96\" font-size=\"11\" text-anchor=\"end\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\" dominant-baseline=\"middle\">15k<\/text><line x1=\"54\" x2=\"906\" y1=\"62.0\" y2=\"62.0\" stroke=\"#e4e7ec\" stroke-width=\"1\"><\/line><text x=\"45\" y=\"62.0\" fill=\"#858b96\" font-size=\"11\" text-anchor=\"end\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\" dominant-baseline=\"middle\">20k<\/text><line x1=\"54\" x2=\"906\" y1=\"20.0\" y2=\"20.0\" stroke=\"#e4e7ec\" stroke-width=\"1\"><\/line><text x=\"45\" y=\"20.0\" fill=\"#858b96\" font-size=\"11\" text-anchor=\"end\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\" dominant-baseline=\"middle\">25k<\/text><line x1=\"54\" x2=\"906\" y1=\"318.0\" y2=\"318.0\" stroke=\"#e4e7ec\" stroke-width=\"1\"><\/line><text x=\"45\" y=\"318.0\" fill=\"#858b96\" font-size=\"11\" text-anchor=\"end\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\" dominant-baseline=\"middle\">0<\/text><text x=\"45\" y=\"291.0\" fill=\"#858b96\" font-size=\"11\" text-anchor=\"end\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\" dominant-baseline=\"middle\">2<\/text><line x1=\"54\" x2=\"906\" y1=\"264.0\" y2=\"264.0\" stroke=\"#e4e7ec\" stroke-width=\"1\"><\/line><text x=\"45\" y=\"264.0\" fill=\"#858b96\" font-size=\"11\" text-anchor=\"end\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\" dominant-baseline=\"middle\">4<\/text><text x=\"54.0\" y=\"335\" fill=\"#4b515c\" font-size=\"11\" text-anchor=\"start\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\">2022<\/text><line x1=\"190.7\" x2=\"190.7\" y1=\"20\" y2=\"318\" stroke=\"#c5cad2\" stroke-width=\"1\" stroke-dasharray=\"2 4\" opacity=\".5\"><\/line><text x=\"190.7\" y=\"335\" fill=\"#4b515c\" font-size=\"11\" text-anchor=\"middle\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\">2023<\/text><line x1=\"432.7\" x2=\"432.7\" y1=\"20\" y2=\"318\" stroke=\"#c5cad2\" stroke-width=\"1\" stroke-dasharray=\"2 4\" opacity=\".5\"><\/line><text x=\"432.7\" y=\"335\" fill=\"#4b515c\" font-size=\"11\" text-anchor=\"middle\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\">2024<\/text><line x1=\"632.5\" x2=\"632.5\" y1=\"20\" y2=\"318\" stroke=\"#c5cad2\" stroke-width=\"1\" stroke-dasharray=\"2 4\" opacity=\".5\"><\/line><text x=\"632.5\" y=\"335\" fill=\"#4b515c\" font-size=\"11\" text-anchor=\"middle\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\">2025<\/text><line x1=\"737.7\" x2=\"737.7\" y1=\"20\" y2=\"318\" stroke=\"#c5cad2\" stroke-width=\"1\" stroke-dasharray=\"2 4\" opacity=\".5\"><\/line><text x=\"737.7\" y=\"335\" fill=\"#4b515c\" font-size=\"11\" text-anchor=\"middle\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\">2026<\/text><line x1=\"54\" x2=\"906\" y1=\"230\" y2=\"230\" stroke=\"#c5cad2\" stroke-width=\"1\"><\/line><line x1=\"54\" x2=\"906\" y1=\"318\" y2=\"318\" stroke=\"#c5cad2\" stroke-width=\"1\"><\/line><text x=\"54\" y=\"255\" fill=\"#4b515c\" font-size=\"10.5\" text-anchor=\"start\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\">PEOPLE COMMITTING THAT WEEK<\/text><path d=\"M54.0,304.5 L56.6,304.5 L56.6,304.5 L61.9,304.5 L61.9,304.5 L67.1,304.5 L67.1,304.5 L72.4,304.5 L72.4,304.5 L77.7,304.5 L77.7,291.0 L82.9,291.0 L82.9,304.5 L88.2,304.5 L88.2,291.0 L93.4,291.0 L93.4,291.0 L98.7,291.0 L98.7,304.5 L104.0,304.5 L104.0,304.5 L109.2,304.5 L109.2,291.0 L114.5,291.0 L114.5,304.5 L119.7,304.5 L119.7,304.5 L125.0,304.5 L125.0,304.5 L130.3,304.5 L130.3,291.0 L135.5,291.0 L135.5,277.5 L140.8,277.5 L140.8,291.0 L146.0,291.0 L146.0,291.0 L151.3,291.0 L151.3,304.5 L156.6,304.5 L156.6,304.5 L161.8,304.5 L161.8,304.5 L167.1,304.5 L167.1,277.5 L172.3,277.5 L172.3,291.0 L177.6,291.0 L177.6,304.5 L182.9,304.5 L182.9,304.5 L188.1,304.5 L188.1,304.5 L193.4,304.5 L193.4,304.5 L198.6,304.5 L198.6,304.5 L203.9,304.5 L203.9,291.0 L209.1,291.0 L209.1,277.5 L214.4,277.5 L214.4,291.0 L219.7,291.0 L219.7,304.5 L224.9,304.5 L224.9,304.5 L230.2,304.5 L230.2,291.0 L235.4,291.0 L235.4,264.0 L240.7,264.0 L240.7,291.0 L246.0,291.0 L246.0,277.5 L251.2,277.5 L251.2,291.0 L256.5,291.0 L256.5,304.5 L261.7,304.5 L261.7,277.5 L267.0,277.5 L267.0,304.5 L272.3,304.5 L272.3,291.0 L277.5,291.0 L277.5,291.0 L282.8,291.0 L282.8,291.0 L288.0,291.0 L288.0,304.5 L293.3,304.5 L293.3,304.5 L298.6,304.5 L298.6,291.0 L303.8,291.0 L303.8,291.0 L309.1,291.0 L309.1,304.5 L314.3,304.5 L314.3,304.5 L319.6,304.5 L319.6,304.5 L324.9,304.5 L324.9,304.5 L330.1,304.5 L330.1,304.5 L335.4,304.5 L335.4,304.5 L340.6,304.5 L340.6,304.5 L345.9,304.5 L345.9,304.5 L351.1,304.5 L351.1,291.0 L356.4,291.0 L356.4,291.0 L361.7,291.0 L361.7,291.0 L366.9,291.0 L366.9,304.5 L372.2,304.5 L372.2,291.0 L377.4,291.0 L377.4,304.5 L382.7,304.5 L382.7,304.5 L388.0,304.5 L388.0,304.5 L393.2,304.5 L393.2,304.5 L398.5,304.5 L398.5,304.5 L403.7,304.5 L403.7,304.5 L409.0,304.5 L409.0,304.5 L414.3,304.5 L414.3,304.5 L419.5,304.5 L419.5,304.5 L424.8,304.5 L424.8,304.5 L430.0,304.5 L430.0,304.5 L435.3,304.5 L435.3,304.5 L440.6,304.5 L440.6,304.5 L445.8,304.5 L445.8,304.5 L451.1,304.5 L451.1,304.5 L456.3,304.5 L456.3,304.5 L461.6,304.5 L461.6,304.5 L466.9,304.5 L466.9,304.5 L472.1,304.5 L472.1,304.5 L477.4,304.5 L477.4,304.5 L482.6,304.5 L482.6,304.5 L487.9,304.5 L487.9,304.5 L493.1,304.5 L493.1,304.5 L498.4,304.5 L498.4,304.5 L503.7,304.5 L503.7,304.5 L508.9,304.5 L508.9,304.5 L514.2,304.5 L514.2,304.5 L519.4,304.5 L519.4,304.5 L524.7,304.5 L524.7,304.5 L530.0,304.5 L530.0,304.5 L535.2,304.5 L535.2,304.5 L540.5,304.5 L540.5,304.5 L545.7,304.5 L545.7,304.5 L551.0,304.5 L551.0,304.5 L556.3,304.5 L556.3,304.5 L561.5,304.5 L561.5,277.5 L566.8,277.5 L566.8,291.0 L572.0,291.0 L572.0,291.0 L577.3,291.0 L577.3,304.5 L582.6,304.5 L582.6,291.0 L587.8,291.0 L587.8,277.5 L593.1,277.5 L593.1,304.5 L598.3,304.5 L598.3,291.0 L603.6,291.0 L603.6,291.0 L608.9,291.0 L608.9,291.0 L614.1,291.0 L614.1,304.5 L619.4,304.5 L619.4,291.0 L624.6,291.0 L624.6,304.5 L629.9,304.5 L629.9,304.5 L635.1,304.5 L635.1,304.5 L640.4,304.5 L640.4,304.5 L645.7,304.5 L645.7,304.5 L650.9,304.5 L650.9,304.5 L656.2,304.5 L656.2,304.5 L661.4,304.5 L661.4,304.5 L666.7,304.5 L666.7,304.5 L672.0,304.5 L672.0,304.5 L677.2,304.5 L677.2,304.5 L682.5,304.5 L682.5,304.5 L687.7,304.5 L687.7,304.5 L693.0,304.5 L693.0,304.5 L698.3,304.5 L698.3,304.5 L703.5,304.5 L703.5,304.5 L708.8,304.5 L708.8,304.5 L714.0,304.5 L714.0,304.5 L719.3,304.5 L719.3,304.5 L724.6,304.5 L724.6,304.5 L729.8,304.5 L729.8,304.5 L735.1,304.5 L735.1,304.5 L740.3,304.5 L740.3,304.5 L745.6,304.5 L745.6,304.5 L750.9,304.5 L750.9,304.5 L756.1,304.5 L756.1,304.5 L761.4,304.5 L761.4,304.5 L766.6,304.5 L766.6,304.5 L771.9,304.5 L771.9,304.5 L777.1,304.5 L777.1,304.5 L782.4,304.5 L782.4,304.5 L787.7,304.5 L787.7,304.5 L792.9,304.5 L792.9,304.5 L798.2,304.5 L798.2,304.5 L803.4,304.5 L803.4,304.5 L808.7,304.5 L808.7,304.5 L814.0,304.5 L814.0,304.5 L819.2,304.5 L819.2,304.5 L824.5,304.5 L824.5,304.5 L829.7,304.5 L829.7,304.5 L835.0,304.5 L835.0,304.5 L840.3,304.5 L840.3,304.5 L845.5,304.5 L845.5,304.5 L850.8,304.5 L850.8,304.5 L856.0,304.5 L856.0,304.5 L861.3,304.5 L861.3,304.5 L866.6,304.5 L866.6,304.5 L871.8,304.5 L871.8,304.5 L877.1,304.5 L877.1,304.5 L882.3,304.5 L882.3,304.5 L887.6,304.5 L887.6,304.5 L892.9,304.5 L892.9,304.5 L898.1,304.5 L898.1,304.5 L903.4,304.5 L903.4,304.5 L906.0,304.5 L906,318 L54,318 Z\" fill=\"rgba(27,175,122,.14)\"><\/path><path d=\"M54.0,304.5 L56.6,304.5 L56.6,304.5 L61.9,304.5 L61.9,304.5 L67.1,304.5 L67.1,304.5 L72.4,304.5 L72.4,304.5 L77.7,304.5 L77.7,291.0 L82.9,291.0 L82.9,304.5 L88.2,304.5 L88.2,291.0 L93.4,291.0 L93.4,291.0 L98.7,291.0 L98.7,304.5 L104.0,304.5 L104.0,304.5 L109.2,304.5 L109.2,291.0 L114.5,291.0 L114.5,304.5 L119.7,304.5 L119.7,304.5 L125.0,304.5 L125.0,304.5 L130.3,304.5 L130.3,291.0 L135.5,291.0 L135.5,277.5 L140.8,277.5 L140.8,291.0 L146.0,291.0 L146.0,291.0 L151.3,291.0 L151.3,304.5 L156.6,304.5 L156.6,304.5 L161.8,304.5 L161.8,304.5 L167.1,304.5 L167.1,277.5 L172.3,277.5 L172.3,291.0 L177.6,291.0 L177.6,304.5 L182.9,304.5 L182.9,304.5 L188.1,304.5 L188.1,304.5 L193.4,304.5 L193.4,304.5 L198.6,304.5 L198.6,304.5 L203.9,304.5 L203.9,291.0 L209.1,291.0 L209.1,277.5 L214.4,277.5 L214.4,291.0 L219.7,291.0 L219.7,304.5 L224.9,304.5 L224.9,304.5 L230.2,304.5 L230.2,291.0 L235.4,291.0 L235.4,264.0 L240.7,264.0 L240.7,291.0 L246.0,291.0 L246.0,277.5 L251.2,277.5 L251.2,291.0 L256.5,291.0 L256.5,304.5 L261.7,304.5 L261.7,277.5 L267.0,277.5 L267.0,304.5 L272.3,304.5 L272.3,291.0 L277.5,291.0 L277.5,291.0 L282.8,291.0 L282.8,291.0 L288.0,291.0 L288.0,304.5 L293.3,304.5 L293.3,304.5 L298.6,304.5 L298.6,291.0 L303.8,291.0 L303.8,291.0 L309.1,291.0 L309.1,304.5 L314.3,304.5 L314.3,304.5 L319.6,304.5 L319.6,304.5 L324.9,304.5 L324.9,304.5 L330.1,304.5 L330.1,304.5 L335.4,304.5 L335.4,304.5 L340.6,304.5 L340.6,304.5 L345.9,304.5 L345.9,304.5 L351.1,304.5 L351.1,291.0 L356.4,291.0 L356.4,291.0 L361.7,291.0 L361.7,291.0 L366.9,291.0 L366.9,304.5 L372.2,304.5 L372.2,291.0 L377.4,291.0 L377.4,304.5 L382.7,304.5 L382.7,304.5 L388.0,304.5 L388.0,304.5 L393.2,304.5 L393.2,304.5 L398.5,304.5 L398.5,304.5 L403.7,304.5 L403.7,304.5 L409.0,304.5 L409.0,304.5 L414.3,304.5 L414.3,304.5 L419.5,304.5 L419.5,304.5 L424.8,304.5 L424.8,304.5 L430.0,304.5 L430.0,304.5 L435.3,304.5 L435.3,304.5 L440.6,304.5 L440.6,304.5 L445.8,304.5 L445.8,304.5 L451.1,304.5 L451.1,304.5 L456.3,304.5 L456.3,304.5 L461.6,304.5 L461.6,304.5 L466.9,304.5 L466.9,304.5 L472.1,304.5 L472.1,304.5 L477.4,304.5 L477.4,304.5 L482.6,304.5 L482.6,304.5 L487.9,304.5 L487.9,304.5 L493.1,304.5 L493.1,304.5 L498.4,304.5 L498.4,304.5 L503.7,304.5 L503.7,304.5 L508.9,304.5 L508.9,304.5 L514.2,304.5 L514.2,304.5 L519.4,304.5 L519.4,304.5 L524.7,304.5 L524.7,304.5 L530.0,304.5 L530.0,304.5 L535.2,304.5 L535.2,304.5 L540.5,304.5 L540.5,304.5 L545.7,304.5 L545.7,304.5 L551.0,304.5 L551.0,304.5 L556.3,304.5 L556.3,304.5 L561.5,304.5 L561.5,277.5 L566.8,277.5 L566.8,291.0 L572.0,291.0 L572.0,291.0 L577.3,291.0 L577.3,304.5 L582.6,304.5 L582.6,291.0 L587.8,291.0 L587.8,277.5 L593.1,277.5 L593.1,304.5 L598.3,304.5 L598.3,291.0 L603.6,291.0 L603.6,291.0 L608.9,291.0 L608.9,291.0 L614.1,291.0 L614.1,304.5 L619.4,304.5 L619.4,291.0 L624.6,291.0 L624.6,304.5 L629.9,304.5 L629.9,304.5 L635.1,304.5 L635.1,304.5 L640.4,304.5 L640.4,304.5 L645.7,304.5 L645.7,304.5 L650.9,304.5 L650.9,304.5 L656.2,304.5 L656.2,304.5 L661.4,304.5 L661.4,304.5 L666.7,304.5 L666.7,304.5 L672.0,304.5 L672.0,304.5 L677.2,304.5 L677.2,304.5 L682.5,304.5 L682.5,304.5 L687.7,304.5 L687.7,304.5 L693.0,304.5 L693.0,304.5 L698.3,304.5 L698.3,304.5 L703.5,304.5 L703.5,304.5 L708.8,304.5 L708.8,304.5 L714.0,304.5 L714.0,304.5 L719.3,304.5 L719.3,304.5 L724.6,304.5 L724.6,304.5 L729.8,304.5 L729.8,304.5 L735.1,304.5 L735.1,304.5 L740.3,304.5 L740.3,304.5 L745.6,304.5 L745.6,304.5 L750.9,304.5 L750.9,304.5 L756.1,304.5 L756.1,304.5 L761.4,304.5 L761.4,304.5 L766.6,304.5 L766.6,304.5 L771.9,304.5 L771.9,304.5 L777.1,304.5 L777.1,304.5 L782.4,304.5 L782.4,304.5 L787.7,304.5 L787.7,304.5 L792.9,304.5 L792.9,304.5 L798.2,304.5 L798.2,304.5 L803.4,304.5 L803.4,304.5 L808.7,304.5 L808.7,304.5 L814.0,304.5 L814.0,304.5 L819.2,304.5 L819.2,304.5 L824.5,304.5 L824.5,304.5 L829.7,304.5 L829.7,304.5 L835.0,304.5 L835.0,304.5 L840.3,304.5 L840.3,304.5 L845.5,304.5 L845.5,304.5 L850.8,304.5 L850.8,304.5 L856.0,304.5 L856.0,304.5 L861.3,304.5 L861.3,304.5 L866.6,304.5 L866.6,304.5 L871.8,304.5 L871.8,304.5 L877.1,304.5 L877.1,304.5 L882.3,304.5 L882.3,304.5 L887.6,304.5 L887.6,304.5 L892.9,304.5 L892.9,304.5 L898.1,304.5 L898.1,304.5 L903.4,304.5 L903.4,304.5 L906.0,304.5\" fill=\"none\" stroke=\"#1baf7a\" stroke-width=\"1.75\" stroke-linejoin=\"round\"><\/path><polygon points=\"54,230 54.0,229.2 59.3,220.5 64.5,217.9 69.8,221.0 75.0,228.4 80.3,225.6 85.6,226.2 90.8,229.3 96.1,224.7 101.3,227.8 106.6,228.4 111.9,227.2 117.1,223.2 122.4,207.1 127.6,228.1 132.9,223.0 138.1,220.5 143.4,224.9 148.7,220.5 153.9,226.8 159.2,228.1 164.4,228.9 169.7,210.6 175.0,227.1 180.2,227.8 185.5,229.9 190.7,229.3 196.0,214.1 201.3,226.4 206.5,224.1 211.8,220.0 217.0,223.3 222.3,228.5 227.6,183.2 232.8,164.3 238.1,202.8 243.3,117.5 248.6,196.0 253.9,205.9 259.1,226.8 264.4,213.5 269.6,229.4 274.9,226.5 280.1,226.0 285.4,229.9 290.7,228.2 295.9,229.8 301.2,228.5 306.4,227.3 311.7,229.8 317.0,230.0 322.2,206.4 327.5,229.4 332.7,228.3 338.0,203.2 343.3,222.7 348.5,229.9 353.8,223.7 359.0,227.6 364.3,228.7 369.6,220.6 374.8,229.6 380.1,229.7 385.3,229.2 390.6,229.9 395.9,228.4 401.1,228.6 406.4,219.3 411.6,224.8 416.9,227.4 422.1,226.3 427.4,217.9 432.7,221.5 437.9,217.7 443.2,227.3 448.4,202.4 453.7,212.4 459.0,203.7 464.2,207.7 469.5,206.3 474.7,193.0 480.0,210.6 485.3,211.1 490.5,215.2 495.8,187.0 501.0,212.3 506.3,218.7 511.6,228.5 516.8,205.5 522.1,219.4 527.3,229.6 532.6,223.8 537.9,223.1 543.1,229.9 548.4,228.9 553.6,229.9 558.9,187.8 564.1,221.1 569.4,156.5 574.7,218.6 579.9,225.0 585.2,201.1 590.4,209.8 595.7,219.0 601.0,223.9 606.2,162.7 611.5,228.9 616.7,229.8 622.0,226.2 627.3,230.0 632.5,226.7 637.8,223.8 643.0,226.4 648.3,224.6 653.6,227.5 658.8,227.8 664.1,218.3 669.3,219.3 674.6,214.8 679.9,220.5 685.1,217.7 690.4,204.6 695.6,219.1 700.9,229.6 706.1,208.0 711.4,159.2 716.7,189.7 721.9,163.3 727.2,176.3 732.4,180.2 737.7,227.4 743.0,191.0 748.2,206.0 753.5,210.9 758.7,221.4 764.0,226.0 769.3,22.1 774.5,155.2 779.8,207.3 785.0,148.5 790.3,228.7 795.6,201.4 800.8,144.7 806.1,227.6 811.3,225.9 816.6,226.9 821.9,174.1 827.1,183.0 832.4,108.6 837.6,128.1 842.9,176.0 848.1,104.0 853.4,189.7 858.7,177.1 863.9,209.5 869.2,224.9 874.4,222.9 879.7,192.4 885.0,125.4 890.2,183.7 895.5,125.3 900.7,155.0 906.0,165.1 906,230\" fill=\"rgba(42,120,214,.13)\"><\/polygon><polyline points=\"54.0,229.2 59.3,220.5 64.5,217.9 69.8,221.0 75.0,228.4 80.3,225.6 85.6,226.2 90.8,229.3 96.1,224.7 101.3,227.8 106.6,228.4 111.9,227.2 117.1,223.2 122.4,207.1 127.6,228.1 132.9,223.0 138.1,220.5 143.4,224.9 148.7,220.5 153.9,226.8 159.2,228.1 164.4,228.9 169.7,210.6 175.0,227.1 180.2,227.8 185.5,229.9 190.7,229.3 196.0,214.1 201.3,226.4 206.5,224.1 211.8,220.0 217.0,223.3 222.3,228.5 227.6,183.2 232.8,164.3 238.1,202.8 243.3,117.5 248.6,196.0 253.9,205.9 259.1,226.8 264.4,213.5 269.6,229.4 274.9,226.5 280.1,226.0 285.4,229.9 290.7,228.2 295.9,229.8 301.2,228.5 306.4,227.3 311.7,229.8 317.0,230.0 322.2,206.4 327.5,229.4 332.7,228.3 338.0,203.2 343.3,222.7 348.5,229.9 353.8,223.7 359.0,227.6 364.3,228.7 369.6,220.6 374.8,229.6 380.1,229.7 385.3,229.2 390.6,229.9 395.9,228.4 401.1,228.6 406.4,219.3 411.6,224.8 416.9,227.4 422.1,226.3 427.4,217.9 432.7,221.5 437.9,217.7 443.2,227.3 448.4,202.4 453.7,212.4 459.0,203.7 464.2,207.7 469.5,206.3 474.7,193.0 480.0,210.6 485.3,211.1 490.5,215.2 495.8,187.0 501.0,212.3 506.3,218.7 511.6,228.5 516.8,205.5 522.1,219.4 527.3,229.6 532.6,223.8 537.9,223.1 543.1,229.9 548.4,228.9 553.6,229.9 558.9,187.8 564.1,221.1 569.4,156.5 574.7,218.6 579.9,225.0 585.2,201.1 590.4,209.8 595.7,219.0 601.0,223.9 606.2,162.7 611.5,228.9 616.7,229.8 622.0,226.2 627.3,230.0 632.5,226.7 637.8,223.8 643.0,226.4 648.3,224.6 653.6,227.5 658.8,227.8 664.1,218.3 669.3,219.3 674.6,214.8 679.9,220.5 685.1,217.7 690.4,204.6 695.6,219.1 700.9,229.6 706.1,208.0 711.4,159.2 716.7,189.7 721.9,163.3 727.2,176.3 732.4,180.2 737.7,227.4 743.0,191.0 748.2,206.0 753.5,210.9 758.7,221.4 764.0,226.0 769.3,22.1 774.5,155.2 779.8,207.3 785.0,148.5 790.3,228.7 795.6,201.4 800.8,144.7 806.1,227.6 811.3,225.9 816.6,226.9 821.9,174.1 827.1,183.0 832.4,108.6 837.6,128.1 842.9,176.0 848.1,104.0 853.4,189.7 858.7,177.1 863.9,209.5 869.2,224.9 874.4,222.9 879.7,192.4 885.0,125.4 890.2,183.7 895.5,125.3 900.7,155.0 906.0,165.1\" fill=\"none\" stroke=\"#2a78d6\" stroke-width=\"1.75\" stroke-linejoin=\"round\"><\/polyline><circle cx=\"769.3\" cy=\"22.1\" r=\"4\" fill=\"#2a78d6\" stroke=\"#fcfcfd\" stroke-width=\"2\"><\/circle><text x=\"760.2592592592592\" y=\"26.099999999999994\" fill=\"#101319\" font-size=\"11.5\" text-anchor=\"end\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\">24,750 lines in one week<\/text><\/svg><figcaption style=\"font-size:13.5px;color:#4b515c;margin-top:12px;padding-top:12px;border-top:1px solid rgba(16,19,25,.10)\">163 working weeks. Eight people have touched this repository, but 126 of those weeks were solo \u2014 and the tallest week in its history, 24,750 lines, is one person alone in 2026.<\/figcaption><\/figure><p style=\"margin:0 0 18px;line-height:1.62\">Note what the two panels do <em style=\"font-style:italic\">not<\/em> do: track each other. Headcount peaks in the middle years while output stays flat. The step change arrives long after the team has gone.<\/p><h2 style=\"font-size:23px;line-height:1.25;letter-spacing:-.018em;font-weight:600;margin:40px 0 12px\">Normalized to the peak<\/h2><p style=\"margin:0 0 18px;line-height:1.62\">Same working weeks, now scaled against the biggest one so the trajectory is readable on a single axis.<\/p><figure style=\"background:#fcfcfd;border:1px solid rgba(16,19,25,.10);border-radius:7px;color:#101319;max-width:100%;margin:30px 0;padding:18px 18px 12px\"><svg style=\"display:block;width:100%;height:auto\" viewBox=\"0 0 920 298\" role=\"img\" aria-label=\"The 163 working weeks in order, each as a percentage of the largest week\"><text x=\"50\" y=\"14\" fill=\"#4b515c\" font-size=\"10.5\" text-anchor=\"start\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\">EACH WORKING WEEK AS A SHARE OF THE BIGGEST WEEK<\/text><line x1=\"50\" x2=\"856\" y1=\"272.0\" y2=\"272.0\" stroke=\"#e4e7ec\" stroke-width=\"1\"><\/line><text x=\"41\" y=\"272.0\" fill=\"#858b96\" font-size=\"11\" text-anchor=\"end\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\" dominant-baseline=\"middle\">0%<\/text><line x1=\"50\" x2=\"856\" y1=\"209.5\" y2=\"209.5\" stroke=\"#e4e7ec\" stroke-width=\"1\"><\/line><text x=\"41\" y=\"209.5\" fill=\"#858b96\" font-size=\"11\" text-anchor=\"end\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\" dominant-baseline=\"middle\">25%<\/text><line x1=\"50\" x2=\"856\" y1=\"147.0\" y2=\"147.0\" stroke=\"#e4e7ec\" stroke-width=\"1\"><\/line><text x=\"41\" y=\"147.0\" fill=\"#858b96\" font-size=\"11\" text-anchor=\"end\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\" dominant-baseline=\"middle\">50%<\/text><line x1=\"50\" x2=\"856\" y1=\"84.5\" y2=\"84.5\" stroke=\"#e4e7ec\" stroke-width=\"1\"><\/line><text x=\"41\" y=\"84.5\" fill=\"#858b96\" font-size=\"11\" text-anchor=\"end\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\" dominant-baseline=\"middle\">75%<\/text><line x1=\"50\" x2=\"856\" y1=\"22.0\" y2=\"22.0\" stroke=\"#e4e7ec\" stroke-width=\"1\"><\/line><text x=\"41\" y=\"22.0\" fill=\"#858b96\" font-size=\"11\" text-anchor=\"end\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\" dominant-baseline=\"middle\">100%<\/text><text x=\"50.0\" y=\"289\" fill=\"#4b515c\" font-size=\"11\" text-anchor=\"start\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\">2022<\/text><line x1=\"179.4\" x2=\"179.4\" y1=\"22\" y2=\"272\" stroke=\"#c5cad2\" stroke-width=\"1\" stroke-dasharray=\"2 4\" opacity=\".5\"><\/line><text x=\"179.4\" y=\"289\" fill=\"#4b515c\" font-size=\"11\" text-anchor=\"middle\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\">2023<\/text><line x1=\"408.2\" x2=\"408.2\" y1=\"22\" y2=\"272\" stroke=\"#c5cad2\" stroke-width=\"1\" stroke-dasharray=\"2 4\" opacity=\".5\"><\/line><text x=\"408.2\" y=\"289\" fill=\"#4b515c\" font-size=\"11\" text-anchor=\"middle\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\">2024<\/text><line x1=\"597.3\" x2=\"597.3\" y1=\"22\" y2=\"272\" stroke=\"#c5cad2\" stroke-width=\"1\" stroke-dasharray=\"2 4\" opacity=\".5\"><\/line><text x=\"597.3\" y=\"289\" fill=\"#4b515c\" font-size=\"11\" text-anchor=\"middle\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\">2025<\/text><line x1=\"696.8\" x2=\"696.8\" y1=\"22\" y2=\"272\" stroke=\"#c5cad2\" stroke-width=\"1\" stroke-dasharray=\"2 4\" opacity=\".5\"><\/line><text x=\"696.8\" y=\"289\" fill=\"#4b515c\" font-size=\"11\" text-anchor=\"middle\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\">2026<\/text><line x1=\"50\" x2=\"856\" y1=\"272\" y2=\"272\" stroke=\"#c5cad2\" stroke-width=\"1\"><\/line><polygon points=\"50,272 50.0,271.0 55.0,260.5 60.0,257.5 64.9,261.2 69.9,270.0 74.9,266.8 79.9,267.5 84.8,271.2 89.8,265.5 94.8,269.2 99.8,270.0 104.7,268.8 109.7,263.8 114.7,244.5 119.7,269.8 124.6,263.5 129.6,260.5 134.6,265.8 139.6,260.5 144.5,268.2 149.5,269.8 154.5,270.8 159.5,248.8 164.4,268.5 169.4,269.2 174.4,272.0 179.4,271.2 184.3,252.8 189.3,267.8 194.3,265.0 199.3,260.0 204.2,264.0 209.2,270.2 214.2,215.8 219.2,193.0 224.1,239.2 229.1,136.8 234.1,231.0 239.1,243.0 244.0,268.0 249.0,252.2 254.0,271.2 259.0,267.8 263.9,267.2 268.9,271.8 273.9,270.0 278.9,271.8 283.8,270.2 288.8,268.8 293.8,271.8 298.8,272.0 303.7,243.5 308.7,271.2 313.7,270.0 318.7,239.8 323.6,263.2 328.6,272.0 333.6,264.5 338.6,269.2 343.5,270.5 348.5,260.8 353.5,271.5 358.5,271.8 363.4,271.0 368.4,271.8 373.4,270.0 378.4,270.2 383.3,259.2 388.3,265.8 393.3,268.8 398.3,267.5 403.2,257.5 408.2,261.8 413.2,257.2 418.2,268.8 423.1,238.8 428.1,250.8 433.1,240.5 438.1,245.2 443.0,243.5 448.0,227.5 453.0,248.8 458.0,249.2 463.0,254.2 467.9,220.2 472.9,250.8 477.9,258.2 482.9,270.2 487.8,242.5 492.8,259.2 497.8,271.5 502.8,264.5 507.7,263.8 512.7,272.0 517.7,270.8 522.7,272.0 527.6,221.2 532.6,261.2 537.6,183.5 542.6,258.2 547.5,266.0 552.5,237.2 557.5,247.8 562.5,258.8 567.4,264.8 572.4,191.0 577.4,270.8 582.4,271.8 587.3,267.5 592.3,272.0 597.3,268.0 602.3,264.5 607.2,267.8 612.2,265.5 617.2,269.0 622.2,269.5 627.1,258.0 632.1,259.2 637.1,253.8 642.1,260.5 647.0,257.2 652.0,241.5 657.0,258.8 662.0,271.5 666.9,245.5 671.9,187.0 676.9,223.5 681.9,191.8 686.8,207.5 691.8,212.2 696.8,269.0 701.8,225.2 706.7,243.2 711.7,249.0 716.7,261.5 721.7,267.2 726.6,22.0 731.6,182.0 736.6,244.8 741.6,174.0 746.5,270.5 751.5,237.5 756.5,169.5 761.5,269.2 766.4,267.0 771.4,268.2 776.4,204.8 781.4,215.5 786.3,126.0 791.3,149.5 796.3,207.0 801.3,120.5 806.2,223.5 811.2,208.5 816.2,247.2 821.2,265.8 826.1,263.5 831.1,226.8 836.1,146.2 841.1,216.2 846.0,146.0 851.0,181.8 856.0,194.0 856,272\" fill=\"rgba(42,120,214,.13)\"><\/polygon><polyline points=\"50.0,271.0 55.0,260.5 60.0,257.5 64.9,261.2 69.9,270.0 74.9,266.8 79.9,267.5 84.8,271.2 89.8,265.5 94.8,269.2 99.8,270.0 104.7,268.8 109.7,263.8 114.7,244.5 119.7,269.8 124.6,263.5 129.6,260.5 134.6,265.8 139.6,260.5 144.5,268.2 149.5,269.8 154.5,270.8 159.5,248.8 164.4,268.5 169.4,269.2 174.4,272.0 179.4,271.2 184.3,252.8 189.3,267.8 194.3,265.0 199.3,260.0 204.2,264.0 209.2,270.2 214.2,215.8 219.2,193.0 224.1,239.2 229.1,136.8 234.1,231.0 239.1,243.0 244.0,268.0 249.0,252.2 254.0,271.2 259.0,267.8 263.9,267.2 268.9,271.8 273.9,270.0 278.9,271.8 283.8,270.2 288.8,268.8 293.8,271.8 298.8,272.0 303.7,243.5 308.7,271.2 313.7,270.0 318.7,239.8 323.6,263.2 328.6,272.0 333.6,264.5 338.6,269.2 343.5,270.5 348.5,260.8 353.5,271.5 358.5,271.8 363.4,271.0 368.4,271.8 373.4,270.0 378.4,270.2 383.3,259.2 388.3,265.8 393.3,268.8 398.3,267.5 403.2,257.5 408.2,261.8 413.2,257.2 418.2,268.8 423.1,238.8 428.1,250.8 433.1,240.5 438.1,245.2 443.0,243.5 448.0,227.5 453.0,248.8 458.0,249.2 463.0,254.2 467.9,220.2 472.9,250.8 477.9,258.2 482.9,270.2 487.8,242.5 492.8,259.2 497.8,271.5 502.8,264.5 507.7,263.8 512.7,272.0 517.7,270.8 522.7,272.0 527.6,221.2 532.6,261.2 537.6,183.5 542.6,258.2 547.5,266.0 552.5,237.2 557.5,247.8 562.5,258.8 567.4,264.8 572.4,191.0 577.4,270.8 582.4,271.8 587.3,267.5 592.3,272.0 597.3,268.0 602.3,264.5 607.2,267.8 612.2,265.5 617.2,269.0 622.2,269.5 627.1,258.0 632.1,259.2 637.1,253.8 642.1,260.5 647.0,257.2 652.0,241.5 657.0,258.8 662.0,271.5 666.9,245.5 671.9,187.0 676.9,223.5 681.9,191.8 686.8,207.5 691.8,212.2 696.8,269.0 701.8,225.2 706.7,243.2 711.7,249.0 716.7,261.5 721.7,267.2 726.6,22.0 731.6,182.0 736.6,244.8 741.6,174.0 746.5,270.5 751.5,237.5 756.5,169.5 761.5,269.2 766.4,267.0 771.4,268.2 776.4,204.8 781.4,215.5 786.3,126.0 791.3,149.5 796.3,207.0 801.3,120.5 806.2,223.5 811.2,208.5 816.2,247.2 821.2,265.8 826.1,263.5 831.1,226.8 836.1,146.2 841.1,216.2 846.0,146.0 851.0,181.8 856.0,194.0\" fill=\"none\" stroke=\"#2a78d6\" stroke-width=\"1.75\" stroke-linejoin=\"round\"><\/polyline><line x1=\"50\" x2=\"856\" y1=\"223.6\" y2=\"223.6\" stroke=\"#1baf7a\" stroke-width=\"1.5\"><\/line><text x=\"56\" y=\"216.6\" fill=\"#1baf7a\" font-size=\"11\" text-anchor=\"start\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\">2026 median developer-week<\/text><line x1=\"50\" x2=\"856\" y1=\"269.1\" y2=\"269.1\" stroke=\"#1baf7a\" stroke-width=\"1.5\"><\/line><text x=\"56\" y=\"262.1\" fill=\"#1baf7a\" font-size=\"11\" text-anchor=\"start\" font-family=\"'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace\">2022 median developer-week<\/text><path d=\"M823,223.6 L830,223.6 L830,269.1 L823,269.1\" fill=\"none\" stroke=\"#858b96\" stroke-width=\"1\"><\/path><text x=\"837\" y=\"246.3625\" fill=\"#101319\" font-size=\"15\" text-anchor=\"start\" font-family=\"'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif\" font-weight=\"600\" dominant-baseline=\"middle\">16.8\u00d7<\/text><\/svg><figcaption style=\"font-size:13.5px;color:#4b515c;margin-top:12px;padding-top:12px;border-top:1px solid rgba(16,19,25,.10)\">The median working week is 4.2% of peak and only six weeks ever cleared half. The horizontal rules mark the median developer-week in 2022 and in 2026 \u2014 the same 16.8\u00d7 read straight off the vertical axis.<\/figcaption><\/figure><h2 style=\"font-size:23px;line-height:1.25;letter-spacing:-.018em;font-weight:600;margin:40px 0 12px\">Per developer<\/h2><p style=\"margin:0 0 18px;line-height:1.62\">Each week&#8217;s churn is divided by the number of people who committed <em style=\"font-style:italic\">that week<\/em>, and the median is taken across the year&#8217;s working weeks.<\/p><figure style=\"background:#fcfcfd;border:1px solid rgba(16,19,25,.10);border-radius:7px;color:#101319;max-width:100%;margin:30px 0;padding:18px 18px 12px\"><div style=\"display:flex;flex-direction:column;gap:10px;margin:4px 0\"><div style=\"display:grid;grid-template-columns:66px 1fr 78px;align-items:center;gap:14px\"><span style=\"font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-size:13px;color:#4b515c\">2022<\/span><span style=\"height:19px;background:#eef0f4;border-radius:2px 4px 4px 2px\"><span style=\"display:block;height:100%;background:#2a78d6;border-radius:2px 4px 4px 2px\"><\/span><\/span><span style=\"font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-size:13px;font-variant-numeric:tabular-nums;text-align:right;color:#101319\">285<\/span><\/div><div style=\"display:grid;grid-template-columns:66px 1fr 78px;align-items:center;gap:14px\"><span style=\"font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-size:13px;color:#4b515c\">2023<\/span><span style=\"height:19px;background:#eef0f4;border-radius:2px 4px 4px 2px\"><span style=\"display:block;height:100%;background:#2a78d6;border-radius:2px 4px 4px 2px\"><\/span><\/span><span style=\"font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-size:13px;font-variant-numeric:tabular-nums;text-align:right;color:#101319\">274<\/span><\/div><div style=\"display:grid;grid-template-columns:66px 1fr 78px;align-items:center;gap:14px\"><span style=\"font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-size:13px;color:#4b515c\">2024<\/span><span style=\"height:19px;background:#eef0f4;border-radius:2px 4px 4px 2px\"><span style=\"display:block;height:100%;background:#2a78d6;border-radius:2px 4px 4px 2px\"><\/span><\/span><span style=\"font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-size:13px;font-variant-numeric:tabular-nums;text-align:right;color:#101319\">1,285<\/span><\/div><div style=\"display:grid;grid-template-columns:66px 1fr 78px;align-items:center;gap:14px\"><span style=\"font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-size:13px;color:#4b515c\">2025<\/span><span style=\"height:19px;background:#eef0f4;border-radius:2px 4px 4px 2px\"><span style=\"display:block;height:100%;background:#2a78d6;border-radius:2px 4px 4px 2px\"><\/span><\/span><span style=\"font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-size:13px;font-variant-numeric:tabular-nums;text-align:right;color:#101319\">1,345<\/span><\/div><div style=\"display:grid;grid-template-columns:66px 1fr 78px;align-items:center;gap:14px\"><span style=\"font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-size:13px;color:#4b515c\">2026<\/span><span style=\"height:19px;background:#eef0f4;border-radius:2px 4px 4px 2px\"><span style=\"display:block;height:100%;background:#2a78d6;border-radius:2px 4px 4px 2px\"><\/span><\/span><span style=\"font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-size:13px;font-variant-numeric:tabular-nums;text-align:right;color:#101319\">4,792<\/span><\/div><\/div><figcaption style=\"font-size:13.5px;color:#4b515c;margin-top:12px;padding-top:12px;border-top:1px solid rgba(16,19,25,.10)\">Median developer-week, in lines of authored source. Median rather than mean: 2026&#8217;s mean is 6,040, inflated by that one 24,750-line week. The median is the smaller, more defensible number.<\/figcaption><\/figure><table style=\"width:100%;border-collapse:collapse;font-size:14.5px;margin:0 0 22px\"><tbody><tr><th style=\"text-align:left;font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;opacity:.62;font-weight:500;padding:0 14px 8px 0;border-bottom:1px solid rgba(128,128,132,.28)\">Year<\/th><th style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">Median developer-week<\/th><th style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">vs. 2022<\/th><\/tr><tr><td style=\"padding:9px 14px 9px 0;border-bottom:1px solid rgba(128,128,132,.28)\">2022<\/td><td style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">285<\/td><td style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">1.0\u00d7<\/td><\/tr><tr><td style=\"padding:9px 14px 9px 0;border-bottom:1px solid rgba(128,128,132,.28)\">2023<\/td><td style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">274<\/td><td style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">0.96\u00d7<\/td><\/tr><tr><td style=\"padding:9px 14px 9px 0;border-bottom:1px solid rgba(128,128,132,.28)\">2024<\/td><td style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">1,285<\/td><td style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">4.5\u00d7<\/td><\/tr><tr><td style=\"padding:9px 14px 9px 0;border-bottom:1px solid rgba(128,128,132,.28)\">2025<\/td><td style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">1,345<\/td><td style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">4.7\u00d7<\/td><\/tr><tr><td style=\"padding:9px 14px 9px 0;border-bottom:1px solid rgba(128,128,132,.28)\">2026<\/td><td style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">4,792<\/td><td style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">16.8\u00d7<\/td><\/tr><\/tbody><\/table><h2 style=\"font-size:23px;line-height:1.25;letter-spacing:-.018em;font-weight:600;margin:40px 0 12px\">When the bots arrived<\/h2><p style=\"margin:0 0 18px;line-height:1.62\">I do not know when the bots arrived exactly. But the internet believes the co-pilot visual code free trial began in December 2024 and I am sure I was using it in early 2025. Now you can argue that productivity did not immediately increase due to 1) poor peformance in models, 2) user learning curve. But you can see a definitive increase in lines per week in early 2026.&nbsp; Claude Opus 4.5 was released in November 24, 2025. You can see a definitive step up in productivity in 2026. While Opus may take a lot of credit, I also have to credit my own work flow as a significant contributor (you will have to trust me). You can read about my work flow here: <a style=\"color:#2a78d6\" href=\"https:\/\/davidwdrell.net\/wordpress\/?p=537\" target=\"_blank\" rel=\"noopener noreferrer\">my workflow<\/a>.<\/p><p style=\"margin:0 0 18px;line-height:1.62\">Splitting 2026 on that boundary:<\/p><table style=\"width:100%;border-collapse:collapse;font-size:14.5px;margin:0 0 22px\"><tbody><tr><th style=\"text-align:left;font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;opacity:.62;font-weight:500;padding:0 14px 8px 0;border-bottom:1px solid rgba(128,128,132,.28)\">Period<\/th><th style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">Median developer-week<\/th><th style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">vs. 2022<\/th><th style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">vs. 2025<\/th><\/tr><tr><td style=\"padding:9px 14px 9px 0;border-bottom:1px solid rgba(128,128,132,.28)\">Before the instruction files<\/td><td style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">2,487<\/td><td style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">8.7\u00d7<\/td><td style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">1.8\u00d7<\/td><\/tr><tr style=\"font-weight:600\"><td style=\"padding:9px 14px 9px 0;border-bottom:1px solid rgba(128,128,132,.28)\">After the instruction files<\/td><td style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">6,434<\/td><td style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">22.6\u00d7<\/td><td style=\"text-align:right;padding:9px 0 9px 14px;border-bottom:1px solid rgba(128,128,132,.28);font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-variant-numeric:tabular-nums\">4.8\u00d7<\/td><\/tr><\/tbody><\/table><p style=\"margin:0 0 18px;line-height:1.62\"><strong style=\"font-weight:600\">The second step is bigger than the first.<\/strong> Having an agent roughly doubled my weekly output. Writing down what the agent should do \u2014 the architecture rules, an explicit review checklist, a milestone workflow, per-subsystem instructions \u2014 roughly tripled it again.<\/p><p style=\"margin:0 0 18px;line-height:1.62\">That is the part worth taking away. The leverage was not in the tool alone; it was in finally committing to text the standards I had been carrying in my head for four years. The agent made that investment pay immediately, and it compounds: every rule I write once gets applied on every commit after it.<\/p><hr style=\"border:0;border-top:1px solid rgba(128,128,132,.28);margin:40px 0\"><p style=\"font-size:13.5px;opacity:.62;line-height:1.7\">Method: <code style=\"font-family:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;font-size:.86em;background:rgba(128,128,132,.14);padding:2px 5px;border-radius:3px\">git log --no-merges -M -C -l0 --numstat<\/code>, author date, ISO-8601 weeks. Merge commits excluded so their contents are not double-counted; binary files report no line counts and are omitted. Structural moves detected by blob identity as described above. Author identities merged across the several email addresses each person committed from.<\/p><\/article>\n\n","protected":false},"excerpt":{"rendered":"<p>Measuring four and a half years of commits How bots made me 16.8\u00d7 more productive, and I have the data [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-565","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/davidwdrell.net\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/565","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/davidwdrell.net\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/davidwdrell.net\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/davidwdrell.net\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/davidwdrell.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=565"}],"version-history":[{"count":10,"href":"https:\/\/davidwdrell.net\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/565\/revisions"}],"predecessor-version":[{"id":575,"href":"https:\/\/davidwdrell.net\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/565\/revisions\/575"}],"wp:attachment":[{"href":"https:\/\/davidwdrell.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=565"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/davidwdrell.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=565"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/davidwdrell.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=565"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}