Within a couple years of working professionally, I went from "who on earth would do X?" to "ah... almost certainly they were forced to do X by ..." some external factors - time/deadline, workaround to another bad system, or management pressure for some weird reason.
Sometimes it turned out to be just "really naive dev copy/pasting", but that wasn't a majority of the cases.
What still bugs me though is that when poorly done/hacky/broken systems still 'work', the assumption is that everything is 'fine'. When I'm needing to work with those systems, the assumption by others (management, other devs, whoever) is ... "why is this taking so long? just do XYZ and move on!" not understanding that often I'm discovering all the ways the broken system is broken - very hidden things, bad docs, charset issues, speed, incorrect data coming back that other consumers just 'know' to hack around (without it being documented anywhere, etc). It's not frustration at the devs of the other system as much as the pressure you face when others don't realize how much workaround you're needing to do to do something 'simple'. And yeah, it should be simple, if the broken system wasn't broken in the first place.