<story><title>A software epiphany</title><url>https://johnwhiles.com/posts/programming-as-theory</url></story><parent_chain><item><author>dasil003</author><text>Title is a bit overblown for the actual epiphany which is more about the necessity of programmers having a robust mental model of a system to be able to maintain, let alone improve the system.  I don&amp;#x27;t see anything particularly unique to software in this thesis, as complex physical systems also have the same characteristic.&lt;p&gt;I also think this is way off base:&lt;p&gt;&amp;gt; &lt;i&gt;It means that the code base we create is not the true product of our work. The real product is the mental theory of that code base which&lt;/i&gt;&lt;p&gt;This is manifestly not the case.  The value of computers is that you can write code once, and the computer can execute it repeatedly ad infinitum.  As a programmer, your mental theory of the code base has value to its owners, but it&amp;#x27;s not the product.  The code base is also not the product.  The product is whatever output is created and consumed by the relevant stakeholders.</text></item></parent_chain><comment><author>naasking</author><text>&amp;gt; As a programmer, your mental theory of the code base has value to its owners, but it&amp;#x27;s not the product&lt;p&gt;If you lost all of the code today, with the right understanding you could build it again relatively quickly. If you lost all that understanding, say all the developers quit, the program will no longer be adapted to customer needs potentially for years until that understanding is rebuilt.&lt;p&gt;I agree that &amp;quot;product&amp;quot; is probably not the right word, probably &amp;quot;asset&amp;quot; fits better. Losing that knowledge is like losing a manufacturing plant for your product. The plant isn&amp;#x27;t the product but it&amp;#x27;s a key asset for producing the product.</text></comment>
<story><title>A software epiphany</title><url>https://johnwhiles.com/posts/programming-as-theory</url></story><parent_chain><item><author>dasil003</author><text>Title is a bit overblown for the actual epiphany which is more about the necessity of programmers having a robust mental model of a system to be able to maintain, let alone improve the system.  I don&amp;#x27;t see anything particularly unique to software in this thesis, as complex physical systems also have the same characteristic.&lt;p&gt;I also think this is way off base:&lt;p&gt;&amp;gt; &lt;i&gt;It means that the code base we create is not the true product of our work. The real product is the mental theory of that code base which&lt;/i&gt;&lt;p&gt;This is manifestly not the case.  The value of computers is that you can write code once, and the computer can execute it repeatedly ad infinitum.  As a programmer, your mental theory of the code base has value to its owners, but it&amp;#x27;s not the product.  The code base is also not the product.  The product is whatever output is created and consumed by the relevant stakeholders.</text></item></parent_chain><comment><author>nurple</author><text>But you might argue the fact that most software is always adding features and changes is because it really is never a perfect representation of some target theory. In that case, the theory inside the heads of each person behind the software may even be incomplete compared to some perfect representation, and the work done by a company in the user&amp;#x2F;feature iteration cycle is the process of reconciling the drift between each of them towards some shared theory.&lt;p&gt;I don&amp;#x27;t think it&amp;#x27;s uncommon for parts of the theory already enshrined in implementation to be forgotten to time as it passes, if it&amp;#x27;s not regularly revisited and cogitated on.</text></comment>