<story><title>Programming isn’t coding (2020)</title><url>https://occasionallycogent.com/programming_isnt_coding/index.html</url></story><parent_chain><item><author>nextaccountic</author><text>This is an amazing explanation, but I sense that it will become dated in some years, like, it will describe how computing worked in the old times, when people actually coded by hand.&lt;p&gt;Because,&lt;p&gt;&amp;gt; Flexibility and the ability to make inferences are skills that children learn as they grow up. But computers are like Peter Pan: they never grow up.&lt;p&gt;LLMs will change all of this. Maybe in some decades we will see programming environments that don&amp;#x27;t require people to understand the solution in order to create a program. For example, it may be possible for people to create spellcheckers without understanding the rules of spelling.&lt;p&gt;Unfortunately this will create a whole new class of bugs due to AIs hallucinating code, and I&amp;#x27;m afraid that the average software quality will take a hit.</text></item><item><author>divan</author><text>The best explanation I&amp;#x27;ve seen is in the book &amp;quot;The Secret Life of Programs&amp;quot; by Jonathan E. Steinhart. I&amp;#x27;ll quote that paragraph verbatim:&lt;p&gt;---&lt;p&gt;Computer programming is a two-step process:&lt;p&gt;1. Understand the universe.&lt;p&gt;2. Explain it to a three-year-old.&lt;p&gt;What does this mean? Well, you can&amp;#x27;t write computer programs to do things that you yourself don&amp;#x27;t understand. For example, you can&amp;#x27;t write a spellchecker if you don&amp;#x27;t know the rules for spelling, and you can&amp;#x27;t write a good action video game if you don&amp;#x27;t know physics. So, the first step in becoming a good computer programmer is to learn as much as you can about everything else. Solutions to problems often come from unexpected places, so don&amp;#x27;t ignore something just because it doesn&amp;#x27;t seem immediately relevant.&lt;p&gt;The second step of the process requires explaining what you know to a machine that has a very rigid view of the world, like young children do. This rigidity in children is really obvious when they&amp;#x27;re about three years old. Let&amp;#x27;s say you&amp;#x27;re trying to get out the door. You ask your child, &amp;quot;Where are your shoes?&amp;quot; The response: &amp;quot;There.&amp;quot; She did answer your question. The problem is, she doesn&amp;#x27;t understand that you&amp;#x27;re really asking her to put her shoes on so that you both can go somewhere. Flexibility and the ability to make inferences are skills that children learn as they grow up. But computers are like Peter Pan: they never grow up.</text></item></parent_chain><comment><author>bmitc</author><text>I strongly suspect that the impact of LLMs is overblown. Unless they suddenly are able to synthesize complex and ill-defined requirements that change over time, I don&amp;#x27;t expect their impact will be beyond novelty.</text></comment>
<story><title>Programming isn’t coding (2020)</title><url>https://occasionallycogent.com/programming_isnt_coding/index.html</url></story><parent_chain><item><author>nextaccountic</author><text>This is an amazing explanation, but I sense that it will become dated in some years, like, it will describe how computing worked in the old times, when people actually coded by hand.&lt;p&gt;Because,&lt;p&gt;&amp;gt; Flexibility and the ability to make inferences are skills that children learn as they grow up. But computers are like Peter Pan: they never grow up.&lt;p&gt;LLMs will change all of this. Maybe in some decades we will see programming environments that don&amp;#x27;t require people to understand the solution in order to create a program. For example, it may be possible for people to create spellcheckers without understanding the rules of spelling.&lt;p&gt;Unfortunately this will create a whole new class of bugs due to AIs hallucinating code, and I&amp;#x27;m afraid that the average software quality will take a hit.</text></item><item><author>divan</author><text>The best explanation I&amp;#x27;ve seen is in the book &amp;quot;The Secret Life of Programs&amp;quot; by Jonathan E. Steinhart. I&amp;#x27;ll quote that paragraph verbatim:&lt;p&gt;---&lt;p&gt;Computer programming is a two-step process:&lt;p&gt;1. Understand the universe.&lt;p&gt;2. Explain it to a three-year-old.&lt;p&gt;What does this mean? Well, you can&amp;#x27;t write computer programs to do things that you yourself don&amp;#x27;t understand. For example, you can&amp;#x27;t write a spellchecker if you don&amp;#x27;t know the rules for spelling, and you can&amp;#x27;t write a good action video game if you don&amp;#x27;t know physics. So, the first step in becoming a good computer programmer is to learn as much as you can about everything else. Solutions to problems often come from unexpected places, so don&amp;#x27;t ignore something just because it doesn&amp;#x27;t seem immediately relevant.&lt;p&gt;The second step of the process requires explaining what you know to a machine that has a very rigid view of the world, like young children do. This rigidity in children is really obvious when they&amp;#x27;re about three years old. Let&amp;#x27;s say you&amp;#x27;re trying to get out the door. You ask your child, &amp;quot;Where are your shoes?&amp;quot; The response: &amp;quot;There.&amp;quot; She did answer your question. The problem is, she doesn&amp;#x27;t understand that you&amp;#x27;re really asking her to put her shoes on so that you both can go somewhere. Flexibility and the ability to make inferences are skills that children learn as they grow up. But computers are like Peter Pan: they never grow up.</text></item></parent_chain><comment><author>benj111</author><text>The programmer has to understand the problem. If the person behind the keyboard offloads that to AI, the AI is the programmer. The person behind the keyboard is basically just a manager.</text></comment>