The company could be great, but the problems unfortunately come from the highest levels. There's a very combative dynamic between most departments with finger pointing in every which direction. The CEO constantly blames everything on development when he's the one that causes the companies problems in most cases.
One of the biggest issues is in giving estimates for larger projects. If you need 6 developers to complete a project in 6 months, you'll only end up getting 3 or so developers, and they'll be constantly pulled off to force in functionality that doesn't exist but was sold to clients anyway. No matter how many times the executives are informed that it's not going to be on time, due to lack of resources, they won't accept it and require you to work longer hours to hit the date. The date is almost never hit, so development then gets blamed for being lazy and inadequate.
Frequently Development is required to force in functionality (mentioned above) that should be planned and executed over months but is only given weeks. This leads to the applications being riddled with functionality that doesn't make any sense and only partially completed. Development is never given time to fully flush these out. This just further exacerbates the problem causing more bugs and technical debt.
The development department is vastly understaffed for creating solid applications given the work load.
Requirements are almost impossible to come by. Development is always given extremely broad statements and a brief high level explanation of how someone thinks client requested functionality should work. Then it just has to be re-factored several times as new info comes in.