Live data from Hacker News

Why internal SW is almost invariably sh_t?

news.ycombinator.com

1–10 of 32 posts

Why internal SW is almost invariably sh_t?

#1
Sorry for the foul language but I had one too many of this.

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...

Re: Why internal SW is almost invariably sh_t?

#2
There is often no time pressure, and no commercial pressure.

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.

Re: Why internal SW is almost invariably sh_t?

#3

There is often no time pressure, and no commercial pressure. 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 stakeh…

All good points. Thanks

Re: Why internal SW is almost invariably sh_t?

#4
There are so many reasons for this. Here are some of them that I can write without much thinking or checking my notes.

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.

Re: Why internal SW is almost invariably sh_t?

#5
https://en.m.wikipedia.org/wiki/Invented_here

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.

Re: Why internal SW is almost invariably sh_t?

#6
I'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't something you'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.

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.

Re: Why internal SW is almost invariably sh_t?

#7
Software polishing is usually tied to the number of users/customers. In my work, I use industrial software. It is expensive, and unpolished. Users are expected to train on it, learning it's unique quirks as a skill. The more software requires skill/knowing it, usually the less polished it is. Obviously, not programs such as Photoshop, but merely to run a machine, definitely.

Re: Why internal SW is almost invariably sh_t?

#8
You answered your own question:" The internal messes are always being built by people on a steady payroll."

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.

Re: Why internal SW is almost invariably sh_t?

#9

There are so many reasons for this. Here are some of them that I can write without much thinking or checking my notes. 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…

This list seems to carry a heap of bias with it. Enterprise cares about what works for them, and quick-and-dirty is just fine. Startups care about what works for a broader customer base and need higher quality. Different needs, and different styles. Neither approach is wrong... but they serve different purposes and will appear like cruddy work if you put an enterprise approach into the startup world. And vice versa.

The one point which seems completely wrong is #9 - I've never seen agile-hamster-wheel-rituals bog down an enterprise shop. I've seen the other extreme, where in an enterprise, platforms are dealt out to the devs like a deck of cards, and as long as you keep your platforms running and working for the business, your manager barely even checks in with you. I'd easily go days, often weeks, and sometimes even months without any discussions at all with my boss.

Re: Why internal SW is almost invariably sh_t?

#10
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.
Post reply on HN