4 ms·
I'd consider a single program that is "large" to be a failure already, if we define "large" to mean "too big to easily fit in a single programmer's head." The
by evo 15y ago
I'd consider a single program that is "large" to be a failure already, if we define "large" to mean "too big to easily fit in a single programmer's head."
The skill of a decent programmer is to decompose a large problem space into orthogonal components, so that each appears to be a small program that keeps you from being mentally entangled into the needs of the larger problem. Or even better, be sufficiently knowledgeable of the field to recognize when some of these orthogonal components already exist.
Once you've crossed the line where a component is "large", by the above definition, you've reached the point where future programmers will find it easier to insert new functionality ad-hoc wherever it seems to work, rather than attempt to understand the design and modify it appropriately. This design-by-accretion style can rapidly make a codebase unmaintainable.