Design Decisions

Linas Vepstas linas at linas.org
Thu Aug 28 11:02:22 CDT 2003


On Tue, Aug 19, 2003 at 03:21:49PM -0400, Benoit Gr?goire was heard to remark:
> > Perhaps I should say 'ruthless evolution' is a more accurate term.
> 
> In that case we are in agreement, except I guess for the ruthlessness of the 
> thing.  I wouldn't want us to revisit the QIF importer fiasco.  (Written once 
> with a poor design, Started over with everyone's encouragement and  taken to 
> 95% completion, said to be much better.  Developper leaves, no one really 
> understand replacement code, so code is never deployed.  Now first codebase 
> still (reluctantly) maintained while third implementation in progress.

Correction: above should say 'second, third and fourth'.  
The *first* implementation was in C and I wrote it.  The person
who wrote the *second* implementation, in scheme, didn't understand
the issues involved, and yet had a sufficiently inflated ego to not
care, and not bother to ask about the issues, and not deal with them,
until forced to, under duress.

There are many lessons to be learned here.  At least one is that 
re-writing from scratch is often more difficult than assumed, and 
takes much longer than anticipated.  Just look at Mozilla vs.
Netscape!   It pays to migrate old code, rather than redesigning it.  
At first, it seems a much more slow way to proceed, a much more 
painful way.  But it only seems slower at the start.  Towards the 
end, the 'old code' is ready to deploy, because its actually 
bug-free (because it always worked, had never gotten broken along the
way), even as the 'new rewrite' remains buggy and unfinished.

--linas

-- 
pub  1024D/01045933 2001-02-01 Linas Vepstas (Labas!) <linas at linas.org>
PGP Key fingerprint = 8305 2521 6000 0B5E 8984  3F54 64A9 9A82 0104 5933


More information about the gnucash-devel mailing list