Two killers, i.e. 'making them so complex only
1/ Not having the time to clean stuff up. If it works, management generally wants you to move on to the next fire.
2/ Documentation oversights and assumptions. "Check the syslog for errors" doesn't cover what to do when errors arise. I'd reached the point of coding the automated sending of e-mails on errors - with the fix included - to the person running a job, on dozens of issues. Things that one just assumes after years of experience are complete show-stoppers to someone who doesn't have that same experience. And it only shows up when someone else does try and run something, per the documentation.
&, of course, 1.5, not having the time to do any documentation
I like automating the heck out of stuff, handing it off to some poor schlub to run as needed/scheduled, and moving on to the next problem. But I also recognize that it's done me out of a job a couple of times. Which really, truly sucks.
The best advice I received from a friend was "Don't make yourself indispensible. You won't get vacations."
It's a trade-off. I think I prefer being viewed as a valuable asset, getting new challenges, rather than the only guy who knows how to fix something.
He has not acquired a fortune; the fortune has acquired him. -- Bion