I’m a refactorer. My title’s have had the words developer or programmer or engineer or architect. But really a lot of what I do is refactor. I mean even when I design and build something from the ground up, part of that process involves refactoring. You start with a design, you start coding with that design in mind but inevitably you realize an hour later, maybe a day or two later, that part of your vision of the problem or solution domain was wrong. So you refactor. I can’t imagine doing this with a dynamically typed language. The very beginning of creating a thought about potentially having to do this immediately causes my brain to shutdown.
You get two years into a large enterprise application with hundreds of source files. You realize you need to refactor a couple of the fundamental classes/libraries used in your system. It’s not because you were an idiot when you designed the things, its just that business has changed. The problem has changed. You need to adapt (refactor). It’s the right thing to do. It is good for the future. Are you a spineless ninny? Your’e not. You refactor. It’s not that bad, 341 compiler errors, but it doesn’t compile.
And don’t give me the old: “but all I need to do is grep for…”