My issue is with the developed software and database design. Although the software is custom written, many mainframe developers do not understand the concepts of modern programming and do not improve over time. Once they learn a concept (sometimes 30 years in the past), they continue to develop this way, rather than improving as it is outside their comfort zone. They are not open to new concepts or ideas. When you have a team of developers doing this over several decades, you end up with a big ball of mud. https://en.wikipedia.org/wiki/Big_ball_of_mud
Trying to port a big ball of mud to another language is very difficult, which contributes to mainframe developer job security and monolithic, antiquated systems. Modern developers are very particular to code portability, readability and modern concepts. Hopefully this is just in my experience and not common across other mainframe developers.