Is it? A lot of software is really just a pile of context-specific database front-ends. There is virtually nothing difficult in the implementation itself. Most businesses in this space survive because they know how to dress up their pile of CRUD for their customers. And it gets worse: a less reliable, buggier product may still be the better fit for a customer if it works well enough for what they use it the most.