Is there a "Large Scale Python Software Design" ?

Alex Martelli aleaxit at yahoo.com
Tue Oct 19 16:05:21 EDT 2004


Josiah Carlson <jcarlson at uci.edu> wrote:

> > Heh.  "Large" depends on a lot of things, particularly connectedness,
> > but I really can't picture 10k being large under any circumstances.
> 
> Ok, so what is large?  How many orders of magnitude larger than 10k
> lines does it take for a piece of software to be large?  And why should
> you be the judge?

My definition of a large software system is: a system that cannot
sensibly be developed and maintained by just one developer, but requires
a team of developers.  Among the factors defining where the boundaries
lie are such things as deployment issues (how many platforms, how
diverse), function points, analysis/requirements, etc, etc, but SLOC
(properly counted/normalized lines of code) are the main determinant.

For a reasonably experienced programmer, with decent tools, and without
hair-raising problems of deployment, optimization, continuous fast
changes to specs, etc, etc, 10k SLOC should be within the threshold of
"can be sensibly developed and maintained by one person"; 100k SLOC
won't be; the threshold is somewhere in-between.  Of course, if you're
talking freshman programming trainees, or special problems of the
various sorts mentioned, the thresholds do shift downwards.


> I'd let it slip to medium, but I wouldn't say that the project was small.
> Small is something you can do in a weekend because you've been putting
> it off.  Small is something a newb to the language can do in a week
> while they are learning the language.

OK, that's your definition of "small", I guess.  I don't know that
there's a commonly accepted one.  On the other hand, moving from a
project that can all fit in your head, one you can fully develop and
actively maintain by yourself, to a team situation, _is_ a crucial
threshold, as teams have such different strengths and problems than
individuals on their own; and the "Large Scale" monicker is typically
tagged onto projects requiring a team.

We can quibble about special cases (is a 2-people team, with one of them
developing half-time and the rest of the time out selling the system,
comparable to a more typical case of 6-10 people working full-time on
development and maintenance of a system?), but that's always so for
taxonomies, and doesn't add much to the discussion IMHO.


Alex



More information about the Python-list mailing list