Skip to main content
Post Made Community Wiki by Conrad Poelman
Source Link

Wow. Sounds like you have a really big challenge ahead of you! I'd do something along the following lines:

  • First of all: Prioritize. What do you want to achieve first? What is the most important for the current state of the project? What will you get the most from vs how much time it'll take to get there.
  • Ensure that you have a version control system. Git or Mercurial for instance.
  • Get some kind of continuous integration system (e.g. Jenkins) up and running.
  • Get a bug tracking system up and running. Mantis is quite nice in my opinion.
  • Look into static code analysis (if something is available for the language you're currently working with).
  • Try to achieve as much consistency in anything from naming of variables to general code conventions and guidelines in the code base.
  • Get the system under test. This is extremely important for a big legacy system like this in my opinion. Use test cases to document existing behavior, no matter if the behavior feels weird or not (usually there's a reason as to why the code looks a certain why, might be good or bad, or both ;P). Michael Feathers Working Effectively With Legacy Code is an excellent resource for this.