Your software does suck. You may not think it does which is exactly why it sucks. Of course, no one means for it to suck - I have yet to hear someone, either in business or software engineering/development, say, "We require this software to suck". Invariably, it does, and sucky software has kept me employed for decades. Some of it I got to fix. Some of it I got to redesign. Some of it continued to suck, some of it sucked more and some sucked less.
But yes, software sucks.
Why does software suck? We have terms for why software sucks - that's how much we know it sucks. It falls down to:
- Technical Debt: This is the result of business and developer decisions to do things quickly instead of properly in the hope that they will fix them someday (if they're even aware). This is a big one for startups as they enter their sustainable phases. In my experience, this issue tends to be enforced by management, and later on the software engineers who did not create the debt are forced to pay for it. The original people who worked on the code have probably moved on to that greener pasture across the fence.
- Complexity: Aside from NASA and whatever commercial ventures are going into space, software does not exist in a vacuum. Further, users almost always use the software in ways in which it was not designed for. In an increasingly software 'rich' world, this is almost always a problem.
- Not Fixing Real Problems: I've heard phrases along the lines of, 'Chasing the Shiney' so many times and yet it always surprises me how the Shiney is never the underlying issue that needs to be addressed. At one particular company I worked for, we hated when our management flew anywhere because they'd read the magazines on the planes and think that they had a grasp on what was wrong. They trusted the magazine article more than they trusted their own people.
Almost all of this could be fixed by better software engineering practices combined with management actually trusting the people they hired to think about these things and acting on what is being said, but that requires a culture shift. The bad news is that the software will still suck and that it will be more expensive. The good news is that the software will suck less and be less expensive to maintain in the long run.