by solididiot on 1/20/22, 10:20 AM with 31 comments
Having worked with a good few Open Source tooling/libraries/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.
Open source alternatives are much better than proprietary closed source ones. Mind you that I'm not talking about code quality, I'm talking about mere usability and dev experience.
This is consistent across quite a few medium, large and very large companies (enterprises) I've been. Worst case (and quite common) is when a company "builds" upon OS (e.g. a framework based on Flask). The end result is a painful to work with half-baked mess.
What I don'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't get it...
by matt_s on 1/20/22, 1:02 PM
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.
by nivertech on 1/20/22, 12:11 PM
1. Enterprise problem domains are usually much more complex than the ones which are targeted by the OSS.
2. Enterprise problem domains are full of unclear, wrong and even contradicting requirements.
3. Enterprises usually have lots of legacy code/systems.
4. Enterprises usually have lots of glue code duct-taping various internal systems.
5. If nobody will see your code publicly, then you have less incentive to invest in its UX/DX/documentation/code quality/etc. You incentivized to take shortcuts and use quick-and-dirty solutions.
6. Even though usually enterprises have internal SQA teams, it's no match to many testers in the open-source world. Internal SW is only deployed in a single environment/platform and tested with the happy path only. OSS is tested in lots of different environments/platforms with lots of edge cases.
7. Unlike the OSS world, the developers working in enterprises are usually 9-5ers, working-to-live, not living-to-work.
8. The quality/skill level of developers is usually lower. They're usually become experts in their business domain, but their coding skills may remain on the "advanced beginner" level.
9. They usually working under micromanagement-like SDLCs which impede their productivity and code quality: "Agile"/SAFe/Scrum/daily standups.
Some of the things I wrote might be anecdotes or stereotypes, so certainly not all enterprise developers are like this.
by richbradshaw on 1/20/22, 10:27 AM
This means that polishing around the edges, e.g. documentation can have more time applied.
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.
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.
In OSS we don't know any of that, so often have to cater to everyone, hence building a much more robust tool.
It'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 'bad' OSS projects aren't being seen or used, so we don't notice how bad quality those ones are.
by dusted on 1/20/22, 1:22 PM
The internal software is a direct money sink to a company, it is _VERY_ visible to the organization that they're pouring money into a product that'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.
Disclaimer: Author of many awful internal tools.
by austincheney on 1/20/22, 12:13 PM
I have encountered Invented Here Syndrome 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.
https://news.ycombinator.com/item?id=30004405
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.
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.
by dsq on 1/20/22, 1:38 PM
by josephcsible on 1/20/22, 3:26 PM
by nitwit005 on 1/21/22, 8:03 PM
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.
by CapitalistCartr on 1/20/22, 1:07 PM
by heartbeats on 1/20/22, 1:50 PM
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't make sense to spend two hours to fix a bug, if you can just spend ten seconds applying a workaround, unless you'll run it more than 720 times within its intended design lifespan.
by TheRealDunkirk on 1/20/22, 2:30 PM
I've made a career out of being a mechanical engineer who writes software for other engineers, while being embedded in the group, 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'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.
TL;DR: Programmers need domain-specific understanding of the problem they are trying to solve with the software.
by m0llusk on 1/20/22, 4:07 PM
by closeparen on 1/20/22, 6:25 PM
by hogrider on 1/20/22, 5:14 PM
by aristofun on 1/21/22, 12:35 PM
Is there a competition for the internal software? No.
Is it going to be directly monetized? No.
So why bother going that extra mile to make it beautiful if users will use it anyway.
by thr0waw4yz on 1/22/22, 3:33 AM