<story><title>Size is the best predictor of code quality (2011)</title><url>https://blog.vivekhaldar.com/post/10669678292/size-is-the-best-predictor-of-code-quality</url></story><parent_chain><item><author>hcarvalhoalves</author><text>It&amp;#x27;s the Swiss cheese paradox: &amp;quot;cheese has holes; bigger cheese have more holes; therefore, the more cheese, less cheese&amp;quot;.&lt;p&gt;&amp;gt; However, I still haven’t found any studies which show what this relationship is like. Does the number of bugs grow linearly with code size? Sub-linearly? Super-linearly? My gut feeling still says “sub-linear”.&lt;p&gt;We know from observing reality that even buggy software is better than no software – a software so buggy it adds negative value is a rare exception. So I guess it has to be &amp;quot;sub-linear&amp;quot;, otherwise software wouldn&amp;#x27;t have economies of scale.&lt;p&gt;The contradiction though is: how do we explain the apparent stability of large but &lt;i&gt;mature&lt;/i&gt; codebases? Thinking something like Emacs for example here, where some commits date back to 197X. I guess at some point it becomes an inverted U shape even if codebase grows, if it grows at a &lt;i&gt;conservative&lt;/i&gt; pace.</text></item></parent_chain><comment><author>munificent</author><text>&lt;i&gt;&amp;gt; a software so buggy it adds negative value is a rare exception.&lt;/i&gt;&lt;p&gt;Survivorship bias will explain all of that. You&amp;#x27;ll rarely encounter negative software because it gets discarded. It doesn&amp;#x27;t mean it&amp;#x27;s never created, it just dies before getting wide visibility.&lt;p&gt;&lt;i&gt;&amp;gt; otherwise software wouldn&amp;#x27;t have economies of scale.&lt;/i&gt;&lt;p&gt;The fact that software can be developed once and sold indefinitely means the marginal cost is near zero. That is an unbelievably huge economy of scale that would dwarf many other superlinear problems.&lt;p&gt;&lt;i&gt;&amp;gt; how do we explain the apparent stability of large but mature codebases?&lt;/i&gt;&lt;p&gt;Not all software changes are additions. If assume that codebase size is positively correlated with number of bugs (i.e. more code = more bugs) and that most changes that do not grow the codebase are likely to fix at least one bug, then mature codebases should be expected to improve in quality to the degree that number of changes outpaces total codebase size.</text></comment>
<story><title>Size is the best predictor of code quality (2011)</title><url>https://blog.vivekhaldar.com/post/10669678292/size-is-the-best-predictor-of-code-quality</url></story><parent_chain><item><author>hcarvalhoalves</author><text>It&amp;#x27;s the Swiss cheese paradox: &amp;quot;cheese has holes; bigger cheese have more holes; therefore, the more cheese, less cheese&amp;quot;.&lt;p&gt;&amp;gt; However, I still haven’t found any studies which show what this relationship is like. Does the number of bugs grow linearly with code size? Sub-linearly? Super-linearly? My gut feeling still says “sub-linear”.&lt;p&gt;We know from observing reality that even buggy software is better than no software – a software so buggy it adds negative value is a rare exception. So I guess it has to be &amp;quot;sub-linear&amp;quot;, otherwise software wouldn&amp;#x27;t have economies of scale.&lt;p&gt;The contradiction though is: how do we explain the apparent stability of large but &lt;i&gt;mature&lt;/i&gt; codebases? Thinking something like Emacs for example here, where some commits date back to 197X. I guess at some point it becomes an inverted U shape even if codebase grows, if it grows at a &lt;i&gt;conservative&lt;/i&gt; pace.</text></item></parent_chain><comment><author>rmbyrro</author><text>Maybe another variable at play here is:&lt;p&gt;Evolution: modifications_size &amp;#x2F; time &amp;#x2F; codebase_size&lt;p&gt;Mature systems tend to have lower Evolution. Thus, there are more bugs being fixed than created. Over time, this leads to stability.&lt;p&gt;On the other hand, one bug fix creates three more bugs, on average. So, I don&amp;#x27;t know why on Earth stable systems are even possible...</text></comment>