TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

The top bug predictor is not technical, it's organizational complexity

388 pointsby keyPover 5 years ago

19 comments

ChrisMarshallNYover 5 years ago
This is a no-brainer.<p>As a development manager for a quarter-century, and an active software developer for a lot longer than that, I can definitely say that every place there&#x27;s a &quot;meeting of the minds&quot; is a place for bugs.<p>In the software itself, the more complex the design, the more of these &quot;trouble nodes&quot; (what I call them) there are. Each interface, each class, each data interface, is a bug farm.<p>That&#x27;s why I&#x27;m a skeptic of a number of modern development practices that deliberately increase the complexity of software. I won&#x27;t name them, because I will then get a bunch of pithy responses.<p>These practices are often a response to the need to do Big Stuff.<p>In order to do Big Stuff, you need a Big Team.<p>In order to work with a Big Team, you need a Big Plan.<p>That Big Plan needs to have delegation to all the team members; usually by giving each one a specific domain, and specifying how they will interact with each other in a Big Integration Plan.<p>Problem is, you need this &quot;Big&quot; stuff. It&#x27;s crazy to do without it.<p>The way that I have found works for me, is to have an aggregate of much more sequestered small parts, each treated as a separate full product. It&#x27;s a lot more work, and takes a lot more time, with a lot more overhead, but it results in a really high-quality product, and also has a great deal of resiliency and flexibility.<p>There is no magic bullet.<p>Software development is hard.
评论 #21823945 未加载
评论 #21824179 未加载
评论 #21823967 未加载
评论 #21824224 未加载
评论 #21825375 未加载
评论 #21825234 未加载
评论 #21824999 未加载
评论 #21823909 未加载
评论 #21824254 未加载
评论 #21823921 未加载
评论 #21836979 未加载
habosaover 5 years ago
This rings true for anyone who has ever worked at a big tech company (I work at Google).<p>At Google when your project begins to scale up you can ask for more money, more people, or both. Most teams ask for both.<p>What you can&#x27;t ask for is <i>different</i> people. You can&#x27;t solve your distributed systems problems by adding 5 more mid-level software engineers to your team who have not worked in the domain. Yet due to how hiring works, this is what&#x27;s offered to you unless you want to do the recruiting yourself. Google views all software engineers as interchangeable at their level. I have seen people being sent to work on an Android app with hundreds of millions of users despite never having done mobile development before. That normally goes about as well as you&#x27;d expect.<p>So you end up with teams of 20 people slowly doing work that could be done quickly by 5 experts. In some cases all you lose is speed. In other cases this is fatal. Some things simply cannot be done without the right team.
评论 #21831007 未加载
MontyCarloHallover 5 years ago
Looking at the metrics used in the publication[0], it seems most of them focus on the absolute number of engineers working on a given component. This makes sense — more engineers touching a component introduces more opportunities for bugs. (Edit: as other commenters have pointed out, total lines of code, highly correlated to number of engineers, is likely the best first-order predictor of bugginess.)<p>I bet we can improve predictive power by considering the degree of <i>overengineering</i>, i.e., the number of engineers working on a task (edit: or lines of code) relative to the complexity of the task they’re working on. 100 people working on a task that could be accomplished by a single person will result in a much buggier product than 100 people working on a task that actually requires 100 people. The complexity of code expands to fill available engineering capacity, regardless of how simple the underlying task is; put 100 people to work on FizzBuzz and you’ll get a FizzBuzz with the complexity of a 100 person project[1]. Unnecessary complexity results in buggier code than necessary complexity because unnecessary components have inherently unclear roles.<p>Edit: substitute &quot;100 people&quot; with &quot;10 million lines of code&quot; and &quot;1 person&quot; with &quot;1000 lines of code&quot; and my statement should still hold true.<p>[0] <a href="https:&#x2F;&#x2F;www.microsoft.com&#x2F;en-us&#x2F;research&#x2F;wp-content&#x2F;uploads&#x2F;2016&#x2F;02&#x2F;tr-2008-11.pdf" rel="nofollow">https:&#x2F;&#x2F;www.microsoft.com&#x2F;en-us&#x2F;research&#x2F;wp-content&#x2F;uploads&#x2F;...</a><p>[1] <a href="https:&#x2F;&#x2F;github.com&#x2F;EnterpriseQualityCoding&#x2F;FizzBuzzEnterpriseEdition" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;EnterpriseQualityCoding&#x2F;FizzBuzzEnterpris...</a>
评论 #21827638 未加载
评论 #21824132 未加载
评论 #21824148 未加载
评论 #21825515 未加载
评论 #21825426 未加载
评论 #21825782 未加载
he0001over 5 years ago
Isn’t this aligned with Conway’s law? I mean, a complex business model requires, most likely or eventually, a complex solution? If not, the two systems are at odds, and the computer system is even more complex&#x2F;buggy since it doesn’t follow the organization&#x27;s complexity, it doesn’t do what the organization need it to do.<p>That at least is my experience anyway.
评论 #21823957 未加载
thenewnewguyover 5 years ago
Just skimmed over the post, so it&#x27;s possible they pointed this out and I didn&#x27;t notice - but I think this is misleading. The title makes it sound like organizational complexity _causes_ bugs, but in reality I think both are simply effects of a more underlying cause.<p>Larger and more complicated software both requires a bigger team (therefore more organizational complexity) and is more likely to contain bugs.
评论 #21823962 未加载
评论 #21823931 未加载
评论 #21824085 未加载
评论 #21823929 未加载
评论 #21824074 未加载
Merrillover 5 years ago
&gt;Organizational Complexity. Measures number of developers workong on the module, number of ex-developers that used to work on the module but no longer does, how big a fraction of the organization as a whole that works or has worked on the module, the distance in the organization between the developer and the decision maker, etc.<p>After one of the early big software project failures (maybe Multics?) there was a quote about software projects going around (maybe John R Pierce?) that &quot;If it can&#x27;t be done by two people in six months, it can&#x27;t be done.&quot;<p>One of the functions of good software design is to break the system down into pieces that a couple of people can complete in a reasonable length of time.
hos234over 5 years ago
Herbert Simon is who you read first when you thinking about orgs - <a href="https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;Satisficing" rel="nofollow">https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;Satisficing</a><p>That will take to you to healthy and productive places.
wycyover 5 years ago
The article examines this through the lens of Windows Vista. Am I the only person who actually did like Vista and didn&#x27;t have any problems with it? I gathered that most of the issues people had with it was caused by third party incompatible software and hardware.
评论 #21826147 未加载
评论 #21824101 未加载
评论 #21824162 未加载
评论 #21824077 未加载
zubairqover 5 years ago
I guess this is why startups exist because it it almost impossible for larger firms to execute good ideas even if they think of the idea themselves
评论 #21827072 未加载
评论 #21826514 未加载
neilobremskiover 5 years ago
I think all current and ex Microsoftees can agree (and probably other workers in Big Tech Corp) that this is not only obvious but ongoing and dastardly resilient to getting solved! At some level this must be a sociological thing because humans seem to be hardwired into repeating this mistake.<p>This happens at smaller companies in smaller ways but the effect is the same.<p>It&#x27;s worse than the &quot;Mythical Man Month&quot; in that production is not simply slowed down but it is slowly made rotten until it gets burned, buried, or passed off to out-sourced maintenance.
kabesover 5 years ago
The article ends with a mention of the book &#x27;Accellerate&#x27;. Accellerate is your typical management book, based on some surveys with bad statistics and worse conclusions. Weird he mentions this book after talking about what a proper, replicated study Microsoft Research did.
ChrisSDover 5 years ago
Previous discussion (which got flagged):<p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=21795462" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=21795462</a>
评论 #21824256 未加载
mirekrusinover 5 years ago
...which is likely proxy for complexity of the task - the more difficult the task, the more likely it&#x27;ll have bugs - not an exciting revelation.<p>Their &quot;code complexity&quot; means nothing. If you compare simple &quot;todo web app&quot; it&#x27;ll have orders of magnitude more &quot;code complexity&quot; than, for example, sha256 hash implementation.
评论 #21831245 未加载
sorokodover 5 years ago
Conway&#x27;s law strikes again.
nelsonicover 5 years ago
Does this mean that a solo developer working on a SaaS product can avoid bugs?
评论 #21824065 未加载
评论 #21824006 未加载
评论 #21830109 未加载
评论 #21824271 未加载
johnwatson11218over 5 years ago
The use of the term &#x27;p-value&#x27; seems off, it looks like he is referring to a different concept but using an overloaded term.
kozakover 5 years ago
I have a Microsoft keyboard that has a dedicated Calculator button. In older versions of Windows, I used to press that button and start entering numbers right away. But in newer updates of Windows 10, I now have to press the Calculator button, WAIT FOR THE CALCULATOR TO LOAD, and then start typing my digits. I think this is ridiculous.
评论 #21824914 未加载
评论 #21831025 未加载
评论 #21833487 未加载
评论 #21828075 未加载
chiefalchemistover 5 years ago
Code&#x2F;technology is nothing more than a tool. A toolbox is only as good as the person&#x2F;peoples who pick it up. That is a great tool will not save a disorganized organization. The great tool will not make a crap product better.<p>Blaming the means for the ends is a classic n00b mistake. A mistake that&#x27;s being made over and over and over again.
ameliusover 5 years ago
From the article:<p>&gt; In the replicated study the predictive value of organizational structure is not as high. Out of 4 measured models, it gets the 2nd highest precision and the 3rd highest recall.