A special instance of loss of knowledge is cultural shift. Software
engineering has more than half a century of history and there are
programs still in use that were created a half century ago. These
programs were created in a time of completely different properties
of hardware; computers were slower and had much less memory,
often requiring elaborate algorithms to deal with these limitations.
Moreover the programmers wrote in obsolete languages and for
obsolete operating systems, and held different opinions about
what constitutes a good structure of software. The current
programmers who try to change these old programs face a double
problem: not only do they have to recover the knowledge that is
necessary for that specific program, but they also have to recover
the culture within which these programs were created. Without
that, they may be unable to make the evolutionary changes in the
program [88].