It’s several years now that I am out of school. I have a BS in software engineering and run my own company. I was taught stuff about compilers, queues, patterns, languages, mathematics, datastructures, … you name it. Asked what I was not learned in school I would answer: “how to fight the urge to rewrite everything”.
To a die hard software writer “rewrite it” seems like the perfect solution to every problem. The silver bullet to all failures in IT. After all the others are just a bunch of loosers losers and I am Mr. Super-Design-Software-Pattern-On-The-Edge-Flavour-Of-The-Day-Framework-User. Just tear everything down and start from scratch. WRONG. WRONG. WRONG. Whenever you have to touch a software system, be it for enhancements or for fixing bugs, and you feel like you should dump the whole codebase and just start from scratch (after all it’s so easy to do it. It probably takes 3 days) step back and take a deep breath. The authors of this system were not just a bunch of idiots. They had reasons to do it the way they did:
- The business is not as easy as you might think at a first glance
- Technical restrictions from inside or outside
- The system evolved over time
- Your state of the art framework/programming language/tool was not available when the system was written
- They knew less than you know now (unlikely…)
So think twice. And then think again. Wouldn’t a tiny update or bug fix do ? You need to add new features and the original system was written in Cobol/Fortran/Delphi and you do not have a clue of these languages ? Perhaps you can add the new stuff with your super-duper framework/language and just integrate it. Find someone who knows the language, chances are hiring someone is less expensive as you rewriting the whole system.Yes. This is something I was not taught in school. This was something I had to find out for myself. I made my own errors … not that i tried to write Mozilla from scratch… it was on a smaller project. Lessons learned!
Resources: Years ago I read an article on this topic. I think it was it in Joel’s book ? Anyway. Here it is: Things you should never do, Part 1