<story><title>Why does it take so long to build software? (2020)</title><url>https://www.simplethread.com/why-does-it-take-so-long-to-build-software/</url></story><parent_chain><item><author>caseyross</author><text>Software takes a long time to build because it&amp;#x27;s always new.&lt;p&gt;That is, software is trivially copy-able, so there is no reason to spend effort duplicating any software that already exists. (Legal reasons and &amp;quot;not-invented-here&amp;quot; syndrome notwithstanding.) This is a &lt;i&gt;huge&lt;/i&gt; different from how the &amp;quot;real&amp;quot; world works, where almost all of the work involved in building, say, a car, is actually just the work of assembling identical copies of that product so that it can be physically sold to more than one person.&lt;p&gt;The insane amounts of repeated effort involved in building any physical product at scale have a silver lining, in that the repetition enables a very good and stable estimate of how long another repetition will take. Software is the opposite situation --- we only need to build anything once, but not having built that thing before, we don&amp;#x27;t really know how long it will take.</text></item></parent_chain><comment><author>TeMPOraL</author><text>I think focusing on this comparison to the real world assemblies and constructions doesn&amp;#x27;t yield much insight. The equivalent of a car being assembled is a compiler building an executable from source. You can consider factories to be just &lt;i&gt;very, very long&lt;/i&gt; compiles, and forget about it.&lt;p&gt;The question of why software takes a long time to build pertains to the coding phase, to which real life&amp;#x27;s analogue is drafting&amp;#x2F;design phase. It is my impression that the drafting&amp;#x2F;design phase in &amp;quot;hard&amp;quot; industries can be just as messy and hard to schedule as software development is - we just don&amp;#x27;t pay attention, because for physical products, drafting&amp;#x2F;design is nearly free (capex &amp;amp; opex of the assembly phase dominates), whereas in software, the construction is nearly free (compiler time is too cheap to meter).&lt;p&gt;It&amp;#x27;s true that, on the surface, software is &amp;quot;always new&amp;quot;. But after doing it for a while, I have this sinking feeling that a lot of it is old and repetitive work that we hadn&amp;#x27;t yet automated - there are deep similarities between pieces of code we&amp;#x27;re writing, but we don&amp;#x27;t have a language to fully capture them and abstract them away.</text></comment>
<story><title>Why does it take so long to build software? (2020)</title><url>https://www.simplethread.com/why-does-it-take-so-long-to-build-software/</url></story><parent_chain><item><author>caseyross</author><text>Software takes a long time to build because it&amp;#x27;s always new.&lt;p&gt;That is, software is trivially copy-able, so there is no reason to spend effort duplicating any software that already exists. (Legal reasons and &amp;quot;not-invented-here&amp;quot; syndrome notwithstanding.) This is a &lt;i&gt;huge&lt;/i&gt; different from how the &amp;quot;real&amp;quot; world works, where almost all of the work involved in building, say, a car, is actually just the work of assembling identical copies of that product so that it can be physically sold to more than one person.&lt;p&gt;The insane amounts of repeated effort involved in building any physical product at scale have a silver lining, in that the repetition enables a very good and stable estimate of how long another repetition will take. Software is the opposite situation --- we only need to build anything once, but not having built that thing before, we don&amp;#x27;t really know how long it will take.</text></item></parent_chain><comment><author>lazysheepherd</author><text>Best comparison (car&amp;#x2F;machine manufacturing vs software development) I&amp;#x27;ve ever heard on this topic is as following;&lt;p&gt;While producing a machine, there are two steps;&lt;p&gt;1) designing the blueprint (takes a lot of time, unpredictable)&lt;p&gt;2) mass production (takes a lot of time, predictable)&lt;p&gt;Those steps in software development;&lt;p&gt;1) building the software (takes a lot of time, unpredictable)&lt;p&gt;2) deploying the code (takes virtually no time, predictable)&lt;p&gt;So the real difference is this: software is almost all about doing something &lt;i&gt;new&lt;/i&gt;, each and every time.
It&amp;#x27;s all flesh and has no bone: e.g. devoid of a long, very stable and predictable mass production stage. It&amp;#x27;s almost all about R&amp;amp;D, all of it&amp;#x27;s length. Hence 98% of the process is novel work therefore takes time and hard to predict.</text></comment>