Legacy and other swear words
Legacy is a very loaded word in digital; any project or piece of code, branding, visual design can be described as legacy even though it may still be fit for purpose and do what was originally asked of it. What is and isn't legacy is purely a point of view, it can be that everyone holds the same point of view but it is still a qualitative measure of a website or system. There is no discrete definition of what is and isn't legacy. A billing system written in Bash maybe in the minds of most a legacy system or a banking system written in COBOL, but then some may say that a php site built only 12 months ago is legacy because it doesn't meet the requirements of today.
It's most loaded use is by salespeople and people selling a particular new technology. Phrases such as "integrates with legacy systems", "increase your ROI on legacy systems", all ring alarm bells in my mind as there is an instant assumption that legacy equals crap. That is not always the case and in many respects you must understand the full business requirements of system to understand it. There are however related issues which can be indicative of an issue with a system, code rot, technical debt and the associated passive rot and active rot. These all describe the degrading of a program or piece of code that through environmental changes or "a death of a thousand cuts", leads to a reduced functionality and a movement away from it's core use.
In an ideal world all projects - no matter how small or big - would come with extensive documentation (project aims, use cases, wireframes, planing docs) however we don't live or work in an ideal world. We live in a commercially driven reality, whether you're billing by the day, responsible for a large business change project or just trying to get something done in an evening. It is about achieving balance between your goals within your constraints. And this by it's very nature does lead in to the creation of legacy projects; they are epoch specific, a creature and a composition of their time. Imagine trying to build a website that has to last 50 years - how would you start it? how could you build it?
Legacy I feel is not a bad word, it's the emotional connotations we place upon systems we label with it that are our problems, our own internal beliefs that new is better (which in many cases it is!) without understanding the mental blocks that puts on us as programmers or designers as we work with the system / project.
In a nutshell: be kind to the decisions of those who have gone before you; who knows what your code will look like in the future.
