{"exhaustive":{"nbHits":false,"typo":false},"exhaustiveNbHits":false,"exhaustiveTypo":false,"hits":[{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"utiiiD"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"<em>Mirendil</em> in talks to raise $1B at $5B valuation led by Kleiner Perkins"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://finance.yahoo.com/technology/ai/articles/ex-anthropic-staffers-self-improving-161648217.html"}},"_tags":["story","author_utiiiD","story_49806453"],"author":"utiiiD","created_at":"2026-09-22T19:04:20Z","created_at_i":1790103860,"num_comments":0,"objectID":"49806453","points":2,"story_id":49806453,"title":"Mirendil in talks to raise $1B at $5B valuation led by Kleiner Perkins","updated_at":"2026-09-22T19:33:48Z","url":"https://finance.yahoo.com/technology/ai/articles/ex-anthropic-staffers-self-improving-161648217.html"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"ageofattention"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"Self-accelerating R&D \u2013 <em>Mirendil</em> $200M Seed Raise"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"https://a16z.com/announcement/investing-in-<em>mirendil</em>/"}},"_tags":["story","author_ageofattention","story_48676614"],"author":"ageofattention","created_at":"2026-06-25T17:25:40Z","created_at_i":1782408340,"num_comments":0,"objectID":"48676614","points":2,"story_id":48676614,"title":"Self-accelerating R&D \u2013 Mirendil $200M Seed Raise","updated_at":"2026-06-25T17:55:37Z","url":"https://a16z.com/announcement/investing-in-mirendil/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"yuedongze"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"<em>Mirendil</em> Launches Lor Harness"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"https://<em>mirendil</em>.com/news/meet-lor/"}},"_tags":["story","author_yuedongze","story_50281936"],"author":"yuedongze","created_at":"2026-10-28T22:37:51Z","created_at_i":1793227071,"num_comments":0,"objectID":"50281936","points":1,"story_id":50281936,"title":"Mirendil Launches Lor Harness","updated_at":"2026-10-28T22:38:58Z","url":"https://mirendil.com/news/meet-lor/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"yuedongze"},"title":{"matchLevel":"none","matchedWords":[],"value":"Pretraining at scale without a pretraining team"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"https://<em>mirendil</em>.com/news/pretraining-at-scale-without-a-pretraining-team/"}},"_tags":["story","author_yuedongze","story_50183555"],"author":"yuedongze","created_at":"2026-10-21T16:22:49Z","created_at_i":1792599769,"num_comments":0,"objectID":"50183555","points":5,"story_id":50183555,"title":"Pretraining at scale without a pretraining team","updated_at":"2026-10-21T19:25:20Z","url":"https://mirendil.com/news/pretraining-at-scale-without-a-pretraining-team/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"meetpateltech"},"title":{"matchLevel":"none","matchedWords":[],"value":"Fern"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"https://<em>mirendil</em>.com/news/introducing-fern/"}},"_tags":["story","author_meetpateltech","story_50246391"],"author":"meetpateltech","created_at":"2026-10-26T16:20:12Z","created_at_i":1793031612,"num_comments":0,"objectID":"50246391","points":4,"story_id":50246391,"title":"Fern","updated_at":"2026-10-26T17:56:07Z","url":"https://mirendil.com/news/introducing-fern/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"gmays"},"title":{"matchLevel":"none","matchedWords":[],"value":"Introducing Fern"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"https://<em>mirendil</em>.com/news/introducing-fern/"}},"_tags":["story","author_gmays","story_50268816"],"author":"gmays","created_at":"2026-10-28T02:54:07Z","created_at_i":1793156047,"num_comments":0,"objectID":"50268816","points":1,"story_id":50268816,"title":"Introducing Fern","updated_at":"2026-10-28T02:58:40Z","url":"https://mirendil.com/news/introducing-fern/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"bhntr3"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"The lack of citations is concerning.  I could read his book but it worries me when numbers like these are thrown around without some way to verify the analysis.<p>The &quot;28x productivity&quot; (or 10x or Xx ...) claim always triggers warning bells for me.  <a href=\"http://morendil.github.io/folklore.html\" rel=\"nofollow\">http://<em>morendil</em>.github.io/folklore.html</a> does a pretty good job explaining how the research backing that widely accepted &quot;fact&quot; may be questionable.<p>I also really like Dan Luu's review of the research behind static typing at <a href=\"http://danluu.com/empirical-pl/\" rel=\"nofollow\">http://danluu.com/empirical-pl/</a> as an example of how a &quot;well studied&quot; claim can still be questionable due to the massive difficulty in evaluating software engineering empirically.<p>Software engineering is a very human activity and that makes it very hard to measure and quantify.<p>A book that does a better job is Making Software (<a href=\"http://www.amazon.com/Making-Software-ebook/dp/B004D4YI6G/ref=la_B001H6PNGM_1_3?ie=UTF8&amp;qid=1370219697&amp;sr=1-3\" rel=\"nofollow\">http://www.amazon.com/Making-Software-ebook/dp/B004D4YI6G/re...</a>) but as my first link points out, it still has some issues.  At least its goal is to get more rigorous in our scientific analysis of software engineering."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"Frequently Forgotten Fundamental Facts about Software Engineering (2001) [pdf]"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"http://www.kictanet.or.ke/wp-content/uploads/2012/08/Forgotten-Fundamentals-IEEE-Software-May2001.pdf"}},"_tags":["comment","author_bhntr3","story_9450873"],"author":"bhntr3","children":[9455159],"comment_text":"The lack of citations is concerning.  I could read his book but it worries me when numbers like these are thrown around without some way to verify the analysis.<p>The &quot;28x productivity&quot; (or 10x or Xx ...) claim always triggers warning bells for me.  <a href=\"http:&#x2F;&#x2F;morendil.github.io&#x2F;folklore.html\" rel=\"nofollow\">http:&#x2F;&#x2F;morendil.github.io&#x2F;folklore.html</a> does a pretty good job explaining how the research backing that widely accepted &quot;fact&quot; may be questionable.<p>I also really like Dan Luu&#x27;s review of the research behind static typing at <a href=\"http:&#x2F;&#x2F;danluu.com&#x2F;empirical-pl&#x2F;\" rel=\"nofollow\">http:&#x2F;&#x2F;danluu.com&#x2F;empirical-pl&#x2F;</a> as an example of how a &quot;well studied&quot; claim can still be questionable due to the massive difficulty in evaluating software engineering empirically.<p>Software engineering is a very human activity and that makes it very hard to measure and quantify.<p>A book that does a better job is Making Software (<a href=\"http:&#x2F;&#x2F;www.amazon.com&#x2F;Making-Software-ebook&#x2F;dp&#x2F;B004D4YI6G&#x2F;ref=la_B001H6PNGM_1_3?ie=UTF8&amp;qid=1370219697&amp;sr=1-3\" rel=\"nofollow\">http:&#x2F;&#x2F;www.amazon.com&#x2F;Making-Software-ebook&#x2F;dp&#x2F;B004D4YI6G&#x2F;re...</a>) but as my first link points out, it still has some issues.  At least its goal is to get more rigorous in our scientific analysis of software engineering.","created_at":"2015-04-28T17:52:19Z","created_at_i":1430243539,"objectID":"9454069","parent_id":9453304,"points":null,"story_id":9450873,"story_title":"Frequently Forgotten Fundamental Facts about Software Engineering (2001) [pdf]","story_url":"http://www.kictanet.or.ke/wp-content/uploads/2012/08/Forgotten-Fundamentals-IEEE-Software-May2001.pdf","updated_at":"2023-09-07T02:37:31Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"ExpiredLink"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"&gt; <i>Fact and folklore in software engineering</i><p><a href=\"http://morendil.github.io/folklore.html\" rel=\"nofollow\">http://<em>morendil</em>.github.io/folklore.html</a><p>&gt; <i>10x Engineer</i><p><a href=\"http://web.archive.org/web/20131110050028/https://medium.com/about-work/6aedba30ecfe\" rel=\"nofollow\">http://web.archive.org/web/20131110050028/https://medium.com...</a>"},"story_title":{"matchLevel":"none","matchedWords":[],"value":"The Programmer's Price: Want to hire a coding superstar? Call the agent"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"http://www.newyorker.com/magazine/2014/11/24/programmers-price"}},"_tags":["comment","author_ExpiredLink","story_8616952"],"author":"ExpiredLink","comment_text":"&gt; <i>Fact and folklore in software engineering</i><p><a href=\"http://morendil.github.io/folklore.html\" rel=\"nofollow\">http:&#x2F;&#x2F;morendil.github.io&#x2F;folklore.html</a><p>&gt; <i>10x Engineer</i><p><a href=\"http://web.archive.org/web/20131110050028/https://medium.com/about-work/6aedba30ecfe\" rel=\"nofollow\">http:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20131110050028&#x2F;https:&#x2F;&#x2F;medium.com...</a>","created_at":"2014-11-17T15:34:29Z","created_at_i":1416238469,"objectID":"8618605","parent_id":8617902,"story_id":8616952,"story_title":"The Programmer's Price: Want to hire a coding superstar? Call the agent","story_url":"http://www.newyorker.com/magazine/2014/11/24/programmers-price","updated_at":"2024-09-19T21:15:41Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"jdlshore"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"I've been a fan of Laurent's work in this area for a long time.<p>What I find most interesting is that Laurent's work is <i>clearly</i> about the pervasiveness of myth and the need to apply rigorous thinking to what we believe. It's not about the specific claims; those are (fascinating) examples.<p>And yet, every time, people get <i>really worked up</i> about the 10x issue. They ignore the broader point entirely and focus on that one claim. (I find it particularly interesting that they focus on 10x and not any of the other claims Laurent debunks. Perhaps because it's easily understood? Perhaps because it's easy to think of anecdotes? Perhaps\u2014and I suspect this is the real truth\u2014because they secretly believe in their hearts that they're among the Chosen, and Laurent's threatening their clubhouse?)<p>Laurent doesn't say, &quot;there are no 10x programmers.&quot; He says, &quot;the studies that claim 10x programmers are so weak as to be laughable, the notion of measuring productivity itself is controversial and poorly defined, and do you even know which ratio you're using when you say 10x, anyway?&quot; (He's not quite so informal about it, but that's the gist.)<p>In other words, the 10x claim has yet to be <i>defined</i>, let alone subject to rigorous analysis.<p>But out of the woodwork come these people who say, &quot;I've seen 10x, therefore it must be true!&quot; (I can't help but believe that these are the same people who jump up and down saying &quot;the plural of anecdote is not data.&quot;) To be blunt: irrelevant. Laurent didn't say &quot;there are no 10x programmers.&quot; Sit down already. Read it again.<p>You know what? The 10x claim doesn't matter. Laurent's not even saying it matters. His argument is bigger, more interesting, and more valuable than that.<p>He's saying that people\u2014us programmers, specifically, who so wish ourselves to be rational thinkers\u2014believe things because we <i>want</i> them to be true. Not because of the &quot;evidence&quot; and &quot;proof&quot; we're so keen to demand when we hear something we <i>don't</i> like... but because they're the myths that surround us, and they make us feel good.<p>(And now I hope <em>morendil</em> will chime in and tell me how I've misinterpreted him. ;-) )"},"story_title":{"matchLevel":"none","matchedWords":[],"value":"The Making of Software Engineering Myths"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"http://modelviewculture.com/pieces/the-making-of-myths"}},"_tags":["comment","author_jdlshore","story_7417063"],"author":"jdlshore","children":[7419064,7419396],"comment_text":"I&#x27;ve been a fan of Laurent&#x27;s work in this area for a long time.<p>What I find most interesting is that Laurent&#x27;s work is <i>clearly</i> about the pervasiveness of myth and the need to apply rigorous thinking to what we believe. It&#x27;s not about the specific claims; those are (fascinating) examples.<p>And yet, every time, people get <i>really worked up</i> about the 10x issue. They ignore the broader point entirely and focus on that one claim. (I find it particularly interesting that they focus on 10x and not any of the other claims Laurent debunks. Perhaps because it&#x27;s easily understood? Perhaps because it&#x27;s easy to think of anecdotes? Perhaps\u2014and I suspect this is the real truth\u2014because they secretly believe in their hearts that they&#x27;re among the Chosen, and Laurent&#x27;s threatening their clubhouse?)<p>Laurent doesn&#x27;t say, &quot;there are no 10x programmers.&quot; He says, &quot;the studies that claim 10x programmers are so weak as to be laughable, the notion of measuring productivity itself is controversial and poorly defined, and do you even know which ratio you&#x27;re using when you say 10x, anyway?&quot; (He&#x27;s not quite so informal about it, but that&#x27;s the gist.)<p>In other words, the 10x claim has yet to be <i>defined</i>, let alone subject to rigorous analysis.<p>But out of the woodwork come these people who say, &quot;I&#x27;ve seen 10x, therefore it must be true!&quot; (I can&#x27;t help but believe that these are the same people who jump up and down saying &quot;the plural of anecdote is not data.&quot;) To be blunt: irrelevant. Laurent didn&#x27;t say &quot;there are no 10x programmers.&quot; Sit down already. Read it again.<p>You know what? The 10x claim doesn&#x27;t matter. Laurent&#x27;s not even saying it matters. His argument is bigger, more interesting, and more valuable than that.<p>He&#x27;s saying that people\u2014us programmers, specifically, who so wish ourselves to be rational thinkers\u2014believe things because we <i>want</i> them to be true. Not because of the &quot;evidence&quot; and &quot;proof&quot; we&#x27;re so keen to demand when we hear something we <i>don&#x27;t</i> like... but because they&#x27;re the myths that surround us, and they make us feel good.<p>(And now I hope morendil will chime in and tell me how I&#x27;ve misinterpreted him. ;-) )","created_at":"2014-03-17T23:01:41Z","created_at_i":1395097301,"objectID":"7418709","parent_id":7417063,"story_id":7417063,"story_title":"The Making of Software Engineering Myths","story_url":"http://modelviewculture.com/pieces/the-making-of-myths","updated_at":"2024-09-19T20:32:15Z"},{"_highlightResult":{"author":{"fullyHighlighted":true,"matchLevel":"full","matchedWords":["mirendil"],"value":"<em>Morendil</em>"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"Sure, you can grab my Agile bib file here: <a href=\"https://github.com/Morendil/referentiel.institut-agile.fr/blob/master/src/AgilePractices.bib\" rel=\"nofollow\">https://github.com/<em>Morendil</em>/referentiel.institut-agile.fr/bl...</a><p>There are 48 papers tagged with \"tdd\"."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"An apology to readers of Test-Driven iOS Development"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"http://blog.securemacprogramming.com/2012/09/an-apology-to-readers-of-test-driven-ios-development/"}},"_tags":["comment","author_Morendil","story_4474166"],"author":"Morendil","comment_text":"Sure, you can grab my Agile bib file here: <a href=\"https://github.com/Morendil/referentiel.institut-agile.fr/blob/master/src/AgilePractices.bib\" rel=\"nofollow\">https://github.com/Morendil/referentiel.institut-agile.fr/bl...</a><p>There are 48 papers tagged with \"tdd\".","created_at":"2012-09-04T18:34:12Z","created_at_i":1346783652,"objectID":"4475853","parent_id":4475777,"story_id":4474166,"story_title":"An apology to readers of Test-Driven iOS Development","story_url":"http://blog.securemacprogramming.com/2012/09/an-apology-to-readers-of-test-driven-ios-development/","updated_at":"2024-09-19T18:51:18Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"kragen"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"I read some of the more questionable parts of the second edition just now, and while I think there are a lot of things to criticize in it, I suspect that it's just rose-tinted hindsight, or ignorance, that made me not object to them in the first edition;  I'm pretty sure most of these problems were already there:<p>- All the time wasted on the dumb &quot;construction&quot; analogy.<p>- The total lack of attention to open-source software, possibly because he was misled by his own &quot;construction&quot; analogy. There's no such thing as a freely redistributable cabinet that's extra reliable because your house shares it with the local nuclear reactor, or a rotten floor joist you can't fix without negotiating a source license.  (He does discuss <i>buying</i> libraries, just as you can buy cabinets instead of building them.)  Though this was surely also lacking in the first edition, it was a more forgivable oversight in 01994.<p>- Very little attention given to automated testing; we don't get to &quot;developer testing&quot; until chapter 22, and even that's mostly about manual testing, though there are a few offhand remarks in \u00a74.4 and \u00a79.4 about unit testing and test-first programming, with no explanation of what that means.  Even when he tries to explain &quot;test-first programming&quot; in \u00a722.2, there's no hint that we're talking about <i>automated</i> testing.  And we finally see mentions of &quot;test code&quot; and &quot;JUnit&quot; in \u00a722.4, and then \u00a722.5 and \u00a722.6 have information about actual automated testing, though without any actual test code.  The advice on test-case design is still excellent.<p>- Also, very little about source control.  I know this was a deficiency in the first edition because I remember the revelation of learning about RCS a couple of years after I read it.  I think it actually got better in the second edition; there's a little &quot;Version Control&quot; section in \u00a730.2 which refers you to \u00a728.2, &quot;Configuration Management&quot;, which talks a little bit about the problem but doesn't mention Subversion (first released October 02000), CVS (01990), RCS (01982), SCCS (01973), or even Visual SourceSafe (01994).  Instead, it mostly describes implementing similar processes manually, through bureaucracy, because this is the &quot;Managing Construction&quot; chapter.  But there <i>is</i> technically half a page on p. 668 singing the praises of version-control software, calling it &quot;indispensable on team projects&quot;, which manages to not mention a single program you could use for it.  An understandable oversight in 01994, unforgivable in 02004, but again, incompetence rather than snake oil.<p>- Although he pays lip service at the beginning of the book to the independence of project <i>phases</i> and project <i>activities</i>, he often conflates them later, often presuming a quasi-waterfall model (when he isn't outright advocating it), where a requirements-analysis phase is followed by an architecture phase, then a detailed design phase, then a &quot;construction&quot; phase, then a testing phase, and then finally a maintenance phase.  This is obviously completely unlike the reality of projects like Microsoft Windows, Emacs, Linux, GCC, and Facebook.  When did Facebook mostly move from detailed design to construction?  Would it have been a better social-networking website if it had spent a year or two on architecture before beginning &quot;construction&quot;?  He does kind of go back and forth on this a lot, though, sometimes advocating more incremental approaches and then contradicting himself a page later.<p>- Relatedly, he advocates a division of labor where &quot;the architect consumes the requirements; the designer consumes the architecture; and the coder consumes the design.&quot;  (Traditionally, though he doesn't say this, the QA tester then consumes the code.)  This division of labor has been tried many times, and the companies that have tried it have been mostly outcompeted by companies with less dysfunctional divisions of labor; they mostly survive only in niches where they have legally enforceable monopolies, such as DoD cost-plus prime contractors.  None of them have been able to produce products of quality comparable to things like Linux, GCC, and Facebook.  I think this is the snake-oiliest part of the book.<p>- <i>Code Complete</i>'s table of &quot;Average Cost of Fixing Defects Based on When They're Introduced and Detected&quot;, table 3-1, is convincing, compelling, thoroughly footnoted with decades of literature, and completely made up.  See <a href=\"https://softwareengineering.stackexchange.com/questions/163701/does-software-testing-methodology-rely-on-flawed-data\" rel=\"nofollow\">https://softwareengineering.stackexchange.com/questions/1637...</a> <a href=\"https://web.archive.org/web/20121101231451/http://blog.securemacprogramming.com/2012/09/an-apology-to-readers-of-test-driven-ios-development/\" rel=\"nofollow\">https://web.archive.org/web/20121101231451/http://blog.secur...</a> <a href=\"https://www.lesswrong.com/posts/4ACmfJkXQxkYacdLt/diseased-disciplines-the-strange-case-of-the-inverted-chart\" rel=\"nofollow\">https://www.lesswrong.com/posts/4ACmfJkXQxkYacdLt/diseased-d...</a> <a href=\"https://gist.github.com/Morendil/258a523726f187334168f11fc8331569\" rel=\"nofollow\">https://gist.github.com/<em>Morendil</em>/258a523726f187334168f11fc83...</a>.  This made-up data is McConnell's major justification for advocating waterfall-like models.  More recent research that investigates the question empirically instead of relying on made-up hearsay finds, by contrast, &quot;We found no evidence for the delayed issue effect; <i>i.e.</i>, the effort to resolve issues in a later phase was not consistently or substantially greater than when issues were resolved soon after their introduction.&quot; <a href=\"https://arxiv.org/pdf/1609.04886\" rel=\"nofollow\">https://arxiv.org/pdf/1609.04886</a> <a href=\"https://agilemodeling.com/essays/costofchange.htm\" rel=\"nofollow\">https://agilemodeling.com/essays/costofchange.htm</a> <a href=\"https://buttondown.com/hillelwayne/archive/i-ing-hate-science/\" rel=\"nofollow\">https://buttondown.com/hillelwayne/archive/i-ing-hate-scienc...</a>.<p>- The section about &quot;user interface design&quot; is cringe-inducingly bad.  He thinks you can design a good user interface up front without having working software (&quot;The user interface is often specified at requirements time.  If it isn't, it should be specified in the software architecture,&quot;) rather than incrementally responding to usability feedback from people using a working system.  It's a very short section, and that in itself is eyebrow-raising; usability is a central concern of most kinds of software, and one of the most challenging aspects of software.  Really, almost everything in most software should be driven ultimately by user experience and grounded out in usability testing.  Games, websites, browsers, and even compilers live and die on usability.  But McConnell treats it as one minor detail among many.<p>- The section about the &quot;architecture prerequisite&quot; sounds like it was written by IBM mainframe programmers in 01978, then decorated with some OO and WWW jargon.  Yes, clearly the architecture should &quot;describe the major files and table designs to be used&quot;.  That makes sense.  Yes, &quot;Input/output (...) is another area that deserves attention in the architecture.  The architecture should specify a read-ahead, read-behind, or just-in-time reading scheme.&quot;  I mean, <i>seriously</i>?  Note that words like &quot;client&quot;, &quot;server&quot;, &quot;tier&quot;, &quot;cache&quot;, &quot;protocol&quot;, &quot;network&quot;, &quot;message&quot;, &quot;queue&quot;, and even &quot;process&quot; (as in a running instance of a program) are completely missing here.  It's not that he uses different terms for them; he just doesn't talk about them at all, using any words.<p>- He tries to discuss &quot;fault tolerance&quot; with a totally nonsensical example &quot;the square root of a number&quot;, necessarily making complete hash of the topic as a result.  He doesn't mention <i>any</i> of the techniques that actually work for achieving fault-tolerance, such as statelessness, idempotence, the end-to-end principle, transactions, journaling, fail-stopness, checksums, disk mirroring, hardware trimodular redundancy, watchdog timers, ECC, anomaly detection, network timeouts, monitoring, alarms, etc.  The only exception is that he sort of mentions granular restarts.  I'm restricting myself to techniques that were well-known when he wrote the first edition of the book here, excluding things like Paxos, eventual consistency, and Merkle graphs.<p>- There are a lot of cases where he repeats something he's heard that he evidently doesn't understand.  The muddled attempt to explain fault tolerance above is one example, but we could also mention, for example, his attempt in \u00a74.1 to describe Fortran programmers writing Fortran in C++, which completely misses the actual major difficulty (it's mostly about structuring the data as arrays, not the control flow), or his remark, &quot;Assembler is regarded as the second-generation language,&quot; devoid of the historical context to provide any meaning to it.<p>- One problem that I think is actually new in the second edition is its presumption that all software is object-oriented (despite paying lip service to the fact that Visual Basic [6] was the most popular language among professional programmers, many people were still programming in Ada and assembly and Cobol and C and Fortran, etc.) and that looks a bit snake-oilier from our perspective now than it did at the time.  I think OO is a useful approach to software design, but if I'm writing a generic tutorial on how to design a program, I wouldn't have a step in it called &quot;Level 3: Division into Classes&quot; as McConnell does in \u00a75.2, because that makes my book completely inapplicable to programming in C, Go, Fortran, Rust, Racket, VB6, or Clojure, and inapplicable to much of what people do in Python, PHP, JS, Octave, and R.  The snake oil here is not object-orientation but a totalizing ideology that everything <i>must</i> be OO; the Chapter 6 introduction says, &quot;In the twenty-first century, programmers think about programming in terms of classes.&quot;.  The way I remember it, the first edition didn't have this problem.<p>- This totalizing OO outlook is somewhat exacerbated by the fact that he doesn't really understand object orientation at all, so he gives a lot of bad advice, like, &quot;A large percentage of routines in object-oriented programs will be accessor routines, which will be very short,&quot; \u00a77.4.  His whole chapter 6 is about designing classes, but he never mentions the actual core concept of object-orientation, which is polymorphic message sends, presumably because although he knows they exist, he isn't really comfortable with them and doesn't understand how central they are to the OO worldview.  Instead he treats classes as a newfangled synonym for CLU's &quot;clusters&quot; or Ada &quot;packages&quot;.  Much of the chapter is devoted to workarounds for shortcomings of C++.  This isn't really &quot;snake oil,&quot; just incompetence.<p>- Another problem that I'm pretty sure wasn't present in the first edition is the counterproductive recommendations of worthless IEEE management process standards in virtually every chapter.  This is kind of snake-oily; these standards are of abominable literary quality and contain no useful information that could conceivably help anyone to improve the software they write.  As a representative emetic example, check out IEEE 1028, recommended in Chapter 20 and again in Chapter 21.  <a href=\"http://profs.etsmtl.ca/claporte/english/enseignement/cmu_sqa/travaux/TP_Reviews/IEEE%201028-2002%20-%20Software%20Reviews.pdf\" rel=\"nofollow\">http://profs.etsmtl.ca/claporte/english/enseignement/cmu_sqa...</a>.  Unlike some other IEEE management process standards I've had the misfortune of reading, it at least doesn't seem to contain any <i>misinformation</i>, but that's because it manages to spend 47 pages saying nothing at all about software.<p>There's still much material in the book that's solid, and lots of references to good information, but it's mixed with a lot of serious misinformation, misleading analogies, and embarrassing incompetence.  And it's a slog to get through so much verbiage.  But it's certainly better than <i>Clean Code</i>.  Still, now that <i>The Practice of Programming</i>, <i>The Pragmatic Programmer</i>, and <i>A Philosophy of Software Design</i> are out, I think there's no longer any reason to recommend <i>Code Complete</i>."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"Clean Code vs. A Philosophy Of Software Design"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/johnousterhout/aposd-vs-clean-code/blob/main/README.md"}},"_tags":["comment","author_kragen","story_43166362"],"author":"kragen","children":[43183638],"comment_text":"I read some of the more questionable parts of the second edition just now, and while I think there are a lot of things to criticize in it, I suspect that it&#x27;s just rose-tinted hindsight, or ignorance, that made me not object to them in the first edition;  I&#x27;m pretty sure most of these problems were already there:<p>- All the time wasted on the dumb &quot;construction&quot; analogy.<p>- The total lack of attention to open-source software, possibly because he was misled by his own &quot;construction&quot; analogy. There&#x27;s no such thing as a freely redistributable cabinet that&#x27;s extra reliable because your house shares it with the local nuclear reactor, or a rotten floor joist you can&#x27;t fix without negotiating a source license.  (He does discuss <i>buying</i> libraries, just as you can buy cabinets instead of building them.)  Though this was surely also lacking in the first edition, it was a more forgivable oversight in 01994.<p>- Very little attention given to automated testing; we don&#x27;t get to &quot;developer testing&quot; until chapter 22, and even that&#x27;s mostly about manual testing, though there are a few offhand remarks in \u00a74.4 and \u00a79.4 about unit testing and test-first programming, with no explanation of what that means.  Even when he tries to explain &quot;test-first programming&quot; in \u00a722.2, there&#x27;s no hint that we&#x27;re talking about <i>automated</i> testing.  And we finally see mentions of &quot;test code&quot; and &quot;JUnit&quot; in \u00a722.4, and then \u00a722.5 and \u00a722.6 have information about actual automated testing, though without any actual test code.  The advice on test-case design is still excellent.<p>- Also, very little about source control.  I know this was a deficiency in the first edition because I remember the revelation of learning about RCS a couple of years after I read it.  I think it actually got better in the second edition; there&#x27;s a little &quot;Version Control&quot; section in \u00a730.2 which refers you to \u00a728.2, &quot;Configuration Management&quot;, which talks a little bit about the problem but doesn&#x27;t mention Subversion (first released October 02000), CVS (01990), RCS (01982), SCCS (01973), or even Visual SourceSafe (01994).  Instead, it mostly describes implementing similar processes manually, through bureaucracy, because this is the &quot;Managing Construction&quot; chapter.  But there <i>is</i> technically half a page on p. 668 singing the praises of version-control software, calling it &quot;indispensable on team projects&quot;, which manages to not mention a single program you could use for it.  An understandable oversight in 01994, unforgivable in 02004, but again, incompetence rather than snake oil.<p>- Although he pays lip service at the beginning of the book to the independence of project <i>phases</i> and project <i>activities</i>, he often conflates them later, often presuming a quasi-waterfall model (when he isn&#x27;t outright advocating it), where a requirements-analysis phase is followed by an architecture phase, then a detailed design phase, then a &quot;construction&quot; phase, then a testing phase, and then finally a maintenance phase.  This is obviously completely unlike the reality of projects like Microsoft Windows, Emacs, Linux, GCC, and Facebook.  When did Facebook mostly move from detailed design to construction?  Would it have been a better social-networking website if it had spent a year or two on architecture before beginning &quot;construction&quot;?  He does kind of go back and forth on this a lot, though, sometimes advocating more incremental approaches and then contradicting himself a page later.<p>- Relatedly, he advocates a division of labor where &quot;the architect consumes the requirements; the designer consumes the architecture; and the coder consumes the design.&quot;  (Traditionally, though he doesn&#x27;t say this, the QA tester then consumes the code.)  This division of labor has been tried many times, and the companies that have tried it have been mostly outcompeted by companies with less dysfunctional divisions of labor; they mostly survive only in niches where they have legally enforceable monopolies, such as DoD cost-plus prime contractors.  None of them have been able to produce products of quality comparable to things like Linux, GCC, and Facebook.  I think this is the snake-oiliest part of the book.<p>- <i>Code Complete</i>&#x27;s table of &quot;Average Cost of Fixing Defects Based on When They&#x27;re Introduced and Detected&quot;, table 3-1, is convincing, compelling, thoroughly footnoted with decades of literature, and completely made up.  See <a href=\"https:&#x2F;&#x2F;softwareengineering.stackexchange.com&#x2F;questions&#x2F;163701&#x2F;does-software-testing-methodology-rely-on-flawed-data\" rel=\"nofollow\">https:&#x2F;&#x2F;softwareengineering.stackexchange.com&#x2F;questions&#x2F;1637...</a> <a href=\"https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20121101231451&#x2F;http:&#x2F;&#x2F;blog.securemacprogramming.com&#x2F;2012&#x2F;09&#x2F;an-apology-to-readers-of-test-driven-ios-development&#x2F;\" rel=\"nofollow\">https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20121101231451&#x2F;http:&#x2F;&#x2F;blog.secur...</a> <a href=\"https:&#x2F;&#x2F;www.lesswrong.com&#x2F;posts&#x2F;4ACmfJkXQxkYacdLt&#x2F;diseased-disciplines-the-strange-case-of-the-inverted-chart\" rel=\"nofollow\">https:&#x2F;&#x2F;www.lesswrong.com&#x2F;posts&#x2F;4ACmfJkXQxkYacdLt&#x2F;diseased-d...</a> <a href=\"https:&#x2F;&#x2F;gist.github.com&#x2F;Morendil&#x2F;258a523726f187334168f11fc8331569\" rel=\"nofollow\">https:&#x2F;&#x2F;gist.github.com&#x2F;Morendil&#x2F;258a523726f187334168f11fc83...</a>.  This made-up data is McConnell&#x27;s major justification for advocating waterfall-like models.  More recent research that investigates the question empirically instead of relying on made-up hearsay finds, by contrast, &quot;We found no evidence for the delayed issue effect; <i>i.e.</i>, the effort to resolve issues in a later phase was not consistently or substantially greater than when issues were resolved soon after their introduction.&quot; <a href=\"https:&#x2F;&#x2F;arxiv.org&#x2F;pdf&#x2F;1609.04886\" rel=\"nofollow\">https:&#x2F;&#x2F;arxiv.org&#x2F;pdf&#x2F;1609.04886</a> <a href=\"https:&#x2F;&#x2F;agilemodeling.com&#x2F;essays&#x2F;costofchange.htm\" rel=\"nofollow\">https:&#x2F;&#x2F;agilemodeling.com&#x2F;essays&#x2F;costofchange.htm</a> <a href=\"https:&#x2F;&#x2F;buttondown.com&#x2F;hillelwayne&#x2F;archive&#x2F;i-ing-hate-science&#x2F;\" rel=\"nofollow\">https:&#x2F;&#x2F;buttondown.com&#x2F;hillelwayne&#x2F;archive&#x2F;i-ing-hate-scienc...</a>.<p>- The section about &quot;user interface design&quot; is cringe-inducingly bad.  He thinks you can design a good user interface up front without having working software (&quot;The user interface is often specified at requirements time.  If it isn&#x27;t, it should be specified in the software architecture,&quot;) rather than incrementally responding to usability feedback from people using a working system.  It&#x27;s a very short section, and that in itself is eyebrow-raising; usability is a central concern of most kinds of software, and one of the most challenging aspects of software.  Really, almost everything in most software should be driven ultimately by user experience and grounded out in usability testing.  Games, websites, browsers, and even compilers live and die on usability.  But McConnell treats it as one minor detail among many.<p>- The section about the &quot;architecture prerequisite&quot; sounds like it was written by IBM mainframe programmers in 01978, then decorated with some OO and WWW jargon.  Yes, clearly the architecture should &quot;describe the major files and table designs to be used&quot;.  That makes sense.  Yes, &quot;Input&#x2F;output (...) is another area that deserves attention in the architecture.  The architecture should specify a read-ahead, read-behind, or just-in-time reading scheme.&quot;  I mean, <i>seriously</i>?  Note that words like &quot;client&quot;, &quot;server&quot;, &quot;tier&quot;, &quot;cache&quot;, &quot;protocol&quot;, &quot;network&quot;, &quot;message&quot;, &quot;queue&quot;, and even &quot;process&quot; (as in a running instance of a program) are completely missing here.  It&#x27;s not that he uses different terms for them; he just doesn&#x27;t talk about them at all, using any words.<p>- He tries to discuss &quot;fault tolerance&quot; with a totally nonsensical example &quot;the square root of a number&quot;, necessarily making complete hash of the topic as a result.  He doesn&#x27;t mention <i>any</i> of the techniques that actually work for achieving fault-tolerance, such as statelessness, idempotence, the end-to-end principle, transactions, journaling, fail-stopness, checksums, disk mirroring, hardware trimodular redundancy, watchdog timers, ECC, anomaly detection, network timeouts, monitoring, alarms, etc.  The only exception is that he sort of mentions granular restarts.  I&#x27;m restricting myself to techniques that were well-known when he wrote the first edition of the book here, excluding things like Paxos, eventual consistency, and Merkle graphs.<p>- There are a lot of cases where he repeats something he&#x27;s heard that he evidently doesn&#x27;t understand.  The muddled attempt to explain fault tolerance above is one example, but we could also mention, for example, his attempt in \u00a74.1 to describe Fortran programmers writing Fortran in C++, which completely misses the actual major difficulty (it&#x27;s mostly about structuring the data as arrays, not the control flow), or his remark, &quot;Assembler is regarded as the second-generation language,&quot; devoid of the historical context to provide any meaning to it.<p>- One problem that I think is actually new in the second edition is its presumption that all software is object-oriented (despite paying lip service to the fact that Visual Basic [6] was the most popular language among professional programmers, many people were still programming in Ada and assembly and Cobol and C and Fortran, etc.) and that looks a bit snake-oilier from our perspective now than it did at the time.  I think OO is a useful approach to software design, but if I&#x27;m writing a generic tutorial on how to design a program, I wouldn&#x27;t have a step in it called &quot;Level 3: Division into Classes&quot; as McConnell does in \u00a75.2, because that makes my book completely inapplicable to programming in C, Go, Fortran, Rust, Racket, VB6, or Clojure, and inapplicable to much of what people do in Python, PHP, JS, Octave, and R.  The snake oil here is not object-orientation but a totalizing ideology that everything <i>must</i> be OO; the Chapter 6 introduction says, &quot;In the twenty-first century, programmers think about programming in terms of classes.&quot;.  The way I remember it, the first edition didn&#x27;t have this problem.<p>- This totalizing OO outlook is somewhat exacerbated by the fact that he doesn&#x27;t really understand object orientation at all, so he gives a lot of bad advice, like, &quot;A large percentage of routines in object-oriented programs will be accessor routines, which will be very short,&quot; \u00a77.4.  His whole chapter 6 is about designing classes, but he never mentions the actual core concept of object-orientation, which is polymorphic message sends, presumably because although he knows they exist, he isn&#x27;t really comfortable with them and doesn&#x27;t understand how central they are to the OO worldview.  Instead he treats classes as a newfangled synonym for CLU&#x27;s &quot;clusters&quot; or Ada &quot;packages&quot;.  Much of the chapter is devoted to workarounds for shortcomings of C++.  This isn&#x27;t really &quot;snake oil,&quot; just incompetence.<p>- Another problem that I&#x27;m pretty sure wasn&#x27;t present in the first edition is the counterproductive recommendations of worthless IEEE management process standards in virtually every chapter.  This is kind of snake-oily; these standards are of abominable literary quality and contain no useful information that could conceivably help anyone to improve the software they write.  As a representative emetic example, check out IEEE 1028, recommended in Chapter 20 and again in Chapter 21.  <a href=\"http:&#x2F;&#x2F;profs.etsmtl.ca&#x2F;claporte&#x2F;english&#x2F;enseignement&#x2F;cmu_sqa&#x2F;travaux&#x2F;TP_Reviews&#x2F;IEEE%201028-2002%20-%20Software%20Reviews.pdf\" rel=\"nofollow\">http:&#x2F;&#x2F;profs.etsmtl.ca&#x2F;claporte&#x2F;english&#x2F;enseignement&#x2F;cmu_sqa...</a>.  Unlike some other IEEE management process standards I&#x27;ve had the misfortune of reading, it at least doesn&#x27;t seem to contain any <i>misinformation</i>, but that&#x27;s because it manages to spend 47 pages saying nothing at all about software.<p>There&#x27;s still much material in the book that&#x27;s solid, and lots of references to good information, but it&#x27;s mixed with a lot of serious misinformation, misleading analogies, and embarrassing incompetence.  And it&#x27;s a slog to get through so much verbiage.  But it&#x27;s certainly better than <i>Clean Code</i>.  Still, now that <i>The Practice of Programming</i>, <i>The Pragmatic Programmer</i>, and <i>A Philosophy of Software Design</i> are out, I think there&#x27;s no longer any reason to recommend <i>Code Complete</i>.","created_at":"2025-02-25T22:03:07Z","created_at_i":1740520987,"objectID":"43178132","parent_id":43175912,"story_id":43166362,"story_title":"Clean Code vs. A Philosophy Of Software Design","story_url":"https://github.com/johnousterhout/aposd-vs-clean-code/blob/main/README.md","updated_at":"2025-02-28T08:02:45Z"},{"_highlightResult":{"author":{"fullyHighlighted":true,"matchLevel":"full","matchedWords":["mirendil"],"value":"<em>Morendil</em>"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"&quot;Research paper&quot;, ha. I came across this a few years ago, I call it the &quot;Frankenpaper&quot;. See this gist for why I call it that: <a href=\"https://gist.github.com/Morendil/85336bf97211f9f31102ce2ee4e44829\" rel=\"nofollow\">https://gist.github.com/<em>Morendil</em>/85336bf97211f9f31102ce2ee4e...</a>"},"story_title":{"matchLevel":"none","matchedWords":[],"value":"The \u201cbugs are 100x more expensive to fix in production\u201d study might not exist"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://www.theregister.com/2021/07/22/bugs_expense_bs/"}},"_tags":["comment","author_Morendil","story_27917595"],"author":"Morendil","comment_text":"&quot;Research paper&quot;, ha. I came across this a few years ago, I call it the &quot;Frankenpaper&quot;. See this gist for why I call it that: <a href=\"https:&#x2F;&#x2F;gist.github.com&#x2F;Morendil&#x2F;85336bf97211f9f31102ce2ee4e44829\" rel=\"nofollow\">https:&#x2F;&#x2F;gist.github.com&#x2F;Morendil&#x2F;85336bf97211f9f31102ce2ee4e...</a>","created_at":"2021-07-23T22:44:41Z","created_at_i":1627080281,"objectID":"27936466","parent_id":27919003,"story_id":27917595,"story_title":"The \u201cbugs are 100x more expensive to fix in production\u201d study might not exist","story_url":"https://www.theregister.com/2021/07/22/bugs_expense_bs/","updated_at":"2024-09-20T09:03:21Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"db48x"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"Direct costs are all anyone means when they say that \u201cbugs are 100\u00d7 more expensive to fix in production\u201d. There\u2019s nothing in that statement about indirect or reputational costs, just the cost to fix. The factors you mention all exist, but they are irrelevant to the cost of fixing a bug. They are very relevant to the cost of _failing_ to fix a bug.<p>What is relevant is your definition of the various stages of development. The numbers that are the source of the \u201c100\u00d7\u201d figure are from the development of an anti\u2013ballistic missile system from the sixties or seventies. They would have been programming in assembler (thus the \u201c27 lines of code patched per change\u201d is not unusual). Finding and fixing a bug in the software after you\u2019ve built all the missiles and shipped them to every ballistic missile base in the US could indeed be very expensive! But if your release process is just copying the new code to a server (or even a fleet of servers) and restarting some services, then it\u2019s not expensive at all. Most of us have a very different idea of what \u201creleasing\u201d the software means than the folks on this project had.<p><a href=\"https://gist.github.com/Morendil/f9c2e9f3f450d3a76de8aeee7cf2bd00\" rel=\"nofollow\">https://gist.github.com/<em>Morendil</em>/f9c2e9f3f450d3a76de8aeee7cf...</a>"},"story_title":{"matchLevel":"none","matchedWords":[],"value":"The \u201cbugs are 100x more expensive to fix in production\u201d study might not exist"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://www.theregister.com/2021/07/22/bugs_expense_bs/"}},"_tags":["comment","author_db48x","story_27917595"],"author":"db48x","comment_text":"Direct costs are all anyone means when they say that \u201cbugs are 100\u00d7 more expensive to fix in production\u201d. There\u2019s nothing in that statement about indirect or reputational costs, just the cost to fix. The factors you mention all exist, but they are irrelevant to the cost of fixing a bug. They are very relevant to the cost of _failing_ to fix a bug.<p>What is relevant is your definition of the various stages of development. The numbers that are the source of the \u201c100\u00d7\u201d figure are from the development of an anti\u2013ballistic missile system from the sixties or seventies. They would have been programming in assembler (thus the \u201c27 lines of code patched per change\u201d is not unusual). Finding and fixing a bug in the software after you\u2019ve built all the missiles and shipped them to every ballistic missile base in the US could indeed be very expensive! But if your release process is just copying the new code to a server (or even a fleet of servers) and restarting some services, then it\u2019s not expensive at all. Most of us have a very different idea of what \u201creleasing\u201d the software means than the folks on this project had.<p><a href=\"https:&#x2F;&#x2F;gist.github.com&#x2F;Morendil&#x2F;f9c2e9f3f450d3a76de8aeee7cf2bd00\" rel=\"nofollow\">https:&#x2F;&#x2F;gist.github.com&#x2F;Morendil&#x2F;f9c2e9f3f450d3a76de8aeee7cf...</a>","created_at":"2021-07-23T05:31:32Z","created_at_i":1627018292,"objectID":"27927536","parent_id":27917893,"story_id":27917595,"story_title":"The \u201cbugs are 100x more expensive to fix in production\u201d study might not exist","story_url":"https://www.theregister.com/2021/07/22/bugs_expense_bs/","updated_at":"2024-09-20T09:02:27Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"asadotzler"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"<em>Morendil</em>, his comments are often very much directed at individuals and not at features or bugs.<p>Calling a developer a \"simian\" and shouting \"screw you\" and actually saying \"You know, every time I see a comment from [a specific Thunderbird developer] I just want to reach out through the intertubes and cut off his damned fingers to prevent him ever writing any code\" are all direct and personal attacks that should not be tolerated in any forum.<p>There's nothing \"funny\" about that. It's the behavior of a bully and someone who thinks that because he's big bad programmer with a long history that he can verbally abuse other programmers when ever he feels like it.<p>There's nothing funny about bullying."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"Mozilla now banning people for grumpy bug reports"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://bugzilla.mozilla.org/show_bug.cgi?id=668655#c1"}},"_tags":["comment","author_asadotzler","story_2741660"],"author":"asadotzler","children":[2742276],"comment_text":"Morendil, his comments are often very much directed at individuals and not at features or bugs.<p>Calling a developer a \"simian\" and shouting \"screw you\" and actually saying \"You know, every time I see a comment from [a specific Thunderbird developer] I just want to reach out through the intertubes and cut off his damned fingers to prevent him ever writing any code\" are all direct and personal attacks that should not be tolerated in any forum.<p>There's nothing \"funny\" about that. It's the behavior of a bully and someone who thinks that because he's big bad programmer with a long history that he can verbally abuse other programmers when ever he feels like it.<p>There's nothing funny about bullying.","created_at":"2011-07-08T10:04:57Z","created_at_i":1310119497,"objectID":"2741846","parent_id":2741828,"story_id":2741660,"story_title":"Mozilla now banning people for grumpy bug reports","story_url":"https://bugzilla.mozilla.org/show_bug.cgi?id=668655#c1","updated_at":"2026-09-21T06:13:27Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"hyperpape"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"Here is more from Laurent Bossavit, showing the history of shoddy citations surrounding the 100x claim: <a href=\"https://gist.github.com/Morendil/f9c2e9f3f450d3a76de8aeee7cf2bd00\" rel=\"nofollow\">https://gist.github.com/<em>Morendil</em>/f9c2e9f3f450d3a76de8aeee7cf...</a>."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"Forcing Functions in Software Development"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://coderefinery.wordpress.com/2020/10/21/forcing-functions-in-software-development/"}},"_tags":["comment","author_hyperpape","story_24845339"],"author":"hyperpape","comment_text":"Here is more from Laurent Bossavit, showing the history of shoddy citations surrounding the 100x claim: <a href=\"https:&#x2F;&#x2F;gist.github.com&#x2F;Morendil&#x2F;f9c2e9f3f450d3a76de8aeee7cf2bd00\" rel=\"nofollow\">https:&#x2F;&#x2F;gist.github.com&#x2F;Morendil&#x2F;f9c2e9f3f450d3a76de8aeee7cf...</a>.","created_at":"2020-10-21T19:35:52Z","created_at_i":1603308952,"objectID":"24851228","parent_id":24848592,"story_id":24845339,"story_title":"Forcing Functions in Software Development","story_url":"https://coderefinery.wordpress.com/2020/10/21/forcing-functions-in-software-development/","updated_at":"2024-09-20T07:08:47Z"},{"_highlightResult":{"author":{"fullyHighlighted":true,"matchLevel":"full","matchedWords":["mirendil"],"value":"<em>Morendil</em>"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"Now translated here:<p><a href=\"http://morendil.github.com/folklore.html\" rel=\"nofollow\">http://<em>morendil</em>.github.com/folklore.html</a>"},"story_title":{"matchLevel":"none","matchedWords":[],"value":"The industry as a whole makes its choices on the basis of folklore"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"http://raganwald.posterous.com/i-cannot-rightly-apprehend-the-confusion-of-i"}},"_tags":["comment","author_Morendil","story_2039510"],"author":"Morendil","comment_text":"Now translated here:<p><a href=\"http://morendil.github.com/folklore.html\" rel=\"nofollow\">http://morendil.github.com/folklore.html</a>","created_at":"2011-01-05T18:47:01Z","created_at_i":1294253221,"objectID":"2071945","parent_id":2039669,"story_id":2039510,"story_title":"The industry as a whole makes its choices on the basis of folklore","story_url":"http://raganwald.posterous.com/i-cannot-rightly-apprehend-the-confusion-of-i","updated_at":"2024-09-19T17:26:13Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"alangpierce"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"If you search &quot;Counting Defects&quot; in the pdf posted by <em>Morendil</em> ( <a href=\"https://pdfs.semanticscholar.org/feb0/0dd349ad701e1e4045282b1bd10073718a7c.pdf\" rel=\"nofollow\">https://pdfs.semanticscholar.org/feb0/0dd349ad701e1e4045282b...</a> ), you get some of the methodology on page 78 (the page with &quot;78&quot; written on it, not PDF numbering):<p>&gt; When a reviewer or consensus of reviewers determines that code must be changed before it is acceptable, it is a \u201cdefect.\u201d If the algorithm is wrong, it\u2019s a defect. If the code is right but unintelligible due to poor documentation, it\u2019s a defect. If the code is right but there\u2019s a better way to do it, it\u2019s a defect. A simple conversation is not a defect nor is a conversation where a reviewer believed he found a defect but later agreed that it wasn\u2019t one. In any event a defect is an improvement to the code that would not have occurred without review.<p>I'd say that's a bit looser of a definition than I'd prefer, but it's at least good that the study didn't try to use some metric like &quot;number of inline comments&quot;, since often times I use inline comments for praise or to mention possible alternatives that may or may not be any better than the code."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"A bogus study on code review"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"http://blog.wesleyac.com/posts/bogus-code-review-data"}},"_tags":["comment","author_alangpierce","story_15967279"],"author":"alangpierce","comment_text":"If you search &quot;Counting Defects&quot; in the pdf posted by Morendil ( <a href=\"https:&#x2F;&#x2F;pdfs.semanticscholar.org&#x2F;feb0&#x2F;0dd349ad701e1e4045282b1bd10073718a7c.pdf\" rel=\"nofollow\">https:&#x2F;&#x2F;pdfs.semanticscholar.org&#x2F;feb0&#x2F;0dd349ad701e1e4045282b...</a> ), you get some of the methodology on page 78 (the page with &quot;78&quot; written on it, not PDF numbering):<p>&gt; When a reviewer or consensus of reviewers determines that code must be changed before it is acceptable, it is a \u201cdefect.\u201d If the algorithm is wrong, it\u2019s a defect. If the code is right but unintelligible due to poor documentation, it\u2019s a defect. If the code is right but there\u2019s a better way to do it, it\u2019s a defect. A simple conversation is not a defect nor is a conversation where a reviewer believed he found a defect but later agreed that it wasn\u2019t one. In any event a defect is an improvement to the code that would not have occurred without review.<p>I&#x27;d say that&#x27;s a bit looser of a definition than I&#x27;d prefer, but it&#x27;s at least good that the study didn&#x27;t try to use some metric like &quot;number of inline comments&quot;, since often times I use inline comments for praise or to mention possible alternatives that may or may not be any better than the code.","created_at":"2017-12-24T16:39:32Z","created_at_i":1514133572,"objectID":"16000164","parent_id":16000026,"story_id":15967279,"story_title":"A bogus study on code review","story_url":"http://blog.wesleyac.com/posts/bogus-code-review-data","updated_at":"2024-09-20T01:46:49Z"},{"_highlightResult":{"author":{"fullyHighlighted":true,"matchLevel":"full","matchedWords":["mirendil"],"value":"<em>Morendil</em>"},"title":{"matchLevel":"none","matchedWords":[],"value":"Fact and folklore in software engineering"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["mirendil"],"value":"http://<em>morendil</em>.github.com/folklore.html"}},"_tags":["story","author_Morendil","story_2072164"],"author":"Morendil","children":[2072252,2072263,2072283,2072300,2072309,2072311,2072356,2072366,2072401,2072424,2072465,2072554,2072731,2072740,2072799,2073229,2073313,2073721,2073751],"created_at":"2011-01-05T19:42:17Z","created_at_i":1294256537,"num_comments":90,"objectID":"2072164","points":135,"story_id":2072164,"title":"Fact and folklore in software engineering","updated_at":"2023-09-06T19:07:47Z","url":"http://morendil.github.com/folklore.html"},{"_highlightResult":{"author":{"fullyHighlighted":true,"matchLevel":"full","matchedWords":["mirendil"],"value":"<em>Morendil</em>"},"title":{"matchLevel":"none","matchedWords":[],"value":"An apology to readers of Test-Driven iOS Development"},"url":{"matchLevel":"none","matchedWords":[],"value":"http://blog.securemacprogramming.com/2012/09/an-apology-to-readers-of-test-driven-ios-development/"}},"_tags":["story","author_Morendil","story_4474166"],"author":"Morendil","children":[4474234,4474235,4474271,4474274,4474295,4474340,4474373,4474377,4474397,4474441,4474444,4474544,4474553,4474675,4474730,4474769,4474872,4474914,4474952,4475151,4475810,4475887,4475889,4476011],"created_at":"2012-09-04T12:01:49Z","created_at_i":1346760109,"num_comments":67,"objectID":"4474166","points":231,"story_id":4474166,"title":"An apology to readers of Test-Driven iOS Development","updated_at":"2024-09-19T18:51:12Z","url":"http://blog.securemacprogramming.com/2012/09/an-apology-to-readers-of-test-driven-ios-development/"},{"_highlightResult":{"author":{"fullyHighlighted":true,"matchLevel":"full","matchedWords":["mirendil"],"value":"<em>Morendil</em>"},"title":{"matchLevel":"none","matchedWords":[],"value":"What a scientist didn't tell the New York Times about his study on bee deaths"},"url":{"matchLevel":"none","matchedWords":[],"value":"http://money.cnn.com/2010/10/08/news/honey_bees_ny_times.fortune/index.htm"}},"_tags":["story","author_Morendil","story_1774592"],"author":"Morendil","children":[1774759,1774811,1774833,1774855,1774922,1774937,1775130,1775131,1775186,1775235],"created_at":"2010-10-09T07:34:17Z","created_at_i":1286609657,"num_comments":41,"objectID":"1774592","points":132,"story_id":1774592,"title":"What a scientist didn't tell the New York Times about his study on bee deaths","updated_at":"2023-09-06T20:07:06Z","url":"http://money.cnn.com/2010/10/08/news/honey_bees_ny_times.fortune/index.htm"}],"hitsPerPage":20,"nbHits":138,"nbPages":7,"page":0,"params":"query=mirendil&advancedSyntax=true&analyticsTags=backend","processingTimeMS":9,"processingTimingsMS":{"_request":{"roundTrip":15},"afterFetch":{"format":{"highlighting":3,"total":3},"merge":{"mergeLoop":{"prepareNextHit":3,"total":3},"total":3},"total":3},"fetch":{"query":3,"total":4},"total":9},"query":"mirendil","serverTimeMS":13}
