Saving even the smallest amount of space in the 1960's and 70's was far more important than it is today. Second, most developers never seriously expected their code to still be in use 20 and 30 years later. Some older applications even allow you to enter all four digits, but only make use of the last two. This is similar to the way that some banking systems today do not display decimals, but rather show one hundred dollars as '10000'. The computer knows that the last two zeros are cents, but a human may misinterpret it.
Legacy systems account for the vast majority of target systems currently under investigation.
Unfortunately, this 'riding the rails' approach also forces these organizations to quickly update their now-vulnerable systems, which could carry a hefty price tag. Mainly, it's a software problem. More precisely, it's the lack of a four-digit year in software code. The process is fairly straightforward, but extremely time-consuming. Updating a single line of code to support four-digit years is a simple task.