I have been asked to provide some information about the number of lines of
code in LISTSERV, the time it took me to write it, etc. I do not believe in
evaluating the amount of programming time required by a project by dividing
the amount of lines of code by some managerial constants which supposedly
represent the average efficiency of a programmer, but I respect the religious
beliefs of other people, so here's the info.
LISTSERV is comprised of 12750 lines of documentation and 35500 lines of code,
of which 6300 are in assembler (the rest being REXX). The documentation is
quite a bit verbose, as I enjoy writing in English (I take documentation as a
pseudo-literary break in my grim everyday world of americanized technical
jargon). However, the code is relatively compact, because I am very lazy :-),
and do not particularly enjoy writing these meaningless sentences using this
ridiculous vocabulary of 50 words or so. Have a look at the REXX part of the
survey exec for an example; another example could be the LISTSERV database
functions, which fit in 2400 lines of code (1100 assembler, 1300 REXX). The
REXX code contains almost no comment (comments are for freaks who can't read
core dumps :-) ); the assembler code usually has one comment a line, plus a
number of block comments (I can't stand waiting for the core dump to get
printed ;-) ).
The internals of LISTSERV were rewritten twice since the first version, not in
the "stop and start from scratch" way but through a constant evolutionary
process: whenever I needed to change a module to fix a bug, I would carefully
review all the routines and usually rewrite them, the first time to use more
powerful and efficient REXX programming techniques that I did not know when I
wrote the very first version, and the second (and most important) time to
adapt the code to the unexpected growth of the product and resulting
requirements. The first time LISTSERV had something like 1/5th of the code it
has today, and everything was rewritten. The second time, it had about 2/3rd
of today's size, and maybe 2/3rd of the code was rewritten. That is, the
actual amount of code I ended up writing is about 60000 lines.
Most of LISTSERV was written during the 3 years that I was a student in Metz
and Paris. I used to escape the grim world of Supelec every weekend and come
to work in Centrale (FRECP11). The first morning was spent reading and
answering my weekly couple of hundred mail files, the afternoon being spent
working on the system or on other smaller programs like CHAT or RELAY. Sunday
was usually dedicated to LISTSERV, as I prefer to work with large time slices.
That is, most of LISTSERV took around 150 sundays to write (14-hours sundays,
but then any managerial book or Supelec teacher will tell you that the amount
of lines you can write a day does not depend on the number of hours you worked
that day, nor on the programming language you have used). The rest (mostly the
UDD) was done at LEPICS, where it is much more difficult to count the days
since I am not forced to be away 5 days a week.
That type of work is not something that you can bend into the rules of
computing project management books. It is not something you can put into an
equation, as in "150/20 = 7.5 months" or "60000/150 = 400 lines/day". It is
not something you can control, plan, schedule, monitor, explain, evaluate,
audit, etc. It is something that may happen, or that may not happen, but which
will take place or fail to take place regardless of any of these
"environmental parameters" that can be controlled by managers. It is clearly a
process that cannot be owned and cannot be controlled, and therefore something
that no manager or politician wants to have to deal with.
Eric
|