Skip to content
Video knowledge
software-practices

TDD, pairing, trunk-based, no estimates: which practices does the evidence actually back?

Conference talks state them as laws. Most come out "partly": a real mechanism whose payoff depends on dose and context. This page lines up every claim against the studies that exist, and flags where the folklore and the data disagree.

Studies decide 59 claims; the rest use an AI guess, which counts for at most 50% confidence. 2 more videos had no captions and are not counted. How to read the verdict labels.

Bottom line: the advice is more confident than the evidence. Most practice claims come out "partly": a real mechanism whose payoff depends on dose and context, and only a minority have a study that settles them either way. Where studies do speak they mostly cut against folklore: TDD is no better than disciplined test-last, language choice barely moves bug rates and the big GitHub study did not replicate, organisational structure predicts defects better than code metrics, open-plan offices cut face-to-face talk rather than raising it, and recording your estimates does not make you better at estimating. Small changes, fast review and trunk-based delivery are the practices with the most consistent support.

The verdicts below update automatically as evidence is added; the bottom line is a hand-written summary of them.

Testing and TDD

Static vs dynamic typing

Pairing and code review

Microservices vs monolith

Estimation and agile

10x developers and productivity

Clean code and technical debt

Continuous delivery

Hours, interruptions and offices

Ranked by score, then novelty (rare claims that hold up, weighted by verdict confidence).

  1. What We Know We Don't Know
    Hillel Wayne · novelty 3.00

    Source list and FAQ for an empirical-software-engineering talk: code review, simple tests and sleep have evidence, TDD and language choice are mixed or null, and most beliefs remain untested.

    Show claims
    • Simple tests of error-handling paths could prevent most catastrophic failures in distributed systems

      Leans right

      “Simple Testing Can Prevent Most Critical Failures”

      only this source
    • Lines of code predict defects about as well as any complexity metric

      Leans right

      “Beyond Lines of Code: Do we Need More Complexity Metrics?”

      only this source
    • Organisational structure metrics predict defect-prone components better than code metrics

      Probably right

      “The Influence of Organizational Structure On Software Quality: An Empirical Case Study”

      only this source
    • Large-scale repository studies claiming some languages produce fewer bugs did not survive replication.

      Very likely right

      “A Large Scale Study of Programming Languages and Code Quality in Github (original faulty study)”

      1 of 3 sources
    • Test-driven development produces no better quality or productivity than other disciplined testing approaches.

      Probably right

      “Analyzing the Effects of Test Driven Development in GitHub (negative results)”

      1 of 3 sources
    • The most damaging software faults are design flaws rather than coding slips

      Leans partly right

      “Worst bugs are design bugs”

      only this source
    • Code review catches most of the defects in reviewed code.

      Leans partly right

      “there's more evidence that code review reduces bugs, and the evidence shows a bigger effect”

      1 of 2 sources
    • Pair programming shows little measurable effect on defects or productivity in controlled studies.

      Leans partly right

      “Pairing is nice, but it's not "continous code review."”

      1 of 2 sources
    • Abbreviated identifiers are no harder to debug than full-word identifiers.

      Leans partly right

      “Fixing Faults in C and Java Source Code: Abbreviated vs. Full-Word Identifier Names (preprint)”

      1 of 2 sources
    • Decomposing code into very small methods can go too far, producing shallow interfaces and entangled methods that are harder to read than one longer method

      Leans partly right

      “Small Functions Have Problems”

      1 of 2 sources
    • Many widely repeated software engineering facts trace back to sources that are missing, measure something else, or are methodologically flawed

      Leans partly right

      “There are many things in software we believe are true but very little we know.”

      1 of 3 sources
    • Sustained crunch lowers productivity and employee happiness

      Leans right

      “Impact of a Night of Sleep Deprivation on Novice Developers Performance”

      1 of 4 sources
  2. cmuratori-discussion/cleancodeqa.md at main · unclebob/cmuratori-discussion
    GitHub · novelty 2.78

    Muratori and Martin converge: clean-code structures do cost cycles, most business software can afford them, Clean Code teaching neglected performance, tests should be selective, and OO versus switch is a symmetric trade-off.

    Show claims
    • Choosing the right algorithm improves efficiency by many orders of magnitude while cycle-level tuning gives about one

      Leans right

      “Cycle-lean code can increase efficiency by an order of magnitude; but the right choice of algorithm can increase efficiency by many orders of magnitude.”

      only this source
    • Clean Code teaching gives performance almost no attention, so its audience learns to ignore it

      Leans right

      “not a single one of the things you mentioned here are discussed in the nine hour runtime”

      only this source
    • Interactive and visual behaviour such as GUIs and game feel cannot practically be test-driven because the correct answer is not known up front

      Leans right

      “I cannot practically write tests for things that I have to see in order to know that they work. GUIs, Game behaviors, Hardware interactions, etc.”

      only this source
    • Polymorphism makes adding new types easy while switch statements make adding new operations easy; neither is a free win

      Leans right

      “OO (Operand Primal) is a great way to add types to existing functions without changing those functions.”

      only this source
    • For most software, conserving programmer time matters more than conserving CPU cycles, so readability-first practices pay off

      Leans partly right

      “It is economically better for most organizations to conserve programmer cycles than computer cycles.”

      only this source
    • Dependency inversion via polymorphism protects high-level policy from recompilation and redeployment when low-level details change

      Leans partly right

      “it prevents changes at to low level modules from forcing a wave of recompilation and redeployment from sweeping through the system towards higher level modules”

      only this source
    • Applying design patterns such as factories everywhere makes code harder to understand than direct code

      Leans partly right

      “the idea of structuring code around swappable types is generally wrong”

      1 of 2 sources
    • How much to invest in tests depends on required feedback frequency, fidelity, overhead and the expected lifespan of the code.

      Untestable

      “tests that you don't use, or that don't find bugs, or that took longer to write and maintain than the number of bugs they prevented”

      1 of 3 sources
    • Preferring runtime polymorphism over switch statements makes code slower by forcing pointer indirection and hiding the code path from the compiler

      Leans right

      “Indeed, using those structures can cost you a lot of nanoseconds. They are not efficient at the nanosecond level.”

      1 of 5 sources
    • A trustworthy automated test suite lets developers change and deploy code without fear

      Leans partly right

      “When I have a suite of tests that I trust, and that has high coverage, I can refactor that code without fear.”

      1 of 5 sources
  3. code.talks 2023 - Our journey from Gitflow to Trunk Based Development
    code.talks (ehem. Developer Conference) · novelty 2.65

    Case study of a team moving from Gitflow to trunk-based development with feature flags and ephemeral per-branch environments, reporting more frequent releases and happier developers.

    Show claims
    • Reusing an old feature flag can switch on dormant code paths with catastrophic results

      Leans right

      “they recycled an old future flag and when they turn it on the last machine that did not receive the new version”

      only this source
    • Feature flags carry an ongoing removal cost that teams must schedule and pay back

      Leans right

      “we need to remove video Flex that there is an extra cost”

      only this source
    • Running a CI server is not continuous integration if branches live for days or weeks

      Leans right

      “it's not because you are using Jenkins GitHub gitlab Circle CI that you are doing continuous integration”

      1 of 2 sources
    • Feature flags let unfinished work merge to trunk and decouple deployment from release

      Leans right

      “we are actually decoupling deployment from release”

      1 of 2 sources
    • Trunk-based development only works with a fast comprehensive test suite and same-day code review

      Leans partly right

      “you need to have a pretty strong test Suite in terms of completeness a good coverage and it needs to execute fasts”

      only this source
    • Ephemeral per-branch environments remove the bottleneck of shared test environments

      Leans partly right

      “we remove the bottleneck okay it's been completely removed”

      only this source
    • Trunk-based development is unsuited to products that must tightly control released versions

      Leans partly right

      “maybe trunk base development is not suitable for you and git flow still is a good option”

      only this source
    • Developers who deploy their own work to production are happier because they see its impact

      Leans partly right

      “they are way much happier than before when they were just like okay I finished this feature somebody else is going to validate”

      only this source
    • Long-lived branches delay integration and produce merge conflicts that grow with team size

      Leans right

      “we spend a lot of time to handle conflicts because we have so many branches”

      1 of 4 sources
    • Trunk-based development with one small change per release increases release frequency and makes rollbacks easier

      Leans partly right

      “it also allows us to increase the release frequency to have much more stable iteration”

      1 of 5 sources
  4. Mutation Testing in Python with Cosmic Ray - Austin Bingham - NDC TechTown 2024
    NDC Conferences · novelty 2.38

    Austin Bingham explains mutation testing theory, its practical obstacles (runtime, equivalent mutants, unreachable code) and demonstrates the Cosmic Ray tool for Python.

    Show claims
    • Mutation score measures test suite quality better than coverage does

      Leans right

      “the quality of your tests can be gauged by the percentage of mutations killed”

      only this source
    • Mutation testing is too slow to run routinely without parallelisation or incremental selection

      Leans right

      “it is just not practical to do on a frequent basis”

      only this source
    • Equivalent mutants cannot be detected automatically and require human judgment

      Probably right

      “it is not really detectable in any practical way”

      only this source
    • Line coverage shows code was executed, not that the tests check its behaviour

      Probably right

      “it's not really telling you that your tests are that you understand what your program is doing”

      1 of 3 sources
    • A surviving mutant reveals either a missing test or code that can be removed

      Leans partly right

      “your tests are inadequate to protect this change this Behavior modifying change or the code that was mutated is extraneous”

      only this source
    • Higher-level behavioural tests make mutation testing more practical than many fine-grained unit tests

      Unknown

      “when I have higher level tests that tests my functionality that that is probably one of the keys to Breaking the time barrier”

      only this source
    • Full line coverage is relatively easy to reach when a team is motivated

      Leans partly right

      “that's actually relatively easy to get if you're if you're motivated to do it”

      only this source
    • Writing tests first forces the code to be decoupled and testable by construction

      Leans partly right

      “good testing results in better design almost always in my experience”

      1 of 6 sources
  5. Physiological Effects of Crunch: A Look at the Science
    GDC Festival of Gaming · novelty 2.29

    GDC talk reviewing peer-reviewed research on crunch: cognitive decline past moderate hours, net productivity loss, health damage, and sleep loss as intoxication.

    Show claims
    • Long working hours raise rates of injury, illness, cardiovascular disease and mental health problems through chronic stress.

      Leans right

      “a very clear linear relationship between hours worked above 8 a day or 40 a week with greater incidence of injury or illness”

      only this source
    • Caffeine tolerance builds within days, so it cannot offset extended overtime.

      Leans right

      “you reach caffeine tolerance shockingly quickly it takes about a week”

      only this source
    • Crunch does not improve product outcomes; it correlates with slightly worse ones.

      Leans right

      “there is a very mild negative correlation between working overtime and making a successful game”

      1 of 2 sources
    • Sleep deprivation impairs cognition like alcohol intoxication and blinds people to their own impairment.

      Leans right

      “going without sleep it turns out physiologically is almost indistinguishable from drinking alcohol”

      1 of 3 sources
    • Letting workers choose their own hours improves satisfaction, health and productivity.

      Leans partly right

      “allowing people flexible time over their schedules whether in crunch or not has basically nothing but positive effects”

      only this source
    • A full day of rest after a missed night of sleep does not restore performance to baseline.

      Leans partly right

      “even after a full night's sleep and a full day off test subjects were not recovered all the way back to their baseline levels”

      only this source
    • Fatigue raises the rate of catastrophic errors, so an overworked team can make net negative progress.

      Leans partly right

      “the more fatigued someone is the more likely they are to make catastrophic errors”

      1 of 2 sources
    • Crunch is a symptom of poor planning, especially failing to schedule testing and iteration time

      Leans partly right

      “the cause of crunch is usually not uh is usually not a skill problem or a laziness problem it's an unrealistic schedule”

      1 of 2 sources
    • Sustained crunch lowers productivity and employee happiness

      Leans right

      “once you get past 60 hours your cognitive function is actually worse than someone who wasn't working at all”

      1 of 4 sources

Next: Critique - Google's Code Review Tool | Reaction (2.06), Microservices, Where Did It All Go Wrong • Ian Cooper • GOTO 2024 (2.05), Laurence Tratt: Another Non-Argument in Type Systems (1.88), Don’t Feature Branch | Dave Farley’s Weblog (1.82), Trunk Based Development (1.63).

The claim's deciding verdict is "wrong". The stat line shows whether a study decided it or only the AI guess.

Estimation is a learnable skill: recording estimates and comparing them to outcomes calibrates future estimates

Leans wrong

Independent studies of the Personal Software Process, which records estimates and analyses deviations from actuals, found no improvement in estimation accuracy, and a feedback-and-lessons-learned programme likewise produced none versus untrained controls.

· denied 0 ·
Show
  • Software Estimation Is Hard. Do It Anyway. - Jacob Kaplan-Moss (jacobian.org)“If you get in the habit of breaking projects down and making timeline estimates, you can review those estimates against reality and recalibrate.”
  • Leans partly right AI guessJorgensen's reviews find feedback and decomposition improve estimates modestly, but overconfidence persists even in experts.
  • Leans wrong Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 2375-2389Independent studies of the Personal Software Process, which records estimates and analyses deviations from actuals, found no improvement in estimation accuracy, and a feedback-and-lessons-learned programme likewise produced none versus untrained controls.
  • Leans partly right Jørgensen 2004 (expert estimation) lines 1092-1103The only software study found outcome feedback (estimate vs actual) did not improve accuracy, consistent with other domains, though it does improve assessment of estimate uncertainty; task-relation feedback is needed for accuracy gains.

Pairing's value cannot be proven scientifically because development output is too hard to measure, so teams must try it themselves

Leans wrong

The review describes research on particular practices like pair programming as at an intermediate or even mature state, and cites an earlier review calling pair programming supported by a well-established research stream; the evidence may be mixed, but the authors treat it as a scientifically studiable question, not an unmeasurable one.

· denied 0 ·
Show
  • On Pair Programming (martinfowler.com)“Staunch opponents of pairing will always find ways to poke holes into the reproducibility”
  • Leans wrong Dybå & Dingsøyr 2008 (agile review) lines 1315-1319The review describes research on particular practices like pair programming as at an intermediate or even mature state, and cites an earlier review calling pair programming supported by a well-established research stream; the evidence may be mixed, but the authors treat it as a scientifically studiable question, not an unmeasurable one.
  • Untestable AI guessEpistemic framing.

Per-change pull request gates break down under continuous delivery with many deployments a day

Leans wrong

More than 25,000 Google developers put about 20,000 changes a day through mandatory per-change review into one trunk, with median latency under 4 hours and developers confirming the process works well at scale; one highly tuned company, not a GitHub pull-request setup.

· denied 0 ·
Show
  • "Pair Programming Fixed Our Pull Request Bottlenecks" (Modern Software Engineering)“If all of these four are to create pull requests all the time for all of the small changes, the team will break down immediately”
  • Leans partly right AI guessGoogle and others sustain high deploy rates with change-based review; the claim holds only when review latency is high.
  • Leans wrong Sadowski et al. 2018 (Google code review) lines 31-34More than 25,000 Google developers put about 20,000 changes a day through mandatory per-change review into one trunk, with median latency under 4 hours and developers confirming the process works well at scale; one highly tuned company, not a GitHub pull-request setup.
  • Leans partly right DORA State of DevOps 2019 lines 1297-1299DORA says approving each individual change by an external board is impossible in the continuous paradigm, but it recommends shifting to per-change peer review by a teammate during development, so the breakdown applies to external gates, not to peer review itself.

Relative-size estimation is more accurate than time estimates for complex or uncertain work

Leans wrong

Few studies exist; relative estimation improved accuracy in some contexts and worsened it in others, and the authors conclude relative predictions are generally not more accurate than absolute ones and bias estimates when tasks differ much in size.

· denied 0 ·
Show
  • Why Story Points Are a Complete Waste of Time (Lead Prompt Podcast)“This is more accurate for complex or uncertain work and avoids the pitfalls of timebased estimates which can quickly become inaccurate.”
  • Leans wrong Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 4210-4227Few studies exist; relative estimation improved accuracy in some contexts and worsened it in others, and the authors conclude relative predictions are generally not more accurate than absolute ones and bias estimates when tasks differ much in size.
  • Leans partly right AI guessComparison-based estimation has some support, but experiments do not show story points beating well-calibrated hour estimates.

Time spent estimating is wasted and better spent building

Leans wrong

The review's authors reject the NoEstimates position that predictions are a waste as unrealistic, noting that extrapolating progress is itself a time prediction and that judgement-based predictions are on average fairly accurate (20-30% error).

· denied 0 ·
Show
  • Why Story Points Are a Complete Waste of Time (Lead Prompt Podcast)“I believe all estimates are a waste of valuable time that could be better spent actually building something.”
  • Leans wrong Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 4313-4321The review's authors reject the NoEstimates position that predictions are a waste as unrealistic, noting that extrapolating progress is itself a time prediction and that judgement-based predictions are on average fairly accurate (20-30% error).
  • Leans partly right AI guessEstimation has coordination and prioritization value; NoEstimates works in some contexts but not where commitments are needed.

Claims some sources assert and others deny.

Slow UI-driven end-to-end test suites are fragile and break on cosmetic changes

Leans right

Flaky and brittle UI tests are extensively documented in industry reports and flaky-test research, which is why the test pyramid pushes coverage downward.

· ·
Show

Showing 413 of 413 claims.

Microservices cost more in the short term and rarely save money

Leans right

Operational overhead of distributed systems is well documented and several public cases of consolidating back to a monolith cite cost; evidence is case studies not controlled data.

· denied 0 ·
Show

Writing tests first forces the code to be decoupled and testable by construction

Leans partly right

Studies of TDD find modest improvements in some internal quality metrics such as coupling and cohesion, with mixed results overall and effects that depend on developer experience.

· denied 0 ·
Show

Pairing or mobbing puts the best of each participant into the code and rarely the worst

Leans partly right

Pair programming meta-analyses show modest quality gains at higher effort, with effects depending on task complexity and pair expertise; no measurement exists for mobs.

· denied 0 ·
Show

A single-process monolith is the right default and microservices need a specific justifying outcome

Leans right

A footnote states it is important to avoid premature decomposition of new systems into services, which can inhibit delivery performance, citing Fowler's MonolithFirst; this is an authorial assertion, not a measured result.

· denied 0 ·
Show
  • When To Use Microservices (And When Not To!) • Sam Newman & Martin Fowler • GOTO 2020 (GOTO Conferences)“my default is a single process monolithic application simple deployment topology you sidestep lots of issues”
  • Microservice Premium (martinfowler.com)“The majority of software systems should be built as a single monolithic application.”
  • Monolith First (martinfowler.com)“you should build a new application as a monolith initially, even if you think it's likely that it will benefit from a microservices architecture later on”
  • Deconstructing the Monolith - Shopify (Shopify)“no architecture is often the best architecture in the early days of a system”
  • The Majestic Monolith can become The Citadel (Signal v. Noise)“the vast majority of web applications will continue to be served well by The Majestic Monolith for their entire lifespan”
  • The Majestic Monolith (Signal v. Noise)“Integrate your systems until it’s impossible for one person to hold it all in their head.”
  • Leans right DORA State of DevOps 2019 lines 1091-1092A footnote states it is important to avoid premature decomposition of new systems into services, which can inhibit delivery performance, citing Fowler's MonolithFirst; this is an authorial assertion, not a measured result.
  • Untestable AI guessArchitecture advice whose correctness depends on context; widely endorsed but not something a study can settle.

Smaller changes mean less rework, fewer incidents and faster restoration

Leans partly right

DORA's small-batch findings and defect-per-line research support the direction, but the evidence is correlational and vendor-sourced.

· denied 0 ·
Show
  • DORA Metrics: We've Been Using Them Wrong (LinearB)“smaller PRS means less churn because there's less to review less back and forth”
  • Accelerate: The State of DevOps with Dr. Nicole Forsgren (Scott Hanselman)“when you do introduce code you're introducing very very small pieces of code so that introduction is small it has a small blast radius”
  • The Key to High Performance: What the Data Says - Dr. Nicole Forsgren (IT Revolution)“they have a much smaller blast radius and it's much much easier to identify what those changes are”
  • The Rationale for Continuous Delivery • Dave Farley • YOW! 2018 (GOTO Conferences)“each change is so small and simple and easy to reason about, it's trivial to to revert it if you need to”
  • Small CLs (eng-practices)“Since you’re making fewer changes, it’s easier for you and your reviewer to reason effectively about the impact of the CL”
  • The ideal PR is 50 lines long (Graphite)“They’re 15% less likely to be reverted than 250-line changes”
  • Leans partly right AI guessDORA's small-batch findings and defect-per-line research support the direction, but the evidence is correlational and vendor-sourced.
  • Leans partly right DORA State of DevOps 2019 lines 1272-1283DORA tested whether extra approvals lead to larger, less frequent batches with higher impact and higher change failure rates and reports the hypothesis was supported, linking batch size to incident rate; rework and restoration time are not tied to change size directly.

Test-first development reduces time spent debugging

Leans partly right

Controlled studies show TDD lowers defect density at some cost in development time; direct measurements of debugging time are scarce.

· denied 0 ·
Show

A trustworthy automated test suite lets developers change and deploy code without fear

Leans partly right

Survey research such as DORA links reliable test automation with higher delivery confidence and performance, but the direction of causation is not isolated.

· denied 0 ·
Show

Mob programming onboards new members quickly and spreads knowledge so the team does not depend on one person

Leans partly right

Case studies and surveys of mob teams consistently report faster knowledge spread, but no study measures onboarding time against a control.

· denied 0 ·
Show

Static typing catches type errors at compile time before code reaches users

Probably right

Journal version of the same experiment: the compiler points to the exact location of a type error, whereas the dynamic system finds it at run time with symptoms that may appear far from the cause, which is why Groovy subjects needed more navigation and more test runs.

· denied 0 ·
Show
  • Code Faster or Safer? Static vs Dynamic Typing (deep dive dev)“type errors happen at compilation time before the code is ever ran”
  • Why Static Typing Came Back • Richard Feldman • GOTO 2022 (GOTO Conferences)“all of these things do not have any nil null or undefined errors in production all of them 100 have been caught at build time”
  • Under Deconstruction: The State of Shopify’s Monolith - Shopify (Shopify)“it has barely any runtime performance impact, it’s more stable, and it provides advanced features like interfaces”
  • Laurence Tratt: Dynamically Typed Languages (tratt.net)“statically typed programs have an implicit form of documentation within them, which happens to be machine checkable”
  • Review: A Philosophy of Software Design by John Ousterhout (Yevgeniy Brikman)“A very closely related idea that this book misses is to “make illegal states unrepresentable.””
  • Very likely right AI guessTrue by definition for the class of errors the type checker covers; studies estimate roughly fifteen percent of real JavaScript bugs would have been caught by a type checker, so the benefit is real but bounded.
  • Probably right Kleinschmager et al. 2012 (static types) lines 246-249In the type-error tasks the Java version simply failed to compile while the Groovy version only surfaced the error as a failing test at run time; the experiment is built on exactly this compile-time-versus-run-time difference.
  • Probably right Hanenberg et al. 2014 (static types) lines 1365-1371Journal version of the same experiment: the compiler points to the exact location of a type error, whereas the dynamic system finds it at run time with symptoms that may appear far from the cause, which is why Groovy subjects needed more navigation and more test runs.
  • Leans right Gao, Bird & Barr 2017 (types vs JS bugs) lines 24-31Adding Flow or TypeScript annotations to 400 fixed public JavaScript bugs (which had already survived testing and review) made the type checker flag 15% of them, so those would have been caught before release; the other 85% are not type errors.
  • Leans right Ray et al. 2014 (languages on GitHub) lines 600-605In the GitHub corpus 122 runtime-error bug fixes appear in JavaScript projects but not TypeScript ones, while TypeScript projects log more type-related fixes because the compiler flags them during development; observational and the TypeScript sample was later found to be mislabelled.

Trunk-based development with one small change per release increases release frequency and makes rollbacks easier

Leans partly right

DORA data correlate trunk-based development with better delivery metrics and small changes are easier to revert, but the gains are correlational and the team's own numbers are self-reported.

· denied 0 ·
Show
  • code.talks 2023 - Our journey from Gitflow to Trunk Based Development (code.talks (ehem. Developer Conference))“it also allows us to increase the release frequency to have much more stable iteration”
  • The Key to High Performance: What the Data Says - Dr. Nicole Forsgren (IT Revolution)“these are the ones that we have seen are predictive of your ability to develop and deliver software with both speed and stability”
  • Why Pull Requests Are a Bad Idea • Dave Farley • GOTO 2022 (GOTO Conferences)“if you don't check that your changes work alongside everybody else's at least once per day then statistically you produce lower quality software more slowly”
  • DORA | Capabilities: Trunk-based development (dora.dev)“teams achieve higher levels of software delivery and operational performance (delivery speed, stability, and availability) if they follow these practices”
  • Trunk Based Development (trunkbaseddevelopment.com)“This ensures the codebase is always releasable on demand and helps to make Continuous Delivery a reality.”
  • Probably partly right AI guessDORA data correlate trunk-based development with better delivery metrics and small changes are easier to revert, but the gains are correlational and the team's own numbers are self-reported.
  • Leans partly right DORA State of DevOps 2019 lines 1039-1041Survey data show trunk-based development with frequent check-in and deployment to production is predictive of software delivery performance (deploy frequency, lead time, change failure rate, time to restore); rollback ease is not measured.

Coordination cost grows faster than linearly with team count on a shared codebase, which service boundaries contain

Leans partly right

Communication-path growth is the classic Brooks argument and Conway-style case studies support boundaries helping, but there is no controlled measurement of microservices reducing coordination.

· denied 0 ·
Show
  • When To Use Microservices (And When Not To!) • Sam Newman & Martin Fowler • GOTO 2020 (GOTO Conferences)“i believe it gets exponentially harder to coordinate people's team size increases”
  • SE Radio 577: Casey Muratori on Clean Code, Horrible Performance? (IEEEComputerSociety)“microservices in my opinion never were a thing you would do because you wanted to write good software”
  • David Heinemeier Hansson: Microservices vs. Monolith (CultRepo)“microservices is a pattern that is about organizational structure much more than it is about how to organize your code”
  • The Majestic Monolith can become The Citadel (Signal v. Noise)“Maybe you’re dealing with very large teams that constantly have people tripping over each other”
  • The Majestic Monolith (Signal v. Noise)“M/SOA fits the organizational shape of very large corporations.”
  • Leans partly right AI guessCommunication-path growth is the classic Brooks argument and Conway-style case studies support boundaries helping, but there is no controlled measurement of microservices reducing coordination.
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 2779-2788Coordination and administration grow nonlinearly with team and organisation size (e.g. administrative staff scales as academic staff^1.3; +50% total time from two- to four-person teams); whether service boundaries contain it is not studied.
  • Leans partly right Bird et al. 2011 (code ownership) lines 405-411More contributors to a Windows binary, especially low-expertise minor ones, means more pre- and post-release failures after controlling for size, churn and complexity, which the authors attribute to coordination and communication breakdowns; growth rate and the effect of service boundaries are not tested.

Small pull requests are picked up and merged faster

Leans right

At Google the median wait for first reviewer feedback is under an hour for small changes versus about 5 hours for very large ones; overall median review latency is under 4 hours with a median change of 24 lines.

· denied 0 ·
Show
  • DORA Metrics: We've Been Using Them Wrong (LinearB)“PR's under 200 dip size under 200 lines of code changes get merged twice as fast”
  • Critique - Google's Code Review Tool | Reaction (NeetCodeIO)“it's easy to review someone's poll request if you send small poll requests”
  • DORA | Capabilities: Trunk-based development (dora.dev)“it is hard to reason about the impact of large changes on a system through inspection, defects are likely to escape the attention of reviewers”
  • Small CLs (eng-practices)“It’s easier for a reviewer to find five minutes several times to review small CLs than to set aside a 30 minute block”
  • The ideal PR is 50 lines long (Graphite)“50-line code changes are reviewed and merged ~40% faster than 250-line changes.”
  • Probably right AI guessCode review studies at Google and Microsoft consistently show review latency and defect density rise with change size, in line with the vendor data.
  • Leans right Sadowski et al. 2018 (Google code review) lines 358-362At Google the median wait for first reviewer feedback is under an hour for small changes versus about 5 hours for very large ones; overall median review latency is under 4 hours with a median change of 24 lines.

Some programmers are vastly more productive than their typical peers

Leans partly right

Interpersonal work time differences are real and larger than most experimental effects, but the slowest-to-fastest-quarter ratio is rarely above 4 and the Grant/Sackman 28:1 figure (really 14:1) looks like an outlier; the author cautions that student populations may understate practical variability.

· denied 0 ·
Show
  • Why The "10x Engineer" Is A Dangerous Myth (Modern Software Engineering)“I think the thing probably exists, but I think it's a dumb target”
  • The “10x engineer:" 50 years ago and now (The Pragmatic Engineer)“We’ve all seen developers who seem to be a lot more productive than others.”
  • Uncle Bob is Ruining Software (Hillel Wayne)“There are 10x programmers out there”
  • Is the 10x Engineer a Myth? (James Peralta)“I think it's very very like very possible to be 10 times better than the average engineer”
  • The 10x developer is NOT a myth (Yevgeniy Brikman)“the general finding that "There are order-of-magnitude differences among programmers" has been confirmed by many other studies of professional programmers”
  • Leans partly right Prechelt 1999 (28:1 legend) lines 1204-1212Interpersonal work time differences are real and larger than most experimental effects, but the slowest-to-fastest-quarter ratio is rarely above 4 and the Grant/Sackman 28:1 figure (really 14:1) looks like an outlier; the author cautions that student populations may understate practical variability.
  • Leans partly right AI guessLarge individual variation is consistently observed, but the specific tenfold figure traces to small studies from the 1960s and 70s.
  • Leans partly right Prechelt 2000 (seven languages) lines 432-441Work-time bad/good ratios within a language ran 1.5 (C) to 3.2 (Perl), with three Java programmers at 40-63 hours against a 10-hour median; so a several-fold spread exists on one small task but not an order of magnitude in the typical case.

Most software effort goes into understanding, maintaining, extending and operating code rather than writing it

Leans right

Maintenance is generally estimated to consume well over half of lifecycle effort, though the exact figures are poorly sourced.

· denied 0 ·
Show

Preferring runtime polymorphism over switch statements makes code slower by forcing pointer indirection and hiding the code path from the compiler

Leans right

Reproducible on this microbenchmark; the gain in real programs depends on how much time hot loops spend in dispatch.

· denied 0 ·
Show

Hype drives teams to adopt microservices they do not need, adding cost and risk

Leans partly right

Microservice envy is widely reported; its magnitude is unmeasured.

· denied 0 ·
Show

Static typing suits safety- and performance-critical domains while dynamic typing suits fast-iteration domains

Untestable

A description of adoption patterns and taste rather than a measurable benefit claim.

· denied 0 ·
Show
  • Code Faster or Safer? Static vs Dynamic Typing (deep dive dev)“statically typed languages are more popular for things like Financial software systems programming and game development where safety and performance is preferred”
  • Static vs Dynamic Typing (Boot dev)“you can build large production back-end systems in statically typed or dynamically typed languages it's certainly been done both ways”
  • Laurence Tratt: Another Non-Argument in Type Systems (tratt.net)“Arguing whether static or dynamic typing is universally better or more expressive is therefore pointless.”
  • Laurence Tratt: Dynamically Typed Languages (tratt.net)“it is my contention that both statically typed and dynamically typed languages are required for the increasingly broad range of tasks”
  • Untestable AI guessA description of adoption patterns and taste rather than a measurable benefit claim.

Sustained crunch lowers productivity and employee happiness

Leans right

Labour economics and reviews of overtime research show output per hour falls and errors rise after sustained weeks beyond roughly fifty hours, and burnout studies link crunch to attrition.

· denied 0 ·
Show
  • Overtime & Crunching in Game Development (vs others) (Jason Weimann (GameDev))“basically driving down their productivity in my opinion and driving down employee happiness”
  • Physiological Effects of Crunch: A Look at the Science (GDC Festival of Gaming)“once you get past 60 hours your cognitive function is actually worse than someone who wasn't working at all”
  • What We Know We Don't Know (Hillel Wayne)“Impact of a Night of Sleep Deprivation on Novice Developers Performance”
  • Why Crunch Mode Doesn’t Work: Six Lessons [2005] – IGDA (igda.org)“When used long-term, Crunch Mode slows development and creates more bugs when compared with 40-hour weeks.”
  • Probably right AI guessLabour economics and reviews of overtime research show output per hour falls and errors rise after sustained weeks beyond roughly fifty hours, and burnout studies link crunch to attrition.
  • Leans partly right Pencavel 2014 (working hours) lines 613-624122 weekly observations on WWI munitions workers: output is proportional to hours below 49 h/week, rises at a decreasing rate above it and peaks near 63 h, so output per hour falls once weeks run long; happiness was not measured and the workers were not programmers.
  • Leans partly right DORA State of DevOps 2019 lines 1732-1738The report cites recovery research that feeling overworked blocks detachment from work, which leads to burnout and lower life satisfaction; it does not itself measure crunch or its effect on productivity.

Long-horizon task estimates are inaccurate and managers should not rely on them

Leans partly right

Review of time-prediction studies finds average error of 20-30% and no general bias, but software projects of at least 100 work hours show a median overrun of about 20%, so large-scope estimates are biased low rather than useless.

· denied 0 ·
Show
  • Overtime & Crunching in Game Development (vs others) (Jason Weimann (GameDev))“don't want to get estimates that are out that long they're just inaccurate they're not very useful”
  • #NoEstimates (Allen Holub) (Allen Holub)“the main problem with estimates is that estimates are always based on guesswork you're always guessing”
  • Story points considered harmful? 1 of 4 – Journey's start – Allan Kelly (allankelly.net)“we can't estimate. By “we” I mean humans.”
  • Why Story Points Are a Complete Waste of Time (Lead Prompt Podcast)“Human beings are terrible at accurately estimating the time required to carry out work, even for tasks that they carry out on a regular basis.”
  • Probably partly right AI guessEstimation research consistently finds large optimism bias and variance that grows with horizon, though structured estimation methods narrow the error.
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 665-684Review of time-prediction studies finds average error of 20-30% and no general bias, but software projects of at least 100 work hours show a median overrun of about 20%, so large-scope estimates are biased low rather than useless.

Long-lived branches delay integration and produce merge conflicts that grow with team size

Leans right

The mechanism is direct, and DORA research associates short-lived branches and trunk-based development with higher delivery performance.

· denied 0 ·
Show
  • code.talks 2023 - Our journey from Gitflow to Trunk Based Development (code.talks (ehem. Developer Conference))“we spend a lot of time to handle conflicts because we have so many branches”
  • Don’t Feature Branch | Dave Farley’s Weblog (davefarley.net)“the merge problem it faces could be nothing at all or represent days or even weeks of effort”
  • DORA | Capabilities: Trunk-based development (dora.dev)“large merges frequently introduce bugs or regressions”
  • Trunk Based Development (trunkbaseddevelopment.com)“Shared branches off mainline/main/trunk are bad at any release cadence”
  • Probably right AI guessThe mechanism is direct, and DORA research associates short-lived branches and trunk-based development with higher delivery performance.
  • Leans partly right DORA State of DevOps 2019 lines 1059-1070DORA observes that merging patches sooner avoids rebases and that short-lived branches and small patches make everyone more productive, but it does not measure merge conflicts or how they scale with team size.

Slow UI-driven end-to-end test suites are fragile and break on cosmetic changes

Leans right

Flaky and brittle UI tests are extensively documented in industry reports and flaky-test research, which is why the test pyramid pushes coverage downward.

· ·
Show

Architectural problems can be fixed by incremental refactoring without discarding the codebase.

Leans partly right

Incremental re-architecture is widely practiced and documented, but some structural changes are impractical without large rewrites.

· denied 0 ·
Show

Pair programming provides continuous code review without adding a separate review step that slows delivery.

Leans partly right

Pairing does catch defects as they are written, but pairs cost more person-hours, so 'without slowing' depends on the measure.

· denied 0 ·
Show
  • Why Pull Requests Are a Bad Idea • Dave Farley • GOTO 2022 (GOTO Conferences)“that provides the second pair of eyes and the constant code review without slowing down the development process”
  • You Must Be CRAZY To Do Pair Programming (Modern Software Engineering)“i could cure that by having some form of always-on review pair programming”
  • DORA | Capabilities: Trunk-based development (dora.dev)“If your team practices pair programming, then the code has already been reviewed by a second person.”
  • "Pair Programming Fixed Our Pull Request Bottlenecks" (Modern Software Engineering)“You don't you don't have to spend time on P request because the way the work is already done as part of peering.”
  • Leans partly right AI guessPairing does catch defects as they are written, but pairs cost more person-hours, so 'without slowing' depends on the measure.
  • Leans right DORA State of DevOps 2019 lines 1237-1241The report treats approval by a teammate during pair programming, before commit, as a valid lightweight way to implement peer review and segregation of duties, as an alternative to review before merge; this is a recommendation, not a measured comparison.

Most developers who try pair programming end up preferring it.

Leans partly right

Williams' student studies found high post-trial preference, but professional adoption surveys show persistent dislike among many.

· denied 0 ·
Show
  • Why Pull Requests Are a Bad Idea • Dave Farley • GOTO 2022 (GOTO Conferences)“most people that I have seen try pair programming actually prefer it as a way of working”
  • You Must Be CRAZY To Do Pair Programming (Modern Software Engineering)“they also had much higher confidence in their solutions”
  • Pair Programming Misconceptions (martinfowler.com)“They gave it a try, expecting to hate it, and found they really liked it.”
  • "Pair Programming Fixed Our Pull Request Bottlenecks" (Modern Software Engineering)“that's much more personally rewarding even to an old introvert like me”
  • Leans partly right AI guessWilliams' student studies found high post-trial preference, but professional adoption surveys show persistent dislike among many.
  • Leans partly right Dybå & Dingsøyr 2008 (agile review) lines 1167-1170Surveys in the review found 73% of XP employees say pairing speeds development and most students found it helpful, but the review summarises findings on pair programming effectiveness as mixed, with several developers calling it exhausting and one project drifting back to solo work.

Excellence in engineering takes different forms; a few well-judged lines can be worth more than high-volume output

Untestable

A values statement about what counts as excellence.

· denied 0 ·
Show
  • Why The "10x Engineer" Is A Dangerous Myth (Modern Software Engineering)“there's room for lots of different definitions of excellence depending on what is needed by the team”
  • Is the 10x Engineer a Myth? (James Peralta)“these projects are so complicated that the average engineer couldn't even solve that project”
  • The 10x Programmer Myth (Simple Thread)“By avoiding a lot of extra software and overly complex processes, these developers can save their teams countless hours.”
  • The 10x developer is NOT a myth (Yevgeniy Brikman)“You become a 10x programmer not by doing an order of magnitude more work, but by making better decisions an order of magnitude more often.”
  • Untestable AI guessA values statement about what counts as excellence.

Reviewer defect-finding effectiveness drops sharply once a single review exceeds a few hundred lines

Leans right

The SmartBear Cisco field study found defect density per line falling past roughly 200-400 lines per review, though it is a single vendor-run industrial dataset rather than a controlled experiment.

· denied 0 ·
Show
  • The Death of the Code Review: What the Data Actually Says — Laurie Voss, Arize AI (AI Engineer)“reviewers stop finding defects effectively if they try to read more than 400 lines of code in one sitting”
  • The ideal PR is 50 lines long (Graphite)“There’s a practical limit to how much code your reviewer is willing to read - I suspect that 2k lines is the point”
  • Best Practices for Code Review (smartbear.com)“beyond 400 LOC, the ability to find defects diminishes”
  • Probably right AI guessThe SmartBear Cisco field study found defect density per line falling past roughly 200-400 lines per review, though it is a single vendor-run industrial dataset rather than a controlled experiment.
  • Leans partly right McIntosh et al. 2014 (review coverage) lines 604-611Changes approved faster than 200 lines per hour ('hastily reviewed') are associated with more post-release defects in Qt 5.1.0, and only 10% of such changes are needed before a component is expected to have a defect; this is about review rate, not a fixed lines-per-review threshold.
  • Leans partly right Sadowski et al. 2018 (Google code review) lines 405-412Google data show comments per change keep rising with size up to about 1250 lines before falling (large changes are generated code or deletions); the paper cites prior work that useful comments decrease with size but does not measure defect-finding per line itself.

Static typing yields better runtime performance because the compiler knows each variable's memory layout

Leans partly right

Conflates typing with ahead-of-time compilation; static languages are usually faster, but JIT compilers make dynamic languages competitive and types are only one of several causes.

· denied 0 ·
Show
  • Code Faster or Safer? Static vs Dynamic Typing (deep dive dev)“static typing leads to better performance while Dynamic typing is usually slower”
  • Why Static Typing Came Back • Richard Feldman • GOTO 2022 (GOTO Conferences)“there's no way to get a dynamically typed language to be as fast as the fastest possible statically type language”
  • Laurence Tratt: Dynamically Typed Languages (tratt.net)“There is little doubt that, in practice, equivalent programs in dynamically typed languages are slower than in statically typed languages.”
  • Probably partly right AI guessConflates typing with ahead-of-time compilation; static languages are usually faster, but JIT compilers make dynamic languages competitive and types are only one of several causes.
  • Leans partly right Prechelt 2000 (seven languages) lines 145-150C/C++ ran faster than Java (p=0.074) and tended to beat scripts (p=0.15), but statically typed Java was not significantly faster than the dynamically typed scripts overall and scripts tended to be faster than Java in the search phase, so the speed advantage tracks the language implementation, not static typing as such (JDK 1.2 era).

Dynamic typing is faster for prototyping and rapid iteration

Leans partly right

Scripts (Perl, Python, Rexx, Tcl) took a median 3.1 hours versus 10.0 hours for C, C++ and Java and were half as long, but the author attributes this to built-in associative arrays and the absence of declarations, times were self-reported for the script group, and the result is explicitly limited to the phonecode problem.

· denied 0 ·
Show
  • Code Faster or Safer? Static vs Dynamic Typing (deep dive dev)“dynamic typing is better for prototyping and fast iteration”
  • Static vs Dynamic Typing (Boot dev)“when we don't have to specify types as we're writing our code we're able to write the code a little more quickly”
  • Laurence Tratt: Dynamically Typed Languages (tratt.net)“Such simplicity makes both learning and using dynamically typed languages simpler, in general, than statically typed languages”
  • Leans partly right AI guessControlled experiments by Hanenberg and others found no consistent development-time advantage for dynamic typing, and static types sometimes sped tasks up, so the advantage is at best small and task-dependent.
  • Leans partly right Prechelt 2000 (seven languages) lines 438-441Scripts (Perl, Python, Rexx, Tcl) took a median 3.1 hours versus 10.0 hours for C, C++ and Java and were half as long, but the author attributes this to built-in associative arrays and the absence of declarations, times were self-reported for the script group, and the result is explicitly limited to the phonecode problem.
  • Leans partly right Hanenberg et al. 2014 (static types) lines 282-292Summarising the same series: an earlier experiment found the dynamic type system significantly faster for writing a scanner, and Mayer et al. found dynamic typing faster on simpler tasks with static typing paying off on larger ones; in the present experiment no task favoured dynamic typing.
  • Leans partly right Ray et al. 2014 (languages on GitHub) lines 711-715Related-work summary: in Hanenberg's controlled experiment (undergraduates, custom language and IDE, parser task) the dynamically typed variant had shorter development time with no quality difference; a narrow lab setting, not iteration on real products.

Open-plan offices increase noise and visual distraction that impairs focused work

Leans right

Large occupant surveys such as Kim and de Dear find open-plan workers less satisfied, especially on noise and privacy, with no offsetting gain in ease of interaction.

· denied 0 ·
Show
  • Open plan offices are terrible for innovation and productivity (Nick Skillicorn)“people in open plan offices complained that they were significantly more prone to distraction”
  • Open concept offices aren’t as productive as you think | Your Morning (CTV Your Morning)“there was more distractions happening because people who are taking personal calls for example you would hear all their business”
  • Beyond Open Offices: The New Fog Creek Headquarters (blog.glitch.com)“the research is pretty clear that it is a massive booster of productivity for people in those kinds of technical roles”
  • Probably right AI guessLarge occupant surveys such as Kim and de Dear find open-plan workers less satisfied, especially on noise and privacy, with no offsetting gain in ease of interaction.
  • Leans partly right Bernstein & Turban 2018 (open offices) lines 132-141Not measured in the study; the paper's review cites prior workplace design research finding open offices reduce focus and psychological privacy, and the discussion notes employees isolating themselves with large headphones, so support here is second-hand.

Line coverage shows code was executed, not that the tests check its behaviour

Probably right

Across 31,000 generated suites on five large Java systems, coverage correlated only low-to-moderately with mutation-detection effectiveness once suite size was controlled, so high coverage does not indicate an effective suite; executing a line does not reveal an error in it.

· denied 0 ·
Show

Software delivery speed and stability move together rather than trading off; the best teams get both.

Leans right

Six years of survey data show speed and stability are outcomes that enable each other: cluster analysis finds elite performers do significantly better on all four metrics and low performers worse on all, rather than trading throughput for stability.

· denied 0 ·
Show
  • Accelerate: The State of DevOps with Dr. Nicole Forsgren (Scott Hanselman)“speed and stability move in tandem the highest performers get both there is no tradeoff”
  • The Key to High Performance: What the Data Says - Dr. Nicole Forsgren (IT Revolution)“we find that software delivery performance is through putting stability and both are possible without trade-offs”
  • Code Red: the Business Impact of Code Quality (InfoQ)“the shorter your cycle times for deployment, the fewer production failures”
  • Probably partly right AI guessFive years of DORA survey clustering show throughput and stability correlate, but the data are self-reported and correlational rather than experimental.
  • Leans right DORA State of DevOps 2019 lines 367-382Six years of survey data show speed and stability are outcomes that enable each other: cluster analysis finds elite performers do significantly better on all four metrics and low performers worse on all, rather than trading throughput for stability.

The 10x spread between fastest and slowest programmers is mostly noise: a programmer's own task-to-task variation is as large as the variation between programmers.

Leans partly right

Re-analysis of 61 experiments (614 subjects) finds the slowest-quarter to fastest-quarter median ratio is typically 2-3x and max/min ratios above 10 are rare, so the 10x spread is an artifact of best-vs-worst comparison; the report does not measure a programmer's own task-to-task variation.

· denied 0 ·
Show
  • Challenging the Myth of the 10x Programmer (Software Engineering Institute | Carnegie Mellon University)“the variation within a programmer within a programmer's own 10 programs was comparable to the variation between programmers”
  • The Leprechauns of Software Engineering (adamtornhill.com)“the 10x productivity difference between programmers”
  • The 10X Programmer, and other Myths (blog.glitch.com)“in many cases the research was done on very small groups and was not extremely representative”
  • Leans partly right AI guessNichols' repeated-measures PSP data support this, but the sample is trained PSP students on small exercises and other studies still find stable individual differences.
  • Leans partly right Prechelt 1999 (28:1 legend) lines 395-401Re-analysis of 61 experiments (614 subjects) finds the slowest-quarter to fastest-quarter median ratio is typically 2-3x and max/min ratios above 10 are rare, so the 10x spread is an artifact of best-vs-worst comparison; the report does not measure a programmer's own task-to-task variation.

Higher-level tests often pay back better than unit tests at finding bugs in integration-heavy code.

Leans partly right

Integration and system tests do catch defects unit tests miss, but relative cost-effectiveness depends on the system and is not well quantified.

· denied 0 ·
Show

Estimates become deadlines, and deadlines drive the overtime that destroys sustainable pace.

Leans partly right

Deadline pressure is a documented driver of overtime, but the chain from estimate to crunch is not inevitable.

· denied 0 ·
Show
  • #NoEstimates (Allen Holub) (Allen Holub)“as soon as you have estimates you have deadlines and as soon as you have deadlines you have people working 18-hour days”
  • Q&A with Vasco Duarte on the #NoEstimates Book (InfoQ)“additionally promote many different dysfunctions in the organization. In the book I explain some of those dysfunctions such as: estimate bargaining, political games”
  • Story Points Revisited (ronjeffries.com)“Because estimates are at least implicated in the application of undue pressure, I'd prefer to avoid them.”
  • Leans partly right AI guessDeadline pressure is a documented driver of overtime, but the chain from estimate to crunch is not inevitable.
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 1518-1550Time predictions change the work: software teams whose estimates were cut by up to 20% by clients were more productive, beyond 20% productivity fell, and estimates set 40% too low raised programmer error rates; overtime itself is not measured.

Short fixed-budget increments let the business decide early whether to continue or kill a project, reducing risk without estimates.

Leans partly right

Incremental funding does reduce exposure, but cancelling early still needs some forecast of what remains.

· denied 0 ·
Show
  • #NoEstimates (Allen Holub) (Allen Holub)“if we're doing the wrong thing we have the option of fixing it here really early”
  • Q&A with Vasco Duarte on the #NoEstimates Book (InfoQ)“we can easily decide which stories to take into a sprint without sizing those stories”
  • Story Points Revisited (ronjeffries.com)“the important thing in Real Agile is to pick the next few things to do, and do them promptly”
  • Leans partly right AI guessIncremental funding does reduce exposure, but cancelling early still needs some forecast of what remains.

Sleep deprivation impairs cognition like alcohol intoxication and blinds people to their own impairment.

Leans right

Dawson and Reid's equivalence studies and later work show sleep loss impairs performance like alcohol and degrades self-assessment.

· denied 0 ·
Show

Rewriting a working system from scratch throws away accumulated bug fixes and hands years of lead to competitors.

Leans partly right

Netscape, Borland and similar cases support it, but successful rewrites exist, so the harm depends on scale and context.

· denied 0 ·
Show

Code is harder to read than to write, so programmers misjudge old code as a mess.

Leans partly right

Comprehension consumes most maintenance effort in studies, supporting the premise; the inference about misjudging old code is plausible but untested.

· denied 0 ·
Show

Most software projects run late or over budget, with few finishing early.

Leans partly right

Systematic review found no general overoptimism in software when small tasks are included, but projects of 100+ hours had a median overrun of about 20%, i.e. more than half of larger projects overran while small tasks were unbiased or overpessimistic.

· denied 0 ·
Show
  • The Rationale for Continuous Delivery • Dave Farley • YOW! 2018 (GOTO Conferences)“In a study of nearly 6,000 projects, 17% of them go so badly that they threaten the existence of the company”
  • Q&A with Vasco Duarte on the #NoEstimates Book (InfoQ)“Of the large systems that are completed, about 66% experience schedule delays & cost overrun”
  • Software Estimation Is Hard. Do It Anyway. - Jacob Kaplan-Moss (jacobian.org)“One study by HBR found that one in six IT projects had cost overruns of over 200% and were late by almost 70%.”
  • Leans partly right AI guessSurveys like Standish and McKinsey consistently report high overrun rates, though their methods are criticized.
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 665-684Systematic review found no general overoptimism in software when small tasks are included, but projects of 100+ hours had a median overrun of about 20%, i.e. more than half of larger projects overran while small tasks were unbiased or overpessimistic.

Large-scale repository studies claiming some languages produce fewer bugs did not survive replication.

Very likely right

Independent repetition and reanalysis of Ray et al.'s 729-project study: mislabelled TypeScript files, duplicated bitcoin forks, 36% false-positive bug labels and no multiple-testing correction; only 4 of the 11 claimed language-defect associations survive and even those have exceedingly small effect sizes.

· denied 0 ·
Show
  • Intro to Empirical Software Engineering: What We Know We Don't Know • Hillel Wayne • GOTO 2019 (GOTO Conferences)“they could not find any evidence that one language was better than any other language”
  • Literature review on the benefits of static types (danluu.com)“the study appears to use a fundamentally flawed methodology that's not capable of revealing much information”
  • What We Know We Don't Know (Hillel Wayne)“A Large Scale Study of Programming Languages and Code Quality in Github (original faulty study)”
  • Very likely right Berger et al. 2019 (languages reproduction) lines 11-19Independent repetition and reanalysis of Ray et al.'s 729-project study: mislabelled TypeScript files, duplicated bitcoin forks, 36% false-positive bug labels and no multiple-testing correction; only 4 of the 11 claimed language-defect associations survive and even those have exceedingly small effect sizes.
  • Probably right AI guessBerger et al.'s 2019 replication of Ray et al. removed most significant effects after fixing labeling errors.

Test-driven development produces no better quality or productivity than other disciplined testing approaches.

Probably right

Blind-analysis crossover replication with 21 graduate students found no difference between TDD and incremental test-last in tests written (p=1.00), external quality (p=.82) or productivity (p=.82), with negligible effect sizes, confirming the Oulu baseline experiment.

· denied 0 ·
Show

How much to invest in tests depends on required feedback frequency, fidelity, overhead and the expected lifespan of the code.

Untestable

A decision framework rather than a measurable claim.

· denied 0 ·
Show

Once a developer has internalised test-driven design thinking, the design benefit remains even if the tests are no longer written first

Unknown

Self-reported by experienced practitioners; no study separates the design effect of TDD from the habit it builds.

· denied 0 ·
Show

Rapid individual output often comes at the cost of maintainability that the rest of the team pays for

Unknown

Widely reported anecdotally; no study measures downstream debt created by high-output individuals.

· denied 0 ·
Show
  • Why The "10x Engineer" Is A Dangerous Myth (Modern Software Engineering)“not conscious of the tech debt that they were fluffing off onto everyone else”
  • The “10x engineer:" 50 years ago and now (The Pragmatic Engineer)“might do so by writing unmaintainable code that several developers will struggle to modify, later”
  • The 10x Programmer Myth (Simple Thread)“really all they are doing is leaning on the rest of the team to make themselves look productive”
  • Unknown AI guessWidely reported anecdotally; no study measures downstream debt created by high-output individuals.

Many widely repeated software engineering facts trace back to sources that are missing, measure something else, or are methodologically flawed

Leans partly right

One documented instance: the famous 28:1 programmer variability figure is wrong (two methodological mistakes, correct value 14:1), rests on 12 subjects, was published in an obscure journal, and kept being quoted after Dickey debunked it in 1981.

· denied 0 ·
Show
  • The Leprechauns of Software Engineering (adamtornhill.com)“that data is 1) often not there, 2) measures something else, or 3) suffers serious methodical problems”
  • Uncle Bob is Ruining Software (Hillel Wayne)“I can't look into the research because there's almost no software engineering research out there.”
  • What We Know We Don't Know (Hillel Wayne)“There are many things in software we believe are true but very little we know.”
  • Very likely right AI guessBossavit's tracing of the cone of uncertainty, 10x and defect-cost claims to absent or weak sources is well documented.
  • Leans partly right Prechelt 1999 (28:1 legend) lines 84-105One documented instance: the famous 28:1 programmer variability figure is wrong (two methodological mistakes, correct value 14:1), rests on 12 subjects, was published in an obscure journal, and kept being quoted after Dickey debunked it in 1981.
  • Leans partly right Dybå & Dingsøyr 2008 (agile review) lines 1263-1272For agile specifically, the review grades the strength of evidence for benefits and limitations as very low: 25 of 33 studies lacked an appropriate recruitment strategy, 23 had no comparison group, only one mentioned researcher bias, and it calls this consistent with criticism of the sparse scientific support for agile claims.
  • Leans partly right Berger et al. 2019 (languages reproduction) lines 1439-1442One worked example: the widely cited (119 papers, CACM research highlight) finding that language choice affects defect rates rested on mislabelled data, grep-based bug detection with 36% false positives and uncorrected multiple testing, and the reanalysis invalidated its key result.

Modular decomposition behind simple interfaces reduces the information a programmer must hold in mind at once

Leans right

Working-memory limits are well established and information hiding has long-standing empirical support for change isolation.

· denied 0 ·
Show

Code in unhealthy files has many times more defects and takes several times longer to change than healthy code

Leans partly right

Across 30,737 files in 39 proprietary codebases, Alert (low Code Health) files had 15x the Jira defects of Healthy files and issues took 124% (about 2.2x) longer on average, so 'many times more defects' holds but 'several times longer' overstates the average time effect; observational, CodeScene-customer sample, vendor-authored, causality direction acknowledged as open.

· denied 0 ·
Show
  • Code Red: the Business Impact of Code Quality (InfoQ)“Red code has, on average, 15 times more defects than a healthy codebase.”
  • Technical Debt Quadrant (martinfowler.com)“The whole point of good design and clean code is to make you go faster”
  • Story Points Revisited (ronjeffries.com)“the team tries to go faster, and wind up skimping on code quality and on tests. They soon begin shipping more defects”
  • Leans partly right AI guessThe Code Red paper on 39 codebases is correlational and from the vendor of the code-health metric; the direction matches other complexity-defect studies.
  • Leans partly right Tornhill & Borg 2022 (Code Red) lines 362-389Across 30,737 files in 39 proprietary codebases, Alert (low Code Health) files had 15x the Jira defects of Healthy files and issues took 124% (about 2.2x) longer on average, so 'many times more defects' holds but 'several times longer' overstates the average time effect; observational, CodeScene-customer sample, vendor-authored, causality direction acknowledged as open.
  • Leans partly right Buse & Weimer 2010 (readability) lines 532-547Functions scored less readable were more likely to carry FindBugs warnings, change next release, and be touched by bug-fix commits (f-measure 0.62-0.65, precision about 0.9, recall about 0.5) across 15 open-source Java projects; supports the defect half of the claim for low readability but measures nothing about time to change.

Service boundaries are usually wrong on the first attempt because the domain is not yet understood, so systems built as microservices from scratch tend to end in trouble

Leans partly right

Consistent practitioner anecdote from Fowler, Newman and others, but anecdotes suffer selection bias.

· denied 0 ·
Show
  • Microservices, Where Did It All Go Wrong • Ian Cooper • GOTO 2024 (GOTO Conferences)“typically first wave of microservices is likely to be wrong”
  • Monolith First (martinfowler.com)“Almost all the cases where I've heard of a system that was built as a microservice system from scratch, it has ended up in serious trouble.”
  • Deconstructing the Monolith - Shopify (Shopify)“Designing a complex system of microservices before you have domain expertise is a risky move that too many software projects fall into.”
  • Leans partly right AI guessConsistent practitioner anecdote from Fowler, Newman and others, but anecdotes suffer selection bias.
  • Leans partly right Soldani et al. 2018 (microservices review) lines 526-53116 industrial sources recognise service dimensioning as a pain and all agree it is hard to identify bounded contexts because boundaries between business capabilities are not sharp; the review does not track whether greenfield microservice systems end in trouble.
  • Leans right DORA State of DevOps 2019 lines 1091-1092The same footnote advises avoiding premature decomposition of new systems into services because it can inhibit delivery performance, which matches the claim's conclusion though the report offers no data on boundary mistakes.

Keeping modules in one process with enforced boundaries gets most of the modularity benefit without the distribution cost

Leans partly right

Modular monolith reports from Shopify and Prime Video are positive, but in-process boundaries are known to erode without tooling.

· denied 0 ·
Show
  • Microservices, Where Did It All Go Wrong • Ian Cooper • GOTO 2024 (GOTO Conferences)“this needs to have modularity but that modularity won't use a microservices approach it will instead split it up into larger pieces”
  • Microservice Premium (martinfowler.com)“there's no reason why you can't make a single monolith with well defined module boundaries”
  • Deconstructing the Monolith - Shopify (Shopify)“A modular monolith is a system where all of the code powers a single application and there are strictly enforced boundaries between different domains.”
  • Leans partly right AI guessModular monolith reports from Shopify and Prime Video are positive, but in-process boundaries are known to erode without tooling.

Moving functionality across service boundaries is far harder than refactoring inside one process

Leans right

No IDE-level refactoring crosses process or API boundaries; coordinated deploys and versioning are required.

· denied 0 ·
Show
  • Microservices, Where Did It All Go Wrong • Ian Cooper • GOTO 2024 (GOTO Conferences)“when your components are servic as remote Communications then refactoring is much harder than within processed libraries”
  • Monolith First (martinfowler.com)“Any refactoring of functionality between services is much harder than it is in a monolith.”
  • Deconstructing the Monolith - Shopify (Shopify)“large refactors across multiple services can be tedious, requiring changes across all dependent services and coordinating deploys”
  • Very likely right AI guessNo IDE-level refactoring crosses process or API boundaries; coordinated deploys and versioning are required.

Legacy code results from technical neglect, the failure to keep refactoring, rather than from technical debt itself

Leans partly right

A reframing consistent with debt-interest models but not separately testable.

· denied 0 ·
Show

Programming needs blocks of at least half a day, so a single mid-block meeting destroys the block

Leans partly right

Interruption studies by Mark and Parnin show substantial resumption cost; the half-day unit is unmeasured.

· denied 0 ·
Show
  • Maker's Schedule, Manager's Schedule (paulgraham.com)“A single meeting can blow a whole afternoon, by breaking it into two pieces each too small to do anything hard in.”
  • The 10x Programmer Myth (Simple Thread)“If you can reduce distractions, focus, and get into flow, then you’ll automatically be more effective than most software engineers.”
  • "Pair Programming Fixed Our Pull Request Bottlenecks" (Modern Software Engineering)“someone interrupt me it takes around 15 minutes to get back into flow state”
  • Probably partly right AI guessInterruption studies by Mark and Parnin show substantial resumption cost; the half-day unit is unmeasured.
  • Leans partly right Meyer et al. 2014 (productivity perceptions) lines 505-511Developers value few interruptions (50.4% of 379 surveyed), but the 11 observed developers switched tasks every 6.2 minutes while still feeling productive, and they uniformly said productivity drops only beyond two meetings a day, which argues against a single meeting destroying the day.
  • Leans partly right Parnin & Rugaber 2011 (resumption) lines 190-212Only 10% of programming sessions saw an edit within a minute and about 30% took over 30 minutes to reach the first edit; developers typically worked in several 15-30 minute sessions plus one or two 1-4 hour sessions a day; a real resumption cost, but no evidence that half a day is the minimum.
  • Leans partly right Mark et al. 2008 (interruptions) lines 232-240In a lab email task, people interrupted every 2 minutes for 20 minutes produced as much, as accurately, as uninterrupted subjects, compensating with speed at the cost of stress; so for simple tasks an interruption does not destroy the block, which limits the claim to harder work like programming that this study did not test.

AI-generated code volume outruns fixed human review capacity, making code review the bottleneck on shipping software

Leans partly right

One large telemetry study reports code output rising far faster than shipped software after agent adoption, but attributing the gap to review is the authors' inference and other bottlenecks (testing, deployment, product decisions) are not separated out.

· denied 0 ·
Show
  • Code review is no longer the bottleneck (OpenAI)“there's so much code being written all the time, all over all of our companies. Code review is the new bottleneck.”
  • The Death of the Code Review: What the Data Actually Says — Laurie Voss, Arize AI (AI Engineer)“the speed at which humans can review code has stayed exactly the same”
  • Leans partly right AI guessOne large telemetry study reports code output rising far faster than shipped software after agent adoption, but attributing the gap to review is the authors' inference and other bottlenecks (testing, deployment, product decisions) are not separated out.

Teams that stop reading agent-written code accumulate hidden defects that later force large rewrites

Leans partly right

Supported by a public retraction and by audits of agent-ported code finding unusual numbers of unsafe constructs, but the evidence is anecdotal with no controlled comparison.

· denied 0 ·
Show

Crunch is a symptom of poor planning, especially failing to schedule testing and iteration time

Leans partly right

Postmortems and case studies link crunch to scope and schedule failures, but publisher deadlines, funding and studio culture also drive it, so planning is one cause among several.

· denied 0 ·
Show
  • Overtime & Crunching in Game Development (vs others) (Jason Weimann (GameDev))“I think it's a terrible sign of just mismanagement and bad planning”
  • Physiological Effects of Crunch: A Look at the Science (GDC Festival of Gaming)“the cause of crunch is usually not uh is usually not a skill problem or a laziness problem it's an unrealistic schedule”
  • Leans partly right AI guessPostmortems and case studies link crunch to scope and schedule failures, but publisher deadlines, funding and studio culture also drive it, so planning is one cause among several.

Running a CI server is not continuous integration if branches live for days or weeks

Leans right

Matches the standard definition of continuous integration as frequent integration to a shared mainline, which tooling alone does not guarantee.

· denied 0 ·
Show
  • code.talks 2023 - Our journey from Gitflow to Trunk Based Development (code.talks (ehem. Developer Conference))“it's not because you are using Jenkins GitHub gitlab Circle CI that you are doing continuous integration”
  • Trunk Based Development (trunkbaseddevelopment.com)“Trunk-Based Development is a key enabler of Continuous Integration and by extension Continuous Delivery.”
  • Probably right AI guessMatches the standard definition of continuous integration as frequent integration to a shared mainline, which tooling alone does not guarantee.
  • Leans partly right DORA State of DevOps 2019 lines 1006-1024DORA defines impactful CI as every commit producing a build and test run, and separately defines effective trunk-based development as fewer than three active branches with lifetimes under a day; both predict continuous delivery, but branch lifetime is treated as a distinct capability rather than part of the definition of CI.

Feature flags let unfinished work merge to trunk and decouple deployment from release

Leans right

A well-established mechanism used at scale by large web companies, with documented costs in flag management.

· denied 0 ·
Show

Writing a test per method and mocking every dependency couples tests to implementation so refactoring breaks them

Leans right

Over-specified interaction tests are a documented cause of fragile suites in both practitioner literature and studies of test co-evolution.

· denied 0 ·
Show
  • 🚀 TDD, Where Did It All Go Wrong (Ian Cooper) (DevTernity Conference)“all these tests with mocks they broke and we had to rewrite all the mocks”
  • TestDesiderata (TestDesiderata)“Structure-insensitive — tests should not change their result if the structure of the code changes.”
  • Probably right AI guessOver-specified interaction tests are a documented cause of fragile suites in both practitioner literature and studies of test co-evolution.

Writing tests slows delivery by a meaningful fraction compared with not writing them

Leans partly right

Controlled studies of TDD report roughly fifteen to thirty-five percent more initial development time alongside fewer defects, so the slowdown is real but is partly repaid later.

· denied 0 ·
Show
  • 🚀 TDD, Where Did It All Go Wrong (Ian Cooper) (DevTernity Conference)“we were you know twenty to fifty percent slower than we had been before by writing tests”
  • Jim Coplien and Bob Martin Debate TDD (alexsmail)“the code mass is is about the same as a test mass and whereas there's code there's bugs you cut your velocity in half”
  • Probably partly right AI guessControlled studies of TDD report roughly fifteen to thirty-five percent more initial development time alongside fewer defects, so the slowdown is real but is partly repaid later.
  • Leans wrong DORA State of DevOps 2019 lines 1535-1549Elite performers report far more automated testing than low performers (87% vs 57% automated unit tests, 58% vs 28% acceptance tests) while deploying 208 times more often with shorter lead times, so at the delivery level testing is associated with faster, not slower, delivery; the data are cross-sectional self-reports and do not isolate per-feature development time.

Moving to open-plan offices reduces face-to-face interaction and shifts communication to email and messaging

Probably right

Two Fortune 500 headquarters moved from cubicles to open floors; wearable badges and server logs showed face-to-face time fell 72% (5.8 to 1.7 h per person per day) at the first firm and 67-71% at the second, while emails sent rose 56%, received 20-50% and IM messages 67%; quasi-experiment without a control group, 52 and 100 participants.

· denied 0 ·
Show
  • Open plan offices are terrible for innovation and productivity (Nick Skillicorn)“the amount of collaboration in open-plan offices was actually lower than when people had their own individual space”
  • Open concept offices aren’t as productive as you think | Your Morning (CTV Your Morning)“the volume of face-to-face interactions so speaking to people that you're now actually sitting across from went down”
  • Very likely right AI guessThe Bernstein and Turban field study at two Fortune 500 firms found face-to-face interaction fell by roughly seventy percent after the switch; it is two sites but with objective sensor data.
  • Probably right Bernstein & Turban 2018 (open offices) lines 172-193Two Fortune 500 headquarters moved from cubicles to open floors; wearable badges and server logs showed face-to-face time fell 72% (5.8 to 1.7 h per person per day) at the first firm and 67-71% at the second, while emails sent rose 56%, received 20-50% and IM messages 67%; quasi-experiment without a control group, 52 and 100 participants.

Comments that restate code are noise and drift out of date because nothing checks them

Leans partly right

Studies find comment-code inconsistency common after change, but comprehension research also shows explanatory comments help readers, so the claim holds for restating comments not all comments.

· denied 0 ·
Show

Applying design patterns such as factories everywhere makes code harder to understand than direct code

Leans partly right

Prechelt's controlled pattern experiments found patterns help only when their flexibility is needed and otherwise add comprehension cost.

· denied 0 ·
Show

Services that always change together should be merged or re-sliced

Untestable

A design heuristic; co-change analysis can detect the pattern but whether merging is right is a judgment.

· denied 0 ·
Show

Type inference gives static typing with dynamic-like brevity, removing most of the old verbosity trade-off

Leans partly right

Inference clearly cuts annotation burden in Go, Rust and TypeScript, but compile times, generics complexity and type-error comprehension remain costs.

· denied 0 ·
Show
  • Static vs Dynamic Typing (Boot dev)“type inference basically gives us the best of both worlds it allows us to have static typing but with a very simple syntax”
  • Why Static Typing Came Back • Richard Feldman • GOTO 2022 (GOTO Conferences)“some languages and Community Norms encourage ceremony but they don't have to”
  • Probably partly right AI guessInference clearly cuts annotation burden in Go, Rust and TypeScript, but compile times, generics complexity and type-error comprehension remain costs.
  • Leans partly right Gao, Bird & Barr 2017 (types vs JS bugs) lines 539-552Flow's stronger type inference meant detecting a bug needed fewer annotation tokens (mean 1.7 vs 2.4) and less time (median 133s vs 262s) than TypeScript, so inference does cut annotation burden, but this is per-bug minimal annotation, not whole-program verbosity.

Summarizing a change and its risks helps a reviewer understand unfamiliar code faster.

Leans partly right

Change summaries plausibly cut orientation time, but there is little independent measurement of review speed or defect-finding with AI summaries.

· denied 0 ·
Show
  • Code review is no longer the bottleneck (OpenAI)“I can ask, summarize this change and explain the risks for this entire project.”
  • Best Practices for Code Review (smartbear.com)“the author will often find additional errors before the peer review even begins”
  • Leans partly right AI guessChange summaries plausibly cut orientation time, but there is little independent measurement of review speed or defect-finding with AI summaries.
  • Leans right Bacchelli & Bird 2013 (Microsoft code review) lines 541-549Understanding the reason for a change is reviewers' main challenge; 91% of 873 developers say unfamiliar files take longer, descriptions are valued when they state what changed and why, and developers report responding better and faster when the author provides context and direction.
  • Leans partly right Sadowski et al. 2018 (Google code review) lines 411-417Google interviewees report that not knowing what gave rise to a change (urgent production fix versus nice-to-have) causes mismatched expectations, delays and frustration; the benefit of an explicit summary is inferred, not measured.

Keeping review feedback, discussion and fixes in one tool removes the context switching that slows review.

Leans partly right

Context switching has measurable cost in general, but the size of the gain from tool consolidation is a vendor claim without independent data.

· denied 0 ·
Show
  • Code review is no longer the bottleneck (OpenAI)“I can read the feedback alongside the change and I don't need to switch tools”
  • Critique - Google's Code Review Tool | Reaction (NeetCodeIO)“it's only the tight integration and extreme personalization of the tooling towards a Google specific workflow and codebase that makes it so love”
  • Leans partly right AI guessContext switching has measurable cost in general, but the size of the gain from tool consolidation is a vendor claim without independent data.
  • Leans partly right Mark et al. 2008 (interruptions) lines 200-208Lab experiment with 48 students answering emails while interrupted every 2 minutes: interrupted work was finished faster with no quality loss but with significantly higher stress, frustration, time pressure and effort, so the switching cost showed up as strain rather than lost time; not a code-review task.
  • Leans partly right Parnin & Rugaber 2011 (resumption) lines 190-197In about 7500 IDE sessions from 85 programmers only 10% had a first edit within a minute of starting and about 30% took over 30 minutes, so switching away from a programming task carries a real resumption cost; whether one tool removes it is not tested.

Infrequent releases leave security patches and compliance updates waiting months to reach production.

Leans right

Patch latency follows directly from lead time; the risk exposure is real though its magnitude varies.

· denied 0 ·
Show
  • Accelerate: The State of DevOps with Dr. Nicole Forsgren (Scott Hanselman)“if it takes you months to get a change through what happens to your security posture when you need to get a patch through”
  • The Rationale for Continuous Delivery • Dave Farley • YOW! 2018 (GOTO Conferences)“That alone closes a whole load of security areas.”
  • Probably right AI guessPatch latency follows directly from lead time; the risk exposure is real though its magnitude varies.
  • Leans right DORA State of DevOps 2019 lines 1372-1378The report argues high SDO performance lets organisations keep up with compliance and regulatory changes and deliver security patches quickly and reliably; this is reasoning from the delivery metrics, not a measured patch-latency result.

Driving architecture from unit tests without an up-front domain model yields a procedural, bottom-up design that cannot be refactored out of.

Leans partly right

Design damage from test-driven isolation is reported in case studies and the DHH debate, but controlled studies of TDD's design effects are mixed and small.

· denied 0 ·
Show

Hiring super-programmers is a poor route to team productivity compared with improving the working environment.

Leans partly right

Follows from the variance finding, but environmental interventions have not been compared head-to-head with hiring in controlled studies.

· denied 0 ·
Show
  • Challenging the Myth of the 10x Programmer (Software Engineering Institute | Carnegie Mellon University)“you're going to be hard-pressed to really up the productivity by finding that super fast programmer”
  • The 10x developer is NOT a myth (Yevgeniy Brikman)“I wouldn’t recommend building a hiring strategy around solely hiring “rock stars”; you’ll end up looking foolish and lonely.”
  • Leans partly right AI guessFollows from the variance finding, but environmental interventions have not been compared head-to-head with hiring in controlled studies.

TDD biases design toward extra abstraction and indirection, which harms clarity unless the designer pushes back.

Leans partly right

Test-induced indirection is widely reported in practice and in the DHH debate, but controlled studies of TDD on design quality show small mixed effects.

· denied 0 ·
Show
  • SWETUGG 2015 - Is TDD Dead? What are the alternatives? - Emily Bache (Swetugg)“tdd gives you a bias uh a bias towards in Direction and interfaces and all that”
  • TDD is dead. Long live testing. (DHH) (dhh.dk)“Test-first units leads to an overly complex web of intermediary objects and indirection in order to avoid doing anything that's “slow”.”
  • Leans partly right AI guessTest-induced indirection is widely reported in practice and in the DHH debate, but controlled studies of TDD on design quality show small mixed effects.

The right mix of unit and higher-level tests depends on where a system's complexity lives, not on fixed pyramid ratios.

Leans partly right

Reasonable and consistent with practice, but no study compares test-mix strategies against outcomes.

· denied 0 ·
Show

Hitting an estimate has no value if the software built is the wrong thing.

Untestable

A framing about what counts as success rather than a measurable claim.

· denied 0 ·
Show

Story points get converted back into time, defeating their purpose of keeping estimation away from the clock.

Leans partly right

Widely reported in practice surveys, but there is no measurement of how often it happens.

· denied 0 ·
Show
  • #NoEstimates (Allen Holub) (Allen Holub)“what you ended up with was The Madness of taking story points and turning them into time”
  • Why Story Points Are a Complete Waste of Time (Lead Prompt Podcast)“business stakeholders will attempt to hold the team to timelines regardless of story point estimates”
  • Leans partly right AI guessWidely reported in practice surveys, but there is no measurement of how often it happens.
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 4203-4208The book's description of the story-point method includes as a standard step converting points to work hours or capacity via measured productivity (velocity), so conversion to time is built into the method rather than a corruption of it.

Simply counting completed stories forecasts delivery as accurately as story-point estimation.

Leans partly right

Vasco Duarte's project data and some team analyses show story count tracks points closely, but this depends on stories being similarly sized.

· denied 0 ·
Show
  • #NoEstimates (Allen Holub) (Allen Holub)“we can just count stories and we get the same number either way”
  • Q&A with Vasco Duarte on the #NoEstimates Book (InfoQ)“I project (forecast) the rate of delivery (delivered items divided by the time it took to deliver) into the future”
  • Leans partly right AI guessVasco Duarte's project data and some team analyses show story count tracks points closely, but this depends on stories being similarly sized.
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 4309-4321Extrapolating measured progress from the first stage of work (the NoEstimates approach) is endorsed as a simple local model that few prediction models beat, but it is not compared head-to-head with story-point estimation.

Organizations with high software delivery performance are more likely to meet their commercial and non-commercial goals.

Leans right

DORA's SEM finds SDO performance predicts organisational performance on commercial and non-commercial goals, and elite performers are twice as likely to meet or exceed their organisational performance goals; both sides are self-reported in a cross-sectional survey.

· denied 0 ·
Show
  • The Key to High Performance: What the Data Says - Dr. Nicole Forsgren (IT Revolution)“high performers year over a year are twice as likely to achieve or exceed their commercial goals”
  • The Rationale for Continuous Delivery • Dave Farley • YOW! 2018 (GOTO Conferences)“organizations that do this kind of thing make more money than organizations that don't”
  • Leans partly right AI guessDORA finds this association in self-reported data; organizational performance is reported by the same respondents, so common-method bias is possible.
  • Leans right DORA State of DevOps 2019 lines 1383-1385DORA's SEM finds SDO performance predicts organisational performance on commercial and non-commercial goals, and elite performers are twice as likely to meet or exceed their organisational performance goals; both sides are self-reported in a cross-sectional survey.

Fatigue raises the rate of catastrophic errors, so an overworked team can make net negative progress.

Leans partly right

Fatigue-error links are well documented; net negative team progress is a plausible extreme rather than a measured average.

· denied 0 ·
Show
  • Physiological Effects of Crunch: A Look at the Science (GDC Festival of Gaming)“the more fatigued someone is the more likely they are to make catastrophic errors”
  • Why Crunch Mode Doesn’t Work: Six Lessons [2005] – IGDA (igda.org)“Error rates climb with hours worked and especially with loss of sleep. Eventually the odds catch up with you, and catastrophe occurs.”
  • Probably partly right AI guessFatigue-error links are well documented; net negative team progress is a plausible extreme rather than a measured average.
  • Leans partly right Pencavel 2014 (working hours) lines 1009-1020Concludes long weekly and daily hours do not necessarily yield more output (the estimated marginal product of weekly hours turns negative around 63 h) and that fatigue raises the probability of errors, accidents and sickness; supports net-negative hours for physical piece work, programmer error rates not studied.

Crunch does not improve product outcomes; it correlates with slightly worse ones.

Leans right

The Gamasutra/IGDA survey analysis found this; it is a single self-reported dataset but no study shows crunch improving outcomes.

· denied 0 ·
Show
  • Physiological Effects of Crunch: A Look at the Science (GDC Festival of Gaming)“there is a very mild negative correlation between working overtime and making a successful game”
  • Intro to Empirical Software Engineering: What We Know We Don't Know • Hillel Wayne • GOTO 2019 (GOTO Conferences)“they produced games that were worse on every single metric reviewer scores profitability user satisfaction sales”
  • Probably right AI guessThe Gamasutra/IGDA survey analysis found this; it is a single self-reported dataset but no study shows crunch improving outcomes.
  • Leans partly right Pencavel 2014 (working hours) lines 1003-1008For munitions workers in 1916, hours reductions from wartime levels would have cost little or no output, and seven-day weeks produced about 10% less output than six-day weeks at the same hours; extra hours bought nothing, but product quality and software work were not measured.

A rewrite team is unlikely to do better because it lacks the original team's experience and repeats old mistakes.

Leans partly right

Second-system effects are documented, but a rewrite with clearer requirements can succeed.

· denied 0 ·
Show

In-editor type errors give faster feedback than running the program and tracing a crash.

Probably right

All indicators (time, test runs, files opened, file switches) favoured the static type system on type-error tasks because the compiler names the location while a run-time failure appears far from the cause; the feedback came from a compiler in a plain text editor, not an in-editor checker, so the claim's in-editor form is an extrapolation.

· denied 0 ·
Show
  • Why Static Typing Came Back • Richard Feldman • GOTO 2022 (GOTO Conferences)“this right here is a fast feedback loop seeing this error right there as you're writing your code”
  • Static vs dynamic typed languages: an intentionally rigged experiment (Vivek Haldar)“the stat system identified all the places where changes needed to be made at compile time”
  • Probably right Kleinschmager et al. 2012 (static types) lines 455-458For both type-error fixing tasks Java (compile error) beat Groovy (run-time no-such-method failure) significantly in both groups; mean times 78s vs 149s and 44s vs 246s, so a static error message is faster feedback than running the program and tracing the failure.
  • Probably right Hanenberg et al. 2014 (static types) lines 1343-1371All indicators (time, test runs, files opened, file switches) favoured the static type system on type-error tasks because the compiler names the location while a run-time failure appears far from the cause; the feedback came from a compiler in a plain text editor, not an in-editor checker, so the claim's in-editor form is an extrapolation.
  • Leans partly right AI guessDeveloper surveys cite this as TypeScript's main benefit; measured productivity gains from type feedback are modest in experiments.

Pull-request review delays feedback and pushes developers to batch changes, making daily integration impossible.

Leans partly right

Review latency is a measured delay in PR studies, but many teams integrate daily with small PRs, so the incompatibility is not absolute.

· denied 0 ·
Show
  • Why Pull Requests Are a Bad Idea • Dave Farley • GOTO 2022 (GOTO Conferences)“if you can't process my pull request at least once per day then by definition continuous integration is impossible”
  • DORA | Capabilities: Trunk-based development (dora.dev)“When code review is laborious and takes hours or days, developers avoid working in small batches”
  • Leans partly right AI guessReview latency is a measured delay in PR studies, but many teams integrate daily with small PRs, so the incompatibility is not absolute.
  • Leans wrong Sadowski et al. 2018 (Google code review) lines 588-592Google requires pre-commit review on every change yet median review latency is under 4 hours, 70% of changes commit within 24 hours of being sent for review, and the median author lands about 3 changes a week of 24 lines, so per-change review did not prevent daily integration there.
  • Leans partly right DORA State of DevOps 2019 lines 580-588DORA notes elite lead times rose from under an hour to under a day and speculates this may reflect heavier code review and approval processes; it separately finds extra approvals produce larger, less frequent batches, but still recommends per-change peer review, so it does not support the claim that PR review makes daily integration impossible.

Pairs sustain focus better than individuals working alone.

Leans partly right

Reported in pair-programming studies as 'pair pressure', mostly self-reported.

· denied 0 ·
Show

Every comment is a failure to express intent in code and should be treated as a necessary evil.

Leans partly right

Comments had only 33% relative predictive power for readability judgments, less than blank lines; the authors suggest comments appear where code was already less readable so the two balance out, giving neither strong support for comments nor for treating them as failures.

· denied 0 ·
Show

Abbreviated identifiers are no harder to debug than full-word identifiers.

Leans partly right

Scanniello et al. found no difference for debugging, but other comprehension studies found full words help, so results conflict.

· denied 0 ·
Show
  • Intro to Empirical Software Engineering: What We Know We Don't Know • Hillel Wayne • GOTO 2019 (GOTO Conferences)“there's no evidence that a full word is required when an abbreviation can fit in”
  • What We Know We Don't Know (Hillel Wayne)“Fixing Faults in C and Java Source Code: Abbreviated vs. Full-Word Identifier Names (preprint)”
  • Leans partly right AI guessScanniello et al. found no difference for debugging, but other comprehension studies found full words help, so results conflict.
  • Leans partly right Buse & Weimer 2010 (readability) lines 646-652Across 12,000 readability judgments, average identifier length had about zero predictive power and maximum identifier length predicted lower readability, which the authors say fails to support the belief that single-character identifiers hurt maintenance; the outcome is perceived readability of short snippets by students, not debugging performance.
  • Leans partly right Scalabrino et al. 2019 (understandability) lines 825-827Shorter average identifier length correlated weakly (-0.12) with higher perceived understandability, and the identifier-abbreviation metric IMSQ showed no meaningful correlation with any understandability proxy; measured on comprehension of 50 Java methods by 63 participants, not on debugging.

Pair programming shows little measurable effect on defects or productivity in controlled studies.

Leans partly right

Hannay et al.'s meta-analysis found small quality gains and effort increases with high heterogeneity.

· denied 0 ·
Show
  • Intro to Empirical Software Engineering: What We Know We Don't Know • Hillel Wayne • GOTO 2019 (GOTO Conferences)“pair programming type systems etc don't really have that much effect either”
  • What We Know We Don't Know (Hillel Wayne)“Pairing is nice, but it's not "continous code review."”
  • Leans partly right AI guessHannay et al.'s meta-analysis found small quality gains and effort increases with high heterogeneity.
  • Leans partly right Dybå & Dingsøyr 2008 (agile review) lines 1167-1170The review deliberately excluded single-practice studies such as pair-programming experiments, but across the whole-method studies it included it reports mixed findings on pair programming effectiveness; it cannot speak to controlled studies directly.

Code review catches most of the defects in reviewed code.

Leans partly right

Inspection studies report high detection rates under limited review rates; modern lightweight review finds fewer.

· denied 0 ·
Show
  • Intro to Empirical Software Engineering: What We Know We Don't Know • Hillel Wayne • GOTO 2019 (GOTO Conferences)“it finds about 60 to 80 percent of all the bugs in the code”
  • What We Know We Don't Know (Hillel Wayne)“there's more evidence that code review reduces bugs, and the evidence shows a bigger effect”
  • Probably partly right AI guessInspection studies report high detection rates under limited review rates; modern lightweight review finds fewer.
  • Leans partly right Bacchelli & Bird 2013 (Microsoft code review) lines 533-538Defect comments are one-eighth of review comments and mostly micro-level; authors conclude review finds defects less often than teams expect and rarely finds deep or design-level issues, so relying on it for QA 'may be fraught' (defect escape rate itself is not measured).
  • Leans partly right McIntosh et al. 2014 (review coverage) lines 472-492In Qt, VTK and ITK, lower review coverage and participation predict more post-release defects (up to 2 and 5 extra per component), but 70-87% of defective components had 100% of changes reviewed, so review reduces defects without catching most of them.

Testing advocacy has become a dogma that shames developers who do not follow it

Untestable

A claim about community culture and tone, not a measurable effect.

· denied 0 ·
Show

Code review is a major channel for learning and knowledge transfer, especially for newcomers

Leans right

Surveys at Microsoft and Google rank knowledge transfer among the top benefits of review.

· denied 0 ·
Show
  • Critique - Google's Code Review Tool | Reaction (NeetCodeIO)“I learned a lot through code reviews”
  • Best Practices for Code Review (smartbear.com)“Peer review also allows junior team members to learn from senior leaders and for even the most experienced programmers to break bad habits.”
  • Probably right AI guessSurveys at Microsoft and Google rank knowledge transfer among the top benefits of review.
  • Leans right Sadowski et al. 2018 (Google code review) lines 557-576Education is the historical and current main motive for review at Google; developers in their first year get more than twice as many comments per change, falling with tenure, and the set of files a developer has seen through review grows well beyond the files they edited.
  • Leans right Bacchelli & Bird 2013 (Microsoft code review) lines 336-348All interviewees but one cited learning as a reason to review, managers list 'education for junior developers learning the codebase' and grooming backup developers, and 12 of 570 comments explicitly transfer knowledge; the authors note this is self-report rather than hard evidence.

Tests serve as precise, unambiguous low-level documentation of the system

Leans partly right

Tests document behaviour but are hard to navigate as documentation; evidence is practitioner opinion.

· denied 0 ·
Show
  • Clean Coder Blog (blog.cleancoder.com)“The tests act as accurate, precise, and unambiguous documentation at the lowest level of the system.”
  • Gilding the Rose: Refactoring-Driven Development - Kevlin Henney - ACCU 2023 (ACCU Conference)“a failing test you tell exactly what is wrong quickly without have you having to spend a lot of time analyzing the failure”
  • Leans partly right AI guessTests document behaviour but are hard to navigate as documentation; evidence is practitioner opinion.

Fusing data layout with the operation in table-driven, data-oriented code can be an order of magnitude faster than encapsulated class hierarchies

Leans partly right

Well-known data-oriented design result for compute-bound loops; most application code is not compute-bound.

· denied 0 ·
Show
  • "Clean" Code, Horrible Performance (computerenhance.com)“a table-driven version that’s fully 10x faster or more on the exact same problem”
  • "Clean" Code, Horrible Performance (Molly Rocket)“there's no way you're doing any of that using clean code principles because just the nature of how you're going to organize your data”
  • Probably partly right AI guessWell-known data-oriented design result for compute-bound loops; most application code is not compute-bound.

Following clean-code structure rules can cost performance equivalent to a decade or more of hardware improvement

Leans partly right

Holds for the toy benchmark; in typical applications I/O, allocation and network dominate so the end-to-end cost is far smaller.

· denied 0 ·
Show
  • "Clean" Code, Horrible Performance (computerenhance.com)“The first two rules of the “clean code” concept wipe out 12 years of hardware evolution, all by themselves.”
  • "Clean" Code, Horrible Performance (Molly Rocket)“for a certain segment of the Computing industry the answer of why is software so slow it's because of quote unquote clean code”
  • Leans partly right AI guessHolds for the toy benchmark; in typical applications I/O, allocation and network dominate so the end-to-end cost is far smaller.

Code organised by operation rather than by type makes shared patterns visible and easier to simplify

Untestable

A design-perception claim with no agreed measure.

· denied 0 ·
Show
  • "Clean" Code, Horrible Performance (computerenhance.com)“When your code is organized by operation, rather than by type, it’s straightforward to observe and pull out common patterns.”
  • "Clean" Code, Horrible Performance (Molly Rocket)“it's really easy to pull out common patterns when you look at them put together by function rather than by class”
  • Untestable AI guessA design-perception claim with no agreed measure.

Clean-code rules were adopted for maintainability without evidence that they deliver it

Leans partly right

Evidence that small functions or polymorphism improve maintainability is thin and mixed; readability studies are mostly small.

· denied 0 ·
Show
  • "Clean" Code, Horrible Performance (computerenhance.com)“The “clean” code rules were developed because someone thought they would produce more maintainable codebases.”
  • "Clean" Code, Horrible Performance (Molly Rocket)“there is really no way to objectively assess whether these clean code ideas are good or bad”
  • Leans partly right AI guessEvidence that small functions or polymorphism improve maintainability is thin and mixed; readability studies are mostly small.
  • Leans partly right Scalabrino et al. 2019 (understandability) lines 36-42The authors state that knowledge of what affects understandability is tied to common beliefs with no empirical evidence that complexity predicts comprehension effort, and their 121-metric study found no readability or complexity metric correlates with it; this covers metrics, not clean-code rules as practices.
  • Leans partly right Buse & Weimer 2010 (readability) lines 657-669Provides correlational evidence that low readability goes with more defects and churn over 2.2M lines, which cuts against 'without evidence', but the authors stress the model is descriptive and cannot prescribe that applying readability rules will improve code.

Retrofitting static types onto dynamically typed programs finds only a small fraction of their bugs

Leans partly right

Flow and TypeScript each detect 60 of 400 sampled public JavaScript bugs (15%, 95% CI 11.5-18.5%), so retrofitted types find a minority of bugs, but the authors stress this is a lower bound (public bugs only, two weak type systems, non-expert annotators) and an engineering manager called a 10% reduction a no-brainer.

· denied 0 ·
Show
  • Literature review on the benefits of static types (danluu.com)“you'd expect that this technique caught between 4% and 15% of the bugs in this code”
  • Laurence Tratt: Dynamically Typed Languages (tratt.net)“in practice, run-time type errors in deployed programs are exceedingly rare”
  • Leans partly right AI guessLater work on JavaScript found roughly fifteen percent of public bugs detectable by TypeScript or Flow; still a minority.
  • Leans partly right Gao, Bird & Barr 2017 (types vs JS bugs) lines 372-377Flow and TypeScript each detect 60 of 400 sampled public JavaScript bugs (15%, 95% CI 11.5-18.5%), so retrofitted types find a minority of bugs, but the authors stress this is a lower bound (public bugs only, two weak type systems, non-expert annotators) and an engineering manager called a 10% reduction a no-brainer.

Skipping architecture review in a project's first weeks locks in decisions that take years to undo

Leans partly right

Early structural decisions are the costliest to reverse, though the exponential defect-cost curve behind this is overstated.

· denied 0 ·
Show

Decomposing code into very small methods can go too far, producing shallow interfaces and entangled methods that are harder to read than one longer method

Leans partly right

Controlled studies find no comprehension gain from splitting code into very small methods, though none establishes where the optimum lies.

· denied 0 ·
Show

Very small changes can be worse than mid-sized ones because their implications are hidden and they are reverted more often

Leans partly right

One vendor dataset shows higher revert rates under ten lines, plausibly from config changes; the pattern has not been replicated.

· denied 0 ·
Show
  • Small CLs (eng-practices)“The CL is not so small that its implications are difficult to understand.”
  • The ideal PR is 50 lines long (Graphite)“Sub-10 line PRs are reverted noticeably more than 10-100 line PRs.”
  • Leans partly right AI guessOne vendor dataset shows higher revert rates under ten lines, plausibly from config changes; the pattern has not been replicated.

Technical debt consumes a substantial fraction of developers' working time

Leans partly right

Besker et al. surveys report roughly a quarter of time self-reported as wasted, but the figures are self-reported and vary widely.

· denied 0 ·
Show
  • Code Red: the Business Impact of Code Quality (InfoQ)“the average company wastes 23-42% of developers' time due to technical debt and bad code in general”
  • Technical Neglect, Kevlin Henney (Codecamp Romania)“out of an 8 hour working day a developer would spend 7 hour hours on failure demand”
  • Probably partly right AI guessBesker et al. surveys report roughly a quarter of time self-reported as wasted, but the figures are self-reported and vary widely.
  • Leans partly right DORA State of DevOps 2019 lines 1677-1681Respondents reporting high technical debt were 1.6 times less productive and the highest performers were 1.4 times more likely to have low technical debt; the survey measures a productivity drag, not a fraction of working time.
  • Leans partly right Tornhill & Borg 2022 (Code Red) lines 152-158The paper's own measurement is per-file (issues in Alert code take 124% longer, Warning 78%) rather than a share of total time; in related work it relays Besker et al.'s longitudinal self-reports of 23% of time wasted on TD and Stripe's 42% figure, which are secondary citations here.

Decomposing a monolith only works if it already has a reasonably modular design; tangled monoliths just produce a mess

Leans partly right

Consistent with migration case studies, though some decompositions of tangled code succeeded with heavy investment.

· denied 0 ·
Show
  • Monolith First (martinfowler.com)“Most systems acquire too many dependencies between their modules, and thus can't be sensibly broken apart.”
  • Back to the Monolith: Why Did Amazon Dump Microservices? | Nordic APIs | (Nordic APIs)“converting to microservices without proper planning simply trades bad code for faulty infrastructures”
  • Probably partly right AI guessConsistent with migration case studies, though some decompositions of tangled code succeeded with heavy investment.

Rote, repetitive code is a design smell, and pairing helps find the missing abstraction

Leans partly right

Plausible; no evidence.

· denied 0 ·
Show
  • On Pair Programming (martinfowler.com)“rote tasks might be a smell for bad design: Pairing can help you find the right abstraction for that boring code”
  • Pair Programming Misconceptions (martinfowler.com)“writing boring rote code is a smell. If I'm writing boring repetitive code it's usually a sign that I've missed an important abstraction”
  • Leans partly right AI guessPlausible; no evidence.

Debt is prudent when taken deliberately to ship sooner with small interest, and reckless when taken without understanding its cost

Untestable

Classification framework.

· denied 0 ·
Show
  • Technical Debt Quadrant (martinfowler.com)“the useful distinction isn't between debt or non-debt, but between prudent and reckless debt”
  • Technical Neglect, Kevlin Henney (Codecamp Romania)“a little debt speeds development so long as it is paid back promptly with a rewrite”
  • Untestable AI guessClassification framework.

Rotating the driver every few minutes keeps every team member engaged

Leans partly right

Engagement is self-reported; no comparative data.

· denied 0 ·
Show

Microservices' independent scaling and fault isolation pay off at very large scale where downtime is costly

Leans partly right

Netflix and Amazon cases support it; there is no evidence about where the threshold lies.

· denied 0 ·
Show
  • Back to the Monolith: Why Did Amazon Dump Microservices? | Nordic APIs | (Nordic APIs)“microservices and serverless solutions often make sense for an organization of Amazon's size”
  • Serverless was a big mistake... says Amazon (Fireship)“if Netflix goes down for a few hours it'll cost them way more money and lost memberships”
  • Probably partly right AI guessNetflix and Amazon cases support it; there is no evidence about where the threshold lies.
  • Leans partly right Soldani et al. 2018 (microservices review) lines 962-976Scalability is the most cited gain (31 of 51 sources) and fault isolation is cited by 14, confirming these as the recognised payoffs, but the review gives no evidence on a scale threshold at which they start to pay.

Functions should be extracted until each does one thing, meaning nothing further can be meaningfully extracted

Leans partly right

Smaller methods correlate with fewer defects up to a point, but studies find very small, deeply delegating methods hurt comprehension.

· denied 0 ·
Show
  • How small should a function be? - Robert C. Martin (Uncle Bob) (Dev Tools Made Simple)“a function does one thing if you cannot meaningfully extract another function from it”
  • Review: A Philosophy of Software Design by John Ousterhout (Yevgeniy Brikman)“you can read a handful of method names, which makes the code easier to understand”
  • Leans partly right AI guessSmaller methods correlate with fewer defects up to a point, but studies find very small, deeply delegating methods hurt comprehension.
  • Leans partly right Scalabrino et al. 2019 (understandability) lines 976-978Interviewed developers cited 'implements a single task' as a positive for the most understandable method and 'too many responsibilities' as a negative for the least understandable one; five-developer opinion on four methods, no test of the 'extract until nothing further' rule.

Using story points to predict delivery dates is weak, and comparing teams by velocity or estimate accuracy is harmful

Leans partly right

Velocity is team-relative by construction; Goodhart effects on normalised points are widely reported.

· denied 0 ·
Show
  • Story Points Revisited (ronjeffries.com)“I think comparing teams on quality of estimates or velocity is harmful.”
  • Why Story Points Are a Complete Waste of Time (Lead Prompt Podcast)“This makes it impossible to compare the productivity of different teams using story points.”
  • Probably partly right AI guessVelocity is team-relative by construction; Goodhart effects on normalised points are widely reported.
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 4210-4227Relative (story-point style) estimation is found no more accurate than absolute time estimation and prone to underestimating large items, supporting weak date prediction; comparing teams by velocity is not examined.

Early in a system's life little design is needed; design investment should start when feature speed begins to slow

Leans partly right

Fowler's design stamina hypothesis is a hypothesis; consistent with debt-payoff reasoning.

· denied 0 ·
Show

Measured productivity gaps between programmers are mostly between competent and net-negative developers, not between good and great

Leans partly right

Re-analyses of the classic studies show best-to-worst ratios of ten or more but quartile ratios nearer two to four, so the gap depends on which tail you include.

· denied 0 ·
Show
  • The 10x Programmer Myth (Simple Thread)“Compared to someone like this, everyone is a 10x programmer!”
  • The 10x developer is NOT a myth (Yevgeniy Brikman)“the type of hires that can sink an organization, actively increasing tech debt with every line of code they write”
  • Leans partly right AI guessRe-analyses of the classic studies show best-to-worst ratios of ten or more but quartile ratios nearer two to four, so the gap depends on which tail you include.
  • Leans partly right Prechelt 1999 (28:1 legend) lines 196-198The large max/min ratios in the Grant/Sackman groups usually stem from a single very slow subject, so extreme measured gaps are driven by slow outliers rather than exceptional fast ones; the report does not characterise those outliers as net-negative.

Any sound static type system rejects some programs that would never fail at run time

Leans right

Follows from undecidability; every practical sound type system is incomplete.

· denied 0 ·
Show
  • Laurence Tratt: Another Non-Argument in Type Systems (tratt.net)“if the type system is sound then (because of the expressivity of programming languages) it will be incomplete, rejecting some programs”
  • Laurence Tratt: Dynamically Typed Languages (tratt.net)“Since any practical type system needs to be both decidable and sound, they are not complete; in other words, certain valid programs will be rejected”
  • Almost certainly right AI guessFollows from undecidability; every practical sound type system is incomplete.

Dynamic languages can run programs that are deliberately not statically type-safe, which helps when exploring or modifying large systems

Leans partly right

Running partially broken code aids exploration, but gradual typing and IDE tooling narrow the gap.

· denied 0 ·
Show
  • Laurence Tratt: Another Non-Argument in Type Systems (tratt.net)“ability to execute and run programs which are deliberately not statically type safe (a useful property when comprehending and modifying large systems)”
  • Laurence Tratt: Dynamically Typed Languages (tratt.net)“static types inhibit large-scale refactorings, tending to ossify a program’s structure”
  • Leans partly right AI guessRunning partially broken code aids exploration, but gradual typing and IDE tooling narrow the gap.

A change passing its test suite is a weak proxy for whether a maintainer would actually merge it

Leans right

Tests only cover specified behaviour and cannot see maintainability, scope or hidden coupling; the METR maintainer study cited here supports this, though it is one study on agent-written PRs.

· denied 0 ·
Show

Running several independent automated review passes and keeping only agreed findings reduces false positives and improves review quality

Leans partly right

Ensemble and self-consistency effects are well documented for language models, but the size of the review-quality gain rests on one academic paper and vendor reports.

· denied 0 ·
Show

Automated code reviewers are fooled by confidently framed malicious changes far more often than human reviewers

Leans partly right

Prompt injection against LLM reviewers is a documented weakness and vendors warn about it themselves, but the specific human-versus-agent comparison comes from a single study.

· denied 0 ·
Show

Assigning people to review code full time to absorb more volume burns reviewers out

Leans partly right

Review fatigue and the tedium of full-time review are widely reported by practitioners, but there is no measured burnout study specific to this arrangement.

· denied 0 ·
Show

The human role in code review is shifting from reading diffs to designing and tuning the systems that inspect code

Untestable

A forecast about how roles will evolve rather than a claim that can be checked against evidence.

· denied 0 ·
Show

Writing tests after the code leaves holes in the suite because hard-to-test code gets skipped

Leans partly right

The mechanism is plausible and matches practitioner experience, but controlled TDD studies measure defects and productivity rather than coverage gaps, so the size of the effect is not established.

· denied 0 ·
Show
  • Why you should write tests first - Uncle Bob (Dev Tools Made Simple)“you walk away and you leave a hole in the test Suite”
  • Leans partly right AI guessThe mechanism is plausible and matches practitioner experience, but controlled TDD studies measure defects and productivity rather than coverage gaps, so the size of the effect is not established.
  • Leans partly right Karac & Turhan 2018 (TDD review) lines 178-184The review grants that TDD yields more tests than test-last, but reports that test quality, maintainability and co-evolution with production code get little attention, so more tests is not the same as fewer holes.
  • Leans wrong Fucci et al. 2016 (TDD replication) lines 440-447Test-last developers wrote as many unit-test asserts as TDD developers (sign test p=1.00, Cliff's delta 0.07), though in a 3-hour kata with incremental test-last there is little hard-to-test code to skip.

A test suite with known gaps gives no decision value when it passes, so it cannot be trusted

Untestable

A framing about what trust in a suite means rather than a measurable outcome; partial suites still catch some regressions.

· denied 0 ·
Show
  • Why you should write tests first - Uncle Bob (Dev Tools Made Simple)“a test Suite that does does not allow you to make a decision when it passes is a useless test Suite”
  • Untestable AI guessA framing about what trust in a suite means rather than a measurable outcome; partial suites still catch some regressions.

Making a failing test pass gives a small reward that makes test-first more enjoyable than writing tests afterwards

Untestable

A claim about enjoyment and motivation that varies by person.

· denied 0 ·
Show
  • Why you should write tests first - Uncle Bob (Dev Tools Made Simple)“every time you make a test pass there's a little shot of endorphins to the back of your brain”
  • Untestable AI guessA claim about enjoyment and motivation that varies by person.

Having the whole team at one keyboard eliminates waiting for answers to blocking questions

Leans partly right

The mechanism follows directly from having all needed skills present, and mob case studies report it, but there is no controlled comparison and it depends on the product owner being present too.

· denied 0 ·
Show
  • Mob Programming, A Whole Team Approach - Woody Zuill (NDC Conferences)“we just automatically noticed we weren't waiting to get answers to questions anymore because everybody was there”
  • Leans partly right AI guessThe mechanism follows directly from having all needed skills present, and mob case studies report it, but there is no controlled comparison and it depends on the product owner being present too.

Mob programming finishes stories in hours that took individuals working separately weeks

Unknown

Self-reported from one team with the speaker himself saying the card comparison is not proof; no independent measurement of mob throughput exists.

· denied 0 ·
Show
  • Mob Programming, A Whole Team Approach - Woody Zuill (NDC Conferences)“stories that used to take two weeks for individuals working separately to get done we're now getting done in three or four hours”
  • Unknown AI guessSelf-reported from one team with the speaker himself saying the card comparison is not proof; no independent measurement of mob throughput exists.

Working as one group on one stream of work removes merge conflicts

Leans right

A single group working on one branch has nothing to merge, so this follows by construction and is consistently reported by mob teams.

· denied 0 ·
Show
  • Mob Programming, A Whole Team Approach - Woody Zuill (NDC Conferences)“with this we've never had merging problems”
  • Probably right AI guessA single group working on one branch has nothing to merge, so this follows by construction and is consistently reported by mob teams.

Switching tasks to fill time while blocked creates work-in-progress inventory instead of fixing the queueing problem

Leans partly right

Lean and queueing theory plus context-switching research support the cost of multitasking and partially done work; the inventory framing is a model rather than a measurement.

· denied 0 ·
Show
  • Mob Programming, A Whole Team Approach - Woody Zuill (NDC Conferences)“let's not solve a queueing problem by introducing an inventory problem”
  • Probably partly right AI guessLean and queueing theory plus context-switching research support the cost of multitasking and partially done work; the inventory framing is a model rather than a measurement.
  • Leans partly right Meyer et al. 2014 (productivity perceptions) lines 501-505Observed developers who were blocked (e.g. waiting for a build) switched to email, code reviews or other small tasks and reported that this increases their productivity; this is self-perception of low-cost switches and does not measure work-in-progress or queueing effects.

Sustained mob programming requires members to treat each other with kindness, consideration and respect

Untestable

A team norm whose necessity cannot be separated from the practice in available evidence.

· denied 0 ·
Show

Short daily retrospectives keep improvement on track better than infrequent longer ones

Unknown

Plausible by analogy to frequent feedback loops but no study compares retrospective cadence.

· denied 0 ·
Show

Most software developers, including game developers, work roughly normal hours with only occasional overtime

Leans partly right

Industry surveys such as IGDA's find crunch still common in games with roughly half of respondents reporting it, so the picture is mixed; the video's own survey is small and self-selected.

· denied 0 ·
Show
  • Overtime & Crunching in Game Development (vs others) (Jason Weimann (GameDev))“overall in general people work pretty damned normal times”
  • Leans partly right AI guessIndustry surveys such as IGDA's find crunch still common in games with roughly half of respondents reporting it, so the picture is mixed; the video's own survey is small and self-selected.

Much developer overtime is self-imposed from passion rather than mandated by employers

Leans partly right

Surveys find both self-driven and management-driven crunch, and normative pressure makes voluntary overtime hard to separate from expected overtime.

· denied 0 ·
Show
  • Overtime & Crunching in Game Development (vs others) (Jason Weimann (GameDev))“it's developers who just really love their product and they can't stop working on it”
  • Leans partly right AI guessSurveys find both self-driven and management-driven crunch, and normative pressure makes voluntary overtime hard to separate from expected overtime.

Smaller companies tend to have somewhat more overtime than larger ones

Unknown

Based on a small informal survey; broader data on company size and hours in software is inconsistent.

· denied 0 ·
Show
  • Overtime & Crunching in Game Development (vs others) (Jason Weimann (GameDev))“the smaller companies tended to have a little bit more overtime”
  • Unknown AI guessBased on a small informal survey; broader data on company size and hours in software is inconsistent.

Game features need more iteration than business software because feel and fun cannot be specified on paper

Untestable

A judgment about the nature of the work rather than a measurable claim.

· denied 0 ·
Show

Reusing an old feature flag can switch on dormant code paths with catastrophic results

Leans right

The Knight Capital incident is documented in the SEC order as a repurposed flag plus an incomplete deployment, and flag hygiene guidance exists because of such cases.

· denied 0 ·
Show
  • code.talks 2023 - Our journey from Gitflow to Trunk Based Development (code.talks (ehem. Developer Conference))“they recycled an old future flag and when they turn it on the last machine that did not receive the new version”
  • Very likely right AI guessThe Knight Capital incident is documented in the SEC order as a repurposed flag plus an incomplete deployment, and flag hygiene guidance exists because of such cases.

Trunk-based development only works with a fast comprehensive test suite and same-day code review

Leans partly right

Practitioner accounts and DORA both treat fast automated tests as a prerequisite for continuous delivery; synchronous review is one way to meet the merge cadence but not the only one.

· denied 0 ·
Show
  • code.talks 2023 - Our journey from Gitflow to Trunk Based Development (code.talks (ehem. Developer Conference))“you need to have a pretty strong test Suite in terms of completeness a good coverage and it needs to execute fasts”
  • Probably partly right AI guessPractitioner accounts and DORA both treat fast automated tests as a prerequisite for continuous delivery; synchronous review is one way to meet the merge cadence but not the only one.

Ephemeral per-branch environments remove the bottleneck of shared test environments

Leans partly right

The queueing mechanism is sound and widely reported, but evidence is practitioner case studies and the environments bring their own cost and data-seeding work.

· denied 0 ·
Show
  • code.talks 2023 - Our journey from Gitflow to Trunk Based Development (code.talks (ehem. Developer Conference))“we remove the bottleneck okay it's been completely removed”
  • Leans partly right AI guessThe queueing mechanism is sound and widely reported, but evidence is practitioner case studies and the environments bring their own cost and data-seeding work.

Trunk-based development is unsuited to products that must tightly control released versions

Leans partly right

Release branches cut from trunk are a standard way to ship versioned products from trunk, so the limit is weaker than stated, though strict version control does reduce the practice's advantages.

· denied 0 ·
Show
  • code.talks 2023 - Our journey from Gitflow to Trunk Based Development (code.talks (ehem. Developer Conference))“maybe trunk base development is not suitable for you and git flow still is a good option”
  • Leans partly right AI guessRelease branches cut from trunk are a standard way to ship versioned products from trunk, so the limit is weaker than stated, though strict version control does reduce the practice's advantages.
  • Leans partly right DORA State of DevOps 2019 lines 1044-1070DORA notes open-source releases are cut from a branch at a point in time after significant testing, a different cadence from continuous delivery, yet says short-lived branches and small patches still apply there; it does not test products with tightly controlled versions directly.

Developers who deploy their own work to production are happier because they see its impact

Leans partly right

DORA surveys associate continuous delivery with lower burnout and higher job satisfaction, but causation is not isolated and this is one team's impression.

· denied 0 ·
Show
  • code.talks 2023 - Our journey from Gitflow to Trunk Based Development (code.talks (ehem. Developer Conference))“they are way much happier than before when they were just like okay I finished this feature somebody else is going to validate”
  • Leans partly right AI guessDORA surveys associate continuous delivery with lower burnout and higher job satisfaction, but causation is not isolated and this is one team's impression.

Feature flags carry an ongoing removal cost that teams must schedule and pay back

Leans right

Stale-flag debt is well documented and large companies have built tooling specifically to remove dead flags.

· denied 0 ·
Show

In TDD the unit of isolation is the test, not the class under test

Untestable

A definitional reading of Kent Beck's book rather than an empirical claim.

· denied 0 ·
Show

Customer-readable acceptance test suites are rarely read by customers and carry a heavy maintenance burden

Leans partly right

Practitioner consensus including the Fit author's own retraction supports this, though some teams report value from Gherkin-style specs; no controlled study exists.

· denied 0 ·
Show
  • 🚀 TDD, Where Did It All Go Wrong (Ian Cooper) (DevTernity Conference)“the customers never really looked at this stuff right”
  • Leans partly right AI guessPractitioner consensus including the Fit author's own retraction supports this, though some teams report value from Gherkin-style specs; no controlled study exists.

Getting a test to green with quick dirty code and then refactoring is faster than engineering the design up front

Leans partly right

Kent Beck's original claim, consistent with cognitive-load arguments against solving and designing at once, but not directly measured.

· denied 0 ·
Show
  • 🚀 TDD, Where Did It All Go Wrong (Ian Cooper) (DevTernity Conference)“for this brief moment speed Trump's design I want to get there as fast as I can”
  • Leans partly right AI guessKent Beck's original claim, consistent with cognitive-load arguments against solving and designing at once, but not directly measured.

The refactoring step needs no new tests because behaviour is unchanged and already covered

Untestable

Practice advice that follows from the definition of refactoring; whether existing tests actually cover the behaviour is case by case.

· denied 0 ·
Show
  • 🚀 TDD, Where Did It All Go Wrong (Ian Cooper) (DevTernity Conference)“when you refactor and this is the really important part you do not write any new tests”
  • Untestable AI guessPractice advice that follows from the definition of refactoring; whether existing tests actually cover the behaviour is case by case.

Tests written to probe implementation details should be deleted once they have served their purpose

Untestable

A judgment about test maintenance trade-offs with no empirical comparison.

· denied 0 ·
Show
  • 🚀 TDD, Where Did It All Go Wrong (Ian Cooper) (DevTernity Conference)“at the end of that process delete the tests the tests help guide you but now they're a burden to somebody else”
  • Untestable AI guessA judgment about test maintenance trade-offs with no empirical comparison.

Alternating collaboration with individual work produces better solutions than either constant collaboration or isolation

Leans right

The Bernstein, Shore and Lazer intermittent-collaboration experiment found this pattern, though on abstract problem-solving tasks rather than software work.

· denied 0 ·
Show
  • Open plan offices are terrible for innovation and productivity (Nick Skillicorn)“people were both collaborating for part of the time and then had time to work individually this gave the high performers the chance”
  • Probably right AI guessThe Bernstein, Shore and Lazer intermittent-collaboration experiment found this pattern, though on abstract problem-solving tasks rather than software work.
  • Leans right Bernstein & Turban 2018 (open offices) lines 431-434Cites Bernstein, Shore and Lazer finding that intermittent rather than constant social influence produced the best performance in collective problem solving, alongside the paper's own result that constant openness cut face-to-face interaction about 70%; the supporting study is a cited working paper, not this paper's data.

Taking on small third-party dependencies for trivial functions adds fragility out of proportion to the code saved

Leans right

The left-pad incident and subsequent supply-chain research show deep transitive dependency trees in npm expose projects to removals and malicious updates.

· denied 0 ·
Show

Coding conventions spread by repetition rather than understanding, producing cargo-cult practices

Untestable

A sociological framing about how practices propagate.

· denied 0 ·
Show

Work expands to fill the time and headcount given to it

Leans partly right

Parkinson's law and Brooks's law have anecdotal and some experimental support for deadline effects, but the ten-versus-hundred example is a single anecdote.

· denied 0 ·
Show
  • Clean Coders Hate What Happens to Your Code When You Use These Enterprise Programming Tricks (NDC Conferences)“if you tell people this is going to be six months worth of work they will pack it full to the six months and Beyond”
  • Leans partly right AI guessParkinson's law and Brooks's law have anecdotal and some experimental support for deadline effects, but the ten-versus-hundred example is a single anecdote.
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 1518-1539Software teams allowed to plan with their original (higher) estimates were less productive than those cut by up to 20%, and a company rewarding accurate estimates saw padded estimates with the buffer absorbed into extra work ('work stretching'); headcount is not addressed.
  • Leans partly right Jørgensen 2004 (expert estimation) lines 1134-1137Review notes a self-fulfilling-prophecy effect: projects that over-estimate most likely effort can reach high accuracy by spending the remaining effort gold-plating the product.

Names carry most of a program's design intent, so vague names like Manager signal weak design

Leans partly right

Identifier studies show descriptive names improve comprehension; the specific heuristic about vague suffixes is expert opinion.

· denied 0 ·
Show
  • Clean Coders Hate What Happens to Your Code When You Use These Enterprise Programming Tricks (NDC Conferences)“the name is not merely a label on your design your name is your design”
  • Leans partly right AI guessIdentifier studies show descriptive names improve comprehension; the specific heuristic about vague suffixes is expert opinion.
  • Leans partly right Scalabrino et al. 2019 (understandability) lines 1077-1079All five interviewed developers named identifier quality as a factor in understandability (generic names like processChar were called ambiguous), but none of the quantitative identifier metrics across 444 evaluations correlated more than weakly with understanding; nothing on 'Manager'-style names signalling weak design.

Logging without stated requirements grows until it dominates the codebase

Unknown

Anecdotal from client codebases; no measurement of logging proportion across projects.

· denied 0 ·
Show

The main benefits of microservices are independent deployability, data isolation and organisational autonomy

Leans partly right

Practitioner surveys and case studies report these as the realised motivations, alongside maintainability and operational costs that offset them.

· denied 0 ·
Show
  • When To Use Microservices (And When Not To!) • Sam Newman & Martin Fowler • GOTO 2020 (GOTO Conferences)“independent deployability um i say data partitioning and i would say sort of organizational autonomy”
  • Probably partly right AI guessPractitioner surveys and case studies report these as the realised motivations, alongside maintainability and operational costs that offset them.
  • Leans partly right Soldani et al. 2018 (microservices review) lines 1070-1074Across 51 industrial sources independent deployment (19) and database-per-service/data isolation (20) are major gains, but scalability (31) and loose coupling (27) are cited most, decentralised governance appears in only 7, and organisational benefits were out of scope.
  • Leans partly right DORA State of DevOps 2019 lines 1071-1079DORA finds what drives performance is a loosely coupled architecture in which teams can test, deploy and change their systems independently, naming bounded contexts, APIs and microservices as ways to get there; data isolation and organisational autonomy are not measured separately.

Deploying one small service limits the scope and risk of each release compared with redeploying a whole monolith

Leans partly right

Smaller change sets do carry less risk, but as Fowler notes in the same conversation the distributed system adds integration risk a monolith can test end to end, so the net effect depends.

· denied 0 ·
Show
  • When To Use Microservices (And When Not To!) • Sam Newman & Martin Fowler • GOTO 2020 (GOTO Conferences)“if i'm just deploying a single service i can reduce the scope of that individual deployment”
  • Leans partly right AI guessSmaller change sets do carry less risk, but as Fowler notes in the same conversation the distributed system adds integration risk a monolith can test end to end, so the net effect depends.
  • Leans right Soldani et al. 2018 (microservices review) lines 971-98119 of 51 industrial sources highlight that microservices deploy and undeploy independently and 14 that live updates apply to one service without touching the others, which is the mechanism behind smaller release scope; grey literature, no measured risk data.

Process boundaries enforce modularity that in-process modules fail to because languages let developers violate them

Leans partly right

Architecture erosion studies confirm in-process modules decay, but distributed monoliths show process boundaries get violated too via shared databases and chatty coupling.

· denied 0 ·
Show

Splitting a shared relational database is the hardest part of decomposition and gives up joins and transactions

Leans right

Loss of cross-service joins and ACID transactions is intrinsic to the approach and migration literature consistently names data as the main difficulty.

· denied 0 ·
Show
  • When To Use Microservices (And When Not To!) • Sam Newman & Martin Fowler • GOTO 2020 (GOTO Conferences)“if you're going to micro services that's all going out the window”
  • Very likely right AI guessLoss of cross-service joins and ACID transactions is intrinsic to the approach and migration literature consistently names data as the main difficulty.
  • Leans right Soldani et al. 2018 (microservices review) lines 991-999Storage is the primary development-time pain in the grey literature: distributing data makes consistency hard (21 sources), distributed transactions hard (18) and cross-store queries hard (9), matching the loss of joins and transactions.

Adopting microservices without changing the organisation yields the costs without the benefits

Leans partly right

Consistent with Conway's law research and practitioner reports, but it is an expert judgment rather than a measured outcome.

· denied 0 ·
Show

Static typing produces fewer bugs and more readable code in large systems

Leans partly right

Large GitHub studies found a small defect advantage for static typing that weakened on replication, and bug-detectability studies suggest a type checker catches a minority of real bugs, so the benefit is real but modest.

· denied 0 ·
Show
  • Static vs Dynamic Typing (Boot dev)“the advice has always been static typing is better and the reason being it results in fewer bugs”
  • Leans partly right AI guessLarge GitHub studies found a small defect advantage for static typing that weakened on replication, and bug-detectability studies suggest a type checker catches a minority of real bugs, so the benefit is real but modest.
  • Leans partly right Kleinschmager et al. 2012 (static types) lines 447-473Static types made undocumented classes faster to use (4 of 5 class-identification tasks) and type errors faster to fix, but gave no benefit on semantic errors; the study measured time, not bug counts, on a 30-class, 1300-line program, so 'fewer bugs' and 'large systems' are untested.
  • Leans partly right Hanenberg et al. 2014 (static types) lines 111-121The authors conclude static types act as effective documentation and reduce effort to fix type errors but may not help with semantic errors; the readability mechanism is supported (fewer file switches, less navigation) while defect rates and large codebases were not studied.
  • Leans partly right Prechelt 2000 (seven languages) lines 340-384Across 80 implementations of one small program, the dynamically typed scripts were not less reliable than the statically typed C/C++/Java programs; C/C++ were the least reliable group and half the Java programs crashed on empty inputs, so no reliability edge for static typing appeared, though only small programs were compared.
  • Leans partly right Ray et al. 2014 (languages on GitHub) lines 721-725In 729 GitHub projects statically typed languages have a modestly lower association with bug-fix commits than dynamic ones (static functional vs dynamic functional p=0.034), but language explains under 1% of deviance versus project activity, bug fixes are identified by commit-message keywords, and readability is not measured.
  • Unknown Berger et al. 2019 (languages reproduction) lines 203-210The reproduction concludes the GitHub data cannot establish a causal link between language and code quality and even the correlation is questionable; after cleaning, only C++ (more bugs) and Clojure, Haskell, Ruby (fewer) remain significant with exceedingly small effects, a pattern that does not split by static vs dynamic typing.

DORA metrics measure delivery velocity and stability but do not translate directly into business outcomes

Leans partly right

DORA's own reports find the four keys correlate with organisational performance, so a link exists, but it is indirect and does not say whether features were the right ones.

· denied 0 ·
Show
  • DORA Metrics: We've Been Using Them Wrong (LinearB)“Dora metrics don't always equal business outcomes the two are not the same thing”
  • Leans partly right AI guessDORA's own reports find the four keys correlate with organisational performance, so a link exists, but it is indirect and does not say whether features were the right ones.
  • Leans partly right DORA State of DevOps 2019 lines 80-86The four metrics do measure throughput and stability as the claim says, but DORA's own survey model finds SDO performance predicts self-reported organisational performance (profitability, market share, customer satisfaction), with elite performers twice as likely to meet their goals, so the metrics do translate statistically, if not mechanically, into business outcomes.

DORA metrics are retrospective and cannot be acted on until after code has shipped

Leans partly right

They are lagging indicators by construction, though teams routinely act on their trends, so the practical limitation is smaller than framed.

· denied 0 ·
Show
  • DORA Metrics: We've Been Using Them Wrong (LinearB)“when you measure them your process has already happened”
  • Leans partly right AI guessThey are lagging indicators by construction, though teams routinely act on their trends, so the practical limitation is smaller than framed.

Pull requests spend about half their lifetime idle waiting for someone

Leans partly right

A vendor dataset with a product to sell, though independent studies at Google and Microsoft also find review wait time dominates review cycle time.

· denied 0 ·
Show
  • DORA Metrics: We've Been Using Them Wrong (LinearB)“half of all pull requests that we analyzed are idle for half of their lifespan”
  • Leans partly right AI guessA vendor dataset with a product to sell, though independent studies at Google and Microsoft also find review wait time dominates review cycle time.

Developers do not care about DORA metrics, only about merging their code quickly

Untestable

A generalisation about motivation that varies by team.

· denied 0 ·
Show

Automatically approving trivial changes and routing risky ones to senior reviewers speeds flow without losing safety

Leans partly right

Risk-based review routing is plausible and used at large companies, but the benefit here rests on a vendor's product claim with no independent measurement.

· denied 0 ·
Show
  • DORA Metrics: We've Been Using Them Wrong (LinearB)“minor changes like a text file or uh something like that automatically approved you know you don't even need a reviewer on that”
  • Leans partly right AI guessRisk-based review routing is plausible and used at large companies, but the benefit here rests on a vendor's product claim with no independent measurement.
  • Leans partly right McIntosh et al. 2014 (review coverage) lines 548-560Components with more self-approved or undiscussed changes have more post-release defects in Qt (self-approval above 0.84 adds about five), which cautions against skipping review, though the study does not separate trivial from risky changes.
  • Leans partly right Bird et al. 2011 (code ownership) lines 672-680Because changes by low-expertise minor contributors predict pre- and post-release failures in Windows, the authors recommend giving those changes more scrutiny, preferably from major contributors; the routing policy was under evaluation, not yet tested.
  • Leans partly right Sadowski et al. 2018 (Google code review) lines 441-444The least satisfied Google review responses concern very small changes (1 word or 2 lines) and config changes where review 'had less impact', consistent with trivial changes gaining little from review; safety of auto-approval is not tested.

Mutation score measures test suite quality better than coverage does

Leans right

Just et al. found mutant detection correlates with real-fault detection, with caveats about mutant representativeness.

· denied 0 ·
Show
  • Mutation Testing in Python with Cosmic Ray - Austin Bingham - NDC TechTown 2024 (NDC Conferences)“the quality of your tests can be gauged by the percentage of mutations killed”
  • Probably right AI guessJust et al. found mutant detection correlates with real-fault detection, with caveats about mutant representativeness.
  • Leans partly right Inozemtseva & Holmes 2014 (coverage) lines 635-639The study uses mutation score as its ground-truth measure of fault-detection effectiveness and finds coverage tracks it only weakly; the authors suggest mutation score as a substitute for coverage, but this is their judgment, not a head-to-head test against real faults.

A surviving mutant reveals either a missing test or code that can be removed

Leans partly right

A surviving mutant may be an equivalent mutant (e.g. == changed to >= with identical behaviour) rather than a missing test, and manual inspection is needed to tell; the study classified up to 35% of mutants as equivalent, so the either/or omits a third case.

· denied 0 ·
Show
  • Mutation Testing in Python with Cosmic Ray - Austin Bingham - NDC TechTown 2024 (NDC Conferences)“your tests are inadequate to protect this change this Behavior modifying change or the code that was mutated is extraneous”
  • Probably right AI guessFollows from the technique, with the third possibility of an equivalent mutant that the speaker also acknowledges.
  • Leans partly right Inozemtseva & Holmes 2014 (coverage) lines 212-250A surviving mutant may be an equivalent mutant (e.g. == changed to >= with identical behaviour) rather than a missing test, and manual inspection is needed to tell; the study classified up to 35% of mutants as equivalent, so the either/or omits a third case.

Mutation testing is too slow to run routinely without parallelisation or incremental selection

Leans right

Runtime is the documented adoption barrier; Google's deployment runs mutation analysis only on changed lines for this reason.

· denied 0 ·
Show

Equivalent mutants cannot be detected automatically and require human judgment

Probably right

Manual inspection is required because automatically determining whether a mutant is equivalent is undecidable, which is why studies fall back on assuming anything the master suite misses is equivalent.

· denied 0 ·
Show
  • Mutation Testing in Python with Cosmic Ray - Austin Bingham - NDC TechTown 2024 (NDC Conferences)“it is not really detectable in any practical way”
  • Very likely right AI guessEquivalent mutant detection is undecidable in general; heuristics and compiler-based detection remove some but not all.
  • Probably right Inozemtseva & Holmes 2014 (coverage) lines 280-281Manual inspection is required because automatically determining whether a mutant is equivalent is undecidable, which is why studies fall back on assuming anything the master suite misses is equivalent.

Higher-level behavioural tests make mutation testing more practical than many fine-grained unit tests

Unknown

A practitioner hunch; fewer larger tests may run slower per mutant, so the net effect on runtime is unclear.

· denied 0 ·
Show

Full line coverage is relatively easy to reach when a team is motivated

Leans partly right

Achievable for many codebases but costly for legacy or hardware-bound code; coverage-driven tests are often weak, which is the speaker's own point.

· denied 0 ·
Show
  • Mutation Testing in Python with Cosmic Ray - Austin Bingham - NDC TechTown 2024 (NDC Conferences)“that's actually relatively easy to get if you're if you're motivated to do it”
  • Leans partly right AI guessAchievable for many codebases but costly for legacy or hardware-bound code; coverage-driven tests are often weak, which is the speaker's own point.
  • Leans wrong Inozemtseva & Holmes 2014 (coverage) lines 664-667Authors call extremely high coverage very difficult to reach, and even their five actively developed Java projects with 600-8,000 test methods sit at 27-76% statement coverage; no motivated team pushing for 100% was studied.

An AI reviewer can take an automated first pass at a pull request before a human reviews it.

Leans right

AI review tools do produce first-pass comments; how much of the human review they replace is not independently measured.

· denied 0 ·
Show
  • Code review is no longer the bottleneck (OpenAI)“Cloud code review has already taken a first pass.”
  • Probably right AI guessAI review tools do produce first-pass comments; how much of the human review they replace is not independently measured.

Industry and regulatory status do not predict whether DevOps practices improve delivery performance.

Leans right

Controlling for industry, DORA found no evidence that industry affects SDO performance except retail (which did slightly better), including highly regulated financial services and government; organisation size over 5,000 employees did predict lower performance.

· denied 0 ·
Show
  • Accelerate: The State of DevOps with Dr. Nicole Forsgren (Scott Hanselman)“there was no statistical evidence that it matters”
  • Leans partly right AI guessThe DORA models found no industry effect, but a null result from a voluntary survey sample does not prove the practices work equally everywhere.
  • Leans right DORA State of DevOps 2019 lines 429-446Controlling for industry, DORA found no evidence that industry affects SDO performance except retail (which did slightly better), including highly regulated financial services and government; organisation size over 5,000 employees did predict lower performance.

Emergency changes made under stress usually skip testing, which is when testing is most needed.

Leans partly right

Skipped testing in emergency changes is widely reported in incident reviews but not quantified here.

· denied 0 ·
Show
  • Accelerate: The State of DevOps with Dr. Nicole Forsgren (Scott Hanselman)“the big difference there is we usually skip testing which is the time that we should not be skipping testing”
  • Leans partly right AI guessSkipped testing in emergency changes is widely reported in incident reviews but not quantified here.

High-performing teams rely on automated test suites and reserve manual effort for exploratory testing.

Leans partly right

DORA reports less manual testing among elite performers, but this is a self-reported association rather than a measured cause.

· denied 0 ·
Show
  • Accelerate: The State of DevOps with Dr. Nicole Forsgren (Scott Hanselman)“they have incredibly efficient test Suites they have great parallelization so that they can be very very strategic about exploratory testing”
  • Leans partly right AI guessDORA reports less manual testing among elite performers, but this is a self-reported association rather than a measured cause.
  • Leans partly right DORA State of DevOps 2019 lines 1535-1549Elite performers report automated unit tests 87% vs 57% for low performers, acceptance tests 58% vs 28%, and automated production deployment 69% vs 17%; the report does not ask about exploratory or manual testing.

Shipping code that has not been exercised by a unit test is unprofessional, and TDD is the surest way to avoid it.

Leans partly right

Authors concede that following the test-first rule prevents shortcuts that skip tests, but an ethnographic study found developers wrote more production code than needed, omitted refactoring and let tests fall behind even when nominally test-first; the 'unprofessional' judgment is not testable.

· denied 0 ·
Show
  • Jim Coplien and Bob Martin Debate TDD (alexsmail)“it is irresponsible for a developer to ship a line of code that he has not executed in unit test”
  • Leans partly right Karac & Turhan 2018 (TDD review) lines 166-177Authors concede that following the test-first rule prevents shortcuts that skip tests, but an ethnographic study found developers wrote more production code than needed, omitted refactoring and let tests fall behind even when nominally test-first; the 'unprofessional' judgment is not testable.
  • Untestable AI guessA professional norm rather than a measurable outcome; whether untested code ships is checkable, whether that is unprofessional is a value judgment.

Architecture should evolve incrementally, informed by executing code and tests, rather than be designed in full up front.

Leans partly right

Incremental architecture is standard agile practice, but there is no controlled evidence it beats moderate up-front design and both debaters endorse some up-front structure.

· denied 0 ·
Show
  • Jim Coplien and Bob Martin Debate TDD (alexsmail)“the architecture evolves it is informed by code that executes and it is informed by the test that you write”
  • Leans partly right AI guessIncremental architecture is standard agile practice, but there is no controlled evidence it beats moderate up-front design and both debaters endorse some up-front structure.
  • Leans partly right Dybå & Dingsøyr 2008 (agile review) lines 1193-1196The review reports lack of attention to design and architectural issues as a limitation found in an agile study and repeatedly raised in the literature, so incremental evolution carries a documented risk of under-investing in architecture; the studies are weak and do not test the claim directly.

Some domain structure must be fixed up front because incremental refactoring cannot reach the right architecture from a naive starting point.

Leans partly right

Large-scale architectural decisions are known to be costly to reverse, but how much up-front design is needed is unresolved.

· denied 0 ·
Show
  • Jim Coplien and Bob Martin Debate TDD (alexsmail)“you're not going to refactor your way to the right architecture from from that one”
  • Leans partly right AI guessLarge-scale architectural decisions are known to be costly to reverse, but how much up-front design is needed is unresolved.
  • Leans partly right Dybå & Dingsøyr 2008 (agile review) lines 1193-1196Participants in an XP project said there were not enough discussions on design and architecture, and the review lists lack of attention to architecture as a recurring limitation of agile development; this supports the worry but not the specific claim that incremental refactoring cannot reach the right architecture.

Design by contract covers the whole input range of a method, giving broader assurance than sampled unit tests.

Leans partly right

Contracts specify behaviour over all inputs but are only enforced on executed inputs unless statically verified, so coverage gains depend on tooling.

· denied 0 ·
Show
  • Jim Coplien and Bob Martin Debate TDD (alexsmail)“they actually give you broader coverage because you're covering the entire range of the arguments rather than just you know randomly scattering some values”
  • Leans partly right AI guessContracts specify behaviour over all inputs but are only enforced on executed inputs unless statically verified, so coverage gains depend on tooling.

Class-level unit tests are hard to trace to business value.

Untestable

A judgment about traceability rather than a measurable claim.

· denied 0 ·
Show
  • Jim Coplien and Bob Martin Debate TDD (alexsmail)“it's really really difficult to trace those those apis at a class level sometimes all the way up to business significance”
  • Untestable AI guessA judgment about traceability rather than a measurable claim.

Experience, lines of code written and degrees held did not predict programmer productivity.

Leans partly right

This null result holds in the PSP dataset, but other studies find modest effects of relevant experience, so it is not settled.

· denied 0 ·
Show
  • Challenging the Myth of the 10x Programmer (Software Engineering Institute | Carnegie Mellon University)“what about degrees obtained nothing mattered”
  • Leans partly right AI guessThis null result holds in the PSP dataset, but other studies find modest effects of relevant experience, so it is not settled.

Productivity differences across programmers follow a long-tailed log-normal distribution, not a bell curve.

Leans partly right

Work time distributions across 1491 observations show a clear long right tail (skewness about 1 to 2) and a normal assumption over-estimates variability almost always; the paper confirms long-tailed non-normal shape but does not fit a log-normal.

· denied 0 ·
Show
  • Challenging the Myth of the 10x Programmer (Software Engineering Institute | Carnegie Mellon University)“the distribution isn't a bells curve it's more log normal long tail”
  • Leans partly right Prechelt 1999 (28:1 legend) lines 643-648Work time distributions across 1491 observations show a clear long right tail (skewness about 1 to 2) and a normal assumption over-estimates variability almost always; the paper confirms long-tailed non-normal shape but does not fit a log-normal.
  • Leans partly right AI guessTask-time distributions are commonly right-skewed, consistent with this, though the exact form varies by dataset.

Small tasks are easier to estimate and reveal runaway work early enough for the team to intervene.

Leans partly right

Estimation error grows with task size in most estimation research; the early-intervention benefit is plausible but less directly measured.

· denied 0 ·
Show
  • Challenging the Myth of the 10x Programmer (Software Engineering Institute | Carnegie Mellon University)“it's easier to estimate it's easier to know when it's gone off the rails”
  • Leans partly right AI guessEstimation error grows with task size in most estimation research; the early-intervention benefit is plausible but less directly measured.
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 3165-3170Controlled experiments show a magnitude effect: smaller tasks are overestimated or at least less underestimated while larger tasks are underestimated, so small tasks carry less bias; the early-warning benefit is not studied.
  • Leans partly right Dybå & Dingsøyr 2008 (agile review) lines 778-786In one three-week student XP project, initial estimates were about one third of actuals, blamed on inexperience and coarse user stories, and improved as the project went on; a single small case bearing only on the story-granularity half of the claim.

Shortening sprints too far increases estimation uncertainty because each sprint samples less work.

Leans partly right

Statistically sound for sprint-level forecasting, but no study pins down where the diminishing returns begin.

· denied 0 ·
Show
  • Challenging the Myth of the 10x Programmer (Software Engineering Institute | Carnegie Mellon University)“what happens when you reduce your sample size the uncertainty becomes bigger”
  • Leans partly right AI guessStatistically sound for sprint-level forecasting, but no study pins down where the diminishing returns begin.

Unit tests alone cannot catch integration errors, so a suite of only unit tests does not make code self-testing.

Leans right

By construction isolated unit tests do not exercise component interaction; integration failures are a well-documented defect class.

· denied 0 ·
Show
  • SWETUGG 2015 - Is TDD Dead? What are the alternatives? - Emily Bache (Swetugg)“there are classes of defects that unit tests do not find kind of by definition they do not find integration errors”
  • Probably right AI guessBy construction isolated unit tests do not exercise component interaction; integration failures are a well-documented defect class.

Team velocity is mostly set by organizational obstacles, so teams cannot raise it by working harder.

Leans partly right

Organizational friction does affect throughput, but velocity also varies with skill and task mix, so 'only' is too strong.

· denied 0 ·
Show
  • #NoEstimates (Allen Holub) (Allen Holub)“the only way you can make that number larger is to improve the environment”
  • Leans partly right AI guessOrganizational friction does affect throughput, but velocity also varies with skill and task mix, so 'only' is too strong.
  • Leans partly right DORA State of DevOps 2019 lines 439-446Enterprises over 5,000 employees are lower performers, attributed to heavyweight process and controls and tightly coupled architectures, and external change approval makes teams 2.6 times more likely to be low performers; this supports organisational constraints setting delivery throughput, though velocity and individual effort are not measured.

Most of a long backlog is wasted because items far down will change before they are reached.

Leans partly right

Requirements volatility is well documented; the claim that distant items are nearly worthless is plausible but unmeasured.

· denied 0 ·
Show
  • #NoEstimates (Allen Holub) (Allen Holub)“any backlog that's got a 100 stories on it has got something really wrong with it”
  • Leans partly right AI guessRequirements volatility is well documented; the claim that distant items are nearly worthless is plausible but unmeasured.

Maturity models go out of date too quickly to guide technology transformations.

Untestable

An argument about how to frame a transformation, not a measured outcome.

· denied 0 ·
Show

Technology alone does not raise performance; it must be combined with lean management and organizational culture.

Leans partly right

DORA's models and Bessen's HBR work support IT-plus-management, but the specific synergy is modeled, not experimentally shown.

· denied 0 ·
Show
  • The Key to High Performance: What the Data Says - Dr. Nicole Forsgren (IT Revolution)“we need technology and process and culture to really get this strong synergy”
  • Leans partly right AI guessDORA's models and Bessen's HBR work support IT-plus-management, but the specific synergy is modeled, not experimentally shown.
  • Leans right DORA State of DevOps 2019 lines 690-706The report's model has culture of psychological safety, a clear change process and cloud implementation (only 29% of self-described cloud users met the NIST characteristics that actually predict performance) all driving delivery performance, and tells organisations to start with automation plus clear change approval and a healthy culture.
  • Leans partly right Dybå & Dingsøyr 2008 (agile review) lines 1303-1311The review's strongest evidence, from studies of mature agile teams, is that success requires attention to human and social factors (balanced autonomy, trust, interpersonal skills); it concerns agile adoption rather than technology investment.

A loosely coupled architecture that lets teams test, deploy and change independently predicts delivery performance more than the platform or technology used.

Leans partly right

DORA 2017 found architecture the strongest predictor of continuous delivery while mainframe and greenfield status were not significant; still survey-based.

· denied 0 ·
Show
  • The Key to High Performance: What the Data Says - Dr. Nicole Forsgren (IT Revolution)“the thing that is most important is having a loosely coupled architecture both at the team level and at the technology level”
  • Leans partly right AI guessDORA 2017 found architecture the strongest predictor of continuous delivery while mainframe and greenfield status were not significant; still survey-based.
  • Leans partly right DORA State of DevOps 2019 lines 1042-1050DORA revalidated that a loosely coupled architecture, defined as teams independently testing, deploying and changing their systems without depending on other teams, positively predicts continuous delivery; the 2019 report does not rank it against platform or technology choice.

Lightweight change approval within the team outperforms heavyweight external change approval boards.

Leans right

Respondents whose organisations require CAB or senior-manager approval were 2.6 times more likely to be low performers, formal approval showed no association with lower change failure rates, and a clear, lightweight change process made teams 1.8 times more likely to be elite.

· denied 0 ·
Show
  • The Key to High Performance: What the Data Says - Dr. Nicole Forsgren (IT Revolution)“number one or number two biggest constraint for most teams is a lightweight change approval process”
  • Leans partly right AI guessDORA 2019 found external approvals correlated with worse performance and no better stability; correlational.
  • Leans right DORA State of DevOps 2019 lines 1272-1283Respondents whose organisations require CAB or senior-manager approval were 2.6 times more likely to be low performers, formal approval showed no association with lower change failure rates, and a clear, lightweight change process made teams 1.8 times more likely to be elite.

A generative, high-trust, blameless organizational culture predicts software delivery and organizational performance.

Leans partly right

Westrum culture measures predict performance in DORA's structural models, with survey-based data.

· denied 0 ·
Show
  • The Key to High Performance: What the Data Says - Dr. Nicole Forsgren (IT Revolution)“the generative group was most highly correlated with high performance”
  • Leans partly right AI guessWestrum culture measures predict performance in DORA's structural models, with survey-based data.
  • Leans right DORA State of DevOps 2019 lines 1368-1373A culture of psychological safety (measured with Google's Project Aristotle items) predicts software delivery performance, organisational performance and productivity, extending earlier years' finding that a Westrum generative culture of information flow, trust and risk-sharing predicts SDO performance.

Transformational leadership is necessary but not sufficient for high delivery performance.

Leans partly right

DORA found the bottom third of leaders half as likely to be high performers while top leaders were no better than median; one survey year.

· denied 0 ·
Show

High-performing delivery teams report less deployment pain and burnout and are more likely to recommend their workplace.

Leans partly right

Self-reported associations in DORA data; direction of causation is not established.

· denied 0 ·
Show
  • The Key to High Performance: What the Data Says - Dr. Nicole Forsgren (IT Revolution)“less deployment pain less burnout higher employee Net Promoter Score”
  • Leans partly right AI guessSelf-reported associations in DORA data; direction of causation is not established.
  • Leans partly right DORA State of DevOps 2019 lines 1766-1770The highest performers are half as likely to report feeling burned out, and good technical practices and clear change management reduce burnout in the model; deployment pain and willingness to recommend the workplace were studied in earlier years, not here.

Long working hours raise rates of injury, illness, cardiovascular disease and mental health problems through chronic stress.

Leans right

Large epidemiological studies link long hours to injury, stroke and depression; stress biomarkers provide a mechanism.

· denied 0 ·
Show
  • Physiological Effects of Crunch: A Look at the Science (GDC Festival of Gaming)“a very clear linear relationship between hours worked above 8 a day or 40 a week with greater incidence of injury or illness”
  • Very likely right AI guessLarge epidemiological studies link long hours to injury, stroke and depression; stress biomarkers provide a mechanism.
  • Leans partly right Pencavel 2014 (working hours) lines 1066-1078Cites contemporary studies: NLSY workers on 12+ h days or 60+ h weeks had 37% and 23% higher injury hazard, nurses on shifts over 12 h or weeks over 40 h made more errors, interns crashed more after extended shifts; injury and illness supported, cardiovascular and mental-health effects not covered, and this is secondary citation not the paper's own data.

Caffeine tolerance builds within days, so it cannot offset extended overtime.

Leans right

Tolerance to caffeine's alerting effects develops within days to a week in most studies, though partial benefits persist for some.

· denied 0 ·
Show
  • Physiological Effects of Crunch: A Look at the Science (GDC Festival of Gaming)“you reach caffeine tolerance shockingly quickly it takes about a week”
  • Probably right AI guessTolerance to caffeine's alerting effects develops within days to a week in most studies, though partial benefits persist for some.

Letting workers choose their own hours improves satisfaction, health and productivity.

Leans partly right

Schedule control shows consistent positive associations in occupational health research, but effects are moderate and mostly observational.

· denied 0 ·
Show
  • Physiological Effects of Crunch: A Look at the Science (GDC Festival of Gaming)“allowing people flexible time over their schedules whether in crunch or not has basically nothing but positive effects”
  • Probably partly right AI guessSchedule control shows consistent positive associations in occupational health research, but effects are moderate and mostly observational.

A full day of rest after a missed night of sleep does not restore performance to baseline.

Leans partly right

Shift-work recovery studies support incomplete recovery after one night; the size depends on the deficit.

· denied 0 ·
Show
  • Physiological Effects of Crunch: A Look at the Science (GDC Festival of Gaming)“even after a full night's sleep and a full day off test subjects were not recovered all the way back to their baseline levels”
  • Probably partly right AI guessShift-work recovery studies support incomplete recovery after one night; the size depends on the deficit.

Performance problems concentrate in a small part of a system, so targeted optimization beats a full rewrite.

Leans right

Hotspot concentration is a well-established profiling finding; the exact ratio varies.

· denied 0 ·
Show

Dynamic languages became popular because they gave fast feedback and concise syntax for early web work, not because dynamic typing is inherently better.

Leans partly right

A plausible historical account consistent with language-adoption timelines, but causal attribution from history is not testable.

· denied 0 ·
Show
  • Why Static Typing Came Back • Richard Feldman • GOTO 2022 (GOTO Conferences)“these benefits don't require Dynamic typing they just first appeared in Dynamic languages”
  • Leans partly right AI guessA plausible historical account consistent with language-adoption timelines, but causal attribution from history is not testable.

Gradual typing requires a more complex type system and keeps dynamic runtime overhead, so it is not the best of both worlds.

Leans partly right

Type-system complexity in TypeScript and Sorbet supports this, though gradual typing's migration benefit is real.

· denied 0 ·
Show
  • Why Static Typing Came Back • Richard Feldman • GOTO 2022 (GOTO Conferences)“it has very serious unavoidable downsides that just come with the territory of deciding that you want gradual types”
  • Leans partly right AI guessType-system complexity in TypeScript and Sorbet supports this, though gradual typing's migration benefit is real.

Non-blocking type errors keep the fast feedback of static types without preventing you from running code or tests.

Leans partly right

TypeScript's emit-on-error demonstrates feasibility; the productivity claim is anecdotal.

· denied 0 ·
Show
  • Why Static Typing Came Back • Richard Feldman • GOTO 2022 (GOTO Conferences)“when these go from sort of blocking compile errors to non-blocking error reports that are just informative wow this just becomes sort of all upside”
  • Leans partly right AI guessTypeScript's emit-on-error demonstrates feasibility; the productivity claim is anecdotal.

Nearly every mainstream language that emerged after the 2000s is statically typed.

Leans right

Consistent with RedMonk and similar rankings, with a few exceptions.

· denied 0 ·
Show

Asynchronous review loses the two-way conversation that makes review educational and lets the author explain intent.

Leans partly right

Synchronous review has documented knowledge-sharing benefits, but asynchronous tools also support discussion; the loss is a matter of degree.

· denied 0 ·
Show
  • Why Pull Requests Are a Bad Idea • Dave Farley • GOTO 2022 (GOTO Conferences)“so now we've lost two-way Communications as part of the review”
  • Leans partly right AI guessSynchronous review has documented knowledge-sharing benefits, but asynchronous tools also support discussion; the loss is a matter of degree.
  • Leans partly right Bacchelli & Bird 2013 (Microsoft code review) lines 556-560Tool-based reviewers at Microsoft frequently (20-40% of reviews) go talk to the author in person to understand the change, and the authors recommend in-person or synchronous channels because tool comments alone do not meet understanding needs; no direct comparison of educational value.

Pull requests were designed to gatekeep untrusted open-source contributors and fit poorly inside a trusted team.

Leans partly right

Inside a single trusted company, all 44 surveyed Google engineers agree code review is valuable and gatekeeping/security oversight are among its stated purposes, which argues against review fitting poorly in a trusted team; the claim's history of pull requests is not addressed.

· denied 0 ·
Show
  • Why Pull Requests Are a Bad Idea • Dave Farley • GOTO 2022 (GOTO Conferences)“pull requests were invented to gatekeep access to open source projects”
  • Leans partly right Sadowski et al. 2018 (Google code review) lines 448-453Inside a single trusted company, all 44 surveyed Google engineers agree code review is valuable and gatekeeping/security oversight are among its stated purposes, which argues against review fitting poorly in a trusted team; the claim's history of pull requests is not addressed.
  • Untestable AI guessA framing about intent and fit rather than a measurable outcome.

Editors render comments in muted colors, which trains developers to ignore and neglect them.

Leans partly right

Syntax highlighting conventions do de-emphasize comments; whether that causes neglect is untested.

· denied 0 ·
Show
  • The problem with comments - Uncle Bob (Dev Tools Made Simple)“we paint our comments in colors that are easy to ignore because we don't want to see them”
  • Leans partly right AI guessSyntax highlighting conventions do de-emphasize comments; whether that causes neglect is untested.

Complex generic type annotations slow development in statically typed languages on simple algorithmic tasks.

Leans partly right

Found in this 21-student study for Java generics; generalization beyond Java-style generics is uncertain.

· denied 0 ·
Show
  • Static vs dynamic typed languages: an intentionally rigged experiment (Vivek Haldar)“it is almost twice as fast to solve the problem in groovy a dynamically typed language”
  • Leans partly right AI guessFound in this 21-student study for Java generics; generalization beyond Java-style generics is uncertain.
  • Leans partly right Hanenberg et al. 2014 (static types) lines 255-292Related work in the series: type casts slowed trivial tasks but not longer ones, and in Mayer et al. static typing cost more on simple tasks yet helped most precisely on tasks with complex nested generics, so simple tasks can suffer but generics were where static types paid off.

Controlled experiments show statically typed languages have usability advantages over dynamically typed ones.

Probably partly right

The paper's own literature review says existing evidence is partially contradictory, with some studies favouring dynamic, some static and some inconclusive; its experiment adds evidence for static typing on class-identification and type-error tasks but none on semantic-error tasks.

· denied 0 ·
Show
  • Static vs dynamic typed languages: an intentionally rigged experiment (Vivek Haldar)“this reinforces a lot of earlier studies that showed the usability benefits of statically typed languages”
  • Probably partly right Kleinschmager et al. 2012 (static types) lines 498-514This controlled within-subject experiment (33 subjects, Java vs Groovy) found static typing faster on 6 of 9 maintenance tasks and no task favouring dynamic typing, but no difference on semantic-error fixing, and the authors note earlier studies in the same series found dynamic advantages on some tasks and that the result hardly implies benefit for all tasks.
  • Probably partly right Hanenberg et al. 2014 (static types) lines 157-162The paper's own literature review says existing evidence is partially contradictory, with some studies favouring dynamic, some static and some inconclusive; its experiment adds evidence for static typing on class-identification and type-error tasks but none on semantic-error tasks.
  • Leans partly right AI guessHanenberg's series found advantages for maintenance and API use, but earlier experiments found no or opposite effects, so 'well established' overstates it.
  • Leans partly right Gao, Bird & Barr 2017 (types vs JS bugs) lines 568-577The one controlled experiment summarized here (Hanenberg, 49 students, custom language) found no significant positive impact of static types on development time or quality; the later Hanenberg-group experiments that did report usability advantages are not covered by this source.

Static typing forces implementing an entire interface up front even when only part of it is used.

Leans partly right

True of Java-style nominal interfaces; languages with structural typing or default methods avoid much of this cost.

· denied 0 ·
Show

The paper that introduced the waterfall diagram warned that the approach was risky and invited failure.

Leans right

Royce's 1970 paper does say the simple sequential model is risky and invites failure and recommends iteration.

· denied 0 ·
Show

Replacing guesswork with measured experiments is what makes software development an engineering discipline.

Untestable

A philosophy of practice rather than a measurable claim.

· denied 0 ·
Show

Continuous delivery yields order-of-magnitude improvements in quality and efficiency, not incremental gains.

Leans partly right

DORA shows large gaps on deployment metrics between clusters, but order-of-magnitude gains in cost or quality rest on a few case studies.

· denied 0 ·
Show
  • The Rationale for Continuous Delivery • Dave Farley • YOW! 2018 (GOTO Conferences)“We are often talking massive steps forward sometimes orders of magnitude in certain measures”
  • Leans partly right AI guessDORA shows large gaps on deployment metrics between clusters, but order-of-magnitude gains in cost or quality rest on a few case studies.
  • Leans partly right DORA State of DevOps 2019 lines 478-495Elite versus low performers differ by 208x in deploy frequency, 106x in lead time, 2,604x in time to restore and 7x in change failure rate, so the spread is orders of magnitude on throughput but under one on quality; these are gaps between survey clusters, not before/after gains from adopting CD.

Short cycle times force small teams, automation and fewer handoffs, so continuous delivery drives out lean and agile practices as a side effect.

Leans partly right

Logically coherent and consistent with DORA's capability model, but the causal direction is asserted, not measured.

· denied 0 ·
Show

Automating everything except creative judgment makes releases repeatable and reliable because humans are not.

Leans partly right

Deployment automation correlates with lower change failure in DORA data; human error in manual deployments is well documented.

· denied 0 ·
Show

An automated test is an investment that permanently prevents the class of problem it checks.

Leans partly right

Regression tests do prevent recurrence, but suites also incur maintenance and decay, which the claim ignores.

· denied 0 ·
Show
  • The Rationale for Continuous Delivery • Dave Farley • YOW! 2018 (GOTO Conferences)“It's not a cost. It's an investment. If you spend time writing tests now, that pays back in spades later on.”
  • Leans partly right AI guessRegression tests do prevent recurrence, but suites also incur maintenance and decay, which the claim ignores.

Adopting continuous delivery shifts development effort from branch merging and support to new features and lowers cost per product.

Leans partly right

The HP LaserJet case documents this, but it is one firm with concurrent changes and no control.

· denied 0 ·
Show
  • The Rationale for Continuous Delivery • Dave Farley • YOW! 2018 (GOTO Conferences)“The bottom line is eight times as much effort going into creating new software.”
  • Leans partly right AI guessThe HP LaserJet case documents this, but it is one firm with concurrent changes and no control.
  • Leans partly right DORA State of DevOps 2019 lines 1548-1553The report asserts automation lets engineers spend less time on manual work and more on new development, refactoring and design, and that CD reduces the risk and cost of releases; effort reallocation and cost per product are not measured.

A continuous delivery pipeline gives regulated environments end-to-end traceability as a side effect.

Leans partly right

Pipelines do record provenance, but 'only way' is overstated since traditional change management also provides audit trails.

· denied 0 ·
Show
  • The Rationale for Continuous Delivery • Dave Farley • YOW! 2018 (GOTO Conferences)“this is pretty much the only way in which you get the kind of insight and traceability that modern regulatory frameworks are looking for”
  • Leans partly right AI guessPipelines do record provenance, but 'only way' is overstated since traditional change management also provides audit trails.
  • Leans right DORA State of DevOps 2019 lines 1243-1256DORA argues that with version control as the source of truth, recording who approved each change makes the review-and-submit process highly auditable and satisfies segregation-of-duties requirements from PCI-DSS and NIST frameworks; reasoned from practice rather than measured.

Small functions are easier to read and modify but harder to debug, so the evidence for them is mixed.

Leans partly right

A few small studies point this way; the evidence base is too thin to call it settled.

· denied 0 ·
Show
  • Intro to Empirical Software Engineering: What We Know We Don't Know • Hillel Wayne • GOTO 2019 (GOTO Conferences)“small functions are easier to read easier to modify and much much harder to debug”
  • Leans partly right AI guessA few small studies point this way; the evidence base is too thin to call it settled.
  • Leans partly right Scalabrino et al. 2019 (understandability) lines 864-870Among methods of 30-70 effective lines, size metrics (LOC, number of statements) showed no non-weak correlation with perceived or actual understanding, while interviewees praised methods that implement a single task; supports 'mixed evidence' within a narrow size band, says nothing about debugging.

Code smells mark where bugs are likely, but fixing the smells does not remove the bugs.

Leans partly right

Supported by mining studies of long-lived projects; effects vary by smell type.

· denied 0 ·
Show
  • Intro to Empirical Software Engineering: What We Know We Don't Know • Hillel Wayne • GOTO 2019 (GOTO Conferences)“fixing the anti-patterns did nothing to the bugs”
  • Leans partly right AI guessSupported by mining studies of long-lived projects; effects vary by smell type.
  • Leans partly right Tornhill & Borg 2022 (Code Red) lines 413-419Code Health, a smell-based composite (God Class, God Method, duplication), separates files with 15x more reported defects, supporting that smells mark bug-prone code; the study did not test whether removing smells removes bugs and explicitly leaves open whether defects cause low quality rather than the reverse.

Most code review findings are maintainability improvements rather than functional bugs.

Leans right

Card sort of 570 Microsoft review comments: code improvement (readability, dead code, practices) is the largest category at 29%, defects only fourth at 14%, and 65 of 78 defect comments are small logic slips rather than design or security issues.

· denied 0 ·
Show
  • Intro to Empirical Software Engineering: What We Know We Don't Know • Hillel Wayne • GOTO 2019 (GOTO Conferences)“only one out of every four comments that basically block the code significant software defects is about functionality”
  • Probably right AI guessMantyla and Lassenius and Bacchelli and Bird both found most review findings concern evolvability.
  • Leans right Bacchelli & Bird 2013 (Microsoft code review) lines 421-433Card sort of 570 Microsoft review comments: code improvement (readability, dead code, practices) is the largest category at 29%, defects only fourth at 14%, and 65 of 78 defect comments are small logic slips rather than design or security issues.
  • Leans right Sadowski et al. 2018 (Google code review) lines 459-465Of 44 Google authors surveyed about a specific recent review, only 2 said the comments had found a bug, though most found the feedback appropriate and valuable.

Sleep, stress and hours worked affect output more than any technical practice.

Leans partly right

Fatigue effects are large and robust, but no study directly compares them against technical practices on the same scale.

· denied 0 ·
Show

Open-plan offices are adopted mainly because they cut real-estate cost per worker.

Leans partly right

Cost is a commonly cited motive alongside collaboration goals, but motives are not measured.

· denied 0 ·
Show
  • Open concept offices aren’t as productive as you think | Your Morning (CTV Your Morning)“it's cheaper yeah because it is cheaper”
  • Leans partly right AI guessCost is a commonly cited motive alongside collaboration goals, but motives are not measured.
  • Leans partly right Bernstein & Turban 2018 (open offices) lines 378-383Both field sites, like 'many organizations', adopted open architecture with the stated intention of creating more face-to-face interaction, not cutting cost; real-estate motives are not examined, so 'mainly cost' is not supported in these two cases.

Automated tests give little feedback on whether a feature serves users or whether the codebase is healthy.

Leans partly right

Tests check specified behaviour; user value and design health need other feedback, though some tests target design.

· denied 0 ·
Show
  • TW Hangouts | Is TDD dead? [Part III] (Thoughtworks)“looking at the page seeing how it feels clicking around it's not something that's conducive to tests”
  • Leans partly right AI guessTests check specified behaviour; user value and design health need other feedback, though some tests target design.

Confidence from programmer-written tests led many teams to drop QA and ship lower quality.

Leans partly right

Anecdotal; some companies did cut QA, but no study links this to measured quality loss.

· denied 0 ·
Show
  • TW Hangouts | Is TDD dead? [Part III] (Thoughtworks)“it gave them overconfidence I think it gave them overconfidence in the quality with which they can produce software through testing”
  • Leans partly right AI guessAnecdotal; some companies did cut QA, but no study links this to measured quality loss.

Strict TDD, which forbids production code without a failing test, is incompatible with trading off coverage by criticality.

Untestable

A logical argument about methodology consistency rather than a measurable outcome.

· denied 0 ·
Show
  • TW Hangouts | Is TDD dead? [Part III] (Thoughtworks)“you can't on the one hand claim well we need 100% coverage because that's our design methodology”
  • Untestable AI guessA logical argument about methodology consistency rather than a measurable outcome.

Programmers taking responsibility for quality was a large improvement over throwing code over the wall to QA.

Leans partly right

Widely agreed from experience; little direct measurement comparing the two arrangements.

· denied 0 ·
Show
  • TW Hangouts | Is TDD dead? [Part III] (Thoughtworks)“programmers accepting responsibility for the quality of their work that that was a huge step forward”
  • Leans partly right AI guessWidely agreed from experience; little direct measurement comparing the two arrangements.
  • Leans partly right Dybå & Dingsøyr 2008 (agile review) lines 794-798In a short lean-techniques trial on two two-person teams, moving responsibility for measuring quality from the manager to the workers gave a quicker and more thorough response to defects, but one team kept making errors and the study was terminated early.

Automating scripted QA checks lets teams get release answers in hours instead of weeks.

Leans partly right

Test automation shortens feedback cycles in DORA and industrial reports; the gain depends on suite quality.

· denied 0 ·
Show
  • TW Hangouts | Is TDD dead? [Part III] (Thoughtworks)“we can get some answers in you know hours”
  • Probably partly right AI guessTest automation shortens feedback cycles in DORA and industrial reports; the gain depends on suite quality.

Being on call for production teaches developers which tests and feedback loops they are missing.

Leans partly right

A reasonable mechanism consistent with DevOps practice; not measured.

· denied 0 ·
Show
  • TW Hangouts | Is TDD dead? [Part III] (Thoughtworks)“the on call um uh is the feedback loop that teaches you uh what tests you didn't write”
  • Leans partly right AI guessA reasonable mechanism consistent with DevOps practice; not measured.

Agile has been turned from an adjective into a product sold through certification, training and consultancy, losing the original values

Untestable

A historical and framing claim about an industry, not a measurable outcome.

· denied 0 ·
Show

No software development rule is universal; every practice only works in a context

Leans right

The review concludes agile methods are not necessarily the best choice for large projects, found XP hard to introduce in a complex organisation yet easy elsewhere, and advises practitioners to compare their project's characteristics with each method's required characteristics.

· denied 0 ·
Show
  • Agile is Dead • Pragmatic Dave Thomas • GOTO 2015 (GOTO Conferences)“no rules are Universal fact every rule requires a context”
  • Leans right Dybå & Dingsøyr 2008 (agile review) lines 1317-1322The review concludes agile methods are not necessarily the best choice for large projects, found XP hard to introduce in a complex organisation yet easy elsewhere, and advises practitioners to compare their project's characteristics with each method's required characteristics.
  • Untestable AI guessA philosophical framing of practice advice rather than a testable prediction.

Scaled agile frameworks appeal to large organisations because they look complex, not because they are shown to work

Unknown

No controlled evidence either way on SAFe-style frameworks; adopter surveys are mixed and self-reported.

· denied 0 ·
Show
  • Agile is Dead • Pragmatic Dave Thomas • GOTO 2015 (GOTO Conferences)“it appeals to a corporation because it's got little cute figures and it looks very complicated”
  • Unknown AI guessNo controlled evidence either way on SAFe-style frameworks; adopter surveys are mixed and self-reported.

A good design is one that is easier to change than a bad design, and every design principle follows from that

Untestable

A definition and design heuristic rather than a prediction.

· denied 0 ·
Show

Agility means taking a small step, evaluating the result and repeating, rather than following a prescribed method

Leans partly right

Short, uniform development cycles were the factors associated with better quality and productivity while the prescribed test-first order was not, supporting small steps over rule-following, but only for short-term workshop tasks by 39 professionals.

· denied 0 ·
Show
  • Agile is Dead • Pragmatic Dave Thomas • GOTO 2015 (GOTO Conferences)“take a small step forward see where that got you and then revise your plan and repeat”
  • Leans partly right Fucci et al. 2017 (TDD dissection) lines 1013-1024Short, uniform development cycles were the factors associated with better quality and productivity while the prescribed test-first order was not, supporting small steps over rule-following, but only for short-term workshop tasks by 39 professionals.
  • Untestable AI guessPractice advice; iterative feedback loops are the shared basis of all agile methods.

Short certification courses produce practitioners who follow prescribed steps without understanding why

Leans partly right

Plausible and consistent with cargo-cult reports, but no study links certification length to team outcomes.

· denied 0 ·
Show
  • Agile is Dead • Pragmatic Dave Thomas • GOTO 2015 (GOTO Conferences)“they end up getting stuck in this process where they don't actually know why they're doing what they're doing”
  • Leans partly right AI guessPlausible and consistent with cargo-cult reports, but no study links certification length to team outcomes.

A pair finishes a task faster than one person but spends more total person-hours on it

Leans right

Meta-analysis finds pairs cut elapsed time but raise total effort; the sixty-percent figure comes from small student studies.

· denied 0 ·
Show
  • You Must Be CRAZY To Do Pair Programming (Modern Software Engineering)“two people are nearly but not quite twice as fast”
  • Probably right AI guessMeta-analysis finds pairs cut elapsed time but raise total effort; the sixty-percent figure comes from small student studies.
  • Leans partly right Dybå & Dingsøyr 2008 (agile review) lines 996-998A survey of 122 IT employees found 73% of those who pair believe it speeds up development; this is perception only and says nothing about total person-hours.

Pairing pays off on novel, hard work and wastes effort on routine or repetitive tasks

Leans partly right

Meta-analysis finds pairing's benefit concentrated on complex tasks, consistent with this.

· denied 0 ·
Show
  • You Must Be CRAZY To Do Pair Programming (Modern Software Engineering)“it's dumb to waste two people's time on the boring repetitive stuff”
  • Probably partly right AI guessMeta-analysis finds pairing's benefit concentrated on complex tasks, consistent with this.

Skill mismatch within a pair matters little; every expert and novice combination produces value

Leans partly right

Experiments find novice pairs gain most and expert pairs least; all combinations show some benefit.

· denied 0 ·
Show
  • You Must Be CRAZY To Do Pair Programming (Modern Software Engineering)“it really doesn't matter very much what the what the combinations are all of them have some value”
  • Leans partly right AI guessExperiments find novice pairs gain most and expert pairs least; all combinations show some benefit.
  • Leans wrong Dybå & Dingsøyr 2008 (agile review) lines 989-993Student surveys in the review found pairing difficult when there was a large skill differential, with one respondent reporting the pair was unproductive whenever the weaker member was not driving; the review repeats this as a reported limitation.

The cone of uncertainty in estimation has no empirical basis

Leans right

Boehm presented it as a notional diagram; later project data did not show estimates narrowing as the cone predicts.

· denied 0 ·
Show
  • The Leprechauns of Software Engineering (adamtornhill.com)“the cone of uncertainty”
  • Probably right AI guessBoehm presented it as a notional diagram; later project data did not show estimates narrowing as the cone predicts.

Story-point velocity is only stable while the team is stable; adding or removing people changes it

Leans right

Consistent with Brooks's law and observed velocity volatility after staffing changes, though mostly practitioner data.

· denied 0 ·
Show

Story points forecast delivery only on average across several iterations, never for a single sprint

Leans partly right

Aggregate forecasting improves with history; per-sprint accuracy is poor in most reported data.

· denied 0 ·
Show

Story-point estimation and sprint commitment are alternative ways to fill an iteration, not complements

Untestable

A definitional stance on process design.

· denied 0 ·
Show

Automated formatting and static analysis before review let reviewers focus on design and maintainability

Leans right

Google's and Mozilla's review studies both find static analysis integration reduces trivial comments.

· denied 0 ·
Show
  • Critique - Google's Code Review Tool | Reaction (NeetCodeIO)“automated analysis allow reviewers to focus on the understandability and maintainability of changes”
  • Probably right AI guessGoogle's and Mozilla's review studies both find static analysis integration reduces trivial comments.
  • Leans right Sadowski et al. 2018 (Google code review) lines 526-532Google integrates 110 Tricorder analyzers into review and the authors state this lets reviewers focus on understandability and maintainability instead of trivial formatting comments; a practice description, not a controlled measurement.
  • Leans right Bacchelli & Bird 2013 (Microsoft code review) lines 567-579Having found that many review comments concern conventions, typos, dead code and micro-level defects that existing tools can detect, the authors recommend automating these so reviewers can look for deeper defects; a recommendation derived from comment data, not tested.

Extensive automated pre-submit checks catch most breaking changes before they are merged

Leans partly right

Pre-submit CI catches many regressions, but the share depends on test coverage; the figure is a personal estimate.

· denied 0 ·
Show
  • Critique - Google's Code Review Tool | Reaction (NeetCodeIO)“if your code broke anything there's a 99% chance it would get caught before it was merged”
  • Leans partly right AI guessPre-submit CI catches many regressions, but the share depends on test coverage; the figure is a personal estimate.

Newly joined engineers receive the most review comments, and the count falls with tenure

Probably right

Log analysis of ~9M Google changes: authors who started within the past year receive more than twice as many reviewer comments per change, and the average falls steadily over the first five years of tenure (Figure 2).

· denied 0 ·
Show
  • Critique - Google's Code Review Tool | Reaction (NeetCodeIO)“when you first join you're probably going to get more more comments”
  • Probably right AI guessGoogle's published review data shows comments per change declining over the first years of tenure.
  • Probably right Sadowski et al. 2018 (Google code review) lines 557-567Log analysis of ~9M Google changes: authors who started within the past year receive more than twice as many reviewer comments per change, and the average falls steadily over the first five years of tenure (Figure 2).

Overly harsh or demanding reviews discourage future contributions

Leans partly right

Studies of open-source projects link toxic review comments to contributor drop-off; in-company data is thin.

· denied 0 ·
Show
  • Critique - Google's Code Review Tool | Reaction (NeetCodeIO)“overly difficult reviews can discourage future improvements”
  • Leans partly right AI guessStudies of open-source projects link toxic review comments to contributor drop-off; in-company data is thin.
  • Leans partly right Sadowski et al. 2018 (Google code review) lines 392-402Google interviewees name tone (authors sensitive to comments) and power (dragging out reviews, withholding approval) as review breakdowns that leave developers uncomfortable or frustrated; the effect on later contributions is not measured.

GUI-driven integration tests cannot reach a large fraction of code such as error handling and edge cases

Leans right

Coverage from end-to-end tests is typically well below unit-level coverage; the 'bit more than half' figure is a guess.

· denied 0 ·
Show
  • Clean Coder Blog (blog.cleancoder.com)“you can’t reach all the code from the GUI”
  • Probably right AI guessCoverage from end-to-end tests is typically well below unit-level coverage; the 'bit more than half' figure is a guess.

Keeping code clean enough to keep development fast is worth more than the cost of building a trustworthy test suite

Untestable

A cost-benefit judgment with no agreed way to measure either side.

· denied 0 ·
Show
  • Clean Coder Blog (blog.cleancoder.com)“the benefit of keeping the code clean, and keeping the team moving fast, is so great”
  • Untestable AI guessA cost-benefit judgment with no agreed way to measure either side.

Focused and collaborative work need different physical spaces

Leans partly right

Removing all spatial boundaries cut face-to-face collaboration about 70%, and the authors tie this to Kao and Couzin's finding that intermediate rather than maximal openness maximises collective intelligence; supports that fully open space hurts both kinds of work but does not test separate spaces.

· denied 0 ·
Show
  • Beyond Open Offices: The New Fog Creek Headquarters (blog.glitch.com)“Some of these tasks require intense concentration, while others are more conversational and collaborative”
  • Leans partly right Bernstein & Turban 2018 (open offices) lines 413-420Removing all spatial boundaries cut face-to-face collaboration about 70%, and the authors tie this to Kao and Couzin's finding that intermediate rather than maximal openness maximises collective intelligence; supports that fully open space hurts both kinds of work but does not test separate spaces.
  • Untestable AI guessWorkplace design advice rather than a testable prediction.

Workspace design is a fundamental part of how a company takes care of its people

Untestable

A values statement.

· denied 0 ·
Show

The claim that defect fix cost rises exponentially by lifecycle phase has no verifiable measurement behind it

Leans right

Boehm's original data exists but is thinner than the derived charts; modern iterative projects show much flatter curves.

· denied 0 ·
Show
  • The 10X Programmer, and other Myths (blog.glitch.com)“I could not find any solid proof that someone had measured something and came up with those fantastic costs”
  • Probably right AI guessBoehm's original data exists but is thinner than the derived charts; modern iterative projects show much flatter curves.

Software project failure rates and crisis figures are exaggerated and often based on opinion surveys

Leans partly right

Standish CHAOS figures are widely criticised; failure definitions vary so much that no robust rate exists.

· denied 0 ·
Show
  • The 10X Programmer, and other Myths (blog.glitch.com)“I think the crisis is very much over-exploited, very overblown”
  • Leans partly right AI guessStandish CHAOS figures are widely criticised; failure definitions vary so much that no robust rate exists.
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 665-676Despite software being 'notoriously known for cost overruns', the review found no general tendency to overoptimism and only ~20% median overrun for larger projects, supporting the view that crisis figures overstate the problem; the opinion-survey mechanism is not discussed.

Software folklore spreads because the field is fashion-driven and debunking costs more effort than asserting

Leans partly right

Uncovering the flaws in one well-regarded study took the reproduction team about 5 person-months (over 6 months elapsed), while the original result had already spread through 119 citations, most repeating it as a causal effect; supports the asymmetry between asserting and debunking, says nothing about fashion.

· denied 0 ·
Show
  • The 10X Programmer, and other Myths (blog.glitch.com)“it takes a lot more energy to debunk a claim than it takes to just make things up”
  • Leans partly right Berger et al. 2019 (languages reproduction) lines 1370-1374Uncovering the flaws in one well-regarded study took the reproduction team about 5 person-months (over 6 months elapsed), while the original result had already spread through 119 citations, most repeating it as a causal effect; supports the asymmetry between asserting and debunking, says nothing about fashion.
  • Untestable AI guessA sociological explanation, not a measurable prediction.

Easy-to-repeat claims act as curiosity stoppers that prevent investigating what actually makes projects succeed

Untestable

A framing claim about how folklore affects inquiry.

· denied 0 ·
Show

Measuring software work in man-months is misleading because adding people does not add proportional progress

Probably right

Lego-team experiment: four-person teams took 53 minutes total versus 36 for two-person teams on the same task and underestimated more (75% vs 55% overrun), and IT projects with more people overrun more often; a workforce twice as large delivers less than twice the output.

· denied 0 ·
Show
  • The “10x engineer:" 50 years ago and now (The Pragmatic Engineer)“the man-month as a unit for measuring the size of a job is a dangerous and deceptive myth”
  • Very likely right AI guessBrooks's law is supported by communication-overhead models and project data on late staffing.
  • Probably right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 2726-2739Lego-team experiment: four-person teams took 53 minutes total versus 36 for two-person teams on the same task and underestimated more (75% vs 55% overrun), and IT projects with more people overrun more often; a workforce twice as large delivers less than twice the output.

Apparent standout productivity can reflect tenure, project selection, information hoarding or credit-taking rather than skill

Unknown

Plausible confounders; no study separates them from genuine skill differences.

· denied 0 ·
Show
  • The “10x engineer:" 50 years ago and now (The Pragmatic Engineer)““10x developer” behavior can actually be undetected toxic behavior under a different label”
  • Unknown AI guessPlausible confounders; no study separates them from genuine skill differences.

Version control and code review let junior engineers write production code safely, replacing hierarchical chief-programmer teams

Leans partly right

Review and version control do gate bad code, but flatter teams also reflect cheaper compute; no causal study.

· denied 0 ·
Show
  • The “10x engineer:" 50 years ago and now (The Pragmatic Engineer)“What didn’t exist back then was source code control and code reviews to stop poorly written code making it to production.”
  • Leans partly right AI guessReview and version control do gate bad code, but flatter teams also reflect cheaper compute; no causal study.

The performance penalty of class-hierarchy designs grows as the problem gets more complex

Leans partly right

Adding a second virtual call widened the gap here, but this is one extra property on a toy problem.

· denied 0 ·
Show
  • "Clean" Code, Horrible Performance (computerenhance.com)“the more complex you make the problem, the more these ideas harm your performance”
  • Leans partly right AI guessAdding a second virtual call widened the gap here, but this is one extra property on a toy problem.

Avoiding repeated code does not conflict with writing fast code

Leans partly right

Reasonable in general; some performance work deliberately duplicates code paths for specialisation.

· denied 0 ·
Show
  • "Clean" Code, Horrible Performance (computerenhance.com)“we don’t have to violate it to write code that gets reasonable performance”
  • Leans partly right AI guessReasonable in general; some performance work deliberately duplicates code paths for specialisation.

Controlled studies find at most small effects of static typing on productivity or defect rates

Leans partly right

Repeated-measures ANOVA gave significant, medium-to-large effects of language on development time in both rounds (partial eta-squared .275 and .246) with a strong task-language interaction; the exploratory measures showed 35-69 percent of variance in test runs and file switches explained by the type system in the second round, which is not a small effect, though confined to small tasks.

· denied 0 ·
Show
  • Literature review on the benefits of static types (danluu.com)“most studies find very small effects, if any”
  • Probably right AI guessThe reviewed experiments are small and student-based, but the consistent null-to-small pattern has held in later work.
  • Leans partly right Kleinschmager et al. 2012 (static types) lines 298-315Here the effect of type system on development time was not small: partial eta-squared .275 and .246 across rounds, type-error fixing 2-5x faster in Java and every subject's Java total below their Groovy total; effects were nil for semantic errors and defect rates were not measured, and tasks were small student exercises.
  • Leans partly right Hanenberg et al. 2014 (static types) lines 971-991Repeated-measures ANOVA gave significant, medium-to-large effects of language on development time in both rounds (partial eta-squared .275 and .246) with a strong task-language interaction; the exploratory measures showed 35-69 percent of variance in test runs and file switches explained by the type system in the second round, which is not a small effect, though confined to small tasks.
  • Leans right Gao, Bird & Barr 2017 (types vs JS bugs) lines 568-577Related-work summary: Hanenberg's year-long experiment with 49 students writing a parser in a custom language with and without static types found no significant positive impact of static typing on development time or code quality.
  • Leans right Ray et al. 2014 (languages on GitHub) lines 711-715Related-work summary of Hanenberg's 48-programmer, 27-hour experiment: no significant difference in code quality between static and dynamic typing; the authors' own observational GitHub effect sizes are also described as modest.

Differences between individual programmers dwarf differences between languages in experiments

Leans partly right

Across 80 programs the within-language bad/good ratios for time, length, memory and run time were on average about as large as or larger than the between-language differences, which supports the direction but not 'dwarf', since scripts still took half the time of C/C++/Java.

· denied 0 ·
Show
  • Literature review on the benefits of static types (danluu.com)“the variance between programmers was still much greater than the variance between languages in all but two tasks”
  • Very likely right AI guessReported in nearly every multi-language experiment, including Prechelt's.
  • Leans partly right Prechelt 1999 (28:1 legend) lines 521-524Typical slower/faster programmer differences of about 2:1 are much larger than the typical difference between two experimental conditions (de-biased median effect 14%); the dataset covers experimental variables in general, not language comparisons specifically.
  • Leans partly right Prechelt 2000 (seven languages) lines 496-501Across 80 programs the within-language bad/good ratios for time, length, memory and run time were on average about as large as or larger than the between-language differences, which supports the direction but not 'dwarf', since scripts still took half the time of C/C++/Java.

Type annotations help developers mainly by acting as documentation when using unfamiliar APIs

Leans partly right

The exploratory data show static types cut file switches on class-identification tasks, which the authors interpret as annotations guiding developers to the right API without searching, but they cannot separate annotation from checking and type-error fixing benefited at least as strongly.

· denied 0 ·
Show
  • Literature review on the benefits of static types (danluu.com)“static type systems acted as a form of implicit documentation, benefiting developer productivity”
  • Probably partly right AI guessHanenberg's experiments find the benefit on undocumented APIs and strengthened by docs; effect sizes are modest.
  • Leans partly right Kleinschmager et al. 2012 (static types) lines 427-435Static types sped up using undocumented classes on 4 of 5 tasks, which the authors read as types acting as documentation, but they also produced a large separate benefit on type-error fixing from the compiler check itself, so documentation is one confirmed mechanism rather than the main one.
  • Leans partly right Hanenberg et al. 2014 (static types) lines 1579-1596The exploratory data show static types cut file switches on class-identification tasks, which the authors interpret as annotations guiding developers to the right API without searching, but they cannot separate annotation from checking and type-error fixing benefited at least as strongly.

Existing type-system studies do not cover experienced programmers, large codebases or modern typed languages

Leans right

The threats section concedes mostly student subjects, small tasks without complex control flow in a bare text editor, and Java as a type system 'not known for being the most expressive'; the related-work survey lists only similar small experiments, matching all three gaps in the claim.

· denied 0 ·
Show
  • Literature review on the benefits of static types (danluu.com)“Some notable omissions from the studies are comprehensive studies using experienced programmers”
  • Very likely right AI guessThe gap remains; most later studies are still small-scale or observational.
  • Leans right Hanenberg et al. 2014 (static types) lines 833-867The threats section concedes mostly student subjects, small tasks without complex control flow in a bare text editor, and Java as a type system 'not known for being the most expressive'; the related-work survey lists only similar small experiments, matching all three gaps in the claim.
  • Leans right Kleinschmager et al. 2012 (static types) lines 251-257This study is an instance of the pattern: 30 of 33 subjects were students, the program was 30 classes and 1300 lines with tasks deliberately free of loops and recursion, and the authors warn the effects may not generalise to industrial programs.
  • Leans partly right Gao, Bird & Barr 2017 (types vs JS bugs) lines 579-586The authors agree most prior type-system studies are small scale or use students with a custom language as a confound, but their own study applies TypeScript 2.0 and Flow to bugs from 398 real GitHub projects up to 1.1M LOC, so modern typed languages on large codebases are covered (though with non-expert annotators, not experienced users).
  • Leans partly right Ray et al. 2014 (languages on GitHub) lines 42-48Ray et al. note that controlled typing experiments used students on limited tasks, and position their own work as a field study of 729 popular projects (Linux, Rails, Spark, Haskell's pandoc) in 17 languages including Go, Scala and Haskell, so large codebases and modern languages have been studied, if only observationally.

Type-system studies are cherry-picked to confirm whichever side one already holds

Leans partly right

The original study's static-typing and functional-language results drew the most attention because they confirmed commonly held beliefs, and of 30 citing papers that discussed the results, 26 restated the correlations as causal effects; confirmation-driven over-reading of one study rather than cherry-picking across studies.

· denied 0 ·
Show
  • Literature review on the benefits of static types (danluu.com)“most of them are passed around to justify one viewpoint or another”
  • Leans partly right Berger et al. 2019 (languages reproduction) lines 86-99The original study's static-typing and functional-language results drew the most attention because they confirmed commonly held beliefs, and of 30 citing papers that discussed the results, 26 restated the correlations as causal effects; confirmation-driven over-reading of one study rather than cherry-picking across studies.
  • Untestable AI guessA claim about discourse rather than about types.

Reaching the top few percent in most activities mainly requires correcting basic, observable mistakes rather than talent

Leans partly right

Consistent with deliberate-practice findings, but the game evidence is observational and self-selected.

· denied 0 ·
Show
  • 95%-ile isn't that good (danluu.com)“most people can become (relatively) good at most things”
  • Leans partly right AI guessConsistent with deliberate-practice findings, but the game evidence is observational and self-selected.

Getting feedback on one's own work yields large improvements because almost no practitioners seek any

Leans partly right

Coaching and feedback effects are robust in education research; the 'almost no one' part is anecdotal.

· denied 0 ·
Show
  • 95%-ile isn't that good (danluu.com)“improve slowly when getting feedback would make improving quickly easy”
  • Probably partly right AI guessCoaching and feedback effects are robust in education research; the 'almost no one' part is anecdotal.
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 2375-2389In the narrow domain of time prediction, structured feedback on one's own estimates (PSP, lessons-learned sessions) yielded no accuracy improvement, limiting the general claim.

Tracking where programming time actually goes reveals large, fixable waste that self-perception misses

Leans partly right

Self-report of time use is known to be inaccurate; the twofold gain is a single self-estimate.

· denied 0 ·
Show
  • 95%-ile isn't that good (danluu.com)“When I've recorded what people do and compare it to what they think they're doing, these are often quite different.”
  • Probably partly right AI guessSelf-report of time use is known to be inaccurate; the twofold gain is a single self-estimate.
  • Leans partly right Meyer et al. 2014 (productivity perceptions) lines 535-541Observation logs revealed far more task and activity switches (13.3 and 47 per hour) than developers' stated concern about context switches would suggest, yet 8 of 11 still felt productive; tracking exposes behaviour self-perception misses, but the study finds much of it cheap rather than fixable waste.

Skilled coaching beats peer or self feedback for improving at a skill

Leans right

Tutoring and expert coaching show large effects in education meta-analyses.

· denied 0 ·
Show
  • 95%-ile isn't that good (danluu.com)“having a skilled coach or teacher give one-on-one instruction is more effective still”
  • Probably right AI guessTutoring and expert coaching show large effects in education meta-analyses.
  • Leans partly right Jørgensen 2004 (expert estimation) lines 1176-1183Review cites expertise research holding that deliberate training designed by a coach, not amount of experience, determines expertise, and that training improved estimation accuracy while experience had almost no effect; coaching is not compared with peer feedback directly.

Independent gut estimates from experienced practitioners converge and are reasonably accurate at project scale

Leans partly right

Expert judgment matches formal models in estimation research, but these are a handful of successful anecdotes.

· denied 0 ·
Show
  • Blink Estimation (Dan North & Associates Limited)“Experienced delivery folks can have surprisingly good instincts for macro-level estimation”
  • Leans partly right AI guessExpert judgment matches formal models in estimation research, but these are a handful of successful anecdotes.
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 4474-4510Individual estimates diverge widely (students' guesses of one height ranged 10-370 m) but the median of independent estimates is reliably better than at least half of them and combining improved accuracy in all 30 reviewed contexts (avg 12.5%); accuracy comes from combination, not convergence.
  • Leans partly right Jørgensen 2004 (expert estimation) lines 271-286Fifteen studies comparing expert and model estimates split 5/5/5, with experts more accurate when they hold domain knowledge the model lacks; expert estimation is not beaten by models but is strongly biased by irrelevant information, and convergence is not studied.

Detailed story-by-story estimation inflates the total because micro-planning is fractal

Leans partly right

Decomposition yields higher totals because small tasks are less underestimated (magnitude effect); in two office-task experiments decomposed sums were 9-10% too high vs 2-5% for whole-task estimates, and a software study found decomposed estimates higher but less accurate. The mechanism is magnitude bias, not fractal micro-planning.

· denied 0 ·
Show
  • Blink Estimation (Dan North & Associates Limited)“micro-planning is fractal: The more detail you go into the more the rolled-up result expands”
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 3981-4020Decomposition yields higher totals because small tasks are less underestimated (magnitude effect); in two office-task experiments decomposed sums were 9-10% too high vs 2-5% for whole-task estimates, and a software study found decomposed estimates higher but less accurate. The mechanism is magnitude bias, not fractal micro-planning.
  • Leans partly right AI guessDecomposition studies find bottom-up estimates can run high or low; inflation is common but not universal.
  • Leans partly right Jørgensen 2004 (expert estimation) lines 789-795Evidence on decomposition is mixed: one software study found professionals using bottom-up estimation were more over-optimistic (lower) than top-down estimators, and decomposition improved accuracy in only one of two experiments, so inflation is not a reliable effect.

Estimating individual stories adds little because the biggest risks are cross-cutting unknowns no single story captures

Leans partly right

Plausible and consistent with project post-mortems, but no comparative measurement.

· denied 0 ·
Show
  • Blink Estimation (Dan North & Associates Limited)“many surprises are cross-project rather than specific to a particular story”
  • Leans partly right AI guessPlausible and consistent with project post-mortems, but no comparative measurement.
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 4022-4029Accurate decomposed estimates depend on identifying all components, unknown components and unexpected events, which analogy-based whole-project estimates absorb implicitly; decomposition is still recommended when no close analogies exist.
  • Leans partly right Jørgensen 2004 (expert estimation) lines 818-822Bottom-up (decomposed) estimation is characterised as easy to forget activities and prone to underestimating unexpected events, which is why the review recommends an independent top-down estimate alongside it.

Revealing estimates simultaneously prevents the first number spoken from anchoring the rest

Leans right

Planning poker's simultaneous reveal is described as keeping initial estimates independent and unanchored, and a field study found it cut median estimation error from 50% to 33%; combinations of independent predictions beat ones influenced by each other.

· denied 0 ·
Show
  • Blink Estimation (Dan North & Associates Limited)“If we went round one at a time the earlier estimates would act as an unconscious anchor to the later ones.”
  • Very likely right AI guessAnchoring effects on software estimates are experimentally demonstrated.
  • Leans right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 4588-4612Planning poker's simultaneous reveal is described as keeping initial estimates independent and unanchored, and a field study found it cut median estimation error from 50% to 33%; combinations of independent predictions beat ones influenced by each other.
  • Leans right Jørgensen 2004 (expert estimation) lines 805-808Review recommends producing estimates independently of each other to avoid the anchoring effect, citing a software study where an early estimate strongly biased re-estimation even when estimators were told to ignore it.

An estimate is better framed as an investment decision than as a contract

Leans partly right

Bid, planned effort and most-likely effort have conflicting goals, and software estimators frequently do not distinguish them, which the review argues hinders realistic estimates; the investment-decision framing itself is not tested.

· denied 0 ·
Show
  • Blink Estimation (Dan North & Associates Limited)“it becomes a straightforward return-on-investment discussion rather than the traditional estimation-as-contract negotiation”
  • Leans partly right Jørgensen 2004 (expert estimation) lines 534-547Bid, planned effort and most-likely effort have conflicting goals, and software estimators frequently do not distinguish them, which the review argues hinders realistic estimates; the investment-decision framing itself is not tested.
  • Untestable AI guessA framing preference for how to run the conversation.

Sometimes the honest estimate is that size cannot be known until specific unknowns are investigated

Leans partly right

When no relevant historical data exist the recommended method is to start the work and extrapolate from the first stage, which supports deferring the estimate until unknowns are probed, though the book still expects a prediction before starting.

· denied 0 ·
Show
  • Blink Estimation (Dan North & Associates Limited)“It means we can't possibly know, and here's why.”
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 4309-4321When no relevant historical data exist the recommended method is to start the work and extrapolate from the first stage, which supports deferring the estimate until unknowns are probed, though the book still expects a prediction before starting.
  • Untestable AI guessPractice advice on handling irreducible uncertainty.

Merge tools cannot detect functional conflicts between independently developed features; only integrating and testing can

Leans right

Semantic conflicts are invisible to textual merge; this is the standard rationale for CI.

· denied 0 ·
Show
  • Don’t Feature Branch | Dave Farley’s Weblog (davefarley.net)“No merge tool can predict that the features that I write and features that you write will work nicely together”
  • Very likely right AI guessSemantic conflicts are invisible to textual merge; this is the standard rationale for CI.

Choosing which features to release after integration testing means shipping a combination that was never tested

Leans right

Logically sound; the size of the risk depends on how coupled the features are.

· denied 0 ·
Show
  • Don’t Feature Branch | Dave Farley’s Weblog (davefarley.net)“if you decide to merge only one of them back to head, you are about to release a previously untested scenario”
  • Probably right AI guessLogically sound; the size of the risk depends on how coupled the features are.

Trunk-based development with feature toggles is simpler for most teams than disciplined branch-per-feature

Leans partly right

Survey data favours trunk-based teams, but 'simpler' is a judgment and toggles carry their own cost.

· denied 0 ·
Show
  • Don’t Feature Branch | Dave Farley’s Weblog (davefarley.net)“Trunk Based Development with Feature toggles are simpler for a team to use and implement than feature branches”
  • Leans partly right AI guessSurvey data favours trunk-based teams, but 'simpler' is a judgment and toggles carry their own cost.
  • Leans partly right DORA State of DevOps 2019 lines 1039-1041DORA finds trunk-based development with frequent check-in predicts delivery performance, but it does not compare it with disciplined branch-per-feature or measure simplicity, and does not study feature toggles.

Keeping a branch per feature lets a finished feature be pulled before release, which trunk-based development cannot do

Leans partly right

True without toggles; feature flags give trunk-based teams the same ability at some complexity cost.

· denied 0 ·
Show
  • Don’t Feature Branch | Dave Farley’s Weblog (davefarley.net)“You set yourself up for disappointment when you want to release and can’t take out a feature.”
  • Leans partly right AI guessTrue without toggles; feature flags give trunk-based teams the same ability at some complexity cost.

Feature toggles are a hack and a source of errors that proper branch-per-feature avoids

Leans partly right

Toggle debt and misconfiguration incidents are real, but branches trade them for merge risk; no comparison exists.

· denied 0 ·
Show
  • Don’t Feature Branch | Dave Farley’s Weblog (davefarley.net)“I find them the biggest hack of what’s in ci these days and a potential source of errors”
  • Leans partly right AI guessToggle debt and misconfiguration incidents are real, but branches trade them for merge risk; no comparison exists.

Generic repository abstractions over an ORM lead to N+1 queries and joining in application memory

Leans partly right

A commonly documented .NET anti-pattern; the problem is the abstraction's inflexibility rather than inevitability.

· denied 0 ·
Show

Giving requirements without having the engineer explain them back leads to them being silently ignored

Leans partly right

Read-back is standard in safety-critical communication; software evidence is anecdotal.

· denied 0 ·
Show

AI coding tools reproduce a codebase's existing anti-patterns unless a new pattern is established first

Leans partly right

Consistent with how code models condition on context; measured mainly in practitioner reports.

· denied 0 ·
Show

End-to-end browser tests are brittle but the fastest way to get coverage from zero on a legacy system

Leans partly right

Matches the test-pyramid rationale; brittleness of UI tests is well documented.

· denied 0 ·
Show

Writing down architecture decisions and their reasoning helps both humans and AI tools work on a codebase

Leans partly right

ADRs are widely adopted; the benefit is reported, not measured.

· denied 0 ·
Show

Reviewing code synchronously at commit time rather than asynchronously reduces merge delay and conflicts

Leans partly right

The delay-to-conflict link is well supported; whether synchronous review is practical at scale is less clear.

· denied 0 ·
Show
  • DORA | Capabilities: Trunk-based development (dora.dev)“The longer a merge is delayed, the more likely it is to create merge conflicts and associated issues.”
  • Leans partly right AI guessThe delay-to-conflict link is well supported; whether synchronous review is practical at scale is less clear.

Running the automated test suite before every commit keeps trunk releasable

Leans right

Standard CI mechanism; effectiveness depends on suite coverage and speed.

· denied 0 ·
Show
  • DORA | Capabilities: Trunk-based development (dora.dev)“it's essential that tests are run against code changes before commit”
  • Probably right AI guessStandard CI mechanism; effectiveness depends on suite coverage and speed.
  • Leans partly right DORA State of DevOps 2019 lines 1006-1011DORA states that for CI to be impactful every commit should trigger a successful build and test run, and finds CI predicts continuous delivery; whether this keeps trunk releasable is implied rather than measured.

Trunk-based development requires developers to learn to work in small batches, which many find hard and resist

Leans partly right

Adoption reports consistently cite resistance; the magnitude is anecdotal.

· denied 0 ·
Show
  • DORA | Capabilities: Trunk-based development (dora.dev)“Many developers simply can't imagine working in this way.”
  • Probably partly right AI guessAdoption reports consistently cite resistance; the magnitude is anecdotal.

Programs are rarely inherently I/O bound; chatty serial chains of dependent requests make them look I/O bound

Leans partly right

Waterfall request chains are a well-documented cause of slow web apps, but large-data workloads genuinely are bounded by storage and network even when well structured.

· denied 0 ·
Show
  • SE Radio 577: Casey Muratori on Clean Code, Horrible Performance? (IEEEComputerSociety)“the actual nature of the thing the program is doing is almost never i o bound”
  • Leans partly right AI guessWaterfall request chains are a well-documented cause of slow web apps, but large-data workloads genuinely are bounded by storage and network even when well structured.

Faster, more responsive software measurably increases user engagement and revenue

Leans right

Published latency experiments at Amazon, Google and others consistently show engagement and conversion dropping with added delay, though 'conclusive' overstates how far the effect generalises to internal tools.

· denied 0 ·
Show
  • SE Radio 577: Casey Muratori on Clean Code, Horrible Performance? (IEEEComputerSociety)“the more responsive your software and the faster it performs the more engaged users are the more likely they are to spend more money”
  • Probably right AI guessPublished latency experiments at Amazon, Google and others consistently show engagement and conversion dropping with added delay, though 'conclusive' overstates how far the effect generalises to internal tools.

Hiding implementation details behind layers of abstraction makes it harder to find why code misbehaves because every layer must be dug through

Leans partly right

Information hiding has evidence for isolating change, and indirection is also known to hurt comprehension; which dominates for debugging has not been measured.

· denied 0 ·
Show
  • SE Radio 577: Casey Muratori on Clean Code, Horrible Performance? (IEEEComputerSociety)“layers of encapsulation that that library has put between me and what's going on actually make it take longer for me to find the problem”
  • Leans partly right AI guessInformation hiding has evidence for isolating change, and indirection is also known to hurt comprehension; which dominates for debugging has not been measured.
  • Leans partly right Scalabrino et al. 2019 (understandability) lines 1000-1009One interviewed developer said an abstract return type made the method less understandable because the concrete types must be discovered, describing a trade-off between understandability and maintainability; a single opinion in a five-developer interview.

The readability gains credited to class hierarchies come from cleaning up messy code, which well-named procedural code achieves equally well

Leans partly right

Comprehension experiments find naming and structure matter more than paradigm, but no study compares a tidy procedural version against a hierarchy on the same task.

· denied 0 ·
Show
  • SE Radio 577: Casey Muratori on Clean Code, Horrible Performance? (IEEEComputerSociety)“so why are we claiming the advantage comes from the classes as opposed to just not doing all of these kind of other bad things”
  • Leans partly right AI guessComprehension experiments find naming and structure matter more than paradigm, but no study compares a tidy procedural version against a hierarchy on the same task.

Switch-based code is easier to optimise later than a class hierarchy because all cases are visible in one place

Leans partly right

Merging cases into branch-free or vectorised code is standard practice and needs the cases in one place, but this is a specialist optimisation path rather than a general maintenance cost.

· denied 0 ·
Show
  • SE Radio 577: Casey Muratori on Clean Code, Horrible Performance? (IEEEComputerSociety)“it is very simple to improve the performance of a switch statement it is much more time consuming to do the same transform”
  • Leans partly right AI guessMerging cases into branch-free or vectorised code is standard practice and needs the cases in one place, but this is a specialist optimisation path rather than a general maintenance cost.

Lines of code per feature is a useful objective proxy for code that reads like what it does and stays easy to modify

Leans partly right

Lines of code predict defects and effort about as well as any complexity metric, but minimising it can also produce dense, cryptic code.

· denied 0 ·
Show
  • SE Radio 577: Casey Muratori on Clean Code, Horrible Performance? (IEEEComputerSociety)“features per line of code is something I kind of actually want to keep a good handle on”
  • Leans partly right AI guessLines of code predict defects and effort about as well as any complexity metric, but minimising it can also produce dense, cryptic code.
  • Leans partly right Scalabrino et al. 2019 (understandability) lines 864-870LOC and statement counts were among the 73 metrics with at most weak correlation to any of six understandability proxies across 444 evaluations, so line count did not track readability here; methods were pre-filtered to 30-70 effective lines, which limits the size range tested.

The 'premature optimisation' quote is misapplied as licence to ignore performance during design when it only warned against early micro-level hand tuning

Leans right

The full Knuth passage explicitly says not to pass up the critical few percent and concerns small-scale efficiencies, not architecture.

· denied 0 ·
Show
  • SE Radio 577: Casey Muratori on Clean Code, Horrible Performance? (IEEEComputerSociety)“the way this quote is now applied is that you don't need to think about optimization until the end of your program”
  • Probably right AI guessThe full Knuth passage explicitly says not to pass up the critical few percent and concerns small-scale efficiencies, not architecture.

Developer-time savings claimed from ignoring performance are erased by later ground-up performance rewrites

Leans partly right

Several large companies have published performance-driven rewrites, but the examples are survivors whose slow first version reached market, so the net accounting is unknown.

· denied 0 ·
Show
  • SE Radio 577: Casey Muratori on Clean Code, Horrible Performance? (IEEEComputerSociety)“so they claim that they were saving develop first time but they're spending years rewriting entire systems”
  • Leans partly right AI guessSeveral large companies have published performance-driven rewrites, but the examples are survivors whose slow first version reached market, so the net accounting is unknown.

A performance trade-off only counts as a trade-off if the cost was measured; otherwise it is an excuse

Untestable

This is a framing about what deserves the word trade-off rather than a testable prediction.

· denied 0 ·
Show

Performance must be designed in from the start because hotspot optimisation cannot fix serial dependency chains and poor data layout later

Leans partly right

Architectural choices like synchronous call chains are expensive to undo, but profiling-driven fixes resolve many real slowdowns without redesign.

· denied 0 ·
Show
  • SE Radio 577: Casey Muratori on Clean Code, Horrible Performance? (IEEEComputerSociety)“architecting for performance needs to be done from day one”
  • Probably partly right AI guessArchitectural choices like synchronous call chains are expensive to undo, but profiling-driven fixes resolve many real slowdowns without redesign.

Treating comments as failures leads to under-documented code, and missing comments cost far more time than incorrect ones

Leans partly right

Comprehension experiments show well-placed comments help readers, but stale-comment costs are real and the cost ratio is one practitioner's estimate.

· denied 0 ·
Show

For most software, conserving programmer time matters more than conserving CPU cycles, so readability-first practices pay off

Leans partly right

Much business software is not CPU-bound and developer salaries dominate costs, but published latency experiments show slowness has measurable revenue costs too.

· denied 0 ·
Show
  • cmuratori-discussion/cleancodeqa.md at main · unclebob/cmuratori-discussion (GitHub)“It is economically better for most organizations to conserve programmer cycles than computer cycles.”
  • Leans partly right AI guessMuch business software is not CPU-bound and developer salaries dominate costs, but published latency experiments show slowness has measurable revenue costs too.
  • Leans partly right Buse & Weimer 2010 (readability) lines 612-619Readability correlated with defect reports, version churn, bug-fix commits and project maturity, and a readability drop in jUnit coincided with rising defect density, supporting that readability relates to quality; correlational and silent on the CPU-vs-programmer-time trade-off.

Choosing the right algorithm improves efficiency by many orders of magnitude while cycle-level tuning gives about one

Leans right

Asymptotic improvements dominate constant-factor ones on large inputs, though for fixed-size hot loops constant factors are all that remain.

· denied 0 ·
Show
  • cmuratori-discussion/cleancodeqa.md at main · unclebob/cmuratori-discussion (GitHub)“Cycle-lean code can increase efficiency by an order of magnitude; but the right choice of algorithm can increase efficiency by many orders of magnitude.”
  • Probably right AI guessAsymptotic improvements dominate constant-factor ones on large inputs, though for fixed-size hot loops constant factors are all that remain.

Clean Code teaching gives performance almost no attention, so its audience learns to ignore it

Leans right

The author conceded the point about his own lecture series; whether audiences actually absorb a disregard for performance is not measured.

· denied 0 ·
Show

Interactive and visual behaviour such as GUIs and game feel cannot practically be test-driven because the correct answer is not known up front

Leans right

Both debaters and the game industry agree; snapshot and replay testing cover regressions but not the initial judgement of correctness.

· denied 0 ·
Show
  • cmuratori-discussion/cleancodeqa.md at main · unclebob/cmuratori-discussion (GitHub)“I cannot practically write tests for things that I have to see in order to know that they work. GUIs, Game behaviors, Hardware interactions, etc.”
  • Probably right AI guessBoth debaters and the game industry agree; snapshot and replay testing cover regressions but not the initial judgement of correctness.

Polymorphism makes adding new types easy while switch statements make adding new operations easy; neither is a free win

Leans right

This is the well-known expression problem; the two designs are mirror images for the two kinds of extension.

· denied 0 ·
Show

Dependency inversion via polymorphism protects high-level policy from recompilation and redeployment when low-level details change

Leans partly right

The mechanism is real, but link-time binding through opaque pointers gives the same isolation, so the benefit specific to runtime polymorphism is mainly plugins and frameworks.

· denied 0 ·
Show
  • cmuratori-discussion/cleancodeqa.md at main · unclebob/cmuratori-discussion (GitHub)“it prevents changes at to low level modules from forcing a wave of recompilation and redeployment from sweeping through the system towards higher level modules”
  • Leans partly right AI guessThe mechanism is real, but link-time binding through opaque pointers gives the same isolation, so the benefit specific to runtime polymorphism is mainly plugins and frameworks.

Refactorings should be in separate changes from feature work and bug fixes so reviewers can understand each

Leans partly right

Tangled changes are shown to confuse both reviewers and defect analysis, though no study measures the review-quality gain directly.

· denied 0 ·
Show
  • Small CLs (eng-practices)“It’s usually best to do refactorings in a separate CL from feature changes or bug fixes.”
  • Probably partly right AI guessTangled changes are shown to confuse both reviewers and defect analysis, though no study measures the review-quality gain directly.

Every change that adds or alters logic should ship with its tests in the same change

Unknown

Widely adopted policy, but no study compares co-committed tests against tests landed separately.

· denied 0 ·
Show
  • Small CLs (eng-practices)“A CL that adds or changes logic should be accompanied by new or updated tests for the new behavior.”
  • Unknown AI guessWidely adopted policy, but no study compares co-committed tests against tests landed separately.

Almost any large change can be decomposed into a series of small ones by an author who practises it

Leans partly right

Stacking and vertical slicing work for most feature work, but generated code, large migrations and some refactors resist splitting.

· denied 0 ·
Show
  • Small CLs (eng-practices)“Authors who practice writing small CLs can almost always find a way to decompose functionality into a series of small changes.”
  • Leans partly right AI guessStacking and vertical slicing work for most feature work, but generated code, large migrations and some refactors resist splitting.

Very large changes merge faster and are reverted less than mid-sized ones, likely because they are generated or refactor-only

Leans partly right

The pattern appears in one dataset and the explanation is the author's guess; rubber-stamping would also hide defects rather than prevent them.

· denied 0 ·
Show
  • The ideal PR is 50 lines long (Graphite)“post-5k lines, PRs start getting faster again. I can only assume this is a combination of blind stamps, assumed-safe refactors”
  • Leans partly right AI guessThe pattern appears in one dataset and the explanation is the author's guess; rubber-stamping would also hide defects rather than prevent them.
  • Leans partly right Sadowski et al. 2018 (Google code review) lines 405-412Google changes larger than about 1250 lines get fewer comments on average because they are mostly auto-generated code or large deletions, supporting the stated explanation, but merge time and revert rate for very large changes are not measured.

Observed benefits of small PRs are partly selection: teams already practising trunk-based development make smaller PRs

Leans partly right

The author flags the confound; no study randomises PR size, so some of the correlation is team maturity.

· denied 0 ·
Show
  • The ideal PR is 50 lines long (Graphite)“We find that Graphite users tend to create smaller PRs in general, since many organizations use a trunk-based development style”
  • Leans partly right AI guessThe author flags the confound; no study randomises PR size, so some of the correlation is team maturity.

Unit tests that never fail in version control still earn their keep because they fail transiently during development and are fixed before commit

Leans partly right

Local failures are invisible to repository history so 'never failed' undercounts value, but maintenance cost is real and tests that never fail even locally may be low value.

· denied 0 ·
Show
  • A Response to “Why Most Unit Testing is Waste” (Henrik Warne's blog)“if a unit test fails, it fails as you are developing the code. It is similar to a compilation failure. You fix it immediately.”
  • Leans partly right AI guessLocal failures are invisible to repository history so 'never failed' undercounts value, but maintenance cost is real and tests that never fail even locally may be low value.

Tests breaking during refactoring is a minor cost in practice

Leans partly right

Test co-evolution studies show test maintenance is a real and recurring effort, heavily dependent on how mock-heavy and implementation-coupled the tests are.

· denied 0 ·
Show
  • A Response to “Why Most Unit Testing is Waste” (Henrik Warne's blog)“Sometimes when you refactor code, you break tests. But my experience is that this is not a big problem.”
  • Leans partly right AI guessTest co-evolution studies show test maintenance is a real and recurring effort, heavily dependent on how mock-heavy and implementation-coupled the tests are.

The impossibility of exhaustively testing a program's state space applies to integration tests as much as unit tests

Leans partly right

Both are samples, but a system-level test exercises many units per case, so the argument cuts differently per test.

· denied 0 ·
Show
  • A Response to “Why Most Unit Testing is Waste” (Henrik Warne's blog)“This is true, but it applies equally to integration testing, and is thus not an argument against unit testing.”
  • Leans partly right AI guessBoth are samples, but a system-level test exercises many units per case, so the argument cuts differently per test.

Unit tests make it easy to set up edge-case contexts that are hard to reproduce in the full system

Leans right

Near-definitional and borne out by practice; error-handling paths in particular are hard to trigger end to end.

· denied 0 ·
Show
  • A Response to “Why Most Unit Testing is Waste” (Henrik Warne's blog)“it is easier to set up the context you want in a unit test than it is to set it up in the complete system”
  • Probably right AI guessNear-definitional and borne out by practice; error-handling paths in particular are hard to trigger end to end.

Runtime assertions complement but cannot replace unit tests because an assertion failure is still a production failure

Leans partly right

Assertions do catch what tests missed but after shipping; the two find overlapping faults at different costs.

· denied 0 ·
Show
  • A Response to “Why Most Unit Testing is Waste” (Henrik Warne's blog)“Asserts can be useful, but they are not a substitute for unit tests. If an assert fails, there is still a failure”
  • Probably partly right AI guessAssertions do catch what tests missed but after shipping; the two find overlapping faults at different costs.

Combining unit and integration tests catches more than integration tests alone

Leans partly right

Different test levels find different fault classes, but no study quantifies the marginal catch of adding unit tests to a good integration suite.

· denied 0 ·
Show
  • A Response to “Why Most Unit Testing is Waste” (Henrik Warne's blog)“I agree that integration tests are effective, but I think a combination of both is even better.”
  • Probably partly right AI guessDifferent test levels find different fault classes, but no study quantifies the marginal catch of adding unit tests to a good integration suite.

Best practices are inherited from what the most successful programmers do, which cannot distinguish good techniques from bad ones they succeed despite

Leans partly right

The logic holds and practice adoption is visibly driven by prominent advocates, but how much of practice folklore actually originates this way is not measured.

· denied 0 ·
Show
  • Uncle Bob is Ruining Software (Hillel Wayne)“We have no a priori way to determine whether a given practice is good or bad purely based on what the best programmers do”
  • Leans partly right AI guessThe logic holds and practice adoption is visibly driven by prominent advocates, but how much of practice folklore actually originates this way is not measured.

Making expert advocates argue opposing positions publicly is a partial substitute for missing research

Untestable

A preference about discourse rather than a prediction that could be checked.

· denied 0 ·
Show
  • Uncle Bob is Ruining Software (Hillel Wayne)“We could force 10x programmers to argue topics, which I'd like to see happen more- it isn't great but it helps a little”
  • Untestable AI guessA preference about discourse rather than a prediction that could be checked.

The most damaging software faults are design flaws rather than coding slips

Leans partly right

Classic industrial fault studies attribute the costliest defects to requirements and design, but the split depends heavily on how faults are categorised.

· denied 0 ·
Show
  • What We Know We Don't Know (Hillel Wayne)“Worst bugs are design bugs”
  • Leans partly right AI guessClassic industrial fault studies attribute the costliest defects to requirements and design, but the split depends heavily on how faults are categorised.
  • Leans partly right Gao, Bird & Barr 2017 (types vs JS bugs) lines 414-423Of public JavaScript bugs undetectable by Flow and TypeScript, errors implementing the specification make up 78% (SpecError alone 55%), i.e. most shipped bugs are misunderstandings of what to build rather than mechanical slips; the study does not measure how damaging each class was.

Simple tests of error-handling paths could prevent most catastrophic failures in distributed systems

Leans right

A study of production outages in major distributed systems found most catastrophic failures stemmed from trivially testable error-handling bugs.

· denied 0 ·
Show
  • What We Know We Don't Know (Hillel Wayne)“Simple Testing Can Prevent Most Critical Failures”
  • Probably right AI guessA study of production outages in major distributed systems found most catastrophic failures stemmed from trivially testable error-handling bugs.

Lines of code predict defects about as well as any complexity metric

Leans right

Studies of large codebases find most complexity metrics are strongly correlated with size and add little predictive power.

· denied 0 ·
Show
  • What We Know We Don't Know (Hillel Wayne)“Beyond Lines of Code: Do we Need More Complexity Metrics?”
  • Probably right AI guessStudies of large codebases find most complexity metrics are strongly correlated with size and add little predictive power.
  • Leans right Bird et al. 2011 (code ownership) lines 265-271Spearman correlations with Vista failures: size 0.75 pre-release / 0.69 post-release versus complexity 0.70 / 0.53 (Windows 7: 0.70/0.26 vs 0.56/0.37), so lines of code tracks defects at least as well as complexity.
  • Leans partly right Buse & Weimer 2010 (readability) lines 586-590Method length was much more strongly correlated with cyclomatic complexity than readability was, supporting the premise that size and complexity metrics largely overlap; the paper does not compare LoC and complexity as defect predictors directly.
  • Leans right McIntosh et al. 2014 (review coverage) lines 396-399With complexity normalised by size, size stays a significant explainer of post-release defects in two of four Qt/VTK/ITK release models while complexity is significant in none.
  • Leans partly right Tornhill & Borg 2022 (Code Red) lines 119-136On issue resolution time rather than defects, added LoC correlated only r=0.13 while the smell-based Code Health score correlated r=-0.58, so a richer metric beat raw size here; the outcome differs from the claim's and the comparison is a brief validity check.

Organisational structure metrics predict defect-prone components better than code metrics

Probably right

On 3,404 Windows Vista binaries (50M+ LOC, 50 random splits), eight organizational metrics predict failure-prone binaries with 86.2% precision and 84.0% recall versus 78.6/79.9 for churn, 79.3/66.0 for complexity, 74.4/69.9 for dependencies, 83.8/54.4 for coverage and 73.8/62.9 for pre-release bugs; single system.

· denied 0 ·
Show
  • What We Know We Don't Know (Hillel Wayne)“The Influence of Organizational Structure On Software Quality: An Empirical Case Study”
  • Probably partly right AI guessOne large industrial study found this strongly, but it has few replications outside that company.
  • Probably right Nagappan et al. 2008 (org structure) lines 554-571On 3,404 Windows Vista binaries (50M+ LOC, 50 random splits), eight organizational metrics predict failure-prone binaries with 86.2% precision and 84.0% recall versus 78.6/79.9 for churn, 79.3/66.0 for complexity, 74.4/69.9 for dependencies, 83.8/54.4 for coverage and 73.8/62.9 for pre-release bugs; single system.
  • Leans right Bird et al. 2011 (code ownership) lines 283-287In Vista and Windows 7 the number of minor contributors correlated more strongly with pre- and post-release failures than any other metric Microsoft collects, and adding it to a size/churn/complexity model raised variance explained from 26% to 46% (pre-release Vista).
  • Leans right McIntosh et al. 2014 (review coverage) lines 669-673In Qt, VTK and ITK the ownership metrics (minor authors) add significant explanatory power to every post-release defect model, while size is significant in only two and complexity in none.

Knowledge-worker productivity cannot be measured reliably, so hours-versus-output conclusions rest on analogies from other industries

Leans right

Lines of code and function points are widely criticised as proxies and no accepted output measure exists for programmers.

· denied 0 ·
Show
  • Why Crunch Mode Doesn’t Work: Six Lessons [2005] – IGDA (igda.org)“Productivity is hard to quantify for knowledge workers.”
  • Probably right AI guessLines of code and function points are widely criticised as proxies and no accepted output measure exists for programmers.
  • Leans partly right Dybå & Dingsøyr 2008 (agile review) lines 1106-1111The review shows how LOC-based productivity misleads: an apparent 337% XP productivity gain came from delivering 3.5 times more lines of code without more functionality, and other comparisons swung from +46% to -44%; this shows measurement is unreliable in practice, not that it is impossible.
  • Leans partly right DORA State of DevOps 2019 lines 1427-1435DORA states productivity cannot be captured by simple metrics such as lines of code, story points or bugs closed because targeting them causes unintended consequences, and falls back on self-reported productivity; it does not claim measurement is impossible.
  • Leans partly right Pencavel 2014 (working hours) lines 956-962The paper is itself the munitions analogy: it has a clean output measure only because piece-rate shell counts exist, and it says the 48 h threshold found 'for other workers may be more or less', i.e. transfer to other work is unverified; it does not address whether knowledge work can be measured.
  • Leans partly right Meyer et al. 2014 (productivity perceptions) lines 271-284Among 23 candidate productivity metrics rated by 379 developers none stood out (overall mean 3.14 of 5, best 3.88) and developers differed on which helped, suggesting no single reliable measure; the survey says nothing about hours-versus-output analogies.
  • Leans partly right Tornhill & Borg 2022 (Code Red) lines 138-139States, citing a systematic mapping study, that there is no consensus on how to measure productivity in software engineering; lack of consensus is weaker than 'cannot be measured' and the rest of the claim is not addressed.

Complex mental work degrades faster under fatigue than physical work, so knowledge workers lose more to long hours than manual workers

Leans partly right

Sleep research shows higher-order cognition is most sensitive to sleep loss, but the inference that programmers lose more total output than factory workers is unmeasured.

· denied 0 ·
Show
  • Why Crunch Mode Doesn’t Work: Six Lessons [2005] – IGDA (igda.org)“In contrast to complex mental performance, simple psychomotor performance, physical strength and endurance are unaffected by sleep deprivation.”
  • Leans partly right AI guessSleep research shows higher-order cognition is most sensitive to sleep loss, but the inference that programmers lose more total output than factory workers is unmeasured.
  • Unknown Pencavel 2014 (working hours) lines 1014-1020Physical work also shows diminishing returns past 48 h/week, and the author states that where fatigue sets in 'is likely to vary across types of work and across workers' without comparing mental to physical work, so the source cannot say whether mental work degrades faster.

Managers impose crunch to signal effort rather than because it works

Leans partly right

Asks why employers kept long hours when shorter hours gave the same output and offers Hicks's answer that it 'never entered the heads of most employers' that hours could be cut without losing output; consistent with crunch not working, but attributes it to ignorance rather than effort signalling.

· denied 0 ·
Show
  • Why Crunch Mode Doesn’t Work: Six Lessons [2005] – IGDA (igda.org)“Managers decide to crunch because they want to be able to tell their bosses”
  • Leans partly right Pencavel 2014 (working hours) lines 1029-1040Asks why employers kept long hours when shorter hours gave the same output and offers Hicks's answer that it 'never entered the heads of most employers' that hours could be cut without losing output; consistent with crunch not working, but attributes it to ignorance rather than effort signalling.
  • Untestable AI guessMotivational attribution.

Much delivered functionality is rarely or never used, so working through a prioritised backlog wastes effort compared with selecting high-impact items

Leans partly right

The widely cited 64% figure comes from a small Standish sample; feature usage is skewed but the magnitude is unknown.

· denied 0 ·
Show
  • Q&A with Vasco Duarte on the #NoEstimates Book (InfoQ)“many of the items of functionality we end up delivering to our customers are rarely or never used”
  • Leans partly right AI guessThe widely cited 64% figure comes from a small Standish sample; feature usage is skewed but the magnitude is unknown.

Scope growth during a project is mostly value discovered while building, and following the original plan discards it

Leans partly right

Requirements do emerge during development, but scope creep also includes gold-plating and unmanaged change, so treating all of it as value is optimistic.

· denied 0 ·
Show
  • Q&A with Vasco Duarte on the #NoEstimates Book (InfoQ)“we discover value as we deliver what we had originally planned”
  • Leans partly right AI guessRequirements do emerge during development, but scope creep also includes gold-plating and unmanaged change, so treating all of it as value is optimistic.

Estimation techniques were developed for other industries and may not fit software

Leans partly right

Unlike most studied professions where models beat experts, software expert estimates match or beat models because case-specific knowledge matters more and software size-effort models perform worse, so results from other domains transfer imperfectly.

· denied 0 ·
Show
  • Q&A with Vasco Duarte on the #NoEstimates Book (InfoQ)“Let's not forget that estimation is not a technique developed for software projects.”
  • Leans partly right Jørgensen 2004 (expert estimation) lines 430-459Unlike most studied professions where models beat experts, software expert estimates match or beat models because case-specific knowledge matters more and software size-effort models perform worse, so results from other domains transfer imperfectly.
  • Untestable AI guessFraming.

Low-quality code makes delivery times unpredictable, not just slower

Leans right

The maximum Time-in-Development per file was 9x longer in Alert code than Healthy code (large effect, Cohen's d 0.96) and already 2x in Warning code, with much higher variance, which the authors read as lower predictability of task completion; correlational, single tool vendor's customer base.

· denied 0 ·
Show
  • Code Red: the Business Impact of Code Quality (InfoQ)“Adding a feature to healthy code seems to be a predictable process. Not so in unhealthy red code”
  • Leans partly right AI guessTask-time variance in red code is reported in one vendor study; independent replication is lacking.
  • Leans right Tornhill & Borg 2022 (Code Red) lines 384-389The maximum Time-in-Development per file was 9x longer in Alert code than Healthy code (large effect, Cohen's d 0.96) and already 2x in Warning code, with much higher variance, which the authors read as lower predictability of task completion; correlational, single tool vendor's customer base.

Technical debt lowers developer happiness and drives attrition

Leans partly right

Graziotin and others link bad code to frustration and lower productivity; attrition effects are anecdotal.

· denied 0 ·
Show
  • Code Red: the Business Impact of Code Quality (InfoQ)“Unmitigated technical debt with high interest fuel developer attrition.”
  • Probably partly right AI guessGraziotin and others link bad code to frustration and lower productivity; attrition effects are anecdotal.
  • Leans partly right DORA State of DevOps 2019 lines 1677-1681In DORA's model technical debt reduces productivity, productivity improves work recovery, and work recovery reduces burnout, so the link to well-being is indirect through two steps; attrition is not measured.

Prioritising refactoring by hotspots, where change frequency meets low code health, targets the debt with the highest interest

Leans partly right

Change-frequency weighting is a sensible proxy supported by defect-prediction research, but comparative outcome data is limited to vendor case studies.

· denied 0 ·
Show
  • Code Red: the Business Impact of Code Quality (InfoQ)“focus on development hotspots to remediate high-interest debt first”
  • Leans partly right AI guessChange-frequency weighting is a sensible proxy supported by defect-prediction research, but comparative outcome data is limited to vendor case studies.

Code quality is tolerated as waste because it is invisible to non-technical stakeholders

Leans right

The motivation section relays that the business impact of code quality is vague, managers in a 15-organisation study would not fund refactoring because benefits were unclear, there are no code-quality KPIs comparable to financial ones, and only 10% of 1,831 surveyed said their business manager managed TD; all cited from other studies rather than measured here.

· denied 0 ·
Show
  • Code Red: the Business Impact of Code Quality (InfoQ)“code is an abstract concept that isn't accessible to non-technical stakeholders”
  • Leans right Tornhill & Borg 2022 (Code Red) lines 28-40The motivation section relays that the business impact of code quality is vague, managers in a 15-organisation study would not fund refactoring because benefits were unclear, there are no code-quality KPIs comparable to financial ones, and only 10% of 1,831 surveyed said their business manager managed TD; all cited from other studies rather than measured here.
  • Untestable AI guessExplanatory framing.

Splitting services too finely raises inter-service dependencies and coordination so total cost rises again rather than falling

Leans right

Structured Design's inter/intra-module cost curve and reports of shotgun surgery across many services support this; no controlled measurement.

· denied 0 ·
Show
  • Microservices, Where Did It All Go Wrong • Ian Cooper • GOTO 2024 (GOTO Conferences)“people when they focused on making them small quite often cross over this point and keep going down”
  • Probably right AI guessStructured Design's inter/intra-module cost curve and reports of shotgun surgery across many services support this; no controlled measurement.
  • Leans partly right Soldani et al. 2018 (microservices review) lines 703-71117 of 51 sources report much higher network traffic because services interact by remote API calls instead of in-memory calls, and more services mean more remote invocations; this supports rising inter-service cost with finer splits but gives no total-cost curve.
  • Leans right DORA State of DevOps 2019 lines 1091-1092A footnote warns that overly fine-grained services can inhibit delivery performance; stated as authorial guidance citing Fowler, not as a measured finding.

Headlines about big companies abandoning microservices usually describe one team consolidating a few components

Leans right

The Prime Video post concerned one team's service; Amazon overall remained service-based.

· denied 0 ·
Show

Creating services by which team is free rather than by domain seams produces fragmented systems

Leans partly right

Conway's-law reasoning and anecdote; no measured outcome data.

· denied 0 ·
Show

Service boundaries must be repartitioned continually as the business changes, so owning microservices is never finished

Leans partly right

Domain drift is real; whether it demands service repartitioning rather than internal change depends on granularity.

· denied 0 ·
Show

'Micro' should mean replaceable, not few lines of code

Untestable

Definitional.

· denied 0 ·
Show

Estimation is a learnable skill: recording estimates and comparing them to outcomes calibrates future estimates

Leans wrong

Independent studies of the Personal Software Process, which records estimates and analyses deviations from actuals, found no improvement in estimation accuracy, and a feedback-and-lessons-learned programme likewise produced none versus untrained controls.

· denied 0 ·
Show
  • Software Estimation Is Hard. Do It Anyway. - Jacob Kaplan-Moss (jacobian.org)“If you get in the habit of breaking projects down and making timeline estimates, you can review those estimates against reality and recalibrate.”
  • Leans partly right AI guessJorgensen's reviews find feedback and decomposition improve estimates modestly, but overconfidence persists even in experts.
  • Leans wrong Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 2375-2389Independent studies of the Personal Software Process, which records estimates and analyses deviations from actuals, found no improvement in estimation accuracy, and a feedback-and-lessons-learned programme likewise produced none versus untrained controls.
  • Leans partly right Jørgensen 2004 (expert estimation) lines 1092-1103The only software study found outcome feedback (estimate vs actual) did not improve accuracy, consistent with other domains, though it does improve assessment of estimate uncertainty; task-relation feedback is needed for accuracy gains.

Giving accurate timelines builds trust and is required to advance beyond senior engineering roles

Untestable

Career advice.

· denied 0 ·
Show

Avoiding estimates improves planning conversations, but business commitments still sometimes require a time-based estimate

Leans partly right

Reasonable synthesis; practitioner consensus rather than measured.

· denied 0 ·
Show
  • Software Estimation Is Hard. Do It Anyway. - Jacob Kaplan-Moss (jacobian.org)“there are many situations where an estimate is required”
  • Probably partly right AI guessReasonable synthesis; practitioner consensus rather than measured.
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 4313-4321The authors call the NoEstimates suggestion to stop giving time predictions before a project starts 'unrealistic' while endorsing progress extrapolation, consistent with business still needing up-front estimates; effects on planning conversations are not evaluated.

Automated refactoring tools have existed for decades yet legacy code persists, so the obstacle is mindset not tooling

Leans partly right

Tool-usage studies show refactoring tools are underused, which supports the mindset explanation.

· denied 0 ·
Show

Never trust a test you have not seen fail

Leans right

Mutation testing routinely finds tests that cannot fail; seeing the red state is the standard guard.

· denied 0 ·
Show

Refactoring in small behaviour-preserving steps with tests or compiler checks at each step avoids the big-bang breakage trap

Leans right

Core of Fowler's refactoring method; supported by practitioner evidence more than experiments.

· denied 0 ·
Show

In refactoring-oriented development most commits reposition code so that the final feature addition is a trivial change

Leans partly right

Describes a workflow; the ratio is one practitioner's anecdote.

· denied 0 ·
Show

Refactor a problem on its own terms before migrating it to a different paradigm

Untestable

Methodological preference.

· denied 0 ·
Show

Programming productivity has no physical ceiling, so hard work can make anyone a 10x engineer

Leans partly right

Weekly output of munitions workers reached a maximum near 63 h and the marginal product of further hours was negative, so a ceiling on what extra hours can buy exists at least for physical piece work; programming was not studied.

· denied 0 ·
Show
  • Is the 10x Engineer a Myth? (James Peralta)“if you just put in the hard work you can be 10 times better like 10x better than the average engineer”
  • Leans partly right Pencavel 2014 (working hours) lines 620-624Weekly output of munitions workers reached a maximum near 63 h and the marginal product of further hours was negative, so a ceiling on what extra hours can buy exists at least for physical piece work; programming was not studied.
  • Untestable AI guessMotivational.

Continuous delivery does not require microservices; monoliths can be deployed continuously

Leans right

Facebook, Etsy, Shopify and GitHub have all deployed monoliths many times a day.

· denied 0 ·
Show
  • Microservice Premium (martinfowler.com)“there are plenty of organizations that succeed with a cookie-cutter deployment approach: Facebook and Etsy are two well-known examples”
  • Very likely right AI guessFacebook, Etsy, Shopify and GitHub have all deployed monoliths many times a day.
  • Leans right DORA State of DevOps 2019 lines 1071-1079What DORA finds predictive of continuous delivery is the ability to test and deploy independently; microservices are named only as one architecture that is supposed to enable this, and a footnote warns against decomposing new systems into services prematurely.

Pairing all day is unsustainable because sustained joint focus is exhausting

Leans partly right

Self-reported fatigue is consistent across pairing studies; no measured limit.

· denied 0 ·
Show
  • On Pair Programming (martinfowler.com)“In our experience, that is not sustainable. First of all it is just too exhausting.”
  • Probably partly right AI guessSelf-reported fatigue is consistent across pairing studies; no measured limit.
  • Leans right Dybå & Dingsøyr 2008 (agile review) lines 1000-1005A case study found that working 40 hours a week in pairs requires so much concentration that developers became exhausted, and the review's synthesis repeats that several developers regard pairing as exhausting; another project drifted back to solo programming toward its end.

After-the-fact code review is weaker than pairing because reviewers skim, defer to the author and resist rework already invested

Leans partly right

Microsoft studies show reviews catch fewer defects than expected, but head-to-head comparisons with pairing are lacking.

· denied 0 ·
Show
  • On Pair Programming (martinfowler.com)“We disagree that code reviews are a good enough alternative to pairing.”
  • Leans partly right AI guessMicrosoft studies show reviews catch fewer defects than expected, but head-to-head comparisons with pairing are lacking.

Juniors who always pair can lose confidence and miss learning to solve problems alone

Leans partly right

Plausible and reported, though novice studies mostly show pairing helps juniors.

· denied 0 ·
Show
  • On Pair Programming (martinfowler.com)“junior programmers can also experience a loss of confidence in their own abilities when pairing”
  • Leans partly right AI guessPlausible and reported, though novice studies mostly show pairing helps juniors.

Power dynamics such as seniority or gender distort pairing when one person dominates the keyboard or dismisses suggestions

Leans partly right

Qualitative studies document the dynamic; its effect on outcomes is unmeasured.

· denied 0 ·
Show
  • On Pair Programming (martinfowler.com)“One person is dominating the pairing session by hogging the keyboard and not giving room to their pairing partner.”
  • Leans partly right AI guessQualitative studies document the dynamic; its effect on outcomes is unmeasured.

Pairing limits team work in progress, which improves flow

Leans partly right

WIP limits improve flow in Kanban studies; attributing that to pairing is inference.

· denied 0 ·
Show
  • On Pair Programming (martinfowler.com)“pair programming limits the number of things a team can work on in parallel, and therefore increases the overall focus”
  • Leans partly right AI guessWIP limits improve flow in Kanban studies; attributing that to pairing is inference.

Pairing's value cannot be proven scientifically because development output is too hard to measure, so teams must try it themselves

Leans wrong

The review describes research on particular practices like pair programming as at an intermediate or even mature state, and cites an earlier review calling pair programming supported by a well-established research stream; the evidence may be mixed, but the authors treat it as a scientifically studiable question, not an unmeasurable one.

· denied 0 ·
Show
  • On Pair Programming (martinfowler.com)“Staunch opponents of pairing will always find ways to poke holes into the reproducibility”
  • Leans wrong Dybå & Dingsøyr 2008 (agile review) lines 1315-1319The review describes research on particular practices like pair programming as at an intermediate or even mature state, and cites an earlier review calling pair programming supported by a well-established research stream; the evidence may be mixed, but the authors treat it as a scientifically studiable question, not an unmeasurable one.
  • Untestable AI guessEpistemic framing.

Pair programming is an XP practice, not a requirement of agile

Probably right

The review's table of agile methods lists pair programming among XP's twelve practices, while the descriptions of Scrum, Crystal, DSDM, FDD and Lean and the agile manifesto's four values make no mention of it.

· denied 0 ·
Show
  • Pair Programming Misconceptions (martinfowler.com)“The manifesto doesn't mention pair programming and most agile methods don't make it part of their approach.”
  • Almost certainly right AI guessThe Agile Manifesto lists values and principles, not practices.
  • Probably right Dybå & Dingsøyr 2008 (agile review) lines 155-160The review's table of agile methods lists pair programming among XP's twelve practices, while the descriptions of Scrum, Crystal, DSDM, FDD and Lean and the agile manifesto's four values make no mention of it.

Even excellent teams accumulate inadvertent debt because the right design is only learned by building the system

Leans right

Matches design-emergence research and practitioner consensus; not experimentally tested.

· denied 0 ·
Show
  • Technical Debt Quadrant (martinfowler.com)“it can take a year of programming on a project before you understand what the best design approach should have been”
  • Probably right AI guessMatches design-emergence research and practitioner consensus; not experimentally tested.

The debt metaphor helps explain design problems to non-technical stakeholders

Untestable

Communication framing.

· denied 0 ·
Show
  • Technical Debt Quadrant (martinfowler.com)“A particular benefit of the debt metaphor is that it's very handy for communicating to non-technical people.”
  • Untestable AI guessCommunication framing.

In a mob the group coaches a less-skilled driver on the spot, raising everyone's skills

Leans partly right

Case reports from Hunter Industries and others are positive; no controlled studies.

· denied 0 ·
Show
  • Mob Programming Basics – Mob Programming (mobprogramming.org)“If the Driver is not highly skilled, the rest of the team will help by guiding the Driver in how to create the code”
  • Leans partly right AI guessCase reports from Hunter Industries and others are positive; no controlled studies.

A rewrite is viable when the codebase is small, the product is not the main revenue source and there is a compelling business case

Leans partly right

Derived from a handful of personal cases; plausible conditions with no broader data.

· denied 0 ·
Show
  • Revisiting Spolsky's "Things You Should Never Do, Part I" (natashajaffe.substack.com)“If the business case is strong then think critically about the size and complexity of the code as it stands today.”
  • Leans partly right AI guessDerived from a handful of personal cases; plausible conditions with no broader data.

Rewrite duration grows faster than linearly with codebase size and complexity, making estimates for large rewrites unreliable

Leans partly right

Consistent with overrun data showing large projects overrun most, though the exponential form is hand-waved.

· denied 0 ·
Show
  • Revisiting Spolsky's "Things You Should Never Do, Part I" (natashajaffe.substack.com)“accurately estimating the time a rewrite will take is very hard”
  • Leans partly right AI guessConsistent with overrun data showing large projects overrun most, though the exponential form is hand-waved.
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 3219-3231Larger tasks are underestimated more (magnitude bias) in controlled experiments, but the observational link between project size and overrun is partly a statistical artefact and the authors do not know how much it applies to large projects.

Tech debt and distaste for old code alone are not a sufficient reason to rewrite a large successful product

Leans partly right

Consistent with Spolsky and with rewrite failure cases; opinion-based.

· denied 0 ·
Show
  • Revisiting Spolsky's "Things You Should Never Do, Part I" (natashajaffe.substack.com)“If your only reason for completely rewriting your codebase is tech debt and visceral ick, don't do it.”
  • Probably partly right AI guessConsistent with Spolsky and with rewrite failure cases; opinion-based.

No single architecture suits every scale, so architecture should be revisited with each order of magnitude of growth

Untestable

Heuristic.

· denied 0 ·
Show

A single-process design suits long-running compute jobs and predictable traffic better than serverless functions

Leans partly right

Lambda pricing and duration limits make this true for sustained workloads; Cockcroft's advice is widely echoed.

· denied 0 ·
Show

Microservices speed time to market

Leans partly right

Independent deploys can speed large organisations, but monolith-first advocates argue the opposite for small teams; no comparative data.

· denied 0 ·
Show
  • Back to the Monolith: Why Did Amazon Dump Microservices? | Nordic APIs | (Nordic APIs)“Microservices can help you get a product to market much more quickly, for one thing.”
  • Leans partly right AI guessIndependent deploys can speed large organisations, but monolith-first advocates argue the opposite for small teams; no comparative data.
  • Leans partly right DORA State of DevOps 2019 lines 1071-1092Architectures that permit testing and deploying services independently help teams achieve higher delivery performance, but it is the loose coupling that predicts, and the report warns that premature or overly fine-grained decomposition into services can inhibit delivery performance.
  • Leans partly right Soldani et al. 2018 (microservices review) lines 1100-1108Industrial sources credit microservices with per-service CI/CD (15), fast deployment (11) and small services that are quick to develop (14), but the review notes none provide quantitative data and time to market itself is not measured.

Knowing a block will be interrupted deters starting ambitious work, so a meeting costs more than its duration

Leans partly right

Plausible anticipatory effect; self-report only.

· denied 0 ·
Show
  • Maker's Schedule, Manager's Schedule (paulgraham.com)“If I know the afternoon is going to be broken up, I'm slightly less likely to start something ambitious in the morning.”
  • Leans partly right AI guessPlausible anticipatory effect; self-report only.
  • Leans partly right Parnin & Rugaber 2011 (resumption) lines 190-197Programmers needed several minutes before their first edit in 90% of sessions and over 30 minutes in about 30%, so a break costs more than its own duration in resumption time; whether anticipating interruptions deters ambitious work was not measured.
  • Leans partly right Mark et al. 2008 (interruptions) lines 200-208Net of interruption time, interrupted subjects finished an email task faster than uninterrupted ones, so the cost beyond the interruption's duration was not time but significantly higher stress, workload and frustration; deterrence from starting work was not studied.

Clustering meetings at the end of the day preserves uninterrupted maker time

Leans partly right

Follows from interruption cost; no outcome data.

· denied 0 ·
Show
  • Maker's Schedule, Manager's Schedule (paulgraham.com)“Because they come at the end of my day these meetings are never an interruption.”
  • Leans partly right AI guessFollows from interruption cost; no outcome data.

Managers and makers run on different schedules, and conflict arises when hourly manager slots are imposed on makers

Untestable

Framing.

· denied 0 ·
Show

Serverless lets small teams ship without managing infrastructure and often within free tiers

Leans partly right

True for low, bursty traffic; costs and limits bite at sustained load, as the same video's Prime Video case shows.

· denied 0 ·
Show
  • Serverless was a big mistake... says Amazon (Fireship)“I can easily deploy my shitty JavaScript code without ever having to think about infrastructure I rarely even bust out of the free tier”
  • Probably partly right AI guessTrue for low, bursty traffic; costs and limits bite at sustained load, as the same video's Prime Video case shows.

There are no solutions in cloud architecture, only trade-offs

Untestable

Aphorism.

· denied 0 ·
Show

Large functions are classes in disguise; extracting until stuck reveals hidden classes

Leans partly right

Extract Class from shared locals is a standard refactoring; 'every' overstates.

· denied 0 ·
Show

Function-length rules such as fit on one screen came from historical terminal sizes, not evidence

Untestable

Historical framing.

· denied 0 ·
Show

Story points began as renamed ideal days, meant only to decide how much work fits an iteration

Untestable

Historical account from a participant.

· denied 0 ·
Show
  • Story Points Revisited (ronjeffries.com)“we really only used the points to decide how much work to take into an iteration anyway”
  • Untestable AI guessHistorical account from a participant.

Tracking estimates against actuals shifts attention from delivering value to improving estimates

Leans partly right

A company that paid bonuses for estimate accuracy saw accuracy improve while productivity fell because managers padded estimates and absorbed the buffer; accountability raised accuracy mainly by adjusting work content and quality to fit the estimate.

· denied 0 ·
Show
  • Story Points Revisited (ronjeffries.com)“I think tracking how actuals compare with estimates is at best wasteful”
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 1552-1566A company that paid bonuses for estimate accuracy saw accuracy improve while productivity fell because managers padded estimates and absorbed the buffer; accountability raised accuracy mainly by adjusting work content and quality to fit the estimate.
  • Leans partly right AI guessThe opposite of Kaplan-Moss's calibration advice; no outcome data either way.
  • Leans partly right Jørgensen 2004 (expert estimation) lines 510-526Review finds accuracy evaluation improves software estimation accuracy but partly via self-fulfilling prophecy, and that strong accountability pressure or reward/punishment should be avoided because evaluation pressure degrades difficult judgements.

Slicing stories small enough to finish in about a day gives a smooth flow of value and removes most need for estimates

Leans partly right

Small batches improve flow in lean research; whether slicing fully replaces estimation is unproven.

· denied 0 ·
Show
  • Story Points Revisited (ronjeffries.com)“slice stories down until they just need a single acceptance test”
  • Leans partly right AI guessSmall batches improve flow in lean research; whether slicing fully replaces estimation is unproven.
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 669-676Small software tasks were predicted without bias in the reviewed data while larger ones overran ~20%, which supports slicing for predictability; flow and removing the need for estimates are not examined.

Frequent small releases deliver more value than big-bang releases whose dates keep receding

Leans right

DORA and lean batch-size evidence favour small frequent releases.

· denied 0 ·
Show
  • Story Points Revisited (ronjeffries.com)“we do best to provide small amounts of value frequently, not wait for Big Bang releases that seem often to recede indefinitely into the future”
  • Probably right AI guessDORA and lean batch-size evidence favour small frequent releases.
  • Leans partly right DORA State of DevOps 2019 lines 80-86Deployment frequency is one of the four metrics whose high-performer cluster is twice as likely to meet organisational goals, which supports more frequent releases delivering more value; release size and receding dates are not measured as such.
  • Leans partly right Dybå & Dingsøyr 2008 (agile review) lines 1081-1086In a two-project comparison the agile team that delivered in-progress software more often demonstrated business value sooner and saw a sharp rise in customer satisfaction, and a survey found agile companies prefer more releases; small, uncontrolled studies.

Monoliths without enforced boundaries become so coupled that small changes have unexpected effects and newcomers need enormous context

Leans right

Coupling-defect and comprehension research supports it; Shopify's developer survey is a single case.

· denied 0 ·
Show
  • Deconstructing the Monolith - Shopify (Shopify)“Making a seemingly innocuous change could trigger a cascade of unrelated test failures.”
  • Very likely right AI guessCoupling-defect and comprehension research supports it; Shopify's developer survey is a single case.

Organising code by business domain rather than technical layer makes code and its owners easier to find

Leans partly right

Package-by-feature is widely recommended; the evidence is practitioner experience.

· denied 0 ·
Show
  • Deconstructing the Monolith - Shopify (Shopify)“re-organize it by real-world concepts (like orders, shipping, inventory, and billing), in an attempt to make it easier to locate code”
  • Leans partly right AI guessPackage-by-feature is widely recommended; the evidence is practitioner experience.

Adding public interfaces around modules without untangling the dependency graph just adds indirection and makes code harder to change

Leans partly right

Consistent with coupling research and Parnas-style modularity theory, but the evidence here is one organization's experience report.

· denied 0 ·
Show
  • Under Deconstruction: The State of Shopify’s Monolith - Shopify (Shopify)“the public interface turned out to just be an added layer of indirection in the existing control flows”
  • Leans partly right AI guessConsistent with coupling research and Parnas-style modularity theory, but the evidence here is one organization's experience report.

Modules can only be reasoned about or tested in isolation when the dependency graph between them is sparse and acyclic

Leans right

Follows from how dependencies propagate change; cyclic dependency metrics correlate with defect proneness in several empirical studies.

· denied 0 ·
Show

Large architecture changes to an actively developed codebase succeed only by changing average developer behaviour, not by a central team's effort

Leans partly right

Plausible and matches other large-refactor reports, but it is an organizational observation without controlled evidence.

· denied 0 ·
Show
  • Under Deconstruction: The State of Shopify’s Monolith - Shopify (Shopify)“A single centralized team can’t make change happen by working against the momentum of hundreds of developers adding features.”
  • Leans partly right AI guessPlausible and matches other large-refactor reports, but it is an organizational observation without controlled evidence.
  • Leans partly right DORA State of DevOps 2019 lines 1876-1884For DevOps transformations rather than architecture changes, DORA finds low performers favour Centers of Excellence and training centres that centralise expertise and become bottlenecks, while high performers spread practice through communities of practice and grassroots efforts.

Imposing uniform coding conventions adds learning and compliance friction without making hard design problems easier

Leans partly right

Rules have a cost, but consistency also has measured comprehension benefits, so the net effect depends on the rule.

· denied 0 ·
Show
  • Under Deconstruction: The State of Shopify’s Monolith - Shopify (Shopify)“Pushing for consistency added rules, which always add some friction, because they have to be learned, remembered, and followed.”
  • Leans partly right AI guessRules have a cost, but consistency also has measured comprehension benefits, so the net effect depends on the rule.

Static dependency analysis gives faster and more actionable boundary enforcement than tracing runtime calls

Leans right

Static reference analysis is cheap and deterministic; dynamic tracing depends on test coverage and is noisy, though it catches reflective calls static analysis misses.

· denied 0 ·
Show
  • Under Deconstruction: The State of Shopify’s Monolith - Shopify (Shopify)“There’s less ambiguity in static references, and because they’re always explicitly introduced by developers, highlighting them is more actionable.”
  • Probably right AI guessStatic reference analysis is cheap and deterministic; dynamic tracing depends on test coverage and is noisy, though it catches reflective calls static analysis misses.

Large-scale architecture refactors stay in an incomplete intermediate state far longer than planned

Leans partly right

Widely reported across migration case studies, but it is experience-based rather than measured.

· denied 0 ·
Show

Explicit module ownership makes whole-codebase chores like framework upgrades easier to distribute

Leans partly right

Ownership clarity is linked to lower defect rates in Microsoft's organizational-metrics studies, but the upgrade claim is a single report.

· denied 0 ·
Show
  • Under Deconstruction: The State of Shopify’s Monolith - Shopify (Shopify)“with each component explicitly owned by a team, whole-codebase chores like Rails upgrades are easily distributed and collaboratively solved”
  • Leans partly right AI guessOwnership clarity is linked to lower defect rates in Microsoft's organizational-metrics studies, but the upgrade claim is a single report.

A small team can maintain a large product across many platforms from a single integrated codebase

Leans partly right

Basecamp is a real existence proof, but a single company's experience does not show other approaches would have failed.

· denied 0 ·
Show
  • The Majestic Monolith (Signal v. Noise)“the only possible way to do so with a small team of ~12 programmers is do explicitly choose and commit to The Majestic Monolith”
  • Leans partly right AI guessBasecamp is a real existence proof, but a single company's experience does not show other approaches would have failed.

Many small services make it easy for knowledge to silo so only one person understands each part

Leans partly right

Service ownership does concentrate knowledge by design; whether that is worse than monolith hotspots has not been measured.

· denied 0 ·
Show
  • The Majestic Monolith (Signal v. Noise)“It’s much easier to silo knowledge and responsibilities with a proliferation of smaller systems.”
  • Leans partly right AI guessService ownership does concentrate knowledge by design; whether that is worse than monolith hotspots has not been measured.

Extracting one slice with divergent performance needs as a separate service captures most of the scaling benefit without distributing the whole system

Leans partly right

Targeted extraction is a standard migration pattern and matches Shopify's and others' reports, but 'most of the benefit' is not quantified.

· denied 0 ·
Show
  • The Majestic Monolith can become The Citadel (Signal v. Noise)“The Outposts are there to allow the Majestic Monolith to offload a particular slice of divergent behavior”
  • Leans partly right AI guessTargeted extraction is a standard migration pattern and matches Shopify's and others' reports, but 'most of the benefit' is not quantified.

Many teams that adopted microservices are retreating to monoliths

Unknown

There are prominent consolidation stories (Amazon Prime Video, Segment) but no survey establishes a net trend.

· denied 0 ·
Show
  • The Majestic Monolith can become The Citadel (Signal v. Noise)“As more and more people come to realize that the chase for microservices ended in a blind alley, the pendulum is going to swing back.”
  • Unknown AI guessThere are prominent consolidation stories (Amazon Prime Video, Segment) but no survey establishes a net trend.

Slowing down to investigate a problem before coding reduces later cleanup

Leans partly right

Upfront understanding reduces rework in design studies, though the optimal amount varies and this is an archetype, not data.

· denied 0 ·
Show
  • The 10x Programmer Myth (Simple Thread)“Once they reach a solution, you can be sure that people aren’t going to have to come behind them and clean things up.”
  • Leans partly right AI guessUpfront understanding reduces rework in design studies, though the optimal amount varies and this is an archetype, not data.

Deep expertise in a narrow domain can make an engineer vastly more productive there but less useful elsewhere

Leans partly right

Expertise is domain-specific per expertise research, though top engineers often transfer reasonably well.

· denied 0 ·
Show
  • The 10x Programmer Myth (Simple Thread)“If John Carmack was dropped into the average web development project, he wouldn’t be very happy or effective”
  • Leans partly right AI guessExpertise is domain-specific per expertise research, though top engineers often transfer reasonably well.
  • Leans partly right Bird et al. 2011 (code ownership) lines 502-505Changes from developers with little prior activity on a Windows component predict failures, and the same developers are usually major contributors to a dependent component, i.e. expertise is component-specific; the outcome measured is defects, not productivity.

Reviewer effectiveness falls off after about an hour of continuous review

Leans partly right

Vigilance decrement is well established in general, but direct evidence for code review durations is thin and vendor-sourced.

· denied 0 ·
Show
  • Best Practices for Code Review (smartbear.com)“performance starts dropping off after about 60 minutes”
  • Leans partly right AI guessVigilance decrement is well established in general, but direct evidence for code review durations is thin and vendor-sourced.

Checklists catch omission defects that unstructured review tends to miss

Leans partly right

Checklist-based reading experiments show modest gains over ad hoc reading; 'most effective' is overstated.

· denied 0 ·
Show
  • Best Practices for Code Review (smartbear.com)“Checklists are the most effective way to eliminate frequently made errors and to combat the challenges of omission finding.”
  • Leans partly right AI guessChecklist-based reading experiments show modest gains over ad hoc reading; 'most effective' is overstated.

Using code review metrics for performance evaluation makes developers hostile and game the process

Leans partly right

Goodhart effects are well documented for productivity metrics generally; direct evidence for review metrics is anecdotal.

· denied 0 ·
Show
  • Best Practices for Code Review (smartbear.com)“If personal metrics become a basis for compensation or promotion, developers will become hostile toward the process”
  • Leans partly right AI guessGoodhart effects are well documented for productivity metrics generally; direct evidence for review metrics is anecdotal.
  • Leans partly right DORA State of DevOps 2019 lines 1427-1435The report invokes Goodhart's law for productivity metrics like lines of code or story points, noting teams refuse to help others when it would hurt their velocity; the gaming mechanism applies, but code review metrics are not studied.

Knowing code will be reviewed makes developers write cleaner code even on unreviewed changes

Leans partly right

Accountability effects are plausible and reported by practitioners, but the spot-check figures come from one vendor study.

· denied 0 ·
Show
  • Best Practices for Code Review (smartbear.com)“The knowledge that others will be examining their work naturally drives people to produce a better product.”
  • Leans partly right AI guessAccountability effects are plausible and reported by practitioners, but the spot-check figures come from one vendor study.
  • Leans partly right Bacchelli & Bird 2013 (Microsoft code review) lines 277-279A manager describes the 'discipline of explaining your code to your peers' as driving a higher standard of coding; an opinion from a survey, and the effect on unreviewed changes is not examined.

Lightweight tool-assisted review finds as many defects as formal inspection in a fraction of the time

Leans partly right

Vendor data; independent studies (Bacchelli and Bird) find modern lightweight review catches fewer defects than expected, with most value in knowledge transfer.

· denied 0 ·
Show
  • Best Practices for Code Review (smartbear.com)“lightweight code review takes less than 20% the time of formal reviews and finds just as many bugs!”
  • Leans partly right AI guessVendor data; independent studies (Bacchelli and Bird) find modern lightweight review catches fewer defects than expected, with most value in knowledge transfer.

Desirable test properties trade off; making tests more predictive of production makes them slower

Leans right

Integration and end-to-end tests are consistently slower than unit tests while catching more realistic failures; the test-pyramid literature rests on this.

· denied 0 ·
Show
  • TestDesiderata (TestDesiderata)“Making tests more predictive of production behavior makes them slower.”
  • Probably right AI guessIntegration and end-to-end tests are consistently slower than unit tests while catching more realistic failures; the test-pyramid literature rests on this.

Tests that are deterministic and independent of run order are more valuable because flaky results erode trust

Leans right

Flaky-test research at Google and in academia shows order dependence and nondeterminism waste developer time and cause ignored failures.

· denied 0 ·
Show
  • TestDesiderata (TestDesiderata)“Isolated — tests should return the same results regardless of the order in which they are run.”
  • Very likely right AI guessFlaky-test research at Google and in academia shows order dependence and nondeterminism waste developer time and cause ignored failures.

A passing test suite should be sufficient evidence that code is ready for production

Leans partly right

An aspiration; in practice tests cannot cover all production conditions, which is why canaries and monitoring exist.

· denied 0 ·
Show
  • TestDesiderata (TestDesiderata)“Predictive — if the tests all pass, then the code under test should be suitable for production.”
  • Leans partly right AI guessAn aspiration; in practice tests cannot cover all production conditions, which is why canaries and monitoring exist.
  • Leans right DORA State of DevOps 2019 lines 1012-1015DORA defines effective automated testing as giving developers confidence that a passing suite means the code can be successfully deployed, and finds such testing predicts CI and CD; this is the report's framing rather than a test of whether suites actually suffice.

Static and dynamic typing differ in when types are enforced, not in how many types a language has

Leans right

Standard type-theory framing; the 'unityped' view is a legitimate static lens but says nothing about dynamic type counts.

· denied 0 ·
Show
  • Laurence Tratt: Another Non-Argument in Type Systems (tratt.net)“The fundamental difference between statically and dynamically typed languages isn’t over how many types they have: it’s about when those types are utilised.”
  • Very likely right AI guessStandard type-theory framing; the 'unityped' view is a legitimate static lens but says nothing about dynamic type counts.
  • Leans right Gao, Bird & Barr 2017 (types vs JS bugs) lines 38-42Background definition only: static type systems check types at compile time while dynamic ones distinguish types at run time; the paper's gradual-typing method relies on JavaScript values having the same types either way.

Encoding a dynamically typed program in a static type system bloats it with explicit checks the runtime would do implicitly

Leans right

True for naive sum-type encodings; gradual and inferred systems reduce but do not eliminate the annotation burden.

· denied 0 ·
Show
  • Laurence Tratt: Another Non-Argument in Type Systems (tratt.net)“a static type system forces us to explicitly express all the checks that a dynamically typed run-time implicitly performs for us”
  • Probably right AI guessTrue for naive sum-type encodings; gradual and inferred systems reduce but do not eliminate the annotation burden.

Static analysis is unsound and incomplete, so it can augment but not replace a type system

Leans right

Industrial static analyzers deliberately trade soundness for coverage; this is their documented design position.

· denied 0 ·
Show
  • Laurence Tratt: Another Non-Argument in Type Systems (tratt.net)“They therefore can not replace static type systems, but can augment them.”
  • Probably right AI guessIndustrial static analyzers deliberately trade soundness for coverage; this is their documented design position.

Unit tests catch most type errors and can give guarantees beyond what static typing provides

Leans partly right

Tests check behaviour that types cannot express, but they are not exhaustive, so types and tests are complementary rather than one subsuming the other.

· denied 0 ·
Show
  • Laurence Tratt: Dynamically Typed Languages (tratt.net)“unit testing allows developers to make guarantees of their programs that are considerably in excess of anything that static typing can provide”
  • Leans partly right AI guessTests check behaviour that types cannot express, but they are not exhaustive, so types and tests are complementary rather than one subsuming the other.
  • Leans partly right Hanenberg et al. 2014 (static types) lines 1365-1371The provided tests did expose every injected type error in Groovy as a run-time failure, so tests caught them, but fixing from that failure took 2-5x longer than from the compiler message because the symptom appeared far from the cause and required much more navigation.
  • Leans partly right Gao, Bird & Barr 2017 (types vs JS bugs) lines 24-31The 400 bugs studied had already survived each project's testing and review, yet 15% were still detectable by adding type annotations, so tests and review let a non-trivial residue of type errors through; the study cannot say what fraction of all type errors tests caught earlier.

Mainstream static type systems cannot express many useful constraints, such as a divisor being non-zero

Leans right

Refinement and dependent types can express such constraints but remain niche; mainstream systems cannot.

· denied 0 ·
Show
  • Laurence Tratt: Dynamically Typed Languages (tratt.net)“This limitation is shared by virtually all statically typed languages.”
  • Probably right AI guessRefinement and dependent types can express such constraints but remain niche; mainstream systems cannot.
  • Leans right Gao, Bird & Barr 2017 (types vs JS bugs) lines 428-441StringError (wrong content of a string such as a bad URL or SQL) is the second largest class of bugs neither Flow nor TypeScript could detect, because the string type is opaque to most static type systems and refining it remains an open problem; a value-level constraint example matching the claim's mechanism.
  • Leans right Hanenberg et al. 2014 (static types) lines 657-678The semantic-error tasks are concrete cases Java's type system cannot express: a wrong job class with a compatible interface and a missing method call both type-check, and static typing gave no measurable help in fixing them.

Small increases in type system expressiveness cause disproportionately large increases in complexity

Leans partly right

Borne out by the history of Scala, Java generics and TypeScript's type-level programming, though it is a qualitative observation.

· denied 0 ·
Show
  • Laurence Tratt: Dynamically Typed Languages (tratt.net)“relatively small increases in the expressivity of static type systems cause a disproportionately large increase in complexity”
  • Leans partly right AI guessBorne out by the history of Scala, Java generics and TypeScript's type-level programming, though it is a qualitative observation.

Type systems themselves contain soundness bugs that are hard to fix without breaking existing programs

Leans right

Eiffel covariance, Java generics with arrays, and unsoundness found in Scala and TypeScript are documented cases.

· denied 0 ·
Show
  • Laurence Tratt: Dynamically Typed Languages (tratt.net)“the vast majority of static type systems are not proved correct; some are sufficiently complex that a full proof of correctness is impractical or impossible”
  • Very likely right AI guessEiffel covariance, Java generics with arrays, and unsoundness found in Scala and TypeScript are documented cases.

Automatic memory management saves a large share of programmer time and removes a class of bugs

Leans right

Memory-safety bugs are the majority of serious vulnerabilities in C and C++ codebases per Microsoft and Google data.

· denied 0 ·
Show
  • Laurence Tratt: Dynamically Typed Languages (tratt.net)“Manual memory management – when the programmer must manually allocate and free memory – wastes programmer resources”
  • Very likely right AI guessMemory-safety bugs are the majority of serious vulnerabilities in C and C++ codebases per Microsoft and Google data.
  • Leans partly right Ray et al. 2014 (languages on GitHub) lines 607-613Memory errors are 5.44% of bug-fix commits and are concentrated in unmanaged languages (C, C++, Objective-C) with statistical significance, but garbage-collected Java still has above-average memory errors (29% of them leaks), and programmer time is not measured; the reproduction could not repeat this bug-category analysis.

Short-lived feature branches with pull requests preserve the benefits of trunk-based development as long as they merge within a day or so

Leans partly right

Branch lifetime, not branch existence, drives integration pain; this is the consensus position in continuous delivery literature.

· denied 0 ·
Show
  • Trunk Based Development (trunkbaseddevelopment.com)“short-lived feature branches are used for code-review and build checking (CI), but not artifact creation or publication”
  • Probably partly right AI guessBranch lifetime, not branch existence, drives integration pain; this is the consensus position in continuous delivery literature.
  • Leans right DORA State of DevOps 2019 lines 1023-1024DORA characterises effective trunk-based development as fewer than three active branches and branches or forks living less than a day before merging to master, so short-lived branches merged within a day count as trunk-based in its predictive model.

Teams on a shared trunk can scale headcount up or down without losing throughput or quality

Leans partly right

Google's monorepo shows it is possible with heavy tooling investment; Brooks's-law effects do not vanish because of a branching model.

· denied 0 ·
Show
  • Trunk Based Development (trunkbaseddevelopment.com)“Development teams can casually flex up or down in size (in the trunk) without affecting throughput or quality.”
  • Leans partly right AI guessGoogle's monorepo shows it is possible with heavy tooling investment; Brooks's-law effects do not vanish because of a branching model.

Beyond a couple of developers a build server is needed to catch commits that break the trunk

Leans right

CI servers are near-universal practice; the threshold is a rule of thumb.

· denied 0 ·
Show
  • Trunk Based Development (trunkbaseddevelopment.com)“you are going to need to hook up a build server to verify that their commits have not broken the build”
  • Probably right AI guessCI servers are near-universal practice; the threshold is a rule of thumb.

Tools that assign a monetary figure to technical debt produce made-up numbers

Leans partly right

SQALE-style remediation costs rest on arbitrary per-issue estimates with little validation; some correlate loosely with maintenance effort.

· denied 0 ·
Show
  • Technical Neglect, Kevlin Henney (Codecamp Romania)“tools that will look over your code base and say here is how much technical debt you have”
  • Probably partly right AI guessSQALE-style remediation costs rest on arbitrary per-issue estimates with little validation; some correlate loosely with maintenance effort.
  • Leans partly right Tornhill & Borg 2022 (Code Red) lines 164-172Argues that existing TD quantification methods (Maintainability Index, SIG TD, SQALE) price remediation work while the real cost of TD is the extra development time (interest), so such figures measure the wrong thing; it does not call them made up and the paper itself tries to put numbers on TD.

Organizations often scale headcount to cope with the mess created by their own neglect rather than to add value

Unknown

Plausible but no data links hiring growth to failure demand.

· denied 0 ·
Show
  • Technical Neglect, Kevlin Henney (Codecamp Romania)“most organizations when they scale they scale for the wrong reasons they scale to manage failure”
  • Unknown AI guessPlausible but no data links hiring growth to failure demand.

Unmanaged technical debt undermines security because code and dependencies nobody understands cannot be reasoned about

Leans partly right

Dependency unawareness is a documented supply-chain risk; the link to general debt is argued rather than measured.

· denied 0 ·
Show
  • Technical Neglect, Kevlin Henney (Codecamp Romania)“if you don't know your dependencies you can't make claims about security”
  • Leans partly right AI guessDependency unawareness is a documented supply-chain risk; the link to general debt is argued rather than measured.

Focusing on one change inevitably leaves side-effect mess that must be cleaned up afterwards

Leans partly right

Lehman's increasing-complexity law; empirical decay studies support it, though the inevitability is a strong form.

· denied 0 ·
Show
  • Technical Neglect, Kevlin Henney (Codecamp Romania)“there is inevitably going to be some other consequence that you will have to address”
  • Probably partly right AI guessLehman's increasing-complexity law; empirical decay studies support it, though the inevitability is a strong form.

Code does not decay on its own; degradation comes from the changes made to it

Leans partly right

True of the code text; in practice environments and dependencies drift, so untouched code does stop working.

· denied 0 ·
Show
  • Technical Neglect, Kevlin Henney (Codecamp Romania)“if you leave a piece of code and don't touch it for 10 years there is no intrinsic rotting or decaying”
  • Leans partly right AI guessTrue of the code text; in practice environments and dependencies drift, so untouched code does stop working.

Capping pull request size makes developers chain dependent branches instead of working in smaller steps

Leans partly right

Stacked PRs are a common response to size limits; whether that is worse than large PRs is unmeasured.

· denied 0 ·
Show
  • "Pair Programming Fixed Our Pull Request Bottlenecks" (Modern Software Engineering)“when they were finished with one full request then they just started a new branch based on that full request”
  • Leans partly right AI guessStacked PRs are a common response to size limits; whether that is worse than large PRs is unmeasured.

Working together builds psychological safety better than anything else

Leans partly right

Collaboration correlates with safety, but the superlative is attributed to unnamed research.

· denied 0 ·
Show
  • "Pair Programming Fixed Our Pull Request Bottlenecks" (Modern Software Engineering)“nothing builds community in the team with psychological safety and all that as actually working together”
  • Leans partly right AI guessCollaboration correlates with safety, but the superlative is attributed to unnamed research.

Pairing makes waste like slow builds visible and fixed because two people waiting will not tolerate what one accepts

Leans partly right

Plausible social mechanism reported by one team; no independent evidence.

· denied 0 ·
Show
  • "Pair Programming Fixed Our Pull Request Bottlenecks" (Modern Software Engineering)“when you're two people sitting on waiting this team, the first time maybe it's drinking a little coffee and it's okay”
  • Leans partly right AI guessPlausible social mechanism reported by one team; no independent evidence.

Per-change pull request gates break down under continuous delivery with many deployments a day

Leans wrong

More than 25,000 Google developers put about 20,000 changes a day through mandatory per-change review into one trunk, with median latency under 4 hours and developers confirming the process works well at scale; one highly tuned company, not a GitHub pull-request setup.

· denied 0 ·
Show
  • "Pair Programming Fixed Our Pull Request Bottlenecks" (Modern Software Engineering)“If all of these four are to create pull requests all the time for all of the small changes, the team will break down immediately”
  • Leans partly right AI guessGoogle and others sustain high deploy rates with change-based review; the claim holds only when review latency is high.
  • Leans wrong Sadowski et al. 2018 (Google code review) lines 31-34More than 25,000 Google developers put about 20,000 changes a day through mandatory per-change review into one trunk, with median latency under 4 hours and developers confirming the process works well at scale; one highly tuned company, not a GitHub pull-request setup.
  • Leans partly right DORA State of DevOps 2019 lines 1297-1299DORA says approving each individual change by an external board is impossible in the continuous paradigm, but it recommends shifting to per-change peer review by a teammate during development, so the breakdown applies to external gates, not to peer review itself.

Software complexity is whatever makes a system hard to understand and modify, and is judged by its readers rather than its writers

Leans partly right

Understandability proxies varied more between developers reading the same snippet than between snippets read by the same developer, and none of 121 code metrics captured it, supporting that difficulty is reader-dependent; the claim's definition of complexity itself is not tested.

· denied 0 ·
Show
  • Review: A Philosophy of Software Design by John Ousterhout (Yevgeniy Brikman)“Complexity is mostly determined by the readers of the code, not the writers. If other developers think your code is complex, then it is.”
  • Leans partly right Scalabrino et al. 2019 (understandability) lines 852-854Understandability proxies varied more between developers reading the same snippet than between snippets read by the same developer, and none of 121 code metrics captured it, supporting that difficulty is reader-dependent; the claim's definition of complexity itself is not tested.
  • Untestable AI guessA definition.

Defining errors out of existence at the interface removes whole classes of error handling

Leans partly right

Works for idempotent operations like unset; many errors reflect real external failures that cannot be defined away.

· denied 0 ·
Show
  • Review: A Philosophy of Software Design by John Ousterhout (Yevgeniy Brikman)“By changing the definition of the interface, you eliminate an entire set of possible errors, reducing complexity for everyone.”
  • Probably partly right AI guessWorks for idempotent operations like unset; many errors reflect real external failures that cannot be defined away.

Consistency across a codebase is worth more than any individual better idea that would break it

Leans partly right

Consistency aids comprehension in code-reading studies, but 'almost always' ignores cases where a convention is actively harmful.

· denied 0 ·
Show
  • Review: A Philosophy of Software Design by John Ousterhout (Yevgeniy Brikman)“the value of consistency over inconsistency is almost always greater than the value of one approach over another”
  • Leans partly right AI guessConsistency aids comprehension in code-reading studies, but 'almost always' ignores cases where a convention is actively harmful.

Productivity being hard to measure does not prevent sound judgments about large differences between people

Untestable

Epistemic framing rather than a testable claim.

· denied 0 ·
Show
  • The 10x developer is NOT a myth (Yevgeniy Brikman)“Just because something is hard to measure doesn’t mean we can’t reason about it.”
  • Untestable AI guessEpistemic framing rather than a testable claim.

Relative-size estimation is more accurate than time estimates for complex or uncertain work

Leans wrong

Few studies exist; relative estimation improved accuracy in some contexts and worsened it in others, and the authors conclude relative predictions are generally not more accurate than absolute ones and bias estimates when tasks differ much in size.

· denied 0 ·
Show
  • Why Story Points Are a Complete Waste of Time (Lead Prompt Podcast)“This is more accurate for complex or uncertain work and avoids the pitfalls of timebased estimates which can quickly become inaccurate.”
  • Leans wrong Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 4210-4227Few studies exist; relative estimation improved accuracy in some contexts and worsened it in others, and the authors conclude relative predictions are generally not more accurate than absolute ones and bias estimates when tasks differ much in size.
  • Leans partly right AI guessComparison-based estimation has some support, but experiments do not show story points beating well-calibrated hour estimates.

Group estimation sessions surface hidden complexity and build shared understanding of the work

Leans right

Groups of software professionals produced higher and more realistic estimates than their prior individual ones, qualitatively because they identified more activities, and planning poker gave a shared understanding of the work and risks; student groups, by contrast, became more optimistic.

· denied 0 ·
Show
  • Why Story Points Are a Complete Waste of Time (Lead Prompt Podcast)“This promotes a shared understanding of the work and helps uncover hidden complexities and fosters team alignment.”
  • Leans partly right AI guessMolokken-Ostvold found group estimates less optimistic than individual ones; the shared-understanding benefit is widely reported.
  • Leans right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 4566-4578Groups of software professionals produced higher and more realistic estimates than their prior individual ones, qualitatively because they identified more activities, and planning poker gave a shared understanding of the work and risks; student groups, by contrast, became more optimistic.
  • Leans partly right Jørgensen 2004 (expert estimation) lines 954-966Group discussion of software estimates beat simple averaging because it produced new knowledge about role interactions, but the review rates the evidence for group combination as not strong since discussion can also push estimates toward risk or conservatism.

Velocity from completed points gives reliable forecasts of future throughput

Leans partly right

Extrapolating from measured early productivity is called 'a simple time prediction model based on highly local data' that few models beat, but reliability is not quantified and relative (point-based) estimation is elsewhere found no more accurate than absolute estimation.

· denied 0 ·
Show
  • Why Story Points Are a Complete Waste of Time (Lead Prompt Podcast)“This velocity can then be used to make more reliable forecasts about future work”
  • Leans partly right AI guessVelocity forecasts work when scope and team are stable; point inflation and scope churn routinely break them.
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 4309-4321Extrapolating from measured early productivity is called 'a simple time prediction model based on highly local data' that few models beat, but reliability is not quantified and relative (point-based) estimation is elsewhere found no more accurate than absolute estimation.

Time spent estimating is wasted and better spent building

Leans wrong

The review's authors reject the NoEstimates position that predictions are a waste as unrealistic, noting that extrapolating progress is itself a time prediction and that judgement-based predictions are on average fairly accurate (20-30% error).

· denied 0 ·
Show
  • Why Story Points Are a Complete Waste of Time (Lead Prompt Podcast)“I believe all estimates are a waste of valuable time that could be better spent actually building something.”
  • Leans wrong Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 4313-4321The review's authors reject the NoEstimates position that predictions are a waste as unrealistic, noting that extrapolating progress is itself a time prediction and that judgement-based predictions are on average fairly accurate (20-30% error).
  • Leans partly right AI guessEstimation has coordination and prioritization value; NoEstimates works in some contexts but not where commitments are needed.

Abstract units shield teams from fixed-deadline pressure and reduce estimate padding

Leans partly right

Padding under pressure is documented, but stakeholders convert points to dates anyway, as the same source notes.

· denied 0 ·
Show
  • Why Story Points Are a Complete Waste of Time (Lead Prompt Podcast)“story points help to shield the team from the emotional pressure and rigidness of fixed timebased commitments”
  • Leans partly right AI guessPadding under pressure is documented, but stakeholders convert points to dates anyway, as the same source notes.
  • Leans partly right Halkjelsvik & Jørgensen 2018 (Time Predictions) lines 4812-4823Fibonacci and T-shirt scales speed estimation but gave no accuracy benefit in published and several unpublished experiments and introduce a bias toward the scale's middle value; shielding from deadline pressure is not tested.

Score: −1 mostly wrong, 0 mixed, 1 mostly right, 2 right, from the verdicts on the claims each source makes. Novelty adds up, for each claim a source gets right or correctly refutes, the verdict's confidence divided by how many sources take the same stance; 1 is about one unique, well-supported point.

ScoreSourceNoveltyVerdict
+2
What We Know We Don't Know
Hillel Wayne
Show claims
  • Simple tests of error-handling paths could prevent most catastrophic failures in distributed systems

    Leans right

    “Simple Testing Can Prevent Most Critical Failures”

    only this source
  • Lines of code predict defects about as well as any complexity metric

    Leans right

    “Beyond Lines of Code: Do we Need More Complexity Metrics?”

    only this source
  • Organisational structure metrics predict defect-prone components better than code metrics

    Probably right

    “The Influence of Organizational Structure On Software Quality: An Empirical Case Study”

    only this source
  • Large-scale repository studies claiming some languages produce fewer bugs did not survive replication.

    Very likely right

    “A Large Scale Study of Programming Languages and Code Quality in Github (original faulty study)”

    1 of 3 sources
  • Test-driven development produces no better quality or productivity than other disciplined testing approaches.

    Probably right

    “Analyzing the Effects of Test Driven Development in GitHub (negative results)”

    1 of 3 sources
  • The most damaging software faults are design flaws rather than coding slips

    Leans partly right

    “Worst bugs are design bugs”

    only this source
  • Code review catches most of the defects in reviewed code.

    Leans partly right

    “there's more evidence that code review reduces bugs, and the evidence shows a bigger effect”

    1 of 2 sources
  • Pair programming shows little measurable effect on defects or productivity in controlled studies.

    Leans partly right

    “Pairing is nice, but it's not "continous code review."”

    1 of 2 sources
  • Abbreviated identifiers are no harder to debug than full-word identifiers.

    Leans partly right

    “Fixing Faults in C and Java Source Code: Abbreviated vs. Full-Word Identifier Names (preprint)”

    1 of 2 sources
  • Decomposing code into very small methods can go too far, producing shallow interfaces and entangled methods that are harder to read than one longer method

    Leans partly right

    “Small Functions Have Problems”

    1 of 2 sources
  • Many widely repeated software engineering facts trace back to sources that are missing, measure something else, or are methodologically flawed

    Leans partly right

    “There are many things in software we believe are true but very little we know.”

    1 of 3 sources
  • Sustained crunch lowers productivity and employee happiness

    Leans right

    “Impact of a Night of Sleep Deprivation on Novice Developers Performance”

    1 of 4 sources
3.00new and sound
+2
cmuratori-discussion/cleancodeqa.md at main · unclebob/cmuratori-discussion
GitHub
Show claims
  • Choosing the right algorithm improves efficiency by many orders of magnitude while cycle-level tuning gives about one

    Leans right

    “Cycle-lean code can increase efficiency by an order of magnitude; but the right choice of algorithm can increase efficiency by many orders of magnitude.”

    only this source
  • Clean Code teaching gives performance almost no attention, so its audience learns to ignore it

    Leans right

    “not a single one of the things you mentioned here are discussed in the nine hour runtime”

    only this source
  • Interactive and visual behaviour such as GUIs and game feel cannot practically be test-driven because the correct answer is not known up front

    Leans right

    “I cannot practically write tests for things that I have to see in order to know that they work. GUIs, Game behaviors, Hardware interactions, etc.”

    only this source
  • Polymorphism makes adding new types easy while switch statements make adding new operations easy; neither is a free win

    Leans right

    “OO (Operand Primal) is a great way to add types to existing functions without changing those functions.”

    only this source
  • For most software, conserving programmer time matters more than conserving CPU cycles, so readability-first practices pay off

    Leans partly right

    “It is economically better for most organizations to conserve programmer cycles than computer cycles.”

    only this source
  • Dependency inversion via polymorphism protects high-level policy from recompilation and redeployment when low-level details change

    Leans partly right

    “it prevents changes at to low level modules from forcing a wave of recompilation and redeployment from sweeping through the system towards higher level modules”

    only this source
  • Applying design patterns such as factories everywhere makes code harder to understand than direct code

    Leans partly right

    “the idea of structuring code around swappable types is generally wrong”

    1 of 2 sources
  • How much to invest in tests depends on required feedback frequency, fidelity, overhead and the expected lifespan of the code.

    Untestable

    “tests that you don't use, or that don't find bugs, or that took longer to write and maintain than the number of bugs they prevented”

    1 of 3 sources
  • Preferring runtime polymorphism over switch statements makes code slower by forcing pointer indirection and hiding the code path from the compiler

    Leans right

    “Indeed, using those structures can cost you a lot of nanoseconds. They are not efficient at the nanosecond level.”

    1 of 5 sources
  • A trustworthy automated test suite lets developers change and deploy code without fear

    Leans partly right

    “When I have a suite of tests that I trust, and that has high coverage, I can refactor that code without fear.”

    1 of 5 sources
2.78new and sound
+2
code.talks 2023 - Our journey from Gitflow to Trunk Based Development
code.talks (ehem. Developer Conference)
Show claims
  • Reusing an old feature flag can switch on dormant code paths with catastrophic results

    Leans right

    “they recycled an old future flag and when they turn it on the last machine that did not receive the new version”

    only this source
  • Feature flags carry an ongoing removal cost that teams must schedule and pay back

    Leans right

    “we need to remove video Flex that there is an extra cost”

    only this source
  • Running a CI server is not continuous integration if branches live for days or weeks

    Leans right

    “it's not because you are using Jenkins GitHub gitlab Circle CI that you are doing continuous integration”

    1 of 2 sources
  • Feature flags let unfinished work merge to trunk and decouple deployment from release

    Leans right

    “we are actually decoupling deployment from release”

    1 of 2 sources
  • Trunk-based development only works with a fast comprehensive test suite and same-day code review

    Leans partly right

    “you need to have a pretty strong test Suite in terms of completeness a good coverage and it needs to execute fasts”

    only this source
  • Ephemeral per-branch environments remove the bottleneck of shared test environments

    Leans partly right

    “we remove the bottleneck okay it's been completely removed”

    only this source
  • Trunk-based development is unsuited to products that must tightly control released versions

    Leans partly right

    “maybe trunk base development is not suitable for you and git flow still is a good option”

    only this source
  • Developers who deploy their own work to production are happier because they see its impact

    Leans partly right

    “they are way much happier than before when they were just like okay I finished this feature somebody else is going to validate”

    only this source
  • Long-lived branches delay integration and produce merge conflicts that grow with team size

    Leans right

    “we spend a lot of time to handle conflicts because we have so many branches”

    1 of 4 sources
  • Trunk-based development with one small change per release increases release frequency and makes rollbacks easier

    Leans partly right

    “it also allows us to increase the release frequency to have much more stable iteration”

    1 of 5 sources
2.65new and sound
+2
Mutation Testing in Python with Cosmic Ray - Austin Bingham - NDC TechTown 2024
NDC Conferences
Show claims
  • Mutation score measures test suite quality better than coverage does

    Leans right

    “the quality of your tests can be gauged by the percentage of mutations killed”

    only this source
  • Mutation testing is too slow to run routinely without parallelisation or incremental selection

    Leans right

    “it is just not practical to do on a frequent basis”

    only this source
  • Equivalent mutants cannot be detected automatically and require human judgment

    Probably right

    “it is not really detectable in any practical way”

    only this source
  • Line coverage shows code was executed, not that the tests check its behaviour

    Probably right

    “it's not really telling you that your tests are that you understand what your program is doing”

    1 of 3 sources
  • A surviving mutant reveals either a missing test or code that can be removed

    Leans partly right

    “your tests are inadequate to protect this change this Behavior modifying change or the code that was mutated is extraneous”

    only this source
  • Higher-level behavioural tests make mutation testing more practical than many fine-grained unit tests

    Unknown

    “when I have higher level tests that tests my functionality that that is probably one of the keys to Breaking the time barrier”

    only this source
  • Full line coverage is relatively easy to reach when a team is motivated

    Leans partly right

    “that's actually relatively easy to get if you're if you're motivated to do it”

    only this source
  • Writing tests first forces the code to be decoupled and testable by construction

    Leans partly right

    “good testing results in better design almost always in my experience”

    1 of 6 sources
2.38new and sound
+2
Physiological Effects of Crunch: A Look at the Science
GDC Festival of Gaming
Show claims
  • Long working hours raise rates of injury, illness, cardiovascular disease and mental health problems through chronic stress.

    Leans right

    “a very clear linear relationship between hours worked above 8 a day or 40 a week with greater incidence of injury or illness”

    only this source
  • Caffeine tolerance builds within days, so it cannot offset extended overtime.

    Leans right

    “you reach caffeine tolerance shockingly quickly it takes about a week”

    only this source
  • Crunch does not improve product outcomes; it correlates with slightly worse ones.

    Leans right

    “there is a very mild negative correlation between working overtime and making a successful game”

    1 of 2 sources
  • Sleep deprivation impairs cognition like alcohol intoxication and blinds people to their own impairment.

    Leans right

    “going without sleep it turns out physiologically is almost indistinguishable from drinking alcohol”

    1 of 3 sources
  • Letting workers choose their own hours improves satisfaction, health and productivity.

    Leans partly right

    “allowing people flexible time over their schedules whether in crunch or not has basically nothing but positive effects”

    only this source
  • A full day of rest after a missed night of sleep does not restore performance to baseline.

    Leans partly right

    “even after a full night's sleep and a full day off test subjects were not recovered all the way back to their baseline levels”

    only this source
  • Fatigue raises the rate of catastrophic errors, so an overworked team can make net negative progress.

    Leans partly right

    “the more fatigued someone is the more likely they are to make catastrophic errors”

    1 of 2 sources
  • Crunch is a symptom of poor planning, especially failing to schedule testing and iteration time

    Leans partly right

    “the cause of crunch is usually not uh is usually not a skill problem or a laziness problem it's an unrealistic schedule”

    1 of 2 sources
  • Sustained crunch lowers productivity and employee happiness

    Leans right

    “once you get past 60 hours your cognitive function is actually worse than someone who wasn't working at all”

    1 of 4 sources
2.29new and sound
+2
Critique - Google's Code Review Tool | Reaction
NeetCodeIO
Show claims
  • Automated formatting and static analysis before review let reviewers focus on design and maintainability

    Leans right

    “automated analysis allow reviewers to focus on the understandability and maintainability of changes”

    only this source
  • Newly joined engineers receive the most review comments, and the count falls with tenure

    Probably right

    “when you first join you're probably going to get more more comments”

    only this source
  • Code review is a major channel for learning and knowledge transfer, especially for newcomers

    Leans right

    “I learned a lot through code reviews”

    1 of 2 sources
  • Extensive automated pre-submit checks catch most breaking changes before they are merged

    Leans partly right

    “if your code broke anything there's a 99% chance it would get caught before it was merged”

    only this source
  • Overly harsh or demanding reviews discourage future contributions

    Leans partly right

    “overly difficult reviews can discourage future improvements”

    only this source
  • Keeping review feedback, discussion and fixes in one tool removes the context switching that slows review.

    Leans partly right

    “it's only the tight integration and extreme personalization of the tooling towards a Google specific workflow and codebase that makes it so love”

    1 of 2 sources
  • Small pull requests are picked up and merged faster

    Leans right

    “it's easy to review someone's poll request if you send small poll requests”

    1 of 5 sources
2.06new and sound
+2
Microservices, Where Did It All Go Wrong • Ian Cooper • GOTO 2024
GOTO Conferences
Show claims
  • Splitting services too finely raises inter-service dependencies and coordination so total cost rises again rather than falling

    Leans right

    “people when they focused on making them small quite often cross over this point and keep going down”

    only this source
  • Headlines about big companies abandoning microservices usually describe one team consolidating a few components

    Leans right

    “it's one team saying uh we got rid of a couple of Step functions and we made it a single process”

    only this source
  • Modular decomposition behind simple interfaces reduces the information a programmer must hold in mind at once

    Leans right

    “due to complexity is always easier and cheaper to create two small pieces rather than one big piece”

    1 of 3 sources
  • Moving functionality across service boundaries is far harder than refactoring inside one process

    Leans right

    “when your components are servic as remote Communications then refactoring is much harder than within processed libraries”

    1 of 3 sources
  • Creating services by which team is free rather than by domain seams produces fragmented systems

    Leans partly right

    “that kind of opportunity to use microservices to solve a problem of organizational capacity tends to lead to poor outcomes”

    only this source
  • Service boundaries must be repartitioned continually as the business changes, so owning microservices is never finished

    Leans partly right

    “owning microservices is a constant activity there is never a we are done”

    only this source
  • 'Micro' should mean replaceable, not few lines of code

    Untestable

    “it's replaceability that we care about not Lumber and lines of coat”

    only this source
  • Service boundaries are usually wrong on the first attempt because the domain is not yet understood, so systems built as microservices from scratch tend to end in trouble

    Leans partly right

    “typically first wave of microservices is likely to be wrong”

    1 of 3 sources
  • Keeping modules in one process with enforced boundaries gets most of the modularity benefit without the distribution cost

    Leans partly right

    “this needs to have modularity but that modularity won't use a microservices approach it will instead split it up into larger pieces”

    1 of 3 sources
  • Microservices cost more in the short term and rarely save money

    Leans right

    “as soon as I create separate processes I do distribution and that always implies a cost”

    1 of 10 sources
2.05new and sound
+2
Laurence Tratt: Another Non-Argument in Type Systems
tratt.net
Show claims
  • Static and dynamic typing differ in when types are enforced, not in how many types a language has

    Leans right

    “The fundamental difference between statically and dynamically typed languages isn’t over how many types they have: it’s about when those types are utilised.”

    only this source
  • Encoding a dynamically typed program in a static type system bloats it with explicit checks the runtime would do implicitly

    Leans right

    “a static type system forces us to explicitly express all the checks that a dynamically typed run-time implicitly performs for us”

    only this source
  • Static analysis is unsound and incomplete, so it can augment but not replace a type system

    Leans right

    “They therefore can not replace static type systems, but can augment them.”

    only this source
  • Any sound static type system rejects some programs that would never fail at run time

    Leans right

    “if the type system is sound then (because of the expressivity of programming languages) it will be incomplete, rejecting some programs”

    1 of 2 sources
  • Dynamic languages can run programs that are deliberately not statically type-safe, which helps when exploring or modifying large systems

    Leans partly right

    “ability to execute and run programs which are deliberately not statically type safe (a useful property when comprehending and modifying large systems)”

    1 of 2 sources
  • Static typing suits safety- and performance-critical domains while dynamic typing suits fast-iteration domains

    Untestable

    “Arguing whether static or dynamic typing is universally better or more expressive is therefore pointless.”

    1 of 4 sources
1.88new and sound
+2
Don’t Feature Branch | Dave Farley’s Weblog
davefarley.net
Show claims
  • Merge tools cannot detect functional conflicts between independently developed features; only integrating and testing can

    Leans right

    “No merge tool can predict that the features that I write and features that you write will work nicely together”

    only this source
  • Choosing which features to release after integration testing means shipping a combination that was never tested

    Leans right

    “if you decide to merge only one of them back to head, you are about to release a previously untested scenario”

    only this source
  • Trunk-based development with feature toggles is simpler for most teams than disciplined branch-per-feature

    Leans partly right

    “Trunk Based Development with Feature toggles are simpler for a team to use and implement than feature branches”

    only this source
  • Keeping a branch per feature lets a finished feature be pulled before release, which trunk-based development cannot do

    Leans partly right

    “You set yourself up for disappointment when you want to release and can’t take out a feature.”

    only this source
  • Feature toggles are a hack and a source of errors that proper branch-per-feature avoids

    Leans partly right

    “I find them the biggest hack of what’s in ci these days and a potential source of errors”

    only this source
  • Long-lived branches delay integration and produce merge conflicts that grow with team size

    Leans right

    “the merge problem it faces could be nothing at all or represent days or even weeks of effort”

    1 of 4 sources
1.82new and sound
+2
Trunk Based Development
trunkbaseddevelopment.com
Show claims
  • Beyond a couple of developers a build server is needed to catch commits that break the trunk

    Leans right

    “you are going to need to hook up a build server to verify that their commits have not broken the build”

    only this source
  • Running a CI server is not continuous integration if branches live for days or weeks

    Leans right

    “Trunk-Based Development is a key enabler of Continuous Integration and by extension Continuous Delivery.”

    1 of 2 sources
  • Feature flags let unfinished work merge to trunk and decouple deployment from release

    Leans right

    “techniques should include feature flags, branch by abstraction and "don't break the build"”

    1 of 2 sources
  • Short-lived feature branches with pull requests preserve the benefits of trunk-based development as long as they merge within a day or so

    Leans partly right

    “short-lived feature branches are used for code-review and build checking (CI), but not artifact creation or publication”

    only this source
  • Teams on a shared trunk can scale headcount up or down without losing throughput or quality

    Leans partly right

    “Development teams can casually flex up or down in size (in the trunk) without affecting throughput or quality.”

    only this source
  • Long-lived branches delay integration and produce merge conflicts that grow with team size

    Leans right

    “Shared branches off mainline/main/trunk are bad at any release cadence”

    1 of 4 sources
  • Trunk-based development with one small change per release increases release frequency and makes rollbacks easier

    Leans partly right

    “This ensures the codebase is always releasable on demand and helps to make Continuous Delivery a reality.”

    1 of 5 sources
1.63new and sound
+2
TestDesiderata
TestDesiderata
Show claims
  • Desirable test properties trade off; making tests more predictive of production makes them slower

    Leans right

    “Making tests more predictive of production behavior makes them slower.”

    only this source
  • Tests that are deterministic and independent of run order are more valuable because flaky results erode trust

    Leans right

    “Isolated — tests should return the same results regardless of the order in which they are run.”

    only this source
  • Writing a test per method and mocking every dependency couples tests to implementation so refactoring breaks them

    Leans right

    “Structure-insensitive — tests should not change their result if the structure of the code changes.”

    1 of 2 sources
  • A passing test suite should be sufficient evidence that code is ready for production

    Leans partly right

    “Predictive — if the tests all pass, then the code under test should be suitable for production.”

    only this source
1.45new and sound
+2
Why Crunch Mode Doesn’t Work: Six Lessons [2005] – IGDA
igda.org
Show claims
  • Knowledge-worker productivity cannot be measured reliably, so hours-versus-output conclusions rest on analogies from other industries

    Leans right

    “Productivity is hard to quantify for knowledge workers.”

    only this source
  • Sleep deprivation impairs cognition like alcohol intoxication and blinds people to their own impairment.

    Leans right

    “subjects who slept four to six hours a night for fourteen consecutive nights showed significant deficits in cognitive performance”

    1 of 3 sources
  • Complex mental work degrades faster under fatigue than physical work, so knowledge workers lose more to long hours than manual workers

    Leans partly right

    “In contrast to complex mental performance, simple psychomotor performance, physical strength and endurance are unaffected by sleep deprivation.”

    only this source
  • Managers impose crunch to signal effort rather than because it works

    Leans partly right

    “Managers decide to crunch because they want to be able to tell their bosses”

    only this source
  • Fatigue raises the rate of catastrophic errors, so an overworked team can make net negative progress.

    Leans partly right

    “Error rates climb with hours worked and especially with loss of sleep. Eventually the odds catch up with you, and catastrophe occurs.”

    1 of 2 sources
  • Sustained crunch lowers productivity and employee happiness

    Leans right

    “When used long-term, Crunch Mode slows development and creates more bugs when compared with 40-hour weeks.”

    1 of 4 sources
1.29new and sound
+2
Open plan offices are terrible for innovation and productivity
Nick Skillicorn
Show claims
  • Alternating collaboration with individual work produces better solutions than either constant collaboration or isolation

    Leans right

    “people were both collaborating for part of the time and then had time to work individually this gave the high performers the chance”

    only this source
  • Moving to open-plan offices reduces face-to-face interaction and shifts communication to email and messaging

    Probably right

    “the amount of collaboration in open-plan offices was actually lower than when people had their own individual space”

    1 of 2 sources
  • Open-plan offices increase noise and visual distraction that impairs focused work

    Leans right

    “people in open plan offices complained that they were significantly more prone to distraction”

    1 of 3 sources
0.99mixed
+2
Open concept offices aren’t as productive as you think | Your Morning
CTV Your Morning
Show claims
  • Moving to open-plan offices reduces face-to-face interaction and shifts communication to email and messaging

    Probably right

    “the volume of face-to-face interactions so speaking to people that you're now actually sitting across from went down”

    1 of 2 sources
  • Open-plan offices increase noise and visual distraction that impairs focused work

    Leans right

    “there was more distractions happening because people who are taking personal calls for example you would hear all their business”

    1 of 3 sources
  • Open-plan offices are adopted mainly because they cut real-estate cost per worker.

    Leans partly right

    “it's cheaper yeah because it is cheaper”

    only this source
0.74mixed
+2
Microservice Premium
martinfowler.com
Show claims
  • Continuous delivery does not require microservices; monoliths can be deployed continuously

    Leans right

    “there are plenty of organizations that succeed with a cookie-cutter deployment approach: Facebook and Etsy are two well-known examples”

    only this source
  • Keeping modules in one process with enforced boundaries gets most of the modularity benefit without the distribution cost

    Leans partly right

    “there's no reason why you can't make a single monolith with well defined module boundaries”

    1 of 3 sources
  • Hype drives teams to adopt microservices they do not need, adding cost and risk

    Leans partly right

    “we've seen teams be too eager to embrace microservices”

    1 of 5 sources
  • A single-process monolith is the right default and microservices need a specific justifying outcome

    Leans right

    “The majority of software systems should be built as a single monolithic application.”

    1 of 6 sources
  • Microservices cost more in the short term and rarely save money

    Leans right

    “microservices introduce complexity on their own account. This adds a premium to a project's cost and risk”

    1 of 10 sources
0.72mixed
+2
Technical Debt Quadrant
martinfowler.com
Show claims
  • Even excellent teams accumulate inadvertent debt because the right design is only learned by building the system

    Leans right

    “it can take a year of programming on a project before you understand what the best design approach should have been”

    only this source
  • The debt metaphor helps explain design problems to non-technical stakeholders

    Untestable

    “A particular benefit of the debt metaphor is that it's very handy for communicating to non-technical people.”

    only this source
  • Debt is prudent when taken deliberately to ship sooner with small interest, and reckless when taken without understanding its cost

    Untestable

    “the useful distinction isn't between debt or non-debt, but between prudent and reckless debt”

    1 of 2 sources
  • Code in unhealthy files has many times more defects and takes several times longer to change than healthy code

    Leans partly right

    “The whole point of good design and clean code is to make you go faster”

    1 of 3 sources
0.58mixed
+2
Monolith First
martinfowler.com
Show claims
  • Moving functionality across service boundaries is far harder than refactoring inside one process

    Leans right

    “Any refactoring of functionality between services is much harder than it is in a monolith.”

    1 of 3 sources
  • Decomposing a monolith only works if it already has a reasonably modular design; tangled monoliths just produce a mess

    Leans partly right

    “Most systems acquire too many dependencies between their modules, and thus can't be sensibly broken apart.”

    1 of 2 sources
  • Service boundaries are usually wrong on the first attempt because the domain is not yet understood, so systems built as microservices from scratch tend to end in trouble

    Leans partly right

    “Almost all the cases where I've heard of a system that was built as a microservice system from scratch, it has ended up in serious trouble.”

    1 of 3 sources
  • A single-process monolith is the right default and microservices need a specific justifying outcome

    Leans right

    “you should build a new application as a monolith initially, even if you think it's likely that it will benefit from a microservices architecture later on”

    1 of 6 sources
0.41mixed
+2
Beyond Open Offices: The New Fog Creek Headquarters
blog.glitch.com
Show claims
  • Open-plan offices increase noise and visual distraction that impairs focused work

    Leans right

    “the research is pretty clear that it is a massive booster of productivity for people in those kinds of technical roles”

    1 of 3 sources
  • Focused and collaborative work need different physical spaces

    Leans partly right

    “Some of these tasks require intense concentration, while others are more conversational and collaborative”

    only this source
  • Workspace design is a fundamental part of how a company takes care of its people

    Untestable

    “work space really matters. It’s a fundamental part of how you take care of your people”

    only this source
0.29mixed
+2
Why The "10x Engineer" Is A Dangerous Myth
Modern Software Engineering
Show claims
  • Rapid individual output often comes at the cost of maintainability that the rest of the team pays for

    Unknown

    “not conscious of the tech debt that they were fluffing off onto everyone else”

    1 of 3 sources
  • Excellence in engineering takes different forms; a few well-judged lines can be worth more than high-volume output

    Untestable

    “there's room for lots of different definitions of excellence depending on what is needed by the team”

    1 of 4 sources
  • Some programmers are vastly more productive than their typical peers

    Leans partly right

    “I think the thing probably exists, but I think it's a dumb target”

    1 of 5 sources
  • Most software effort goes into understanding, maintaining, extending and operating code rather than writing it

    Leans right

    “writing code is not the hard part. It never has been.”

    1 of 5 sources
0.16mixed
+1
Laurence Tratt: Dynamically Typed Languages
tratt.net
Show claims
  • Mainstream static type systems cannot express many useful constraints, such as a divisor being non-zero

    Leans right

    “This limitation is shared by virtually all statically typed languages.”

    only this source
  • Type systems themselves contain soundness bugs that are hard to fix without breaking existing programs

    Leans right

    “the vast majority of static type systems are not proved correct; some are sufficiently complex that a full proof of correctness is impractical or impossible”

    only this source
  • Automatic memory management saves a large share of programmer time and removes a class of bugs

    Leans right

    “Manual memory management – when the programmer must manually allocate and free memory – wastes programmer resources”

    only this source
  • Any sound static type system rejects some programs that would never fail at run time

    Leans right

    “Since any practical type system needs to be both decidable and sound, they are not complete; in other words, certain valid programs will be rejected”

    1 of 2 sources
  • Unit tests catch most type errors and can give guarantees beyond what static typing provides

    Leans partly right

    “unit testing allows developers to make guarantees of their programs that are considerably in excess of anything that static typing can provide”

    only this source
  • Small increases in type system expressiveness cause disproportionately large increases in complexity

    Leans partly right

    “relatively small increases in the expressivity of static type systems cause a disproportionately large increase in complexity”

    only this source
  • Retrofitting static types onto dynamically typed programs finds only a small fraction of their bugs

    Leans partly right

    “in practice, run-time type errors in deployed programs are exceedingly rare”

    1 of 2 sources
  • Dynamic languages can run programs that are deliberately not statically type-safe, which helps when exploring or modifying large systems

    Leans partly right

    “static types inhibit large-scale refactorings, tending to ossify a program’s structure”

    1 of 2 sources
  • Dynamic typing is faster for prototyping and rapid iteration

    Leans partly right

    “Such simplicity makes both learning and using dynamically typed languages simpler, in general, than statically typed languages”

    1 of 3 sources
  • Static typing yields better runtime performance because the compiler knows each variable's memory layout

    Leans partly right

    “There is little doubt that, in practice, equivalent programs in dynamically typed languages are slower than in statically typed languages.”

    1 of 3 sources
  • Static typing suits safety- and performance-critical domains while dynamic typing suits fast-iteration domains

    Untestable

    “it is my contention that both statically typed and dynamically typed languages are required for the increasingly broad range of tasks”

    1 of 4 sources
  • Static typing catches type errors at compile time before code reaches users

    Probably right

    “statically typed programs have an implicit form of documentation within them, which happens to be machine checkable”

    1 of 5 sources
2.79new and sound
+1
SE Radio 577: Casey Muratori on Clean Code, Horrible Performance?
IEEEComputerSociety
Show claims
  • Faster, more responsive software measurably increases user engagement and revenue

    Leans right

    “the more responsive your software and the faster it performs the more engaged users are the more likely they are to spend more money”

    only this source
  • The 'premature optimisation' quote is misapplied as licence to ignore performance during design when it only warned against early micro-level hand tuning

    Leans right

    “the way this quote is now applied is that you don't need to think about optimization until the end of your program”

    only this source
  • Programs are rarely inherently I/O bound; chatty serial chains of dependent requests make them look I/O bound

    Leans partly right

    “the actual nature of the thing the program is doing is almost never i o bound”

    only this source
  • Hiding implementation details behind layers of abstraction makes it harder to find why code misbehaves because every layer must be dug through

    Leans partly right

    “layers of encapsulation that that library has put between me and what's going on actually make it take longer for me to find the problem”

    only this source
  • The readability gains credited to class hierarchies come from cleaning up messy code, which well-named procedural code achieves equally well

    Leans partly right

    “so why are we claiming the advantage comes from the classes as opposed to just not doing all of these kind of other bad things”

    only this source
  • Switch-based code is easier to optimise later than a class hierarchy because all cases are visible in one place

    Leans partly right

    “it is very simple to improve the performance of a switch statement it is much more time consuming to do the same transform”

    only this source
  • Lines of code per feature is a useful objective proxy for code that reads like what it does and stays easy to modify

    Leans partly right

    “features per line of code is something I kind of actually want to keep a good handle on”

    only this source
  • Developer-time savings claimed from ignoring performance are erased by later ground-up performance rewrites

    Leans partly right

    “so they claim that they were saving develop first time but they're spending years rewriting entire systems”

    only this source
  • A performance trade-off only counts as a trade-off if the cost was measured; otherwise it is an excuse

    Untestable

    “if you don't know how bad the performance will be from your decisions you aren't making a trade-off”

    only this source
  • Performance must be designed in from the start because hotspot optimisation cannot fix serial dependency chains and poor data layout later

    Leans partly right

    “architecting for performance needs to be done from day one”

    only this source
  • Preferring runtime polymorphism over switch statements makes code slower by forcing pointer indirection and hiding the code path from the compiler

    Leans right

    “when you actually look at what those transforms do to code it all just slows it down it never speeds it up”

    1 of 5 sources
  • Coordination cost grows faster than linearly with team count on a shared codebase, which service boundaries contain

    Leans partly right

    “microservices in my opinion never were a thing you would do because you wanted to write good software”

    1 of 5 sources
2.75new and sound
+1
The Rationale for Continuous Delivery • Dave Farley • YOW! 2018
GOTO Conferences
Show claims
  • The paper that introduced the waterfall diagram warned that the approach was risky and invited failure.

    Leans right

    “the paper that introduced waterfall to our industry said whatever you do don't do waterfall”

    only this source
  • Infrequent releases leave security patches and compliance updates waiting months to reach production.

    Leans right

    “That alone closes a whole load of security areas.”

    1 of 2 sources
  • Organizations with high software delivery performance are more likely to meet their commercial and non-commercial goals.

    Leans right

    “organizations that do this kind of thing make more money than organizations that don't”

    1 of 2 sources
  • Replacing guesswork with measured experiments is what makes software development an engineering discipline.

    Untestable

    “start experimenting and start measuring”

    only this source
  • Continuous delivery yields order-of-magnitude improvements in quality and efficiency, not incremental gains.

    Leans partly right

    “We are often talking massive steps forward sometimes orders of magnitude in certain measures”

    only this source
  • Short cycle times force small teams, automation and fewer handoffs, so continuous delivery drives out lean and agile practices as a side effect.

    Leans partly right

    “You can't have a 57 minute cycle time if your team is too big.”

    only this source
  • Automating everything except creative judgment makes releases repeatable and reliable because humans are not.

    Leans partly right

    “if we want to be repeatable and reliable, we're going to automate”

    only this source
  • An automated test is an investment that permanently prevents the class of problem it checks.

    Leans partly right

    “It's not a cost. It's an investment. If you spend time writing tests now, that pays back in spades later on.”

    only this source
  • Adopting continuous delivery shifts development effort from branch merging and support to new features and lowers cost per product.

    Leans partly right

    “The bottom line is eight times as much effort going into creating new software.”

    only this source
  • A continuous delivery pipeline gives regulated environments end-to-end traceability as a side effect.

    Leans partly right

    “this is pretty much the only way in which you get the kind of insight and traceability that modern regulatory frameworks are looking for”

    only this source
  • Most software projects run late or over budget, with few finishing early.

    Leans partly right

    “In a study of nearly 6,000 projects, 17% of them go so badly that they threaten the existence of the company”

    1 of 3 sources
  • Smaller changes mean less rework, fewer incidents and faster restoration

    Leans partly right

    “each change is so small and simple and easy to reason about, it's trivial to to revert it if you need to”

    1 of 6 sources
2.58new and sound
+1
Intro to Empirical Software Engineering: What We Know We Don't Know • Hillel Wayne • GOTO 2019
GOTO Conferences
Show claims
  • Most code review findings are maintainability improvements rather than functional bugs.

    Leans right

    “only one out of every four comments that basically block the code significant software defects is about functionality”

    only this source
  • Crunch does not improve product outcomes; it correlates with slightly worse ones.

    Leans right

    “they produced games that were worse on every single metric reviewer scores profitability user satisfaction sales”

    1 of 2 sources
  • Large-scale repository studies claiming some languages produce fewer bugs did not survive replication.

    Very likely right

    “they could not find any evidence that one language was better than any other language”

    1 of 3 sources
  • Test-driven development produces no better quality or productivity than other disciplined testing approaches.

    Probably right

    “test-driven development is no better or worse than any other disciplined controlled testing technique”

    1 of 3 sources
  • Sleep deprivation impairs cognition like alcohol intoxication and blinds people to their own impairment.

    Leans right

    “when you are sleep-deprived you can't tell your work is worse”

    1 of 3 sources
  • Small functions are easier to read and modify but harder to debug, so the evidence for them is mixed.

    Leans partly right

    “small functions are easier to read easier to modify and much much harder to debug”

    only this source
  • Code smells mark where bugs are likely, but fixing the smells does not remove the bugs.

    Leans partly right

    “fixing the anti-patterns did nothing to the bugs”

    only this source
  • Sleep, stress and hours worked affect output more than any technical practice.

    Leans partly right

    “no practice will make your code any better then they would make if they were well rested”

    only this source
  • Abbreviated identifiers are no harder to debug than full-word identifiers.

    Leans partly right

    “there's no evidence that a full word is required when an abbreviation can fit in”

    1 of 2 sources
  • Pair programming shows little measurable effect on defects or productivity in controlled studies.

    Leans partly right

    “pair programming type systems etc don't really have that much effect either”

    1 of 2 sources
  • Code review catches most of the defects in reviewed code.

    Leans partly right

    “it finds about 60 to 80 percent of all the bugs in the code”

    1 of 2 sources
2.50new and sound
+1
Under Deconstruction: The State of Shopify’s Monolith - Shopify
Shopify
Show claims
  • Modules can only be reasoned about or tested in isolation when the dependency graph between them is sparse and acyclic

    Leans right

    “A dense, cyclical dependency graph undermines the whole idea of Componentization”

    only this source
  • Static dependency analysis gives faster and more actionable boundary enforcement than tracing runtime calls

    Leans right

    “There’s less ambiguity in static references, and because they’re always explicitly introduced by developers, highlighting them is more actionable.”

    only this source
  • Adding public interfaces around modules without untangling the dependency graph just adds indirection and makes code harder to change

    Leans partly right

    “the public interface turned out to just be an added layer of indirection in the existing control flows”

    only this source
  • Large architecture changes to an actively developed codebase succeed only by changing average developer behaviour, not by a central team's effort

    Leans partly right

    “A single centralized team can’t make change happen by working against the momentum of hundreds of developers adding features.”

    only this source
  • Imposing uniform coding conventions adds learning and compliance friction without making hard design problems easier

    Leans partly right

    “Pushing for consistency added rules, which always add some friction, because they have to be learned, remembered, and followed.”

    only this source
  • Large-scale architecture refactors stay in an incomplete intermediate state far longer than planned

    Leans partly right

    “all large architecture changes end up in an incomplete state”

    only this source
  • Explicit module ownership makes whole-codebase chores like framework upgrades easier to distribute

    Leans partly right

    “with each component explicitly owned by a team, whole-codebase chores like Rails upgrades are easily distributed and collaboratively solved”

    only this source
  • Services that always change together should be merged or re-sliced

    Untestable

    “Change Locality is a sign of both low coupling and high cohesion and makes evolving the code easier.”

    1 of 2 sources
  • Static typing catches type errors at compile time before code reaches users

    Probably right

    “it has barely any runtime performance impact, it’s more stable, and it provides advanced features like interfaces”

    1 of 5 sources
  • Microservices cost more in the short term and rarely save money

    Leans right

    “splitting a single monolithic application into a distributed system of services increases the overall complexity considerably”

    1 of 10 sources
2.40new and sound
+1
The Key to High Performance: What the Data Says - Dr. Nicole Forsgren
IT Revolution
Show claims
  • Lightweight change approval within the team outperforms heavyweight external change approval boards.

    Leans right

    “number one or number two biggest constraint for most teams is a lightweight change approval process”

    only this source
  • Organizations with high software delivery performance are more likely to meet their commercial and non-commercial goals.

    Leans right

    “high performers year over a year are twice as likely to achieve or exceed their commercial goals”

    1 of 2 sources
  • Software delivery speed and stability move together rather than trading off; the best teams get both.

    Leans right

    “we find that software delivery performance is through putting stability and both are possible without trade-offs”

    1 of 3 sources
  • Maturity models go out of date too quickly to guide technology transformations.

    Untestable

    “if we create maturity models they go out of date too fast”

    only this source
  • Technology alone does not raise performance; it must be combined with lean management and organizational culture.

    Leans partly right

    “we need technology and process and culture to really get this strong synergy”

    only this source
  • A loosely coupled architecture that lets teams test, deploy and change independently predicts delivery performance more than the platform or technology used.

    Leans partly right

    “the thing that is most important is having a loosely coupled architecture both at the team level and at the technology level”

    only this source
  • A generative, high-trust, blameless organizational culture predicts software delivery and organizational performance.

    Leans partly right

    “the generative group was most highly correlated with high performance”

    only this source
  • Transformational leadership is necessary but not sufficient for high delivery performance.

    Leans partly right

    “leadership is necessary but not sufficient”

    only this source
  • High-performing delivery teams report less deployment pain and burnout and are more likely to recommend their workplace.

    Leans partly right

    “less deployment pain less burnout higher employee Net Promoter Score”

    only this source
  • Trunk-based development with one small change per release increases release frequency and makes rollbacks easier

    Leans partly right

    “these are the ones that we have seen are predictive of your ability to develop and deliver software with both speed and stability”

    1 of 5 sources
  • Smaller changes mean less rework, fewer incidents and faster restoration

    Leans partly right

    “they have a much smaller blast radius and it's much much easier to identify what those changes are”

    1 of 6 sources
2.26new and sound
+1
Why Static Typing Came Back • Richard Feldman • GOTO 2022
GOTO Conferences
Show claims
  • Nearly every mainstream language that emerged after the 2000s is statically typed.

    Leans right

    “C sharp action script go Russ Dart kotlin typescript and Swift that's a quite a different story”

    only this source
  • In-editor type errors give faster feedback than running the program and tracing a crash.

    Probably right

    “this right here is a fast feedback loop seeing this error right there as you're writing your code”

    1 of 2 sources
  • Dynamic languages became popular because they gave fast feedback and concise syntax for early web work, not because dynamic typing is inherently better.

    Leans partly right

    “these benefits don't require Dynamic typing they just first appeared in Dynamic languages”

    only this source
  • Gradual typing requires a more complex type system and keeps dynamic runtime overhead, so it is not the best of both worlds.

    Leans partly right

    “it has very serious unavoidable downsides that just come with the territory of deciding that you want gradual types”

    only this source
  • Non-blocking type errors keep the fast feedback of static types without preventing you from running code or tests.

    Leans partly right

    “when these go from sort of blocking compile errors to non-blocking error reports that are just informative wow this just becomes sort of all upside”

    only this source
  • Type inference gives static typing with dynamic-like brevity, removing most of the old verbosity trade-off

    Leans partly right

    “some languages and Community Norms encourage ceremony but they don't have to”

    1 of 2 sources
  • Static typing yields better runtime performance because the compiler knows each variable's memory layout

    Leans partly right

    “there's no way to get a dynamically typed language to be as fast as the fastest possible statically type language”

    1 of 3 sources
  • Static typing catches type errors at compile time before code reaches users

    Probably right

    “all of these things do not have any nil null or undefined errors in production all of them 100 have been caught at build time”

    1 of 5 sources
1.90new and sound
+1
A Response to “Why Most Unit Testing is Waste”
Henrik Warne's blog
Show claims
  • Unit tests make it easy to set up edge-case contexts that are hard to reproduce in the full system

    Leans right

    “it is easier to set up the context you want in a unit test than it is to set it up in the complete system”

    only this source
  • Unit tests that never fail in version control still earn their keep because they fail transiently during development and are fixed before commit

    Leans partly right

    “if a unit test fails, it fails as you are developing the code. It is similar to a compilation failure. You fix it immediately.”

    only this source
  • Tests breaking during refactoring is a minor cost in practice

    Leans partly right

    “Sometimes when you refactor code, you break tests. But my experience is that this is not a big problem.”

    only this source
  • The impossibility of exhaustively testing a program's state space applies to integration tests as much as unit tests

    Leans partly right

    “This is true, but it applies equally to integration testing, and is thus not an argument against unit testing.”

    only this source
  • Runtime assertions complement but cannot replace unit tests because an assertion failure is still a production failure

    Leans partly right

    “Asserts can be useful, but they are not a substitute for unit tests. If an assert fails, there is still a failure”

    only this source
  • Combining unit and integration tests catches more than integration tests alone

    Leans partly right

    “I agree that integration tests are effective, but I think a combination of both is even better.”

    only this source
  • Higher-level tests often pay back better than unit tests at finding bugs in integration-heavy code.

    Leans partly right

    “unit tests are most valuable when you use them for algorithmic logic. They are not particularly useful for code that is more coordinating”

    1 of 3 sources
  • How much to invest in tests depends on required feedback frequency, fidelity, overhead and the expected lifespan of the code.

    Untestable

    “Unit tests are not a goal in themselves. They are not useful in every situation.”

    1 of 3 sources
  • Test-first development reduces time spent debugging

    Leans partly right

    “With unit tests, you get feedback immediately if you make a mistake.”

    1 of 5 sources
  • Writing tests first forces the code to be decoupled and testable by construction

    Leans partly right

    “I was quite surprised at how much better separated my code become when I started writing unit testing as I was developing.”

    1 of 6 sources
1.88new and sound
+1
Literature review on the benefits of static types
danluu.com
Show claims
  • Existing type-system studies do not cover experienced programmers, large codebases or modern typed languages

    Leans right

    “Some notable omissions from the studies are comprehensive studies using experienced programmers”

    only this source
  • Large-scale repository studies claiming some languages produce fewer bugs did not survive replication.

    Very likely right

    “the study appears to use a fundamentally flawed methodology that's not capable of revealing much information”

    1 of 3 sources
  • Controlled studies find at most small effects of static typing on productivity or defect rates

    Leans partly right

    “most studies find very small effects, if any”

    only this source
  • Differences between individual programmers dwarf differences between languages in experiments

    Leans partly right

    “the variance between programmers was still much greater than the variance between languages in all but two tasks”

    only this source
  • Type annotations help developers mainly by acting as documentation when using unfamiliar APIs

    Leans partly right

    “static type systems acted as a form of implicit documentation, benefiting developer productivity”

    only this source
  • Type-system studies are cherry-picked to confirm whichever side one already holds

    Leans partly right

    “most of them are passed around to justify one viewpoint or another”

    only this source
  • Retrofitting static types onto dynamically typed programs finds only a small fraction of their bugs

    Leans partly right

    “you'd expect that this technique caught between 4% and 15% of the bugs in this code”

    1 of 2 sources
1.81new and sound
+1
Gilding the Rose: Refactoring-Driven Development - Kevlin Henney - ACCU 2023
ACCU Conference
Show claims
  • Never trust a test you have not seen fail

    Leans right

    “never trust a test you haven't seen file”

    only this source
  • Refactoring in small behaviour-preserving steps with tests or compiler checks at each step avoids the big-bang breakage trap

    Leans right

    “if you make a mistake it's easy to find the bug yeah just work in small steps”

    only this source
  • Automated refactoring tools have existed for decades yet legacy code persists, so the obstacle is mindset not tooling

    Leans partly right

    “we have 20 years of evidence that tells us it was never the tool it was the mindset”

    only this source
  • In refactoring-oriented development most commits reposition code so that the final feature addition is a trivial change

    Leans partly right

    “one commit in 30 is actually something that changed the behavior”

    only this source
  • Refactor a problem on its own terms before migrating it to a different paradigm

    Untestable

    “let's refactor the control problem refactor on its own terms before migrating it to another Paradigm”

    only this source
  • Tests serve as precise, unambiguous low-level documentation of the system

    Leans partly right

    “a failing test you tell exactly what is wrong quickly without have you having to spend a lot of time analyzing the failure”

    1 of 2 sources
  • Legacy code results from technical neglect, the failure to keep refactoring, rather than from technical debt itself

    Leans partly right

    “technical debt is not your problem technical neglect is your problem that's the course”

    1 of 3 sources
  • Most software effort goes into understanding, maintaining, extending and operating code rather than writing it

    Leans right

    “here is not typing typing is not the bottleneck it is understanding”

    1 of 5 sources
1.81new and sound
+1
Best Practices for Code Review
smartbear.com
Show claims
  • Code review is a major channel for learning and knowledge transfer, especially for newcomers

    Leans right

    “Peer review also allows junior team members to learn from senior leaders and for even the most experienced programmers to break bad habits.”

    1 of 2 sources
  • Reviewer defect-finding effectiveness drops sharply once a single review exceeds a few hundred lines

    Leans right

    “beyond 400 LOC, the ability to find defects diminishes”

    1 of 3 sources
  • Reviewer effectiveness falls off after about an hour of continuous review

    Leans partly right

    “performance starts dropping off after about 60 minutes”

    only this source
  • Checklists catch omission defects that unstructured review tends to miss

    Leans partly right

    “Checklists are the most effective way to eliminate frequently made errors and to combat the challenges of omission finding.”

    only this source
  • Using code review metrics for performance evaluation makes developers hostile and game the process

    Leans partly right

    “If personal metrics become a basis for compensation or promotion, developers will become hostile toward the process”

    only this source
  • Knowing code will be reviewed makes developers write cleaner code even on unreviewed changes

    Leans partly right

    “The knowledge that others will be examining their work naturally drives people to produce a better product.”

    only this source
  • Lightweight tool-assisted review finds as many defects as formal inspection in a fraction of the time

    Leans partly right

    “lightweight code review takes less than 20% the time of formal reviews and finds just as many bugs!”

    only this source
  • Summarizing a change and its risks helps a reviewer understand unfamiliar code faster.

    Leans partly right

    “the author will often find additional errors before the peer review even begins”

    1 of 2 sources
1.74new and sound
+1
Completing the Rewrite from Hell: Five Years of Technical Debt and How We Escaped - Aaron Stannard
NDC Conferences
Show claims
  • Line coverage shows code was executed, not that the tests check its behaviour

    Probably right

    “we effectively had a test suite that told us nothing about how well our codebase worked”

    1 of 3 sources
  • Generic repository abstractions over an ORM lead to N+1 queries and joining in application memory

    Leans partly right

    “It produced n plus1 queries everywhere”

    only this source
  • Giving requirements without having the engineer explain them back leads to them being silently ignored

    Leans partly right

    “You've got to make sure they can narrate it back to you and understand the reasoning”

    only this source
  • AI coding tools reproduce a codebase's existing anti-patterns unless a new pattern is established first

    Leans partly right

    “the code that is already in the codebase is like the strongest center of gravity for what the AI is going to infer”

    only this source
  • End-to-end browser tests are brittle but the fastest way to get coverage from zero on a legacy system

    Leans partly right

    “That is not something I would recommend as your primary testing strategy because it's very brittle.”

    only this source
  • Writing down architecture decisions and their reasoning helps both humans and AI tools work on a codebase

    Leans partly right

    “the sort of culture of writing things down and explaining why we did stuff is just as valuable for people as it is for LLMs”

    only this source
  • Skipping architecture review in a project's first weeks locks in decisions that take years to undo

    Leans partly right

    “I could have figured this out that there was a problem in about 10 minutes.”

    1 of 2 sources
  • Architectural problems can be fixed by incremental refactoring without discarding the codebase.

    Leans partly right

    “We had to abandon that because the integration risk with the old billing system was just way too high.”

    1 of 4 sources
  • Microservices cost more in the short term and rarely save money

    Leans right

    “For a twoperson team, you do not need this.”

    1 of 10 sources
1.72new and sound
+1
Code Red: the Business Impact of Code Quality
InfoQ
Show claims
  • Low-quality code makes delivery times unpredictable, not just slower

    Leans right

    “Adding a feature to healthy code seems to be a predictable process. Not so in unhealthy red code”

    only this source
  • Code quality is tolerated as waste because it is invisible to non-technical stakeholders

    Leans right

    “code is an abstract concept that isn't accessible to non-technical stakeholders”

    only this source
  • Software delivery speed and stability move together rather than trading off; the best teams get both.

    Leans right

    “the shorter your cycle times for deployment, the fewer production failures”

    1 of 3 sources
  • Technical debt lowers developer happiness and drives attrition

    Leans partly right

    “Unmitigated technical debt with high interest fuel developer attrition.”

    only this source
  • Prioritising refactoring by hotspots, where change frequency meets low code health, targets the debt with the highest interest

    Leans partly right

    “focus on development hotspots to remediate high-interest debt first”

    only this source
  • Technical debt consumes a substantial fraction of developers' working time

    Leans partly right

    “the average company wastes 23-42% of developers' time due to technical debt and bad code in general”

    1 of 2 sources
  • Code in unhealthy files has many times more defects and takes several times longer to change than healthy code

    Leans partly right

    “Red code has, on average, 15 times more defects than a healthy codebase.”

    1 of 3 sources
1.68new and sound
+1
When To Use Microservices (And When Not To!) • Sam Newman & Martin Fowler • GOTO 2020
GOTO Conferences
Show claims
  • Splitting a shared relational database is the hardest part of decomposition and gives up joins and transactions

    Leans right

    “if you're going to micro services that's all going out the window”

    only this source
  • The main benefits of microservices are independent deployability, data isolation and organisational autonomy

    Leans partly right

    “independent deployability um i say data partitioning and i would say sort of organizational autonomy”

    only this source
  • Deploying one small service limits the scope and risk of each release compared with redeploying a whole monolith

    Leans partly right

    “if i'm just deploying a single service i can reduce the scope of that individual deployment”

    only this source
  • Process boundaries enforce modularity that in-process modules fail to because languages let developers violate them

    Leans partly right

    “once you make that a service a process boundary violating those things becomes really painful”

    only this source
  • Adopting microservices without changing the organisation yields the costs without the benefits

    Leans partly right

    “then do nothing to change your old-fashioned top-down command and control organization you're going to end up with probably the worst of both worlds”

    only this source
  • Services that always change together should be merged or re-sliced

    Untestable

    “that can sometimes be a sign that you might want to merge those things back together again”

    1 of 2 sources
  • Coordination cost grows faster than linearly with team count on a shared codebase, which service boundaries contain

    Leans partly right

    “i believe it gets exponentially harder to coordinate people's team size increases”

    1 of 5 sources
  • A single-process monolith is the right default and microservices need a specific justifying outcome

    Leans right

    “my default is a single process monolithic application simple deployment topology you sidestep lots of issues”

    1 of 6 sources
  • Microservices cost more in the short term and rarely save money

    Leans right

    “microsoft's architectures will very rarely save you money they do not save you money”

    1 of 10 sources
1.63new and sound
+1
Blink Estimation
Dan North & Associates Limited
Show claims
  • Revealing estimates simultaneously prevents the first number spoken from anchoring the rest

    Leans right

    “If we went round one at a time the earlier estimates would act as an unconscious anchor to the later ones.”

    only this source
  • Independent gut estimates from experienced practitioners converge and are reasonably accurate at project scale

    Leans partly right

    “Experienced delivery folks can have surprisingly good instincts for macro-level estimation”

    only this source
  • Detailed story-by-story estimation inflates the total because micro-planning is fractal

    Leans partly right

    “micro-planning is fractal: The more detail you go into the more the rolled-up result expands”

    only this source
  • Estimating individual stories adds little because the biggest risks are cross-cutting unknowns no single story captures

    Leans partly right

    “many surprises are cross-project rather than specific to a particular story”

    only this source
  • An estimate is better framed as an investment decision than as a contract

    Leans partly right

    “it becomes a straightforward return-on-investment discussion rather than the traditional estimation-as-contract negotiation”

    only this source
  • Sometimes the honest estimate is that size cannot be known until specific unknowns are investigated

    Leans partly right

    “It means we can't possibly know, and here's why.”

    only this source
1.63new and sound
+1
The Death of the Code Review: What the Data Actually Says — Laurie Voss, Arize AI
AI Engineer
Show claims
  • A change passing its test suite is a weak proxy for whether a maintainer would actually merge it

    Leans right

    “it was only good enough to merge about half of the time”

    only this source
  • Reviewer defect-finding effectiveness drops sharply once a single review exceeds a few hundred lines

    Leans right

    “reviewers stop finding defects effectively if they try to read more than 400 lines of code in one sitting”

    1 of 3 sources
  • Running several independent automated review passes and keeping only agreed findings reduces false positives and improves review quality

    Leans partly right

    “Run several review passes, see keep what they agree on”

    only this source
  • Automated code reviewers are fooled by confidently framed malicious changes far more often than human reviewers

    Leans partly right

    “fooled an autonomous review agent in 88% of attempts”

    only this source
  • Assigning people to review code full time to absorb more volume burns reviewers out

    Leans partly right

    “those people burn out really fast”

    only this source
  • The human role in code review is shifting from reading diffs to designing and tuning the systems that inspect code

    Untestable

    “the human role isn't disappearing. It is moving up the stack”

    only this source
  • AI-generated code volume outruns fixed human review capacity, making code review the bottleneck on shipping software

    Leans partly right

    “the speed at which humans can review code has stayed exactly the same”

    1 of 2 sources
  • Teams that stop reading agent-written code accumulate hidden defects that later force large rewrites

    Leans partly right

    “We tried not reading the code for like six months. It did not end well.”

    1 of 2 sources
1.62new and sound
+1
Accelerate: The State of DevOps with Dr. Nicole Forsgren
Scott Hanselman
Show claims
  • Industry and regulatory status do not predict whether DevOps practices improve delivery performance.

    Leans right

    “there was no statistical evidence that it matters”

    only this source
  • Infrequent releases leave security patches and compliance updates waiting months to reach production.

    Leans right

    “if it takes you months to get a change through what happens to your security posture when you need to get a patch through”

    1 of 2 sources
  • Software delivery speed and stability move together rather than trading off; the best teams get both.

    Leans right

    “speed and stability move in tandem the highest performers get both there is no tradeoff”

    1 of 3 sources
  • Emergency changes made under stress usually skip testing, which is when testing is most needed.

    Leans partly right

    “the big difference there is we usually skip testing which is the time that we should not be skipping testing”

    only this source
  • High-performing teams rely on automated test suites and reserve manual effort for exploratory testing.

    Leans partly right

    “they have incredibly efficient test Suites they have great parallelization so that they can be very very strategic about exploratory testing”

    only this source
  • Smaller changes mean less rework, fewer incidents and faster restoration

    Leans partly right

    “when you do introduce code you're introducing very very small pieces of code so that introduction is small it has a small blast radius”

    1 of 6 sources
  • Writing tests first forces the code to be decoupled and testable by construction

    Leans partly right

    “when developers help write tests we write better and more testable code”

    1 of 6 sources
1.50new and sound
+1
TW Hangouts | Is TDD dead? [Part III]
Thoughtworks
Show claims
  • Line coverage shows code was executed, not that the tests check its behaviour

    Probably right

    “all your tests are [ __ ] green but they're not finding all the problems”

    1 of 3 sources
  • Automated tests give little feedback on whether a feature serves users or whether the codebase is healthy.

    Leans partly right

    “looking at the page seeing how it feels clicking around it's not something that's conducive to tests”

    only this source
  • Confidence from programmer-written tests led many teams to drop QA and ship lower quality.

    Leans partly right

    “it gave them overconfidence I think it gave them overconfidence in the quality with which they can produce software through testing”

    only this source
  • Strict TDD, which forbids production code without a failing test, is incompatible with trading off coverage by criticality.

    Untestable

    “you can't on the one hand claim well we need 100% coverage because that's our design methodology”

    only this source
  • Programmers taking responsibility for quality was a large improvement over throwing code over the wall to QA.

    Leans partly right

    “programmers accepting responsibility for the quality of their work that that was a huge step forward”

    only this source
  • Automating scripted QA checks lets teams get release answers in hours instead of weeks.

    Leans partly right

    “we can get some answers in you know hours”

    only this source
  • Being on call for production teaches developers which tests and feedback loops they are missing.

    Leans partly right

    “the on call um uh is the feedback loop that teaches you uh what tests you didn't write”

    only this source
  • How much to invest in tests depends on required feedback frequency, fidelity, overhead and the expected lifespan of the code.

    Untestable

    “there's a Continuum of lifespan and and lifespan isn't just measured in years”

    1 of 3 sources
  • A trustworthy automated test suite lets developers change and deploy code without fear

    Leans partly right

    “to be able to run the tests and go okay I don't have to worry about stuff breaking elsewhere is such a magnificent plus”

    1 of 5 sources
1.48new and sound
+1
DORA | Capabilities: Trunk-based development
dora.dev
Show claims
  • Running the automated test suite before every commit keeps trunk releasable

    Leans right

    “it's essential that tests are run against code changes before commit”

    only this source
  • Reviewing code synchronously at commit time rather than asynchronously reduces merge delay and conflicts

    Leans partly right

    “The longer a merge is delayed, the more likely it is to create merge conflicts and associated issues.”

    only this source
  • Trunk-based development requires developers to learn to work in small batches, which many find hard and resist

    Leans partly right

    “Many developers simply can't imagine working in this way.”

    only this source
  • Pull-request review delays feedback and pushes developers to batch changes, making daily integration impossible.

    Leans partly right

    “When code review is laborious and takes hours or days, developers avoid working in small batches”

    1 of 2 sources
  • Long-lived branches delay integration and produce merge conflicts that grow with team size

    Leans right

    “large merges frequently introduce bugs or regressions”

    1 of 4 sources
  • Pair programming provides continuous code review without adding a separate review step that slows delivery.

    Leans partly right

    “If your team practices pair programming, then the code has already been reviewed by a second person.”

    1 of 4 sources
  • Trunk-based development with one small change per release increases release frequency and makes rollbacks easier

    Leans partly right

    “teams achieve higher levels of software delivery and operational performance (delivery speed, stability, and availability) if they follow these practices”

    1 of 5 sources
  • Small pull requests are picked up and merged faster

    Leans right

    “it is hard to reason about the impact of large changes on a system through inspection, defects are likely to escape the attention of reviewers”

    1 of 5 sources
1.47new and sound
+1
On Pair Programming
martinfowler.com
Show claims
  • Pairing all day is unsustainable because sustained joint focus is exhausting

    Leans partly right

    “In our experience, that is not sustainable. First of all it is just too exhausting.”

    only this source
  • After-the-fact code review is weaker than pairing because reviewers skim, defer to the author and resist rework already invested

    Leans partly right

    “We disagree that code reviews are a good enough alternative to pairing.”

    only this source
  • Juniors who always pair can lose confidence and miss learning to solve problems alone

    Leans partly right

    “junior programmers can also experience a loss of confidence in their own abilities when pairing”

    only this source
  • Power dynamics such as seniority or gender distort pairing when one person dominates the keyboard or dismisses suggestions

    Leans partly right

    “One person is dominating the pairing session by hogging the keyboard and not giving room to their pairing partner.”

    only this source
  • Pairing limits team work in progress, which improves flow

    Leans partly right

    “pair programming limits the number of things a team can work on in parallel, and therefore increases the overall focus”

    only this source
  • Pairing's value cannot be proven scientifically because development output is too hard to measure, so teams must try it themselves

    Leans wrong

    “Staunch opponents of pairing will always find ways to poke holes into the reproducibility”

    only this source
  • Rote, repetitive code is a design smell, and pairing helps find the missing abstraction

    Leans partly right

    “rote tasks might be a smell for bad design: Pairing can help you find the right abstraction for that boring code”

    1 of 2 sources
  • Mob programming onboards new members quickly and spreads knowledge so the team does not depend on one person

    Leans partly right

    “Having two people work on a piece of the code helps the team spread knowledge on technology and domain on a daily basis”

    1 of 5 sources
  • Pairing or mobbing puts the best of each participant into the code and rarely the worst

    Leans partly right

    “When we pair, we have 4 eyes on the little and the bigger things as we go, more errors will get caught”

    1 of 6 sources
1.41new and sound
+1
Story Points Revisited
ronjeffries.com
Show claims
  • Frequent small releases deliver more value than big-bang releases whose dates keep receding

    Leans right

    “we do best to provide small amounts of value frequently, not wait for Big Bang releases that seem often to recede indefinitely into the future”

    only this source
  • Story points began as renamed ideal days, meant only to decide how much work fits an iteration

    Untestable

    “we really only used the points to decide how much work to take into an iteration anyway”

    only this source
  • Tracking estimates against actuals shifts attention from delivering value to improving estimates

    Leans partly right

    “I think tracking how actuals compare with estimates is at best wasteful”

    only this source
  • Slicing stories small enough to finish in about a day gives a smooth flow of value and removes most need for estimates

    Leans partly right

    “slice stories down until they just need a single acceptance test”

    only this source
  • Using story points to predict delivery dates is weak, and comparing teams by velocity or estimate accuracy is harmful

    Leans partly right

    “I think comparing teams on quality of estimates or velocity is harmful.”

    1 of 2 sources
  • Estimates become deadlines, and deadlines drive the overtime that destroys sustainable pace.

    Leans partly right

    “Because estimates are at least implicated in the application of undue pressure, I'd prefer to avoid them.”

    1 of 3 sources
  • Code in unhealthy files has many times more defects and takes several times longer to change than healthy code

    Leans partly right

    “the team tries to go faster, and wind up skimping on code quality and on tests. They soon begin shipping more defects”

    1 of 3 sources
  • Short fixed-budget increments let the business decide early whether to continue or kill a project, reducing risk without estimates.

    Leans partly right

    “the important thing in Real Agile is to pick the next few things to do, and do them promptly”

    1 of 3 sources
1.38new and sound
+1
Deconstructing the Monolith - Shopify
Shopify
Show claims
  • Monoliths without enforced boundaries become so coupled that small changes have unexpected effects and newcomers need enormous context

    Leans right

    “Making a seemingly innocuous change could trigger a cascade of unrelated test failures.”

    only this source
  • Moving functionality across service boundaries is far harder than refactoring inside one process

    Leans right

    “large refactors across multiple services can be tedious, requiring changes across all dependent services and coordinating deploys”

    1 of 3 sources
  • Organising code by business domain rather than technical layer makes code and its owners easier to find

    Leans partly right

    “re-organize it by real-world concepts (like orders, shipping, inventory, and billing), in an attempt to make it easier to locate code”

    only this source
  • Early in a system's life little design is needed; design investment should start when feature speed begins to slow

    Leans partly right

    “in the early stages of most applications you can move very quickly with little design”

    1 of 2 sources
  • Keeping modules in one process with enforced boundaries gets most of the modularity benefit without the distribution cost

    Leans partly right

    “A modular monolith is a system where all of the code powers a single application and there are strictly enforced boundaries between different domains.”

    1 of 3 sources
  • Service boundaries are usually wrong on the first attempt because the domain is not yet understood, so systems built as microservices from scratch tend to end in trouble

    Leans partly right

    “Designing a complex system of microservices before you have domain expertise is a risky move that too many software projects fall into.”

    1 of 3 sources
  • Hype drives teams to adopt microservices they do not need, adding cost and risk

    Leans partly right

    “Microservices surged in popularity in recent years and were touted as the end-all solution to all of the problems arising from monoliths.”

    1 of 5 sources
  • A single-process monolith is the right default and microservices need a specific justifying outcome

    Leans right

    “no architecture is often the best architecture in the early days of a system”

    1 of 6 sources
  • Microservices cost more in the short term and rarely save money

    Leans right

    “communicating between services means crossing the network, which adds latency and decreases reliability with every call”

    1 of 10 sources
1.34new and sound
+1
Technical Neglect, Kevlin Henney
Codecamp Romania
Show claims
  • Tools that assign a monetary figure to technical debt produce made-up numbers

    Leans partly right

    “tools that will look over your code base and say here is how much technical debt you have”

    only this source
  • Organizations often scale headcount to cope with the mess created by their own neglect rather than to add value

    Unknown

    “most organizations when they scale they scale for the wrong reasons they scale to manage failure”

    only this source
  • Unmanaged technical debt undermines security because code and dependencies nobody understands cannot be reasoned about

    Leans partly right

    “if you don't know your dependencies you can't make claims about security”

    only this source
  • Focusing on one change inevitably leaves side-effect mess that must be cleaned up afterwards

    Leans partly right

    “there is inevitably going to be some other consequence that you will have to address”

    only this source
  • Code does not decay on its own; degradation comes from the changes made to it

    Leans partly right

    “if you leave a piece of code and don't touch it for 10 years there is no intrinsic rotting or decaying”

    only this source
  • Debt is prudent when taken deliberately to ship sooner with small interest, and reckless when taken without understanding its cost

    Untestable

    “a little debt speeds development so long as it is paid back promptly with a rewrite”

    1 of 2 sources
  • Technical debt consumes a substantial fraction of developers' working time

    Leans partly right

    “out of an 8 hour working day a developer would spend 7 hour hours on failure demand”

    1 of 2 sources
  • Teams that stop reading agent-written code accumulate hidden defects that later force large rewrites

    Leans partly right

    “they have automated the creation of Legacy code and have redefined their role as debugging and fixing such code”

    1 of 2 sources
  • Legacy code results from technical neglect, the failure to keep refactoring, rather than from technical debt itself

    Leans partly right

    “your problem is technical neglect because we have to ask the question where did the technical debt come from”

    1 of 3 sources
1.31new and sound
+1
Review: A Philosophy of Software Design by John Ousterhout
Yevgeniy Brikman
Show claims
  • Modular decomposition behind simple interfaces reduces the information a programmer must hold in mind at once

    Leans right

    “It reduces dependencies, as you can’t build dependencies on things that are hidden from you.”

    1 of 3 sources
  • Software complexity is whatever makes a system hard to understand and modify, and is judged by its readers rather than its writers

    Leans partly right

    “Complexity is mostly determined by the readers of the code, not the writers. If other developers think your code is complex, then it is.”

    only this source
  • Defining errors out of existence at the interface removes whole classes of error handling

    Leans partly right

    “By changing the definition of the interface, you eliminate an entire set of possible errors, reducing complexity for everyone.”

    only this source
  • Consistency across a codebase is worth more than any individual better idea that would break it

    Leans partly right

    “the value of consistency over inconsistency is almost always greater than the value of one approach over another”

    only this source
  • Early in a system's life little design is needed; design investment should start when feature speed begins to slow

    Leans partly right

    “investing in the long-term design of your code may not pay off, as much of your code is likely to be thrown away”

    1 of 2 sources
  • Functions should be extracted until each does one thing, meaning nothing further can be meaningfully extracted

    Leans partly right

    “you can read a handful of method names, which makes the code easier to understand”

    1 of 2 sources
  • Legacy code results from technical neglect, the failure to keep refactoring, rather than from technical debt itself

    Leans partly right

    “invest ~20% of your time in improving the design of the code for the long term”

    1 of 3 sources
  • Static typing catches type errors at compile time before code reaches users

    Probably right

    “A very closely related idea that this book misses is to “make illegal states unrepresentable.””

    1 of 5 sources
1.31new and sound
+1
95%-ile isn't that good
danluu.com
Show claims
  • Skilled coaching beats peer or self feedback for improving at a skill

    Leans right

    “having a skilled coach or teacher give one-on-one instruction is more effective still”

    only this source
  • Reaching the top few percent in most activities mainly requires correcting basic, observable mistakes rather than talent

    Leans partly right

    “most people can become (relatively) good at most things”

    only this source
  • Getting feedback on one's own work yields large improvements because almost no practitioners seek any

    Leans partly right

    “improve slowly when getting feedback would make improving quickly easy”

    only this source
  • Tracking where programming time actually goes reveals large, fixable waste that self-perception misses

    Leans partly right

    “When I've recorded what people do and compare it to what they think they're doing, these are often quite different.”

    only this source
  • Test-first development reduces time spent debugging

    Leans partly right

    “I now test each function as I write it to make sure they work”

    1 of 5 sources
1.30new and sound
+1
Clean Coders Hate What Happens to Your Code When You Use These Enterprise Programming Tricks
NDC Conferences
Show claims
  • Taking on small third-party dependencies for trivial functions adds fragility out of proportion to the code saved

    Leans right

    “one developer just broke node bab and thousands of projects and 11 lines of JavaScript”

    only this source
  • Coding conventions spread by repetition rather than understanding, producing cargo-cult practices

    Untestable

    “this is how coding guidelines and Enterprise cultures are created by the repetition of an idea”

    only this source
  • Work expands to fill the time and headcount given to it

    Leans partly right

    “if you tell people this is going to be six months worth of work they will pack it full to the six months and Beyond”

    only this source
  • Names carry most of a program's design intent, so vague names like Manager signal weak design

    Leans partly right

    “the name is not merely a label on your design your name is your design”

    only this source
  • Logging without stated requirements grows until it dominates the codebase

    Unknown

    “logging is the most important single most important activity in that code base”

    only this source
  • Comments that restate code are noise and drift out of date because nothing checks them

    Leans partly right

    “a misleading comment can be very confusing third the issue of typography comments clutter code”

    1 of 2 sources
  • Applying design patterns such as factories everywhere makes code harder to understand than direct code

    Leans partly right

    “and this has led to as it were the over adoption of factory”

    1 of 2 sources
1.25new and sound
+1
GitHub - johnousterhout/aposd-vs-clean-code: A discussion between John Ousterhout and Robert Martin about differences between John's book "A Philosophy of Software Design" and Bob's book "Clean Code".
GitHub
Show claims
  • Modular decomposition behind simple interfaces reduces the information a programmer must hold in mind at once

    Leans right

    “one of the most important ways to reduce the amount of information a programmer has to keep in their mind at once”

    1 of 3 sources
  • Test-driven development produces no better quality or productivity than other disciplined testing approaches.

    Probably right

    “To do that, we'd need empirical data about the frequency of good and bad outcomes from TDD. Unfortunately I'm not aware of any such data.”

    1 of 3 sources
  • Treating comments as failures leads to under-documented code, and missing comments cost far more time than incorrect ones

    Leans partly right

    “For me the cost of missing comments is easily 10-100x the cost of incorrect comments.”

    only this source
  • Decomposing code into very small methods can go too far, producing shallow interfaces and entangled methods that are harder to read than one longer method

    Leans partly right

    “it encourages programmers to create teeny-tiny methods that suffer from both shallow interfaces and entanglement”

    1 of 2 sources
  • Every comment is a failure to express intent in code and should be treated as a necessary evil.

    Leans partly right

    “I prefer long names to comments. I don't trust comments to be maintained, nor do I trust that they will be read.”

    1 of 2 sources
  • Driving architecture from unit tests without an up-front domain model yields a procedural, bottom-up design that cannot be refactored out of.

    Leans partly right

    “it forces developers to work too tactically, in units of development that are too small; it discourages design thinking”

    1 of 2 sources
  • Once a developer has internalised test-driven design thinking, the design benefit remains even if the tests are no longer written first

    Unknown

    “working in small units, and then immediately writing after the fact tests, can give you all the above advantages”

    1 of 3 sources
  • Most software effort goes into understanding, maintaining, extending and operating code rather than writing it

    Leans right

    “Programmers spend far more hours reading code than writing code, so the activity we want to ease is that of reading.”

    1 of 5 sources
  • A trustworthy automated test suite lets developers change and deploy code without fear

    Leans partly right

    “Enabling fearless refactoring? BINGO! This is the where almost all of the benefits from unit testing come from”

    1 of 5 sources
  • Test-first development reduces time spent debugging

    Leans partly right

    “The benefit comes because unit tests expose bugs earlier and in an environment where they are easier to track down.”

    1 of 5 sources
  • Preferring runtime polymorphism over switch statements makes code slower by forcing pointer indirection and hiding the code path from the compiler

    Leans right

    “this revision of the code creates a serious performance regression: I measured a factor of 3-4x slowdown compared to either of the earlier revisions”

    1 of 5 sources
  • Writing tests first forces the code to be decoupled and testable by construction

    Leans partly right

    “every small part of the system must be designed to be testable, and testability requires decoupling”

    1 of 6 sources
1.25new and sound
+1
Challenging the Myth of the 10x Programmer
Software Engineering Institute | Carnegie Mellon University
Show claims
  • Experience, lines of code written and degrees held did not predict programmer productivity.

    Leans partly right

    “what about degrees obtained nothing mattered”

    only this source
  • Productivity differences across programmers follow a long-tailed log-normal distribution, not a bell curve.

    Leans partly right

    “the distribution isn't a bells curve it's more log normal long tail”

    only this source
  • Small tasks are easier to estimate and reveal runaway work early enough for the team to intervene.

    Leans partly right

    “it's easier to estimate it's easier to know when it's gone off the rails”

    only this source
  • Shortening sprints too far increases estimation uncertainty because each sprint samples less work.

    Leans partly right

    “what happens when you reduce your sample size the uncertainty becomes bigger”

    only this source
  • Hiring super-programmers is a poor route to team productivity compared with improving the working environment.

    Leans partly right

    “you're going to be hard-pressed to really up the productivity by finding that super fast programmer”

    1 of 2 sources
  • The 10x spread between fastest and slowest programmers is mostly noise: a programmer's own task-to-task variation is as large as the variation between programmers.

    Leans partly right

    “the variation within a programmer within a programmer's own 10 programs was comparable to the variation between programmers”

    1 of 3 sources
1.23new and sound
+1
You Must Be CRAZY To Do Pair Programming
Modern Software Engineering
Show claims
  • A pair finishes a task faster than one person but spends more total person-hours on it

    Leans right

    “two people are nearly but not quite twice as fast”

    only this source
  • Pairing pays off on novel, hard work and wastes effort on routine or repetitive tasks

    Leans partly right

    “it's dumb to waste two people's time on the boring repetitive stuff”

    only this source
  • Skill mismatch within a pair matters little; every expert and novice combination produces value

    Leans partly right

    “it really doesn't matter very much what the what the combinations are all of them have some value”

    only this source
  • Most developers who try pair programming end up preferring it.

    Leans partly right

    “they also had much higher confidence in their solutions”

    1 of 4 sources
  • Pair programming provides continuous code review without adding a separate review step that slows delivery.

    Leans partly right

    “i could cure that by having some form of always-on review pair programming”

    1 of 4 sources
  • Mob programming onboards new members quickly and spreads knowledge so the team does not depend on one person

    Leans partly right

    “i know of no better way of spreading learning”

    1 of 5 sources
  • Pairing or mobbing puts the best of each participant into the code and rarely the worst

    Leans partly right

    “all of the studies that I've ever seen show this increase in quality”

    1 of 6 sources
1.21new and sound
+1
"Pair Programming Fixed Our Pull Request Bottlenecks"
Modern Software Engineering
Show claims
  • Capping pull request size makes developers chain dependent branches instead of working in smaller steps

    Leans partly right

    “when they were finished with one full request then they just started a new branch based on that full request”

    only this source
  • Working together builds psychological safety better than anything else

    Leans partly right

    “nothing builds community in the team with psychological safety and all that as actually working together”

    only this source
  • Pairing makes waste like slow builds visible and fixed because two people waiting will not tolerate what one accepts

    Leans partly right

    “when you're two people sitting on waiting this team, the first time maybe it's drinking a little coffee and it's okay”

    only this source
  • Per-change pull request gates break down under continuous delivery with many deployments a day

    Leans wrong

    “If all of these four are to create pull requests all the time for all of the small changes, the team will break down immediately”

    only this source
  • Pairs sustain focus better than individuals working alone.

    Leans partly right

    “if you're pair programming then you're in flow state all the time. and and it's also like an um buffer from the outer world”

    1 of 2 sources
  • Rotating the driver every few minutes keeps every team member engaged

    Leans partly right

    “he is showing a junior for an hour and that is not pairing”

    1 of 2 sources
  • Programming needs blocks of at least half a day, so a single mid-block meeting destroys the block

    Leans partly right

    “someone interrupt me it takes around 15 minutes to get back into flow state”

    1 of 3 sources
  • Pair programming provides continuous code review without adding a separate review step that slows delivery.

    Leans partly right

    “You don't you don't have to spend time on P request because the way the work is already done as part of peering.”

    1 of 4 sources
  • Most developers who try pair programming end up preferring it.

    Leans partly right

    “that's much more personally rewarding even to an old introvert like me”

    1 of 4 sources
  • Mob programming onboards new members quickly and spreads knowledge so the team does not depend on one person

    Leans partly right

    “I have never seen teams learn as quickly or as effectively without bare programming as with it.”

    1 of 5 sources
  • Pairing or mobbing puts the best of each participant into the code and rarely the worst

    Leans partly right

    “on the defects side we have very few defects in production”

    1 of 6 sources
1.15new and sound
+1
Static vs dynamic typed languages: an intentionally rigged experiment
Vivek Haldar
Show claims
  • In-editor type errors give faster feedback than running the program and tracing a crash.

    Probably right

    “the stat system identified all the places where changes needed to be made at compile time”

    1 of 2 sources
  • Complex generic type annotations slow development in statically typed languages on simple algorithmic tasks.

    Leans partly right

    “it is almost twice as fast to solve the problem in groovy a dynamically typed language”

    only this source
  • Controlled experiments show statically typed languages have usability advantages over dynamically typed ones.

    Probably partly right

    “this reinforces a lot of earlier studies that showed the usability benefits of statically typed languages”

    only this source
  • Static typing forces implementing an entire interface up front even when only part of it is used.

    Leans partly right

    “to solve this in a statically typed language you would have to implement all 26 methods”

    only this source
1.13new and sound
+1
Mob Programming, A Whole Team Approach - Woody Zuill
NDC Conferences
Show claims
  • Working as one group on one stream of work removes merge conflicts

    Leans right

    “with this we've never had merging problems”

    only this source
  • Having the whole team at one keyboard eliminates waiting for answers to blocking questions

    Leans partly right

    “we just automatically noticed we weren't waiting to get answers to questions anymore because everybody was there”

    only this source
  • Mob programming finishes stories in hours that took individuals working separately weeks

    Unknown

    “stories that used to take two weeks for individuals working separately to get done we're now getting done in three or four hours”

    only this source
  • Switching tasks to fill time while blocked creates work-in-progress inventory instead of fixing the queueing problem

    Leans partly right

    “let's not solve a queueing problem by introducing an inventory problem”

    only this source
  • Sustained mob programming requires members to treat each other with kindness, consideration and respect

    Untestable

    “I want to be treated with kindness consideration and respect”

    only this source
  • Short daily retrospectives keep improvement on track better than infrequent longer ones

    Unknown

    “at the end of every day we'd have a 10 minute retrospective”

    only this source
  • Mob programming onboards new members quickly and spreads knowledge so the team does not depend on one person

    Leans partly right

    “it's a very fast way to onboard new team members”

    1 of 5 sources
  • Pairing or mobbing puts the best of each participant into the code and rarely the worst

    Leans partly right

    “when I work with a pair the best of both of us and almost never the worst of either of us gets into it”

    1 of 6 sources
1.09new and sound
+1
Jim Coplien and Bob Martin Debate TDD
alexsmail
Show claims
  • Shipping code that has not been exercised by a unit test is unprofessional, and TDD is the surest way to avoid it.

    Leans partly right

    “it is irresponsible for a developer to ship a line of code that he has not executed in unit test”

    only this source
  • Architecture should evolve incrementally, informed by executing code and tests, rather than be designed in full up front.

    Leans partly right

    “the architecture evolves it is informed by code that executes and it is informed by the test that you write”

    only this source
  • Some domain structure must be fixed up front because incremental refactoring cannot reach the right architecture from a naive starting point.

    Leans partly right

    “you're not going to refactor your way to the right architecture from from that one”

    only this source
  • Design by contract covers the whole input range of a method, giving broader assurance than sampled unit tests.

    Leans partly right

    “they actually give you broader coverage because you're covering the entire range of the arguments rather than just you know randomly scattering some values”

    only this source
  • Class-level unit tests are hard to trace to business value.

    Untestable

    “it's really really difficult to trace those those apis at a class level sometimes all the way up to business significance”

    only this source
  • Driving architecture from unit tests without an up-front domain model yields a procedural, bottom-up design that cannot be refactored out of.

    Leans partly right

    “leads to a procedural bottomup architecture because the things you're testing are units”

    1 of 2 sources
  • Writing tests slows delivery by a meaningful fraction compared with not writing them

    Leans partly right

    “the code mass is is about the same as a test mass and whereas there's code there's bugs you cut your velocity in half”

    1 of 2 sources
1.07new and sound
+1
DORA Metrics: We've Been Using Them Wrong
LinearB
Show claims
  • DORA metrics measure delivery velocity and stability but do not translate directly into business outcomes

    Leans partly right

    “Dora metrics don't always equal business outcomes the two are not the same thing”

    only this source
  • DORA metrics are retrospective and cannot be acted on until after code has shipped

    Leans partly right

    “when you measure them your process has already happened”

    only this source
  • Pull requests spend about half their lifetime idle waiting for someone

    Leans partly right

    “half of all pull requests that we analyzed are idle for half of their lifespan”

    only this source
  • Developers do not care about DORA metrics, only about merging their code quickly

    Untestable

    “developers don't really care about Dora metrics”

    only this source
  • Automatically approving trivial changes and routing risky ones to senior reviewers speeds flow without losing safety

    Leans partly right

    “minor changes like a text file or uh something like that automatically approved you know you don't even need a reviewer on that”

    only this source
  • Small pull requests are picked up and merged faster

    Leans right

    “PR's under 200 dip size under 200 lines of code changes get merged twice as fast”

    1 of 5 sources
  • Smaller changes mean less rework, fewer incidents and faster restoration

    Leans partly right

    “smaller PRS means less churn because there's less to review less back and forth”

    1 of 6 sources
1.05new and sound
+1
🚀 TDD, Where Did It All Go Wrong (Ian Cooper)
DevTernity Conference
Show claims
  • Writing a test per method and mocking every dependency couples tests to implementation so refactoring breaks them

    Leans right

    “all these tests with mocks they broke and we had to rewrite all the mocks”

    1 of 2 sources
  • Slow UI-driven end-to-end test suites are fragile and break on cosmetic changes

    Leans right

    “the tools all break because I changed the way that my widgets work”

    1 of 3 sources
  • In TDD the unit of isolation is the test, not the class under test

    Untestable

    “the unit of isolation is the test not the thing under test”

    only this source
  • Customer-readable acceptance test suites are rarely read by customers and carry a heavy maintenance burden

    Leans partly right

    “the customers never really looked at this stuff right”

    only this source
  • Getting a test to green with quick dirty code and then refactoring is faster than engineering the design up front

    Leans partly right

    “for this brief moment speed Trump's design I want to get there as fast as I can”

    only this source
  • The refactoring step needs no new tests because behaviour is unchanged and already covered

    Untestable

    “when you refactor and this is the really important part you do not write any new tests”

    only this source
  • Tests written to probe implementation details should be deleted once they have served their purpose

    Untestable

    “at the end of that process delete the tests the tests help guide you but now they're a burden to somebody else”

    only this source
  • Writing tests slows delivery by a meaningful fraction compared with not writing them

    Leans partly right

    “we were you know twenty to fifty percent slower than we had been before by writing tests”

    1 of 2 sources
1.02new and sound
+1
The 10X Programmer, and other Myths
blog.glitch.com
Show claims
  • The claim that defect fix cost rises exponentially by lifecycle phase has no verifiable measurement behind it

    Leans right

    “I could not find any solid proof that someone had measured something and came up with those fantastic costs”

    only this source
  • Software project failure rates and crisis figures are exaggerated and often based on opinion surveys

    Leans partly right

    “I think the crisis is very much over-exploited, very overblown”

    only this source
  • Software folklore spreads because the field is fashion-driven and debunking costs more effort than asserting

    Leans partly right

    “it takes a lot more energy to debunk a claim than it takes to just make things up”

    only this source
  • Easy-to-repeat claims act as curiosity stoppers that prevent investigating what actually makes projects succeed

    Untestable

    “they act as curiosity stoppers, basically”

    only this source
  • The 10x spread between fastest and slowest programmers is mostly noise: a programmer's own task-to-task variation is as large as the variation between programmers.

    Leans partly right

    “in many cases the research was done on very small groups and was not extremely representative”

    1 of 3 sources
1.01new and sound
+1
SWETUGG 2015 - Is TDD Dead? What are the alternatives? - Emily Bache
Swetugg
Show claims
  • Unit tests alone cannot catch integration errors, so a suite of only unit tests does not make code self-testing.

    Leans right

    “there are classes of defects that unit tests do not find kind of by definition they do not find integration errors”

    only this source
  • Slow UI-driven end-to-end test suites are fragile and break on cosmetic changes

    Leans right

    “it's actually very difficult to get the threading and the timing right for a machine to use the user interface”

    1 of 3 sources
  • TDD biases design toward extra abstraction and indirection, which harms clarity unless the designer pushes back.

    Leans partly right

    “tdd gives you a bias uh a bias towards in Direction and interfaces and all that”

    1 of 2 sources
  • The right mix of unit and higher-level tests depends on where a system's complexity lives, not on fixed pyramid ratios.

    Leans partly right

    “the pyramid might not look like a pyramid it might it might actually look like you flipped it but that might be the right decision”

    1 of 2 sources
  • Higher-level tests often pay back better than unit tests at finding bugs in integration-heavy code.

    Leans partly right

    “if you do them well they actually I think pay back very well in finding bugs often compared with unit tests”

    1 of 3 sources
1.00new and sound
+1
Revisiting Spolsky's "Things You Should Never Do, Part I"
natashajaffe.substack.com
Show claims
  • A rewrite is viable when the codebase is small, the product is not the main revenue source and there is a compelling business case

    Leans partly right

    “If the business case is strong then think critically about the size and complexity of the code as it stands today.”

    only this source
  • Rewrite duration grows faster than linearly with codebase size and complexity, making estimates for large rewrites unreliable

    Leans partly right

    “accurately estimating the time a rewrite will take is very hard”

    only this source
  • Tech debt and distaste for old code alone are not a sufficient reason to rewrite a large successful product

    Leans partly right

    “If your only reason for completely rewriting your codebase is tech debt and visceral ick, don't do it.”

    only this source
  • Rewriting a working system from scratch throws away accumulated bug fixes and hands years of lead to competitors.

    Leans partly right

    “If this goes on for long enough your competitors will eat your lunch.”

    1 of 3 sources
  • Code is harder to read than to write, so programmers misjudge old code as a mess.

    Leans partly right

    “Old code is hairy for a reason. Each one of those hairs represents a weird bug that was detected, fixed, and vetted in real life.”

    1 of 3 sources
  • Architectural problems can be fixed by incremental refactoring without discarding the codebase.

    Leans partly right

    “at least with a refactor you get to deliver value along the way and stay alive”

    1 of 4 sources
0.98mixed
+1
Q&A with Vasco Duarte on the #NoEstimates Book
InfoQ
Show claims
  • Much delivered functionality is rarely or never used, so working through a prioritised backlog wastes effort compared with selecting high-impact items

    Leans partly right

    “many of the items of functionality we end up delivering to our customers are rarely or never used”

    only this source
  • Scope growth during a project is mostly value discovered while building, and following the original plan discards it

    Leans partly right

    “we discover value as we deliver what we had originally planned”

    only this source
  • Estimation techniques were developed for other industries and may not fit software

    Leans partly right

    “Let's not forget that estimation is not a technique developed for software projects.”

    only this source
  • Hitting an estimate has no value if the software built is the wrong thing.

    Untestable

    “On-time, on-budget record is a poor predictor of project success.”

    1 of 2 sources
  • Simply counting completed stories forecasts delivery as accurately as story-point estimation.

    Leans partly right

    “I project (forecast) the rate of delivery (delivered items divided by the time it took to deliver) into the future”

    1 of 2 sources
  • Most software projects run late or over budget, with few finishing early.

    Leans partly right

    “Of the large systems that are completed, about 66% experience schedule delays & cost overrun”

    1 of 3 sources
  • Estimates become deadlines, and deadlines drive the overtime that destroys sustainable pace.

    Leans partly right

    “additionally promote many different dysfunctions in the organization. In the book I explain some of those dysfunctions such as: estimate bargaining, political games”

    1 of 3 sources
  • Short fixed-budget increments let the business decide early whether to continue or kill a project, reducing risk without estimates.

    Leans partly right

    “we can easily decide which stories to take into a sprint without sizing those stories”

    1 of 3 sources
0.95mixed
+1
Clean Coder Blog
blog.cleancoder.com
Show claims
  • GUI-driven integration tests cannot reach a large fraction of code such as error handling and edge cases

    Leans right

    “you can’t reach all the code from the GUI”

    only this source
  • Slow UI-driven end-to-end test suites are fragile and break on cosmetic changes

    Leans right

    “Databases and GUIs are slow.”

    1 of 3 sources
  • Keeping code clean enough to keep development fast is worth more than the cost of building a trustworthy test suite

    Untestable

    “the benefit of keeping the code clean, and keeping the team moving fast, is so great”

    only this source
  • Tests serve as precise, unambiguous low-level documentation of the system

    Leans partly right

    “The tests act as accurate, precise, and unambiguous documentation at the lowest level of the system.”

    1 of 2 sources
  • A trustworthy automated test suite lets developers change and deploy code without fear

    Leans partly right

    “developers can quickly and easily clean the code without fear of breaking anything”

    1 of 5 sources
  • Test-first development reduces time spent debugging

    Leans partly right

    “We spend less time debugging.”

    1 of 5 sources
  • Writing tests first forces the code to be decoupled and testable by construction

    Leans partly right

    “Writing tests first requires decoupling that other testing strategies do not”

    1 of 6 sources
0.93mixed
+1
#NoEstimates (Allen Holub)
Allen Holub
Show claims
  • Team velocity is mostly set by organizational obstacles, so teams cannot raise it by working harder.

    Leans partly right

    “the only way you can make that number larger is to improve the environment”

    only this source
  • Most of a long backlog is wasted because items far down will change before they are reached.

    Leans partly right

    “any backlog that's got a 100 stories on it has got something really wrong with it”

    only this source
  • Hitting an estimate has no value if the software built is the wrong thing.

    Untestable

    “if you've built the wrong program you have not succeeded in doing so much of value”

    1 of 2 sources
  • Story points get converted back into time, defeating their purpose of keeping estimation away from the clock.

    Leans partly right

    “what you ended up with was The Madness of taking story points and turning them into time”

    1 of 2 sources
  • Simply counting completed stories forecasts delivery as accurately as story-point estimation.

    Leans partly right

    “we can just count stories and we get the same number either way”

    1 of 2 sources
  • Estimates become deadlines, and deadlines drive the overtime that destroys sustainable pace.

    Leans partly right

    “as soon as you have estimates you have deadlines and as soon as you have deadlines you have people working 18-hour days”

    1 of 3 sources
  • Short fixed-budget increments let the business decide early whether to continue or kill a project, reducing risk without estimates.

    Leans partly right

    “if we're doing the wrong thing we have the option of fixing it here really early”

    1 of 3 sources
  • Long-horizon task estimates are inaccurate and managers should not rely on them

    Leans partly right

    “the main problem with estimates is that estimates are always based on guesswork you're always guessing”

    1 of 4 sources
0.93mixed
+1
The “10x engineer:" 50 years ago and now
The Pragmatic Engineer
Show claims
  • Measuring software work in man-months is misleading because adding people does not add proportional progress

    Probably right

    “the man-month as a unit for measuring the size of a job is a dangerous and deceptive myth”

    only this source
  • Apparent standout productivity can reflect tenure, project selection, information hoarding or credit-taking rather than skill

    Unknown

    ““10x developer” behavior can actually be undetected toxic behavior under a different label”

    only this source
  • Version control and code review let junior engineers write production code safely, replacing hierarchical chief-programmer teams

    Leans partly right

    “What didn’t exist back then was source code control and code reviews to stop poorly written code making it to production.”

    only this source
  • Rapid individual output often comes at the cost of maintainability that the rest of the team pays for

    Unknown

    “might do so by writing unmaintainable code that several developers will struggle to modify, later”

    1 of 3 sources
  • Some programmers are vastly more productive than their typical peers

    Leans partly right

    “We’ve all seen developers who seem to be a lot more productive than others.”

    1 of 5 sources
0.91mixed
+1
"Clean" Code, Horrible Performance
computerenhance.com
Show claims
  • The performance penalty of class-hierarchy designs grows as the problem gets more complex

    Leans partly right

    “the more complex you make the problem, the more these ideas harm your performance”

    only this source
  • Avoiding repeated code does not conflict with writing fast code

    Leans partly right

    “we don’t have to violate it to write code that gets reasonable performance”

    only this source
  • Fusing data layout with the operation in table-driven, data-oriented code can be an order of magnitude faster than encapsulated class hierarchies

    Leans partly right

    “a table-driven version that’s fully 10x faster or more on the exact same problem”

    1 of 2 sources
  • Following clean-code structure rules can cost performance equivalent to a decade or more of hardware improvement

    Leans partly right

    “The first two rules of the “clean code” concept wipe out 12 years of hardware evolution, all by themselves.”

    1 of 2 sources
  • Code organised by operation rather than by type makes shared patterns visible and easier to simplify

    Untestable

    “When your code is organized by operation, rather than by type, it’s straightforward to observe and pull out common patterns.”

    1 of 2 sources
  • Clean-code rules were adopted for maintainability without evidence that they deliver it

    Leans partly right

    “The “clean” code rules were developed because someone thought they would produce more maintainable codebases.”

    1 of 2 sources
  • Preferring runtime polymorphism over switch statements makes code slower by forcing pointer indirection and hiding the code path from the compiler

    Leans right

    “writing the code the old fashioned way rather than the “clean” code way — gave us an immediate 1.5x performance increase”

    1 of 5 sources
0.90mixed
+1
Pair Programming Misconceptions
martinfowler.com
Show claims
  • Pair programming is an XP practice, not a requirement of agile

    Probably right

    “The manifesto doesn't mention pair programming and most agile methods don't make it part of their approach.”

    only this source
  • Rote, repetitive code is a design smell, and pairing helps find the missing abstraction

    Leans partly right

    “writing boring rote code is a smell. If I'm writing boring repetitive code it's usually a sign that I've missed an important abstraction”

    1 of 2 sources
  • Most developers who try pair programming end up preferring it.

    Leans partly right

    “They gave it a try, expecting to hate it, and found they really liked it.”

    1 of 4 sources
  • Most software effort goes into understanding, maintaining, extending and operating code rather than writing it

    Leans right

    “that would be true if the hardest part of programming was typing”

    1 of 5 sources
  • Pairing or mobbing puts the best of each participant into the code and rarely the worst

    Leans partly right

    “a pair is actually more productive that two separate developers. This is due to the continuous discussion and review”

    1 of 6 sources
0.90mixed
+1
The ideal PR is 50 lines long
Graphite
Show claims
  • Reviewer defect-finding effectiveness drops sharply once a single review exceeds a few hundred lines

    Leans right

    “There’s a practical limit to how much code your reviewer is willing to read - I suspect that 2k lines is the point”

    1 of 3 sources
  • Very large changes merge faster and are reverted less than mid-sized ones, likely because they are generated or refactor-only

    Leans partly right

    “post-5k lines, PRs start getting faster again. I can only assume this is a combination of blind stamps, assumed-safe refactors”

    only this source
  • Observed benefits of small PRs are partly selection: teams already practising trunk-based development make smaller PRs

    Leans partly right

    “We find that Graphite users tend to create smaller PRs in general, since many organizations use a trunk-based development style”

    only this source
  • Very small changes can be worse than mid-sized ones because their implications are hidden and they are reverted more often

    Leans partly right

    “Sub-10 line PRs are reverted noticeably more than 10-100 line PRs.”

    1 of 2 sources
  • Small pull requests are picked up and merged faster

    Leans right

    “50-line code changes are reviewed and merged ~40% faster than 250-line changes.”

    1 of 5 sources
  • Smaller changes mean less rework, fewer incidents and faster restoration

    Leans partly right

    “They’re 15% less likely to be reverted than 250-line changes”

    1 of 6 sources
0.89mixed
+1
Why Pull Requests Are a Bad Idea • Dave Farley • GOTO 2022
GOTO Conferences
Show claims
  • Asynchronous review loses the two-way conversation that makes review educational and lets the author explain intent.

    Leans partly right

    “so now we've lost two-way Communications as part of the review”

    only this source
  • Pull requests were designed to gatekeep untrusted open-source contributors and fit poorly inside a trusted team.

    Leans partly right

    “pull requests were invented to gatekeep access to open source projects”

    only this source
  • Pull-request review delays feedback and pushes developers to batch changes, making daily integration impossible.

    Leans partly right

    “if you can't process my pull request at least once per day then by definition continuous integration is impossible”

    1 of 2 sources
  • Pairs sustain focus better than individuals working alone.

    Leans partly right

    “pairs are actually able to sustain a better focus than individuals working alone”

    1 of 2 sources
  • Pair programming provides continuous code review without adding a separate review step that slows delivery.

    Leans partly right

    “that provides the second pair of eyes and the constant code review without slowing down the development process”

    1 of 4 sources
  • Most developers who try pair programming end up preferring it.

    Leans partly right

    “most people that I have seen try pair programming actually prefer it as a way of working”

    1 of 4 sources
  • Trunk-based development with one small change per release increases release frequency and makes rollbacks easier

    Leans partly right

    “if you don't check that your changes work alongside everybody else's at least once per day then statistically you produce lower quality software more slowly”

    1 of 5 sources
  • Pairing or mobbing puts the best of each participant into the code and rarely the worst

    Leans partly right

    “pairs make progress and nearly but not quite twice the rate of an individual working alone but they also produce work with significantly fewer defects”

    1 of 6 sources
0.86mixed
+1
Joel Spolsky, Things You Should Never Do: Rewriting the Code from Scratch
ratherabstract
Show claims
  • Performance problems concentrate in a small part of a system, so targeted optimization beats a full rewrite.

    Leans right

    “When optimizing for speed, 1% of the work gets you 99% of the bang.”

    only this source
  • A rewrite team is unlikely to do better because it lacks the original team's experience and repeats old mistakes.

    Leans partly right

    “there is absolutely no reason to believe that you are going to do a better job than you did the first time”

    1 of 2 sources
  • Rewriting a working system from scratch throws away accumulated bug fixes and hands years of lead to competitors.

    Leans partly right

    “When you throw away code and start from scratch, you are throwing away all that knowledge, all those collected bug fixes, years of programming work.”

    1 of 3 sources
  • Code is harder to read than to write, so programmers misjudge old code as a mess.

    Leans partly right

    “It's harder to read code than to write it.”

    1 of 3 sources
  • Architectural problems can be fixed by incremental refactoring without discarding the codebase.

    Leans partly right

    “Even fairly major architectural changes can be done without throwing away the code.”

    1 of 4 sources
0.85mixed
+1
Code review is no longer the bottleneck
OpenAI
Show claims
  • An AI reviewer can take an automated first pass at a pull request before a human reviews it.

    Leans right

    “Cloud code review has already taken a first pass.”

    only this source
  • AI-generated code volume outruns fixed human review capacity, making code review the bottleneck on shipping software

    Leans partly right

    “there's so much code being written all the time, all over all of our companies. Code review is the new bottleneck.”

    1 of 2 sources
  • Summarizing a change and its risks helps a reviewer understand unfamiliar code faster.

    Leans partly right

    “I can ask, summarize this change and explain the risks for this entire project.”

    1 of 2 sources
  • Keeping review feedback, discussion and fixes in one tool removes the context switching that slows review.

    Leans partly right

    “I can read the feedback alongside the change and I don't need to switch tools”

    1 of 2 sources
0.85mixed
+1
Story points considered harmful? 1 of 4 – Journey's start – Allan Kelly
allankelly.net
Show claims
  • Story-point velocity is only stable while the team is stable; adding or removing people changes it

    Leans right

    “I don't believe story points can ever be stable if you don't have a stable team”

    only this source
  • Story points forecast delivery only on average across several iterations, never for a single sprint

    Leans partly right

    “They are a good predictor over several sprints but they offer no guarantees for the next sprint/iteration.”

    only this source
  • Story-point estimation and sprint commitment are alternative ways to fill an iteration, not complements

    Untestable

    “in my book commitment and story pointing are alternatives”

    only this source
  • Long-horizon task estimates are inaccurate and managers should not rely on them

    Leans partly right

    “we can't estimate. By “we” I mean humans.”

    1 of 4 sources
0.81mixed
+1
Back to the Monolith: Why Did Amazon Dump Microservices? | Nordic APIs |
Nordic APIs
Show claims
  • No single architecture suits every scale, so architecture should be revisited with each order of magnitude of growth

    Untestable

    “with every order of magnitude of growth you should revisit your architecture”

    only this source
  • A single-process design suits long-running compute jobs and predictable traffic better than serverless functions

    Leans partly right

    “consider a monolithic approach for long-running computing jobs or when there are predictable traffic spikes”

    only this source
  • Microservices speed time to market

    Leans partly right

    “Microservices can help you get a product to market much more quickly, for one thing.”

    only this source
  • Decomposing a monolith only works if it already has a reasonably modular design; tangled monoliths just produce a mess

    Leans partly right

    “converting to microservices without proper planning simply trades bad code for faulty infrastructures”

    1 of 2 sources
  • Microservices' independent scaling and fault isolation pay off at very large scale where downtime is costly

    Leans partly right

    “microservices and serverless solutions often make sense for an organization of Amazon's size”

    1 of 2 sources
  • Hype drives teams to adopt microservices they do not need, adding cost and risk

    Leans partly right

    “it's just a lot of buzz that people are attaching their assignment to, when honestly it's not gonna necessarily solve their problem”

    1 of 5 sources
  • Microservices cost more in the short term and rarely save money

    Leans right

    “This monolithic conversion ended up saving their organization 90% on their monthly AWS bill.”

    1 of 10 sources
0.80mixed
+1
Small CLs
eng-practices
Show claims
  • Refactorings should be in separate changes from feature work and bug fixes so reviewers can understand each

    Leans partly right

    “It’s usually best to do refactorings in a separate CL from feature changes or bug fixes.”

    only this source
  • Every change that adds or alters logic should ship with its tests in the same change

    Unknown

    “A CL that adds or changes logic should be accompanied by new or updated tests for the new behavior.”

    only this source
  • Almost any large change can be decomposed into a series of small ones by an author who practises it

    Leans partly right

    “Authors who practice writing small CLs can almost always find a way to decompose functionality into a series of small changes.”

    only this source
  • Very small changes can be worse than mid-sized ones because their implications are hidden and they are reverted more often

    Leans partly right

    “The CL is not so small that its implications are difficult to understand.”

    1 of 2 sources
  • Small pull requests are picked up and merged faster

    Leans right

    “It’s easier for a reviewer to find five minutes several times to review small CLs than to set aside a 30 minute block”

    1 of 5 sources
  • Smaller changes mean less rework, fewer incidents and faster restoration

    Leans partly right

    “Since you’re making fewer changes, it’s easier for you and your reviewer to reason effectively about the impact of the CL”

    1 of 6 sources
0.78mixed
+1
Overtime & Crunching in Game Development (vs others)
Jason Weimann (GameDev)
Show claims
  • Most software developers, including game developers, work roughly normal hours with only occasional overtime

    Leans partly right

    “overall in general people work pretty damned normal times”

    only this source
  • Much developer overtime is self-imposed from passion rather than mandated by employers

    Leans partly right

    “it's developers who just really love their product and they can't stop working on it”

    only this source
  • Smaller companies tend to have somewhat more overtime than larger ones

    Unknown

    “the smaller companies tended to have a little bit more overtime”

    only this source
  • Game features need more iteration than business software because feel and fun cannot be specified on paper

    Untestable

    “giving that feel and fun on paper and planned out is a whole lot harder”

    only this source
  • Crunch is a symptom of poor planning, especially failing to schedule testing and iteration time

    Leans partly right

    “I think it's a terrible sign of just mismanagement and bad planning”

    1 of 2 sources
  • Sustained crunch lowers productivity and employee happiness

    Leans right

    “basically driving down their productivity in my opinion and driving down employee happiness”

    1 of 4 sources
  • Long-horizon task estimates are inaccurate and managers should not rely on them

    Leans partly right

    “don't want to get estimates that are out that long they're just inaccurate they're not very useful”

    1 of 4 sources
0.76mixed
+1
Agile is Dead • Pragmatic Dave Thomas • GOTO 2015
GOTO Conferences
Show claims
  • No software development rule is universal; every practice only works in a context

    Leans right

    “no rules are Universal fact every rule requires a context”

    only this source
  • Agile has been turned from an adjective into a product sold through certification, training and consultancy, losing the original values

    Untestable

    “the industry that sprung up around that Manifesto wanted to sell you things”

    only this source
  • Scaled agile frameworks appeal to large organisations because they look complex, not because they are shown to work

    Unknown

    “it appeals to a corporation because it's got little cute figures and it looks very complicated”

    only this source
  • A good design is one that is easier to change than a bad design, and every design principle follows from that

    Untestable

    “a good design is easier to change than a bad design”

    only this source
  • Agility means taking a small step, evaluating the result and repeating, rather than following a prescribed method

    Leans partly right

    “take a small step forward see where that got you and then revise your plan and repeat”

    only this source
  • Short certification courses produce practitioners who follow prescribed steps without understanding why

    Leans partly right

    “they end up getting stuck in this process where they don't actually know why they're doing what they're doing”

    only this source
  • Testing advocacy has become a dogma that shames developers who do not follow it

    Untestable

    “they now have this total bigotry about testing”

    1 of 2 sources
  • Once a developer has internalised test-driven design thinking, the design benefit remains even if the tests are no longer written first

    Unknown

    “I think about that as I'm coding and the test doesn't have to exist it still drives the design”

    1 of 3 sources
0.72mixed
+1
The 10x Programmer Myth
Simple Thread
Show claims
  • Slowing down to investigate a problem before coding reduces later cleanup

    Leans partly right

    “Once they reach a solution, you can be sure that people aren’t going to have to come behind them and clean things up.”

    only this source
  • Deep expertise in a narrow domain can make an engineer vastly more productive there but less useful elsewhere

    Leans partly right

    “If John Carmack was dropped into the average web development project, he wouldn’t be very happy or effective”

    only this source
  • Measured productivity gaps between programmers are mostly between competent and net-negative developers, not between good and great

    Leans partly right

    “Compared to someone like this, everyone is a 10x programmer!”

    1 of 2 sources
  • Rapid individual output often comes at the cost of maintainability that the rest of the team pays for

    Unknown

    “really all they are doing is leaning on the rest of the team to make themselves look productive”

    1 of 3 sources
  • Programming needs blocks of at least half a day, so a single mid-block meeting destroys the block

    Leans partly right

    “If you can reduce distractions, focus, and get into flow, then you’ll automatically be more effective than most software engineers.”

    1 of 3 sources
  • Excellence in engineering takes different forms; a few well-judged lines can be worth more than high-volume output

    Untestable

    “By avoiding a lot of extra software and overly complex processes, these developers can save their teams countless hours.”

    1 of 4 sources
0.71mixed
+1
The Majestic Monolith
Signal v. Noise
Show claims
  • A small team can maintain a large product across many platforms from a single integrated codebase

    Leans partly right

    “the only possible way to do so with a small team of ~12 programmers is do explicitly choose and commit to The Majestic Monolith”

    only this source
  • Many small services make it easy for knowledge to silo so only one person understands each part

    Leans partly right

    “It’s much easier to silo knowledge and responsibilities with a proliferation of smaller systems.”

    only this source
  • Coordination cost grows faster than linearly with team count on a shared codebase, which service boundaries contain

    Leans partly right

    “M/SOA fits the organizational shape of very large corporations.”

    1 of 5 sources
  • Hype drives teams to adopt microservices they do not need, adding cost and risk

    Leans partly right

    “The patterns that make sense for organizations orders of magnitude larger than yours, are often the exact opposite ones that’ll make sense for you.”

    1 of 5 sources
  • A single-process monolith is the right default and microservices need a specific justifying outcome

    Leans right

    “Integrate your systems until it’s impossible for one person to hold it all in their head.”

    1 of 6 sources
  • Microservices cost more in the short term and rarely save money

    Leans right

    “Every time you extract a collaboration between objects to a collaboration between systems, you’re accepting a world of hurt with a myriad of liabilities”

    1 of 10 sources
0.68mixed
+1
The Leprechauns of Software Engineering
adamtornhill.com
Show claims
  • The cone of uncertainty in estimation has no empirical basis

    Leans right

    “the cone of uncertainty”

    only this source
  • Many widely repeated software engineering facts trace back to sources that are missing, measure something else, or are methodologically flawed

    Leans partly right

    “that data is 1) often not there, 2) measures something else, or 3) suffers serious methodical problems”

    1 of 3 sources
  • The 10x spread between fastest and slowest programmers is mostly noise: a programmer's own task-to-task variation is as large as the variation between programmers.

    Leans partly right

    “the 10x productivity difference between programmers”

    1 of 3 sources
0.67mixed
+1
Maker's Schedule, Manager's Schedule
paulgraham.com
Show claims
  • Knowing a block will be interrupted deters starting ambitious work, so a meeting costs more than its duration

    Leans partly right

    “If I know the afternoon is going to be broken up, I'm slightly less likely to start something ambitious in the morning.”

    only this source
  • Clustering meetings at the end of the day preserves uninterrupted maker time

    Leans partly right

    “Because they come at the end of my day these meetings are never an interruption.”

    only this source
  • Managers and makers run on different schedules, and conflict arises when hourly manager slots are imposed on makers

    Untestable

    “Each type of schedule works fine by itself. Problems arise when they meet.”

    only this source
  • Programming needs blocks of at least half a day, so a single mid-block meeting destroys the block

    Leans partly right

    “A single meeting can blow a whole afternoon, by breaking it into two pieces each too small to do anything hard in.”

    1 of 3 sources
0.58mixed
+1
Mob Programming Basics – Mob Programming
mobprogramming.org
Show claims
  • In a mob the group coaches a less-skilled driver on the spot, raising everyone's skills

    Leans partly right

    “If the Driver is not highly skilled, the rest of the team will help by guiding the Driver in how to create the code”

    only this source
  • Rotating the driver every few minutes keeps every team member engaged

    Leans partly right

    “We rotate the Driver every 15 minutes.”

    1 of 2 sources
  • Most software effort goes into understanding, maintaining, extending and operating code rather than writing it

    Leans right

    “the real work of software development is the problem solving, not the typing”

    1 of 5 sources
  • Mob programming onboards new members quickly and spreads knowledge so the team does not depend on one person

    Leans partly right

    “we transfer knowledge quickly througout the team which quickly improves everyones coding skills”

    1 of 5 sources
0.50mixed
+1
Static vs Dynamic Typing
Boot dev
Show claims
  • Static typing produces fewer bugs and more readable code in large systems

    Leans partly right

    “the advice has always been static typing is better and the reason being it results in fewer bugs”

    only this source
  • Type inference gives static typing with dynamic-like brevity, removing most of the old verbosity trade-off

    Leans partly right

    “type inference basically gives us the best of both worlds it allows us to have static typing but with a very simple syntax”

    1 of 2 sources
  • Dynamic typing is faster for prototyping and rapid iteration

    Leans partly right

    “when we don't have to specify types as we're writing our code we're able to write the code a little more quickly”

    1 of 3 sources
  • Static typing suits safety- and performance-critical domains while dynamic typing suits fast-iteration domains

    Untestable

    “you can build large production back-end systems in statically typed or dynamically typed languages it's certainly been done both ways”

    1 of 4 sources
0.45mixed
+1
"Clean" Code, Horrible Performance
Molly Rocket
Show claims
  • Fusing data layout with the operation in table-driven, data-oriented code can be an order of magnitude faster than encapsulated class hierarchies

    Leans partly right

    “there's no way you're doing any of that using clean code principles because just the nature of how you're going to organize your data”

    1 of 2 sources
  • Clean-code rules were adopted for maintainability without evidence that they deliver it

    Leans partly right

    “there is really no way to objectively assess whether these clean code ideas are good or bad”

    1 of 2 sources
  • Following clean-code structure rules can cost performance equivalent to a decade or more of hardware improvement

    Leans partly right

    “for a certain segment of the Computing industry the answer of why is software so slow it's because of quote unquote clean code”

    1 of 2 sources
  • Code organised by operation rather than by type makes shared patterns visible and easier to simplify

    Untestable

    “it's really easy to pull out common patterns when you look at them put together by function rather than by class”

    1 of 2 sources
  • Preferring runtime polymorphism over switch statements makes code slower by forcing pointer indirection and hiding the code path from the compiler

    Leans right

    “you immediately get what is effectively a 1.5 x performance increase for not really doing anything other than removing all of that extraneous stuff”

    1 of 5 sources
0.45mixed
+1
The 10x developer is NOT a myth
Yevgeniy Brikman
Show claims
  • Productivity being hard to measure does not prevent sound judgments about large differences between people

    Untestable

    “Just because something is hard to measure doesn’t mean we can’t reason about it.”

    only this source
  • Skipping architecture review in a project's first weeks locks in decisions that take years to undo

    Leans partly right

    “a great programmer will know that errors are much more costly to fix later”

    1 of 2 sources
  • Hiring super-programmers is a poor route to team productivity compared with improving the working environment.

    Leans partly right

    “I wouldn’t recommend building a hiring strategy around solely hiring “rock stars”; you’ll end up looking foolish and lonely.”

    1 of 2 sources
  • Measured productivity gaps between programmers are mostly between competent and net-negative developers, not between good and great

    Leans partly right

    “the type of hires that can sink an organization, actively increasing tech debt with every line of code they write”

    1 of 2 sources
  • Excellence in engineering takes different forms; a few well-judged lines can be worth more than high-volume output

    Untestable

    “You become a 10x programmer not by doing an order of magnitude more work, but by making better decisions an order of magnitude more often.”

    1 of 4 sources
  • Some programmers are vastly more productive than their typical peers

    Leans partly right

    “the general finding that "There are order-of-magnitude differences among programmers" has been confirmed by many other studies of professional programmers”

    1 of 5 sources
0.43mixed
+1
Serverless was a big mistake... says Amazon
Fireship
Show claims
  • Serverless lets small teams ship without managing infrastructure and often within free tiers

    Leans partly right

    “I can easily deploy my shitty JavaScript code without ever having to think about infrastructure I rarely even bust out of the free tier”

    only this source
  • There are no solutions in cloud architecture, only trade-offs

    Untestable

    “when it comes to Cloud architecture there are no Solutions only trade-offs”

    only this source
  • Microservices' independent scaling and fault isolation pay off at very large scale where downtime is costly

    Leans partly right

    “if Netflix goes down for a few hours it'll cost them way more money and lost memberships”

    1 of 2 sources
  • Microservices cost more in the short term and rarely save money

    Leans right

    “they saved 90 on their Amazon web services bill by switching from serverless microservices to an Old-Fashioned monolith architecture”

    1 of 10 sources
0.42mixed
+1
Why you should write tests first - Uncle Bob
Dev Tools Made Simple
Show claims
  • Writing tests after the code leaves holes in the suite because hard-to-test code gets skipped

    Leans partly right

    “you walk away and you leave a hole in the test Suite”

    only this source
  • A test suite with known gaps gives no decision value when it passes, so it cannot be trusted

    Untestable

    “a test Suite that does does not allow you to make a decision when it passes is a useless test Suite”

    only this source
  • Making a failing test pass gives a small reward that makes test-first more enjoyable than writing tests afterwards

    Untestable

    “every time you make a test pass there's a little shot of endorphins to the back of your brain”

    only this source
  • Test-first development reduces time spent debugging

    Leans partly right

    “it reduces your debug time”

    1 of 5 sources
  • A trustworthy automated test suite lets developers change and deploy code without fear

    Leans partly right

    “the most profound effect is that button and the fact that you trust it”

    1 of 5 sources
  • Writing tests first forces the code to be decoupled and testable by construction

    Leans partly right

    “you cannot write the code that's hard to test if you write the test first”

    1 of 6 sources
0.39mixed
+1
Uncle Bob is Ruining Software
Hillel Wayne
Show claims
  • Best practices are inherited from what the most successful programmers do, which cannot distinguish good techniques from bad ones they succeed despite

    Leans partly right

    “We have no a priori way to determine whether a given practice is good or bad purely based on what the best programmers do”

    only this source
  • Making expert advocates argue opposing positions publicly is a partial substitute for missing research

    Untestable

    “We could force 10x programmers to argue topics, which I'd like to see happen more- it isn't great but it helps a little”

    only this source
  • Many widely repeated software engineering facts trace back to sources that are missing, measure something else, or are methodologically flawed

    Leans partly right

    “I can't look into the research because there's almost no software engineering research out there.”

    1 of 3 sources
  • Some programmers are vastly more productive than their typical peers

    Leans partly right

    “There are 10x programmers out there”

    1 of 5 sources
0.39mixed
+1
The problem with comments - Uncle Bob
Dev Tools Made Simple
Show claims
  • Editors render comments in muted colors, which trains developers to ignore and neglect them.

    Leans partly right

    “we paint our comments in colors that are easy to ignore because we don't want to see them”

    only this source
  • Every comment is a failure to express intent in code and should be treated as a necessary evil.

    Leans partly right

    “every comment you write is a failure”

    1 of 2 sources
  • Comments that restate code are noise and drift out of date because nothing checks them

    Leans partly right

    “comments silently rot because no one maintains them”

    1 of 2 sources
0.39mixed
+1
How small should a function be? - Robert C. Martin (Uncle Bob)
Dev Tools Made Simple
Show claims
  • Large functions are classes in disguise; extracting until stuck reveals hidden classes

    Leans partly right

    “every large function is really a class with a bunch of little tiny functions inside it”

    only this source
  • Function-length rules such as fit on one screen came from historical terminal sizes, not evidence

    Untestable

    “the rule came about your function should fit on a screen well that meant that the functions had to be about 20 lines”

    only this source
  • Functions should be extracted until each does one thing, meaning nothing further can be meaningfully extracted

    Leans partly right

    “a function does one thing if you cannot meaningfully extract another function from it”

    1 of 2 sources
0.36mixed
+1
Things You Should Never Do, Part I
Joel on Software
Show claims
  • A rewrite team is unlikely to do better because it lacks the original team's experience and repeats old mistakes.

    Leans partly right

    “there is absolutely no reason to believe that you are going to do a better job than you did the first time”

    1 of 2 sources
  • Rewriting a working system from scratch throws away accumulated bug fixes and hands years of lead to competitors.

    Leans partly right

    “When you throw away code and start from scratch, you are throwing away all that knowledge. All those collected bug fixes.”

    1 of 3 sources
  • Code is harder to read than to write, so programmers misjudge old code as a mess.

    Leans partly right

    “It's harder to read code than to write it.”

    1 of 3 sources
  • Architectural problems can be fixed by incremental refactoring without discarding the codebase.

    Leans partly right

    “These problems can be solved, one at a time, by carefully moving code, refactoring, changing interfaces.”

    1 of 4 sources
0.35mixed
+1
The Majestic Monolith can become The Citadel
Signal v. Noise
Show claims
  • Extracting one slice with divergent performance needs as a separate service captures most of the scaling benefit without distributing the whole system

    Leans partly right

    “The Outposts are there to allow the Majestic Monolith to offload a particular slice of divergent behavior”

    only this source
  • Many teams that adopted microservices are retreating to monoliths

    Unknown

    “As more and more people come to realize that the chase for microservices ended in a blind alley, the pendulum is going to swing back.”

    only this source
  • Coordination cost grows faster than linearly with team count on a shared codebase, which service boundaries contain

    Leans partly right

    “Maybe you’re dealing with very large teams that constantly have people tripping over each other”

    1 of 5 sources
  • A single-process monolith is the right default and microservices need a specific justifying outcome

    Leans right

    “the vast majority of web applications will continue to be served well by The Majestic Monolith for their entire lifespan”

    1 of 6 sources
0.33mixed
+1
Code Faster or Safer? Static vs Dynamic Typing
deep dive dev
Show claims
  • Static typing yields better runtime performance because the compiler knows each variable's memory layout

    Leans partly right

    “static typing leads to better performance while Dynamic typing is usually slower”

    1 of 3 sources
  • Dynamic typing is faster for prototyping and rapid iteration

    Leans partly right

    “dynamic typing is better for prototyping and fast iteration”

    1 of 3 sources
  • Static typing suits safety- and performance-critical domains while dynamic typing suits fast-iteration domains

    Untestable

    “statically typed languages are more popular for things like Financial software systems programming and game development where safety and performance is preferred”

    1 of 4 sources
  • Static typing catches type errors at compile time before code reaches users

    Probably right

    “type errors happen at compilation time before the code is ever ran”

    1 of 5 sources
0.28mixed
+1
Is the 10x Engineer a Myth?
James Peralta
Show claims
  • Programming productivity has no physical ceiling, so hard work can make anyone a 10x engineer

    Leans partly right

    “if you just put in the hard work you can be 10 times better like 10x better than the average engineer”

    only this source
  • Excellence in engineering takes different forms; a few well-judged lines can be worth more than high-volume output

    Untestable

    “these projects are so complicated that the average engineer couldn't even solve that project”

    1 of 4 sources
  • Some programmers are vastly more productive than their typical peers

    Leans partly right

    “I think it's very very like very possible to be 10 times better than the average engineer”

    1 of 5 sources
0.21mixed
+1
David Heinemeier Hansson: Microservices vs. Monolith
CultRepo
Show claims
  • Coordination cost grows faster than linearly with team count on a shared codebase, which service boundaries contain

    Leans partly right

    “microservices is a pattern that is about organizational structure much more than it is about how to organize your code”

    1 of 5 sources
  • Hype drives teams to adopt microservices they do not need, adding cost and risk

    Leans partly right

    “apply them to companies of 5 10 or 100 developers you very often get really poor results”

    1 of 5 sources
  • Microservices cost more in the short term and rarely save money

    Leans right

    “you are paying a heavy complex city tax for an environment and a context that just doesn't exist in your organization”

    1 of 10 sources
0.15mixed
0
Why Story Points Are a Complete Waste of Time
Lead Prompt Podcast
Show claims
  • Group estimation sessions surface hidden complexity and build shared understanding of the work

    Leans right

    “This promotes a shared understanding of the work and helps uncover hidden complexities and fosters team alignment.”

    only this source
  • Relative-size estimation is more accurate than time estimates for complex or uncertain work

    Leans wrong

    “This is more accurate for complex or uncertain work and avoids the pitfalls of timebased estimates which can quickly become inaccurate.”

    only this source
  • Velocity from completed points gives reliable forecasts of future throughput

    Leans partly right

    “This velocity can then be used to make more reliable forecasts about future work”

    only this source
  • Time spent estimating is wasted and better spent building

    Leans wrong

    “I believe all estimates are a waste of valuable time that could be better spent actually building something.”

    only this source
  • Abstract units shield teams from fixed-deadline pressure and reduce estimate padding

    Leans partly right

    “story points help to shield the team from the emotional pressure and rigidness of fixed timebased commitments”

    only this source
  • Using story points to predict delivery dates is weak, and comparing teams by velocity or estimate accuracy is harmful

    Leans partly right

    “This makes it impossible to compare the productivity of different teams using story points.”

    1 of 2 sources
  • Story points get converted back into time, defeating their purpose of keeping estimation away from the clock.

    Leans partly right

    “business stakeholders will attempt to hold the team to timelines regardless of story point estimates”

    1 of 2 sources
  • Long-horizon task estimates are inaccurate and managers should not rely on them

    Leans partly right

    “Human beings are terrible at accurately estimating the time required to carry out work, even for tasks that they carry out on a regular basis.”

    1 of 4 sources
1.26mixed
0
TDD is dead. Long live testing. (DHH)
dhh.dk
Show claims
  • DENIES Slow UI-driven end-to-end test suites are fragile and break on cosmetic changes

    Leans wrong

    “Which btw do not need to be so slow any more, thanks to advances in parallelization and cloud runner infrastructure”

    only this source
  • TDD biases design toward extra abstraction and indirection, which harms clarity unless the designer pushes back.

    Leans partly right

    “Test-first units leads to an overly complex web of intermediary objects and indirection in order to avoid doing anything that's “slow”.”

    1 of 2 sources
  • Testing advocacy has become a dogma that shames developers who do not follow it

    Untestable

    “Used as a hammer to beat down the nonbelievers, declare them unprofessional and unfit for writing software.”

    1 of 2 sources
  • The right mix of unit and higher-level tests depends on where a system's complexity lives, not on fixed pyramid ratios.

    Leans partly right

    “The worst thing we can do is just rush into another testing religion.”

    1 of 2 sources
  • Once a developer has internalised test-driven design thinking, the design benefit remains even if the tests are no longer written first

    Unknown

    “The test-first part was a wonderful set of training wheels”

    1 of 3 sources
  • Higher-level tests often pay back better than unit tests at finding bugs in integration-heavy code.

    Leans partly right

    “I test active record models directly, letting them hit the database”

    1 of 3 sources
0.33mixed
0
Software Estimation Is Hard. Do It Anyway. - Jacob Kaplan-Moss
jacobian.org
Show claims
  • Estimation is a learnable skill: recording estimates and comparing them to outcomes calibrates future estimates

    Leans wrong

    “If you get in the habit of breaking projects down and making timeline estimates, you can review those estimates against reality and recalibrate.”

    only this source
  • Giving accurate timelines builds trust and is required to advance beyond senior engineering roles

    Untestable

    “to go much farther than that you'll likely need to learn this skill”

    only this source
  • Avoiding estimates improves planning conversations, but business commitments still sometimes require a time-based estimate

    Leans partly right

    “there are many situations where an estimate is required”

    only this source
  • Most software projects run late or over budget, with few finishing early.

    Leans partly right

    “One study by HBR found that one in six IT projects had cost overruns of over 200% and were late by almost 70%.”

    1 of 3 sources
0.33mixed

Each claim first got an AI guess, then was checked against the studies. Listed: claims where a study pointed a different way. An AI guess counts for at most 50% confidence; a study at least that confident replaces it, a weaker one is shown as context. Biggest changes first.

Verdict changed by a study (17)

29 more where a study disagreed but was less confident, so the AI guess stands
  • Writing tests slows delivery by a meaningful fraction compared with not writing them (said by 2)
    AI guess: Probably partly right · Study: Leans wrong
    Elite performers report far more automated testing than low performers (87% vs 57% automated unit tests, 58% vs 28% acceptance tests) while deploying 208 times more often with shorter lead times, so at the delivery level testing is associated with faster, not slower, delivery; the data are cross-sectional self-reports and do not isolate per-feature development time. (DORA State of DevOps 2019)
  • Pull-request review delays feedback and pushes developers to batch changes, making daily integration impossible. (said by 2)
    AI guess: Leans partly right · Study: Leans wrong
    Google requires pre-commit review on every change yet median review latency is under 4 hours, 70% of changes commit within 24 hours of being sent for review, and the median author lands about 3 changes a week of 24 lines, so per-change review did not prevent daily integration there. (Sadowski et al. 2018 (Google code review))
  • Full line coverage is relatively easy to reach when a team is motivated (said by 1)
    AI guess: Leans partly right · Study: Leans wrong
    Authors call extremely high coverage very difficult to reach, and even their five actively developed Java projects with 600-8,000 test methods sit at 27-76% statement coverage; no motivated team pushing for 100% was studied. (Inozemtseva & Holmes 2014 (coverage))
  • Skill mismatch within a pair matters little; every expert and novice combination produces value (said by 1)
    AI guess: Leans partly right · Study: Leans wrong
    Student surveys in the review found pairing difficult when there was a large skill differential, with one respondent reporting the pair was unproductive whenever the weaker member was not driving; the review repeats this as a reported limitation. (Dybå & Dingsøyr 2008 (agile review))
  • Microservices cost more in the short term and rarely save money (said by 10)
    AI guess: Probably right · Study: Leans partly right
    Industrial sources name higher compute and network resource consumption than monoliths as the primary operational pain (network cited by 17 of 51), supporting higher running cost; no source quantifies money or distinguishes short from long term. (Soldani et al. 2018 (microservices review))
  • Sustained crunch lowers productivity and employee happiness (said by 4)
    AI guess: Probably right · Study: Leans partly right
    122 weekly observations on WWI munitions workers: output is proportional to hours below 49 h/week, rises at a decreasing rate above it and peaks near 63 h, so output per hour falls once weeks run long; happiness was not measured and the workers were not programmers. (Pencavel 2014 (working hours))
  • Long-lived branches delay integration and produce merge conflicts that grow with team size (said by 4)
    AI guess: Probably right · Study: Leans partly right
    DORA observes that merging patches sooner avoids rebases and that short-lived branches and small patches make everyone more productive, but it does not measure merge conflicts or how they scale with team size. (DORA State of DevOps 2019)
  • Pair programming provides continuous code review without adding a separate review step that slows delivery. (said by 4)
    AI guess: Leans partly right · Study: Leans right
    The report treats approval by a teammate during pair programming, before commit, as a valid lightweight way to implement peer review and segregation of duties, as an alternative to review before merge; this is a recommendation, not a measured comparison. (DORA State of DevOps 2019)
  • Reviewer defect-finding effectiveness drops sharply once a single review exceeds a few hundred lines (said by 3)
    AI guess: Probably right · Study: Leans partly right
    Changes approved faster than 200 lines per hour ('hastily reviewed') are associated with more post-release defects in Qt 5.1.0, and only 10% of such changes are needed before a component is expected to have a defect; this is about review rate, not a fixed lines-per-review threshold. (McIntosh et al. 2014 (review coverage))
  • Open-plan offices increase noise and visual distraction that impairs focused work (said by 3)
    AI guess: Probably right · Study: Leans partly right
    Not measured in the study; the paper's review cites prior workplace design research finding open offices reduce focus and psychological privacy, and the discussion notes employees isolating themselves with large headphones, so support here is second-hand. (Bernstein & Turban 2018 (open offices))
  • Running a CI server is not continuous integration if branches live for days or weeks (said by 2)
    AI guess: Probably right · Study: Leans partly right
    DORA defines impactful CI as every commit producing a build and test run, and separately defines effective trunk-based development as fewer than three active branches with lifetimes under a day; both predict continuous delivery, but branch lifetime is treated as a distinct capability rather than part of the definition of CI. (DORA State of DevOps 2019)
  • Summarizing a change and its risks helps a reviewer understand unfamiliar code faster. (said by 2)
    AI guess: Leans partly right · Study: Leans right
    Understanding the reason for a change is reviewers' main challenge; 91% of 873 developers say unfamiliar files take longer, descriptions are valued when they state what changed and why, and developers report responding better and faster when the author provides context and direction. (Bacchelli & Bird 2013 (Microsoft code review))
  • Crunch does not improve product outcomes; it correlates with slightly worse ones. (said by 2)
    AI guess: Probably right · Study: Leans partly right
    For munitions workers in 1916, hours reductions from wartime levels would have cost little or no output, and seven-day weeks produced about 10% less output than six-day weeks at the same hours; extra hours bought nothing, but product quality and software work were not measured. (Pencavel 2014 (working hours))
  • Deploying one small service limits the scope and risk of each release compared with redeploying a whole monolith (said by 1)
    AI guess: Leans partly right · Study: Leans right
    19 of 51 industrial sources highlight that microservices deploy and undeploy independently and 14 that live updates apply to one service without touching the others, which is the mechanism behind smaller release scope; grey literature, no measured risk data. (Soldani et al. 2018 (microservices review))
  • Mutation score measures test suite quality better than coverage does (said by 1)
    AI guess: Probably right · Study: Leans partly right
    The study uses mutation score as its ground-truth measure of fault-detection effectiveness and finds coverage tracks it only weakly; the authors suggest mutation score as a substitute for coverage, but this is their judgment, not a head-to-head test against real faults. (Inozemtseva & Holmes 2014 (coverage))
  • Technology alone does not raise performance; it must be combined with lean management and organizational culture. (said by 1)
    AI guess: Leans partly right · Study: Leans right
    The report's model has culture of psychological safety, a clear change process and cloud implementation (only 29% of self-described cloud users met the NIST characteristics that actually predict performance) all driving delivery performance, and tells organisations to start with automation plus clear change approval and a healthy culture. (DORA State of DevOps 2019)
  • A generative, high-trust, blameless organizational culture predicts software delivery and organizational performance. (said by 1)
    AI guess: Leans partly right · Study: Leans right
    A culture of psychological safety (measured with Google's Project Aristotle items) predicts software delivery performance, organisational performance and productivity, extending earlier years' finding that a Westrum generative culture of information flow, trust and risk-sharing predicts SDO performance. (DORA State of DevOps 2019)
  • Long working hours raise rates of injury, illness, cardiovascular disease and mental health problems through chronic stress. (said by 1)
    AI guess: Very likely right · Study: Leans partly right
    Cites contemporary studies: NLSY workers on 12+ h days or 60+ h weeks had 37% and 23% higher injury hazard, nurses on shifts over 12 h or weeks over 40 h made more errors, interns crashed more after extended shifts; injury and illness supported, cardiovascular and mental-health effects not covered, and this is secondary citation not the paper's own data. (Pencavel 2014 (working hours))
  • A continuous delivery pipeline gives regulated environments end-to-end traceability as a side effect. (said by 1)
    AI guess: Leans partly right · Study: Leans right
    DORA argues that with version control as the source of truth, recording who approved each change makes the review-and-submit process highly auditable and satisfies segregation-of-duties requirements from PCI-DSS and NIST frameworks; reasoned from practice rather than measured. (DORA State of DevOps 2019)
  • A pair finishes a task faster than one person but spends more total person-hours on it (said by 1)
    AI guess: Probably right · Study: Leans partly right
    A survey of 122 IT employees found 73% of those who pair believe it speeds up development; this is perception only and says nothing about total person-hours. (Dybå & Dingsøyr 2008 (agile review))
  • Skilled coaching beats peer or self feedback for improving at a skill (said by 1)
    AI guess: Probably right · Study: Leans partly right
    Review cites expertise research holding that deliberate training designed by a coach, not amount of experience, determines expertise, and that training improved estimation accuracy while experience had almost no effect; coaching is not compared with peer feedback directly. (Jørgensen 2004 (expert estimation))
  • Running the automated test suite before every commit keeps trunk releasable (said by 1)
    AI guess: Probably right · Study: Leans partly right
    DORA states that for CI to be impactful every commit should trigger a successful build and test run, and finds CI predicts continuous delivery; whether this keeps trunk releasable is implied rather than measured. (DORA State of DevOps 2019)
  • Knowledge-worker productivity cannot be measured reliably, so hours-versus-output conclusions rest on analogies from other industries (said by 1)
    AI guess: Probably right · Study: Leans partly right
    The review shows how LOC-based productivity misleads: an apparent 337% XP productivity gain came from delivering 3.5 times more lines of code without more functionality, and other comparisons swung from +46% to -44%; this shows measurement is unreliable in practice, not that it is impossible. (Dybå & Dingsøyr 2008 (agile review))
  • Splitting services too finely raises inter-service dependencies and coordination so total cost rises again rather than falling (said by 1)
    AI guess: Probably right · Study: Leans partly right
    17 of 51 sources report much higher network traffic because services interact by remote API calls instead of in-memory calls, and more services mean more remote invocations; this supports rising inter-service cost with finer splits but gives no total-cost curve. (Soldani et al. 2018 (microservices review))
  • Pairing all day is unsustainable because sustained joint focus is exhausting (said by 1)
    AI guess: Probably partly right · Study: Leans right
    A case study found that working 40 hours a week in pairs requires so much concentration that developers became exhausted, and the review's synthesis repeats that several developers regard pairing as exhausting; another project drifted back to solo programming toward its end. (Dybå & Dingsøyr 2008 (agile review))
  • Frequent small releases deliver more value than big-bang releases whose dates keep receding (said by 1)
    AI guess: Probably right · Study: Leans partly right
    Deployment frequency is one of the four metrics whose high-performer cluster is twice as likely to meet organisational goals, which supports more frequent releases delivering more value; release size and receding dates are not measured as such. (DORA State of DevOps 2019)
  • A passing test suite should be sufficient evidence that code is ready for production (said by 1)
    AI guess: Leans partly right · Study: Leans right
    DORA defines effective automated testing as giving developers confidence that a passing suite means the code can be successfully deployed, and finds such testing predicts CI and CD; this is the report's framing rather than a test of whether suites actually suffice. (DORA State of DevOps 2019)
  • Automatic memory management saves a large share of programmer time and removes a class of bugs (said by 1)
    AI guess: Very likely right · Study: Leans partly right
    Memory errors are 5.44% of bug-fix commits and are concentrated in unmanaged languages (C, C++, Objective-C) with statistical significance, but garbage-collected Java still has above-average memory errors (29% of them leaks), and programmer time is not measured; the reproduction could not repeat this bug-category analysis. (Ray et al. 2014 (languages on GitHub))
  • Short-lived feature branches with pull requests preserve the benefits of trunk-based development as long as they merge within a day or so (said by 1)
    AI guess: Probably partly right · Study: Leans right
    DORA characterises effective trunk-based development as fewer than three active branches and branches or forks living less than a day before merging to master, so short-lived branches merged within a day count as trunk-based in its predictive model. (DORA State of DevOps 2019)