3 ms·
There's many reasons to want to avoid writing custom software, but for those that aren't actively living in it, it's easy to forget the dismal results of buying
by hibikir 11y ago
There's many reasons to want to avoid writing custom software, but for those that aren't actively living in it, it's easy to forget the dismal results of buying enterprise software.
People buying it start with the impression that 3rd party software is good: We don't write our own mail program, we don't write our own word processors, so of course we shouldn't write anything a third party offers, they say. But that shows a total misunderstanding of what makes software hard: specifications.
It's not difficult to build an application for a good price when we expect tens of thousands of sales, and it's a task that will occupy mind-space, so we expect users to be motivated to learn whatever idiosyncrasies our application has. But when the application should interact with other applications, or there are relatively few users, it's very hard to build it economically: Most of those 3rd party disasters are in those areas.
For instance, we've had a bunch of very pointy haired people decide that our org needed some kind of REST API + authentication management combo, and went out there to purchase something, because building is bad. But it is exactly the kind of system that will does not work well: It's built for big enterprises, so it is seven figures, with recurring costs. It does not interact well with the specific quirks of how the internal authentication works, so hacks are needed. The UI is not really built for you, or anyone, so it makes the AWS dashboard look like a UX miracle. And then there's the bugs: There's still bugs (A lot of them), but now, instead of your own people fix your bugs, now you have another company dealing with them, and since you already paid them, adding new features is more important than fixing your bugs. So now we are out a bunch of money, everyone that isn't pointy haired hates interacting with the thing, and we've needed a bunch of custom code anyway.
The decision between buy and build is not necessarily easy, but there are a very valuable rule of thumb I love:
If you are going to custom build, and it's not key to your secret sauce, expect to spend a bunch, and build it as an open source project.
Having other companies use whatever you are writing makes quality improve faster, as there's more people to find problems in your specification and your implementation. Sometimes you get people to help you with free labor. Others they don't. But either way, you've lost almost nothing by making your code public.
If you are unwilling to commit to making it open source, because it sounds expensive, then you really were not going to commit to it as custom internal software anyway. It would have ended up as a piece of crap everyone hates. So then go and buy, as you weren't going to get any gains from building it custom anyway.