Recently, I had to work on an old C++ builder 4 (1998) application. The IDE couldn’t be installed anymore on Windows 7, there were global variables and singletons everywhere, client-based compilation directives, no separation between UI, business logic and data layer, no class isolation, memory leaks all over the place, compiler failure as soon as the source code got too big, dependencies on obsolete COM objects, etc. A nightmare. It looked like the perfect example of an application that should be rewritten from scratch, and it made me wonder when is it a good time to completely rewrite a product ?
Short answer : Never.
“Refactoring is the process of taking a running program and adding to its value, not by changing its behavior but by giving it more of these qualities that enable us to continue developing at speed.” – Kent Beck
A new developer gets his hands on an existing source code, and soon your hear this complaint : “Code is a mess, it must be refactored !” Sometimes, that’s true, and some other times, that’s a great recipe to end up with a code as bad as – or even worse than – the initial code. To decide if a refactoring is required, here are ten questions you should ask yourself (or the developer asking for the refactoring): Continue reading
Project postmortems help improving a development process. But before planning one, ask yourself why you need it, and what will be the consequences of doing it or not. There’s nothing worse than collecting people’s feedback, and then ignoring it. If you are not ready to take actions to improve things, just don’t do a postmortem. Else, the following tips may help you get the most from your project postmortem : Continue reading
“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”