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.

Why internal SW is almost invariably sh_t?

32 pointsby solididiotover 3 years ago
Sorry for the foul language but I had one too many of this.<p>Having worked with a good few Open Source tooling&#x2F;libraries&#x2F;frameworks etc and with a lot of similar internal ones I have come to the conclusion that almost invariably the quality of the later is far below the quality of the former. Being documentation, ergonomics, bugs, you name it.<p>Open source alternatives are much better than proprietary closed source ones. Mind you that I&#x27;m not talking about code quality, I&#x27;m talking about mere usability and dev experience.<p>This is consistent across quite a few medium, large and very large companies (enterprises) I&#x27;ve been. Worst case (and quite common) is when a company &quot;builds&quot; upon OS (e.g. a framework based on Flask). The end result is a painful to work with half-baked mess.<p>What I don&#x27;t get though is that OS is built (in many cases) by hobbyists for free. The internal messes are always being built by people on a steady payroll. I just don&#x27;t get it...

16 comments

matt_sover 3 years ago
I&#x27;m going to use an analogy from my hobby: because internal software is like shop furniture in a woodworking shop. Those things are mostly used in the production of other things that make the company revenue. It does its job, has room for many improvements, but isn&#x27;t something you&#x27;d go out and sell as a product. It might be built from scraps, using crappy lumber and pieced together with whatever fasteners were around or cheap.<p>Open Source tooling on the other hand is like independent woodworker sharing plans with their community. They want it to be the best they can produce because they know their peers are going to see it, possibly use it, possibly mention it to others if its really good.
评论 #30009089 未加载
nivertechover 3 years ago
There are so many reasons for this. Here are some of them that I can write without much thinking or checking my notes.<p>1. Enterprise problem domains are usually much more complex than the ones which are targeted by the OSS.<p>2. Enterprise problem domains are full of unclear, wrong and even contradicting requirements.<p>3. Enterprises usually have lots of legacy code&#x2F;systems.<p>4. Enterprises usually have lots of glue code duct-taping various internal systems.<p>5. If nobody will see your code publicly, then you have less incentive to invest in its UX&#x2F;DX&#x2F;documentation&#x2F;code quality&#x2F;etc. You incentivized to take shortcuts and use quick-and-dirty solutions.<p>6. Even though usually enterprises have internal SQA teams, it&#x27;s no match to many testers in the open-source world. Internal SW is only deployed in a single environment&#x2F;platform and tested with the happy path only. OSS is tested in lots of different environments&#x2F;platforms with lots of edge cases.<p>7. Unlike the OSS world, the developers working in enterprises are usually 9-5ers, working-to-live, not living-to-work.<p>8. The quality&#x2F;skill level of developers is usually lower. They&#x27;re usually become experts in their business domain, but their coding skills may remain on the &quot;advanced beginner&quot; level.<p>9. They usually working under micromanagement-like SDLCs which impede their productivity and code quality: &quot;Agile&quot;&#x2F;SAFe&#x2F;Scrum&#x2F;daily standups.<p>Some of the things I wrote might be anecdotes or stereotypes, so certainly not all enterprise developers are like this.
评论 #30008685 未加载
richbradshawover 3 years ago
There is often no time pressure, and no commercial pressure.<p>This means that polishing around the edges, e.g. documentation can have more time applied.<p>There is also different context - for internal tools, the scope is often well understood. The team who are using it are long term colleagues. There is no need for a logo, flashy landing page etc to convince people to use the tool. There is no need to sell it to stakeholders - they asked for it in the first place.<p>We can also make really good assumptions about what features can be cut. In an internal tool we know our users, we know which teams need the tooling etc. We can do training. So we can very deliberately ignore certain use cases etc.<p>In OSS we don&#x27;t know any of that, so often have to cater to everyone, hence building a much more robust tool.<p>It&#x27;s also some survivorship bias - the incredible OSS projects rise to the top and do have all this stuff. There are 10,000 internal tools built for every 1 popular OSS tool. The &#x27;bad&#x27; OSS projects aren&#x27;t being seen or used, so we don&#x27;t notice how bad quality those ones are.
评论 #30007093 未加载
dustedover 3 years ago
You answered your own question:&quot; The internal messes are always being built by people on a steady payroll.&quot;<p>The internal software is a direct money sink to a company, it is _VERY_ visible to the organization that they&#x27;re pouring money into a product that&#x27;s only tangential to making money. So internal software is allowed to be developed until the point where it becomes useful, but not more. You can argue how wise it is to use internal software, or to prioritize it in this way,but the incentive for not pouring more cash at it (wrong as it may be) is clear enough.<p>Disclaimer: Author of many awful internal tools.
评论 #30008923 未加载
评论 #30009038 未加载
austincheneyover 3 years ago
<a href="https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;Invented_here" rel="nofollow">https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;Invented_here</a><p>I have encountered <i>Invented Here Syndrome</i> when I joined my current employer about a popular open source application I wrote. They didn’t realize I wrote the application they were advocating.<p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=30004405" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=30004405</a><p>Selection bias in hiring is also a factor. As an open source author I have noticed the biggest difference between populations is a preference for criticality away from accepted norms that does not so much exist on internal teams or may even be despised. It’s the difference between doing what’s popular because that appears to work versus doing something that becomes popular because it works better.<p>Another factor is hard work. Professionally hard work is often rewarded and encouraged when it should be discouraged. As software developers we should be focused on automating away the hard work, which is often the motivation behind most open source.
dsqover 3 years ago
Love. How much love does one invest in an internal product, only to have it rebuffed, denigrated or simply undervalued or taken for granted? After a few times the talented person finds some other avenue for expression.
josephcsibleover 3 years ago
Because if open source products are bad, they won&#x27;t get used, but you don&#x27;t have a choice but to use your company&#x27;s internal stuff.
nitwit005over 3 years ago
Competition works, at least to some extent. The median open source project is worthless, but the ones people choose to use are pretty good. There is usually no competition within the company.<p>The sunk cost fallacy also tends to kick in. If the company spent $2 million on a project, it must be worthwhile. Admitting the money was at least partially wasted is hard to swallow.
CapitalistCartrover 3 years ago
Software polishing is usually tied to the number of users&#x2F;customers. In my work, I use industrial software. It is expensive, and unpolished. Users are expected to train on it, learning it&#x27;s unique quirks as a skill. The more software requires skill&#x2F;knowing it, usually the less polished it is. Obviously, not programs such as Photoshop, but merely to run a machine, definitely.
heartbeatsover 3 years ago
It&#x27;s intentionally built to be crap. If your requirements are constantly changing, you want to be able to turn on a dime. If you have &quot;nicely architected&quot; software, that&#x27;s going to be a lot of work. If the &quot;software&quot; is just a folder of Python files and some shell scripts, adding in some hack to meet some business need is very quick work.<p>In mathematical terms, the ratio of A - the amount of hours spent writing the software to B - the amount of hours spent running the software is going to be very high. It doesn&#x27;t make sense to spend two hours to fix a bug, if you can just spend ten seconds applying a workaround, unless you&#x27;ll run it more than 720 times within its intended design lifespan.
评论 #30009237 未加载
TheRealDunkirkover 3 years ago
There are a lot of good points here, but I think the most important reason is being overlooked: not grokking the needs of the users. In my Fortune 150, all of the internal software is developed by teams of outsourced developers. Whether it&#x27;s over the wall, or halfway around the world, the effect is the same: the developers don&#x27;t truly understand how the users will use the software. So it winds up being crap, regardless of how carefully some middle manager -- who also will not use the software -- writes the specs.<p>I&#x27;ve made a career out of being a mechanical engineer who writes software for other engineers, <i>while being embedded in the group</i>, and not spirited away in some dusty development group in another building or another continent. As an engineer, I understand precisely how the other engineers will be trying to use my software, and it makes for a better overall product. Of course, I&#x27;m biased, but I think my software has had much more success than competing projects, because of this. If I had the time, I could name at least 2 large, direct examples where this has proven true, and several more smaller ones.<p>TL;DR: Programmers need domain-specific understanding of the problem they are trying to solve with the software.
m0lluskover 3 years ago
The best software organization I ever worked for had internal tools that still blow my mind in both their features and reliability. Corners were cut in documentation certainly, but the main factors are the quality of the developer teams involved and the nature of their mission. Lots of developers nowadays are under pressure to ship features as quickly as possible for money, and if that is the whole job then of course the results will be spotty and modestly reliable.
closeparenover 3 years ago
Internal users are a captive audience. One of the key functions of middle management in a tech company is to enforce that internal platforms are used wherever applicable, no matter how bad they are or how much internal customers don’t want to, to promote consistency and synergy across the org. Open source is a more competitive landscape.
评论 #30013175 未加载
hogriderover 3 years ago
It&#x27;s simply making a good general solution, vs the tyranical decision making that goes on internally at companies, where they tweak little details to custom workflows bc stakeholders said so.
aristofunover 3 years ago
Very simple — because economy.<p>Is there a competition for the internal software? No.<p>Is it going to be directly monetized? No.<p>So why bother going that extra mile to make it beautiful if users will use it anyway.
thr0waw4yzover 3 years ago
Internal software? That&#x27;s what the interns do, right?