1. Management border on psychologically abusive
Management's treatment of the IT staff is simply the worst I've ever seen. I don't think it's intentional but working for them is like being in an abusive relationship: they change the requirements constantly and act like you just didn't understand them (gaslighting); they claim they only want the best for you but at the same time undermine you professionally and constantly question your skills and motivations (hot-cold); they threaten to sack people that they suspect are job hunting (controlling behavior/jealousy); they even eavesdrop on developer meetings (paranoia).
2. Favoritism
About 3 members of staff are trusted by the management. They are given extended permissions and privileges. They are given better equipment, conference tickets, expenses and pretty much anything reasonable that they ask for.
Some favoritism is to be expected everywhere, but this was on the level that the favorite developers received new laptops while a not-favorite developer was stuck with a bottom of the range PC which had been crashing for months. This is, to my mind, absolutely absurd and unacceptable.
3. Micromanaging
Unsurprisingly for borderline-abusive senior management with trust issues, they micromanage constantly. None of them are technical people, none of them understand software development, yet they somehow believe it's appropriate for them to sit and watch you code, overrule technical decisions, argue with developers on technical code related logic and behavior etc. etc.
4. "Family Company"
The entire management and back-office staff are related to one another, so you simply have nowhere to turn with a complaint about any of the above behavior. If you try to raise issues, they listen sympathetically and then say that they're too old to change.
5. Lack of expertise within the company
Their hiring policy for about a decade seems to have been to hire people straight out of university. As a result there is a huge lack of technical expertise within the company. Nobody really seems capable of steering projects or designing the systems they work on. This is not the fault of the developers, they really try their best and are good folks, but they just don't have the direction or the experience to make a good job of it.
6. Atrocious legacy codebase
As you can imagine, a system built by fresh grads and overseen by micromanaging non-technical managers is a total disaster area. You will lose your sanity working on it.
Overall
Do not work for these people. There is not enough money in the world (and they don't have it anyway).