| Are you sure you rewrote a "system"? Or a program? Fred Brooks makes a distinction between a program, a product, a system, and a "programming system product" (what I believe Joel was thinking about when he was talking about Netscape) "A product (more useful than a program): can be run, tested, repaired by anyone - usable in many environments on many sets of data. - must be tested - documentation Brooks estimates a 3x cost increase for this. To be a component in a programming system (collection of interacting programs like an OS): - input and output must conform in syntax, semantics to defined interfaces - must operate within resource budget - must be tested with other components to check integration (very expensive since interactions grows exponentially in n). Brooks estimates that this too costs 3x. A combined programming system product is 9x more costly than a program. http://www.cs.usfca.edu/~parrt/course/601/lectures/man.month... http://books.cat-v.org/computer-science/mythical-man-month/t... |