Engineering I.E. Quality

Michael Pyne pynm0001 at unf.edu
Fri Apr 9 09:54:30 CEST 2004


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Friday 09 April 2004 03:26, James Richard Tyrer wrote:
> First I
> design a program, and then I write the code.  Sometimes this is a cycle:
> Design, Code, Design, Code ... etc.  But I always design before I code.  I
> do this because it works.  It results in better code with less total work.
>
> Like I said on the Dot: Design twice, Code once.

Well, speaking as a programmer, I would tend to concur about the importance of 
design, even if it's just a paper sketch.  However, I think you underestimate 
the importance of design to the developers.  Sure, some programs could have 
used a much better design step (such as practically everything in kdeadmin).  
But things like KWallet and the KParts infrastructure are IMO good examples 
of a design process at work.

They certainly don't appear to have UML diagrams or such, but it still doesn't 
stink of an overnight hackfest.

Perhaps it would be better to come up a nice beautiful plan covering all the 
contingencies first.  That is certainly how we're taught to build projects in 
my CS major.  I personally find that I quickly lose interest in a program if 
I can't get SOMETHING coded within a few days after planning, however, which 
usually leaves me time for only a cursory design.  And that's a problem with 
volunteer effort:  If someone loses interest, then we get no contribution at 
all.

I think it's good to emphasize the importance of design (and Havoc P. has a 
good idea going with the Project Utopia use cases IMHO), but I don't feel 
from my observations that the KDE developers are unnecessarily ignoring 
design, even if they don't feel it is as important as you do.

I'm reminded of the example of John Romero, the designer for iD software when 
they made Doom.  He eventually left the company to found Ion Storm because 
the rest of iD kept letting those pesky technical issues interfere with 
John's vision.  The motto of Ion Storm became something to the effect of 
"Design is law", and the company became a spectacular failure, although it 
managed to produce a few noteworthy titles.

It's clear that you're not advocating designing the code with no regard to its 
eventual implementation, but (again speaking from my personal experience) I 
find that it's easier to design around a system's peculiarities when you're 
actually sitting there at the system.  I use an incremental approach: Design, 
code, test, code, test, test, test, code, etc.  If it becomes obvious that 
the design isn't working, I overhaul it before I get too much coded.

The initial design always helps, but it's never thourough.  And ironically 
enough, my program ends up better for it 9 times out of 10.  Of course, 
that's just me.  But I suspect more KDE developers pay attention to design 
that you think, even if they don't flesh out the entire structure at first.

Regards,
 - Michael Pyne
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQFAdla7qjQYp5Omm0oRAuC2AJ9XVTwNahavisLuDmI48wM/qPTBzACgzTLc
GY/IwrR3RoAXKxg3hbIrd4M=
=tUxG
-----END PGP SIGNATURE-----


More information about the kde-quality mailing list