<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Learning on Code Plato</title><link>https://CodePlato3721.github.io/tags/learning/</link><description>Recent content in Learning on Code Plato</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Mon, 25 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://CodePlato3721.github.io/tags/learning/index.xml" rel="self" type="application/rss+xml"/><item><title>Do We Still Need to Practice Programming in the AI Era?</title><link>https://CodePlato3721.github.io/post/do-we-still-need-to-practice-programming-in-the-ai-era/</link><pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate><guid>https://CodePlato3721.github.io/post/do-we-still-need-to-practice-programming-in-the-ai-era/</guid><description>&lt;img src="https://pub-deacd49348914a49b1254b01f351ef0d.r2.dev/2026/05/do-we-still-need-to-practice-programming-in-the-ai-era/en/banner.png" alt="Featured image of post Do We Still Need to Practice Programming in the AI Era?" /&gt;&lt;p&gt;&amp;ldquo;Vibe Coding&amp;rdquo; is having a moment. So — do we still need to practice programming?&lt;/p&gt;
&lt;p&gt;My answer is yes.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve written before about using AI to distill reading material and quickly grasp the structure of an article. But a few fundamental realities won&amp;rsquo;t change just because AI showed up.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;The rate at which the human brain absorbs knowledge hasn&amp;rsquo;t changed. No matter how fast AI technology advances, your personal learning speed doesn&amp;rsquo;t automatically accelerate with it. There are no real shortcuts to learning.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AI was trained on both good code and bad code. Bad code isn&amp;rsquo;t always incorrect code — it can simply be code that smells, is hard to maintain, or has a chaotic architecture. If you can&amp;rsquo;t spot the problem yourself, AI often won&amp;rsquo;t spot it either.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="example-1"&gt;Example 1
&lt;/h2&gt;&lt;p&gt;Experienced developers and beginners literally see different things when they look at the same code.&lt;/p&gt;
&lt;p&gt;Imagine you&amp;rsquo;re working in React and you come across this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;phone&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;iPhone&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;price&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;payInFull&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1000&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;monthlyFin&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;99&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Your product manager asks you to add a &amp;ldquo;snapshot page&amp;rdquo; — a page that displays the product&amp;rsquo;s current state frozen at a point in time, so that even if the product data changes later, the snapshot stays the same.&lt;/p&gt;
&lt;p&gt;AI quickly generates this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;phone&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;iPhone&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;price&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;payInFull&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1000&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;monthlyFin&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;99&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;Snapshot&lt;/span&gt; {&lt;span style="color:#a6e22e"&gt;...phone&lt;/span&gt;} /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You see &lt;code&gt;{...phone}&lt;/code&gt; and think: &amp;ldquo;Got it — that&amp;rsquo;s an object copy.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;A short while later, customer support files a bug: after the price is updated in the parent component, the price on the snapshot page updates too.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;re baffled. This shouldn&amp;rsquo;t be happening.&lt;/p&gt;
&lt;p&gt;After digging in, you realize:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;Snapshot&lt;/span&gt; {&lt;span style="color:#a6e22e"&gt;...phone&lt;/span&gt;} /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;is not the same as:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;snapshot&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; {...&lt;span style="color:#a6e22e"&gt;phone&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The former is just React&amp;rsquo;s props spread syntax sugar.&lt;/p&gt;
&lt;p&gt;So you update the code:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;snapshot&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; {...&lt;span style="color:#a6e22e"&gt;phone&lt;/span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;Snapshot&lt;/span&gt; {&lt;span style="color:#a6e22e"&gt;...snapshot&lt;/span&gt;} /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Still broken.&lt;/p&gt;
&lt;p&gt;Eventually you find the fix:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;snapshot&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;structuredClone&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;phone&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Someone who has been burned by this before — or who genuinely studied JavaScript&amp;rsquo;s object reference model — would have spotted the problem immediately. Someone who hasn&amp;rsquo;t would go down the same rabbit hole.&lt;/p&gt;
&lt;h2 id="example-2"&gt;Example 2
&lt;/h2&gt;&lt;p&gt;Have you ever felt completely fluent while watching a tutorial, only to draw a total blank the moment you sit down to write the code yourself?&lt;/p&gt;
&lt;p&gt;I was working through a Data Science course recently. The material wasn&amp;rsquo;t particularly complex for a software engineer:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;top1 &lt;span style="color:#f92672"&gt;=&lt;/span&gt; Table&lt;span style="color:#f92672"&gt;.&lt;/span&gt;read_table(path_data &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;top_movies_2017.csv&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But when I sat down to do the assignment — which asked me to load &lt;code&gt;top_movies_2017.csv&lt;/code&gt; — my mind went completely empty.&lt;/p&gt;
&lt;p&gt;I tried things like:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;read_csv
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;import_csv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;…and various other guesses.&lt;/p&gt;
&lt;p&gt;Strangely, I had seen &lt;code&gt;Table.read_table&lt;/code&gt; multiple times in the course material.&lt;/p&gt;
&lt;p&gt;What I realized: the human brain doesn&amp;rsquo;t learn purely through reading. Learning is a multi-sensory process — it involves sound, touch, the frustration of hitting a wall, the cycle of trying and failing. Those experiences are part of the memory itself.&lt;/p&gt;
&lt;p&gt;Knowing something intellectually is not the same as having actually learned it.&lt;/p&gt;
&lt;h2 id="summary"&gt;Summary
&lt;/h2&gt;&lt;p&gt;AI can help you extract an outline, surface key points, and let you skip over sections that aren&amp;rsquo;t relevant to you. In that sense it&amp;rsquo;s a useful map.&lt;/p&gt;
&lt;p&gt;But be clear-eyed about what a map is and isn&amp;rsquo;t.&lt;/p&gt;
&lt;p&gt;If your underlying ability to absorb knowledge hasn&amp;rsquo;t actually gotten faster, don&amp;rsquo;t be fooled by the optimistic claim that &amp;ldquo;anyone can code in the AI era.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Anyone can generate code&amp;rdquo; is not the same as &amp;ldquo;anyone can build a maintainable commercial product.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;AI can help you go faster.&lt;/p&gt;
&lt;p&gt;But it cannot replace the process of genuinely understanding systems, code, and engineering complexity. That part still takes you.&lt;/p&gt;</description></item></channel></rss>