

Things You Should Never Do [2000] - MagicClam
http://www.joelonsoftware.com/articles/fog0000000069.html

======
api
An oldie but goodie...

The only exceptions I can think of are:

1) The state of the art has fundamentally changed. In this case you are not
actually _re-writing the same thing_. Rather, you are writing something new
that obsoletes the old thing. For example, one might replace a string matching
based spam filter with a Bayesian spam filter.

2) The architecture is fundamentally different. For example, you might have to
rewrite to port a piece of high performance computing code from MPI to GPGPU,
or to make something single threaded aggressively multi-threaded. It might
require a whole new approach to the problem.

3) I do believe that there exist code bases that are _so fracking gawd-awful_
that there is nothing to be done with them but take them out behind the barn
and shoot them in the head. But these are in the minority, and usually they
never worked well or established any kind of "market leading position" to
begin with. (If they did, it must not have been a crowded market.)

------
richardg
_There's a subtle reason that programmers always want to throw away the code
and start over. The reason is that they think the old code is a mess._

This one hits the nail on the head, also, maybe it's better since you did it
yourself, rather than somebody else?

Rather than reading someone else's code, it's better to write your own..

then the next guy comes along and does the same thing to your old code..

