> Completely rewriting things is one of the worst decisions an intermediate engineer makes. That's what killed Netscape.
This is commonly trotted out to discourage re-writes, but how does that square with another piece of common advice: "build one to throw away" ?
I'm genuinely curious, and I'm not trying to pick on you specifically. There are just many different situations where one or the other makes sense, so I don't think it's so cut and dried.
It's not cut and dried, but a good guideline is this:
If you've written a program, but it doesn't work yet, and you've realized you made major architectural mistakes or whatever, feel free to rewrite from scratch.
If you've written a program and it's been in real use for a while, solving real problems for a lot of happy users, that means it embodies a lot of knowledge that will be difficult to re-create from scratch; in that case, think very carefully before embarking on a rewrite, and look hard for a way forward that will preserve that knowledge.
This is commonly trotted out to discourage re-writes, but how does that square with another piece of common advice: "build one to throw away" ?
I'm genuinely curious, and I'm not trying to pick on you specifically. There are just many different situations where one or the other makes sense, so I don't think it's so cut and dried.