idea
Cost of adding features to software grows exponentially with its size.
Time required by tasks is non linear. Task 2x as big might take 4x longer. Empirical evidence shows cost evolves quadraticly (exponent 1.5). Effort $E$ is determined by
$$E(n_{lines}) = const \times (n_{lines})^{1.5}$$
Determining the constant is given historic effort $E_h$ is
$$const = \frac{E_h}{\sqrt{n_{lines}}^{1.5}}$$
Also the consequence is that reducing the code base by a ratio of $\delta_{lines}$ (i.e. remove $\delta_{lines}$% of the code) means a delta in effort of[1]:
$$\delta_{E} = \frac{1}{\sqrt{1-\delta_{lines}}} $$
i.e. Reduce code by %, go % faster.
links
Every new feature added to a system increases its entropy
Blog post on splitting the monolith.
Large code bases make Starting work even harder.
references
-
Systems program building is an entropy-decreasing process, hence inherently metastable. Program maintenance is an entropy-increasing process, and even its most skillful execution only delays the subsidence of the system into un-fixable obsolescence.
~ The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition, Frederick P. Brooks Jr.
-
Systems program building is an entropy-decreasing process, hence inherently metastable. Program maintenance is an entropy-increasing process, and even its most skillful execution only delays the subsidence of the system into un-fixable obsolescence.
~ The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition, Frederick P. Brooks Jr.
[1]: Calculation of $\delta_E$:
$$ \delta_E = \frac{E(n_{lines} \times (1-\delta_{lines}))}{E(n_{lines})} = \frac{(n_{lines} \times (1-\delta_{lines}))^{1.5}}{(n_{lines})^{1.5}} $$
$$= \frac{(n_{lines})^{1.5} \times (1-\delta_{lines})^{1.5}}{(n_{lines})^{1.5}}$$