<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="pretty-atom-feed.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>Sue&#39;s blog</title>
  <subtitle>A blog about coding and learning</subtitle>
  <link href="https://www.sue.codes/feed/feed.xml" rel="self" />
  <link href="https://www.sue.codes/" />
  <updated>2026-03-27T00:00:00Z</updated>
  <id>https://www.sue.codes/</id>
  <author>
    <name>Sue Smith</name>
  </author>
  <entry>
    <title>When is a tool the right tool for the job?</title>
    <link href="https://www.sue.codes/blog/tooljob/" />
    <updated>2026-03-27T00:00:00Z</updated>
    <id>https://www.sue.codes/blog/tooljob/</id>
    <content type="html">&lt;p&gt;This week I spent time with a group of leaders in research software engineering at a &lt;a href=&quot;https://www.researchsoft.org/events/rse-ai-workshop/&quot;&gt;workshop&lt;/a&gt; on the implications of using LLMs in their work. I gave a short lightning talk and shared a position paper representing my current thinking on AI assisted coding.&lt;/p&gt;
&lt;h2 id=&quot;my-position&quot;&gt;My position&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Here&#39;s the position paper I shared prior to the workshop:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I specialise in creating learning experiences to help people acquire developer skills. I’ve mostly worked in software industry settings, such as developer community platforms that enable people to make web apps. My perspective on AI-assisted coding is very mixed. On the one hand I can’t deny the enabling potential of a technology that helps people build software solutions without engineering skills, and on the other I’m concerned about a loss of understanding around software implementation, together with a decreasing investment in those skills.&lt;/p&gt;
&lt;p&gt;I’m not an expert in research engineering at all, so my perspective is entirely based on what I’m seeing in industry. The panic around jobs potentially being made obsolete is making it incredibly difficult for us to take the time necessary to explore the true potential and limitations of this new technology. There is undeniable utility here, but the costs for adoption are still largely unknown, in terms of individual and organisational success over the long term.&lt;/p&gt;
&lt;p&gt;What preoccupies me most as an educator is the “comprehension debt” or “cognitive debt” that appears to accompany AI-assisted coding. We’re seeing a widening gap between entry level and experienced software engineers. It’s not clear how we’ll create paths for those early in their careers to acquire the skills experienced developers are using to get the most effective use from LLMs, and that they acquired the “old fashioned” way, by writing code.&lt;/p&gt;
&lt;p&gt;There’s a parallel gap at the systems level, as we lose the ability to build solid mental models of the systems we’re using LLMs to generate. In software worked on collaboratively by teams, this is a more significant problem, as the source code exists, not just to provide instructions for a computer, but also acts as a shared human-readable representation of the system, a place where we come together to reason about how it works – the code performs a function natural language is not suited to.&lt;/p&gt;
&lt;p&gt;When it comes to comprehension, we’ll need to learn how to decide when LLMs are the right tool for the job, and when they aren’t. This will be determined by what level of fidelity about a system is the optimal one to work at, in order to meet individual and shared goals – balancing those over the short and long term is going to be both challenging and essential.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.google.com/presentation/d/1XtjsFOLdi1nrWVpftY0jVYWdDJx5i1APSBS-BmCIYWE/&quot;&gt;My lightning talk deck is available here too&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;the-workshop&quot;&gt;The workshop&lt;/h2&gt;
&lt;p&gt;I have to say it was a luxury to be in a room with people who are thinking deeply about AI code generation and how we can prepare for its impact. I&#39;ve found very few spaces where I can have these conversations and begin to grapple with the detail of this new automation, both in terms of opportunities and risks of harm.&lt;/p&gt;
&lt;p&gt;It was also fanstastic to be able to sit at a table of educators who are on the front line teaching people the skills they believe will serve their individual and shared goals – that is not an easy task, especially right now!&lt;/p&gt;
&lt;p&gt;The tension I keep coming back to is that language models could enable programming learning, but the platform interaction patterns are not optimised for it – if anything they&#39;re designed to avoid learning, as they&#39;re funded on the belief that AI removes the need for human beings to do certain categories of software work. I do believe this will change, as incidents continue to rise, organisations will discover the need for their teams to understand codebases with a new urgency.&lt;/p&gt;
&lt;p&gt;I learned a ton this week, I have a ludicrous number of tabs open in my browser for reading lol. I left the experience more motivated than ever to experiment with ways to enable learning in this new way of making software.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Do your fingers remember how to code?</title>
    <link href="https://www.sue.codes/blog/fingerscode/" />
    <updated>2026-03-17T00:00:00Z</updated>
    <id>https://www.sue.codes/blog/fingerscode/</id>
    <content type="html">&lt;p&gt;This week I&#39;m talking at &lt;a href=&quot;https://monkigras.com/&quot;&gt;Monki Gras&lt;/a&gt; about developer learning and AI.&lt;/p&gt;
&lt;p&gt;Here&#39;s my deck:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.google.com/presentation/d/1bwSZalwQHD5p1t0ivBa3nuCD4D97xJX1V9jLZam7syo/edit?usp=sharing&quot;&gt;Do your fingers remember how to code – slides&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And here are some links I mentioned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.raspberrypi.org/blog/why-kids-still-need-to-learn-to-code-in-the-age-of-ai/&quot;&gt;Why kids still need to learn to code in the age of AI – Raspberry Pi Foundation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developerrelations.com/talks/making-the-implicit-explicit/&quot;&gt;Making the Implicit Explicit talk – Erin McKean&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://teachcomputing.org/blog/quick-read-6-semantic-waves&quot;&gt;Semantic Waves – National Centre for Computing Education&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/DrCatHicks/learning-opportunities&quot;&gt;Learning Opportunities repo – Dr Cat Hicks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developerrelations.com/developer-education/an-open-framework-for-developer-learning&quot;&gt;My DevRelCon talk about Developer Learning&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My other posts on the subject:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.sue.codes/blog/stillteach/&quot;&gt;We should still teach coding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.sue.codes/blog/worthlearning/&quot;&gt;What is worth learning?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.sue.codes/blog/notsyntax/&quot;&gt;Software development isn&#39;t writing syntax&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;transcript&quot;&gt;Transcript&lt;/h2&gt;
&lt;p&gt;Here&#39;s a rough transcript of the talk, will likely be doing it again later in the year so will hopefully be able to share it in video form.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/yDxsxUfNyJ-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/yDxsxUfNyJ-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/yDxsxUfNyJ-960.jpeg&quot; alt=&quot;Do your fingers remember how to code?&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;I’m going to talk to you about developer learning in the context of AI assisted coding. You can access the deck and links at &lt;a href=&quot;https://www.suesmith.dev&quot;&gt;suesmith.dev&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/Tylmlw3bEU-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/Tylmlw3bEU-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/Tylmlw3bEU-960.jpeg&quot; alt=&quot;1. Identifying developer skills worth learning when AI can write code 2. Creating the conditions for this learning&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;I am part of a small cohort of people who specialise in developer learning in industry settings. I think there are about 9 of us lol. A lot of people are asking for advice about which developer skills we should be teaching right now. The truth is that I don’t know. I have some suspicions! But it really needs to be tailored to your own context, your software, your teams, your organisational priorities. What I can do is point at some techniques for discovering what developer skills even are, because it turns out we don&#39;t have a great conception of them. And I can outline some strategies for helping people learn them.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/cIUnuTMhue-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/cIUnuTMhue-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/cIUnuTMhue-960.jpeg&quot; alt=&quot;Demonic figure saying &amp;quot;Code is cheap, The bottleneck has moved, There is no moat&amp;quot;&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;First things first. This is LinkedIn obviously. The proclamations of doom. Bottlenecks and moats and all that. I have been involved in a number of organisational change initiatives over the years, and one thing they typically have in common is that they take a long time. So this idea that entire professions are being made obsolete overnight, I think we can take that with a pinch of salt. There are digital transformation initiatives still in operation...&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/LAmBC9zjlu-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/LAmBC9zjlu-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/LAmBC9zjlu-960.jpeg&quot; alt=&quot;The same slide but with NOT TODAY SATAN over it&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;I can&#39;t really point fingers, because I worked in devrel. But I was fortunate enough to also have friends who work in software but for normal boring companies where they don&#39;t chase whichever technology is flavour of the month. And they would routinely ridicule me for the nonsense I was purveying in devrel. It was a good reminder, the technologies that feature in the discourse are overwhelmingly not a reflection of what&#39;s happening in the world. The world beyond the veil of hashtags, is where we&#39;ll find out the utility of this very new technology, on the slower path.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/sCPShXY_14-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/sCPShXY_14-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/sCPShXY_14-960.jpeg&quot; alt=&quot;A lassie saying &amp;quot;I, an experienced software engineer, can build software without writing code, so coding must no longer be necessary&amp;quot;&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;Let’s look at another take that might lead us in a more constructive direction. This is typical of what we were seeing maybe a year ago. Someone who already knows how to write code uses AI to generate code effectively and comes to the conclusion no one needs to know about code anymore.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/bCYe_Li0i_-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/bCYe_Li0i_-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/bCYe_Li0i_-960.jpeg&quot; alt=&quot;The same slide but with &amp;quot;an experienced software engineer&amp;quot; highlighted&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;But I think we have a better handle on this already. We’re seeing a clear divergence between experienced developers and those early in their career. Experienced developers seem to be getting better use from LLMs for codegen. And there’s an increasing concern that early career developers are not acquiring the foundation skillset that they&#39;ll need. So there’s a disconnection.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/yb7EwZj0jq-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/yb7EwZj0jq-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/yb7EwZj0jq-960.jpeg&quot; alt=&quot;Cesare from Cabinet of Dr Caligari and &amp;quot;There’s a parallel comprehension gap at the project level, as mental models drift&amp;quot;&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;And there’s a parallel gap at the project level. As developers using AI to generate code find their ability to build solid mental models of a codebase start to drift. This might be partly anxiety but there are indicators that it comes at a real cost. It might be related to the increased rework we see on projects that rely heavily on AI code generation, and the slower incident mitigation. We&#39;re missing something intangible that I&#39;d like to explore.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/hMn2TX2V0X-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/hMn2TX2V0X-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/hMn2TX2V0X-960.jpeg&quot; alt=&quot;Dean Stockwell and Harry Dean Stanton in Paris Texas with the caption &amp;quot;my body remembers&amp;quot;&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;I’m gonnae take you back to 1984, the movie Paris Texas. These two brothers are driving across America. One of them has been stranded in the desert for years, he hasn&#39;t spoken to anyone for a long time, and his brother is taking him back to where he lives. And they are discussing sharing the driving, so he asks him if he remembers how to drive, and he says my body remembers.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/4qUvybHeeC-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/4qUvybHeeC-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/4qUvybHeeC-960.jpeg&quot; alt=&quot;Skills we aren’t aware of in the moment... Persist past a level of proficiency&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;A lot of our skills work like this. We aren’t aware of them in the moment, as we apply them. Some of them are motor skills. If you drive, you might have had the experience of driving somewhere and having no memory of the drive. Your body was driving. But it also applies to other skills. With coding it can be instructive to consider natural language skills like reading and writing. Once you reach a level of proficiency you can read without being aware that you&#39;re applying the skill of reading.&lt;/p&gt;
&lt;p&gt;And once you reach a level of proficiency some skills appear to become persistent. You could not see written language for a long time and would probably still be able to read, unless something else had happened to you.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/-HoKFMcNwN-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/-HoKFMcNwN-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/-HoKFMcNwN-960.jpeg&quot; alt=&quot;Dr Caligari and the text: You will not forget how to code because you used an LLM to generate some of it, Acquiring a skill is different to retaining it&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;A sidebar on this. I do not believe that you will forget how to code because you used AI to generate some of it. You might get rusty on the syntax of a particular language, but that’s normal, we’re always learning new languages, frameworks, techniques. We don’t remember the detail of every one we&#39;ve used, but we haven’t forgotten how to code. And if you had to go back to coding the old fashioned way without LLMs, you would be fine, you would pick it back up. What we can’t take for granted is that new developers are able to reach the level of proficiency that gives them the foundation they will need later.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/hEBUUgu5-f-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/hEBUUgu5-f-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/hEBUUgu5-f-960.jpeg&quot; alt=&quot;A hacker news screenshot and the text: Remember the “quickest to google” discourse from a few years ago?&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;Remember this from a few years ago, 13 apparently. The idea was that we shouldn’t measure programmer ability by the ability to remember syntax. That we could kind of outsource remembering to the machine and still be a good programmer. What was most valuable was more abstract than that. We’ve been through this moral panic a few times haven’t we, can you copy and paste from Stack Overflow and still be a good programmer...&lt;/p&gt;
&lt;p&gt;But when we look at the trajectory of a senior engineer, we see someone who spends less time touching code, whose skills are more abstract and not dependent on the detail of a particular implementation. It could be that we can retain a similar trajectory as people move a bit further from the implementation. But we&#39;ll have to do it with intention, it won&#39;t happen by accident.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/xFInwglVWD-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/xFInwglVWD-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/xFInwglVWD-960.jpeg&quot; alt=&quot;Wait, what are skills? One important thing about them is that they are repeatable&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;As an educator I can’t meaningfully say that I’ve helped someone acquire a skill if they don’t leave me with the ability to do something repeatable. If it&#39;s not repeatable it&#39;s not a skill. That’s why framing prompts as a programming abstraction is problematic from an education standpoint. Because it&#39;s not repeatable enough. The natural language input is not specific enough and the LLM output is not predictable enough to create the kind of repetitive feedback loop we use when teaching programming skills. It would be easier for me to teach those skills using a high level programming language.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/9Mq-xPz2cX-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/9Mq-xPz2cX-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/9Mq-xPz2cX-960.jpeg&quot; alt=&quot;Cesare and the text: Dragging what’s hidden out into the open&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;There was a fantastic talk a few years ago from Erin McKean at devrelcon. It was called &amp;quot;making the implicit explicit&amp;quot; and was about the process we go through as educators, as we try to discover implicit skills and knowledge, and make them explicit so that we can teach it to others. We can all benefit from doing this.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/lVghVR2xFU-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/lVghVR2xFU-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/lVghVR2xFU-960.jpeg&quot; alt=&quot;Teaching means guessing where the learner is, Finding out you were wrong&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;I run employee training at my work, I teach teams within the company to use our product. And when I first proposed this it was met with skepticism, some people thought that teaching our technical product to teams they didn&#39;t regard as technical would not work. But I was insistent about doing it. 1 because I’m delusional enough to think I can teach anyone anything, and 2 because it’s a cheap way to test training resources before they get put in front of customers.&lt;/p&gt;
&lt;p&gt;So I would start by guessing what the learners already knew and what needed explained, you need to go where the learner is then take them where they need to be. I would guess what they already knew and create a space where they felt able to tell me I was wrong, and they’d no idea what I was talking about. I hadn&#39;t explained things that needed explained. I would feed that back into the flow and go again. So it was a process of revealing my own assumptions to me.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/jqze87wQZ0-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/jqze87wQZ0-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/jqze87wQZ0-960.jpeg&quot; alt=&quot;Mentorship and pair programming create similar feedback loops, Effective teaching results in shared learning&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;A similar feedback loop happens when we do pair programming and mentorship. Someone more experienced guiding someone less experienced, we discover our own implicit knowledge. And although we talk about a teacher and learners, what we can see is that the teacher is also learning. They’re learning about their own assumptions. Ideally we want to create an opportunity for shared learning.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/L6UhnTut4J-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/L6UhnTut4J-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/L6UhnTut4J-960.jpeg&quot; alt=&quot;Cesare in the woods and: Reflection, That thing where you understand something as you hear yourself say it&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;A case in point is the value of reflection in learning. Did you ever have that feeling of hearing yourself say something and in that moment feel like you were understanding it yourself for the first time? Often we verbalise something, we put it into words in order to pull it from that hidden place into conscious awareness. Rubber ducking is probably similar, saying something out loud in order to understand it better. I quite often take notes during calls that I almost never read, but the process of writing them seems to be helpful.&lt;/p&gt;
&lt;p&gt;For years I specialised in learning how to do something with code then writing learning material to teach it to other people, and it took me a long time to realise that the writing was part of my learning process, it seemed to reinforce the learning.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/LvsZREAw56-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/LvsZREAw56-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/LvsZREAw56-960.jpeg&quot; alt=&quot;A swimming map and &amp;quot;Metacognition, Must you optimise?&amp;quot;&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;A lot of what I’m talking about here is metacognition. We can cultivate awareness of our own learning. Practices like self-regulation and monitoring can make people more effective learners.&lt;/p&gt;
&lt;p&gt;I swim a lot, and last year I set myself an aggressive swimming goal. And of course I planned on optimizing the hell out of it, I was gonna build an app connected to my fitness tracker and create visualisations and all that. So I looked up the API for my fitness tracker, and immediately discovered it wasn&#39;t going to work, the data was just not available in a suitable form for what I wanted to do. And I was appalled by this!&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/uPoKYlV_KX-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/uPoKYlV_KX-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/uPoKYlV_KX-960.jpeg&quot; alt=&quot;Cesare in pain &amp;quot;Are you suffering from… API brain&amp;quot;&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;At the time I was experiencing API brain. I had been evangelising for this stuff so long I saw it as a baseline expectation, that data would be available in a fully programmable form. And by the way how badly has that viewpoint aged.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/y4wVDVIswZ-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/y4wVDVIswZ-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/y4wVDVIswZ-960.jpeg&quot; alt=&quot;Some charts and &amp;quot;Spreadsheet will have to do I SUPPOSE&amp;quot;&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;I came to the conclusion that a spreadsheet would be the easiest option, that I would just manually log my swims each day. I love spreadsheets so I&#39;m not gonnae lie I was having the time of my life in there. But it kind of bothered me that it wasn’t efficient, I was duplicating data and wasting my own time. A few months in I came up with an idea to automate part of it, and I thought about it, but I decided not to. Because I’d realised I was getting something out of the process of logging my swim each day. But I wasn’t sure what.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/-OPu_TNZZU-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/-OPu_TNZZU-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/-OPu_TNZZU-960.jpeg&quot; alt=&quot;Terry Laughlin in a pool with &amp;quot;the practice of learning&amp;quot;&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;This is my swimming hero &lt;a href=&quot;https://www.youtube.com/watch?v=hC8ZZZhabp4&quot;&gt;Terry Laughlin&lt;/a&gt; who&#39;s no longer with us unfortunately. I was watching an old webinar where he talked about how his goal switched over the years from distance and speed to becoming a better swimmer. His goal was to be a better swimmer each time he got out of the water than when he got in. And one of the practices he used was as soon as he finished his swim, he would take copious notes. And when I heard him say it I thought, of course, he’s talking about reflection. That’s why I’m getting something valuable out of this spreadsheet. Now, I’ve taught people the value of reflection, but somehow I didn’t have the self awareness to realise that’s what I was doing.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/CO9Zsi2JYQ-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/CO9Zsi2JYQ-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/CO9Zsi2JYQ-960.jpeg&quot; alt=&quot;Caligari revealing Cesare and &amp;quot;A commitment to learning means being continually revealed to yourself&amp;quot;&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;I think it&#39;s because learning is a practice that you commit to. When we look at people who are lifelong learners, continuous learners, they see it as a practice that you engage in, it’s never done, it’s never complete. One of my favourite things Terry Laughlin said was that since human beings are naturally very inefficient in water, that’s great, because we have a near infinite capacity for improvement.&lt;/p&gt;
&lt;p&gt;Although LLMs can make it easier for developers to avoid learning, they might actually give us new opportunities to support this kind of learning practice.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/39gy-YF4Ah-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/39gy-YF4Ah-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/39gy-YF4Ah-960.jpeg&quot; alt=&quot;Programming pedagogy, PRIMM Predict Run Investigate Modify Make, Remixing, Code comprehension, Learning by debugging, Semantic waves&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;OK that was a bit philosophical, let&#39;s talk about something more tangible. There is a wealth of programming pedagogy that is extremely underused in industry. A lot of this is based on research carried out by the Raspberry Pi Foundation who develop models to teach schoolchildren coding skills. It&#39;s really helpful with adults too. I won’t linger on these because this is an entire talk in itself and &lt;a href=&quot;https://developerrelations.com/developer-education/an-open-framework-for-developer-learning&quot;&gt;I already gave it a few years ago&lt;/a&gt;. But these are if anything more valuable with AI assisted coding.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The PRIMM model and remixing, which you might be familiar with from platforms like Scratch and Glitch, these both work on the basis that you start from an existing app and walk the learner through digging into the code and gradually taking ownership over it.&lt;/li&gt;
&lt;li&gt;Code comprehension is something we’ve neglected woefully, we wouldn’t teach people to write natural language without reading it, but that&#39;s what we do with code, and we&#39;re starting to feel the pain of that as we need to read more code. Our tooling for it is also not great.&lt;/li&gt;
&lt;li&gt;One of the best learning experiences I had was my masters project, where I had to extend an existing system, and had to fix a load of annoying bugs before I could build my own shiny new features which frustrated the hell out of me at the time but turned out to be the best learning experience I could have had. I had a Glitch starter I never managed to complete where you would give the learner a broken project to fix. Again, learning by debugging is super valuable but our tooling is not optimised for it, but I think AI could help there.&lt;/li&gt;
&lt;li&gt;The semantic wave I want to talk about in more detail because it’s particularly relevant, this where we teach a topic by varying the levels of abstraction.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/XtyUQV33v9-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/XtyUQV33v9-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/XtyUQV33v9-960.jpeg&quot; alt=&quot;A semantic wave chart and &amp;quot;Semantic waves, teachcomputing.org&amp;quot;&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;With the semantic wave, we introduce a topic at a high level of abstraction, then we come down the wave and dig into the implementation in code, then we pack that back up into an abstract recap. And this pattern helps people to build mental models in programming.&lt;/p&gt;
&lt;p&gt;So it could be tempting to think that since we can generate code that we can just stay at the higher part of the wave, and teach computational thinking for example. But I don’t believe that will work, because spending time at the implementation level is part of how we create that repeatable feedback loop I mentioned. If we want people to acquire programming skills we will need to linger over the code.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/KMcF6oxeaX-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/KMcF6oxeaX-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/KMcF6oxeaX-960.jpeg&quot; alt=&quot;Folk working at a desk and &amp;quot;What level of detail is detailed enough?, How active is active enough?&amp;quot;&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;When I say we need to spend time lingering at the code level, does that mean we need to type every character, no. Can we use autocomplete, probably. Can we copy and paste, probably. We&#39;re going to find out what amount of coding is actually necessary to acquire skills the hard way eh. But if we learn from natural language literacy, we see that writing skills improve reading. So I would thoroughly recommend that anyone looking to become a software developer spend significant time writing code.&lt;/p&gt;
&lt;p&gt;We can also engage in other forms of active learning around the code. We can practice retrieval for example, where we might use a little pop quiz to stimulate the learner in retrieving what they&#39;ve learned about the code. We can use other tactics like spacing and interleaving where we include gaps in our coverage of a topic and mix it up with others.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/3tR-P1CONL-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/3tR-P1CONL-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/3tR-P1CONL-960.jpeg&quot; alt=&quot;Cesare on an expressionist building and &amp;quot;The incumbent abstraction level acts as an important point of leverage&amp;quot;&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;But there are other reasons to linger over the code. Whatever programming abstraction is providing training data will remain a valuable vantage point for understanding systems, for building those mental models that help us to work in more resilient ways. Because the source code LLMs are trained on didn’t just exist to tell machines what to do, it acted as a place where teams came together to reason about a system and make decisions about acting on it.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/3_3ZIsGeSx-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/3_3ZIsGeSx-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/3_3ZIsGeSx-960.jpeg&quot; alt=&quot;AI assisted learning, Raspberry Pi Foundation &amp;quot;why kids still need to learn to code in the age of AI&amp;quot; and Dr Cat Hicks claude skills&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;But there’s good news, we can use AI to enable learning. The Raspberry Pi Foundation have wholeheartedly embraced AI in their teaching resources, but in doing that they’ve &lt;a href=&quot;https://www.raspberrypi.org/blog/why-kids-still-need-to-learn-to-code-in-the-age-of-ai/&quot;&gt;doubled down on the importance of learning to code&lt;/a&gt;. Dr Cat Hicks has created &lt;a href=&quot;https://github.com/DrCatHicks/learning-opportunities&quot;&gt;Claude skills&lt;/a&gt; that exemplify some of the active learning techniques I talked about here. What I’d love to see more of is breaking language model supports out of the chat or terminal and into the editing UI in IDEs, that’s what I’m working on.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/lvMEqRYDIN-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/lvMEqRYDIN-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/lvMEqRYDIN-960.jpeg&quot; alt=&quot;&amp;quot;Slower at the start, faster later, When is a tool the right tool for the job&amp;quot;&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;So in my side project, I&#39;m using LLMs, but not to write code. Because it would defeat the purpose, writing the code is part of me exploring the problem. I wouldn’t be able to write a specification for it because I don’t know what it needs to do yet, I’m figuring that out by writing the code. It’s an investment in my future work on the problem.&lt;/p&gt;
&lt;p&gt;And this balancing of short and long term goals is going to be key to deciding when an AI tool is the right tool for the job. But the economic conditions that we work in make this way of building challenging.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/mmXdZYF3Ah-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/mmXdZYF3Ah-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/mmXdZYF3Ah-960.jpeg&quot; alt=&quot;My spreadsheet &amp;quot;Naturally I added a notes column&amp;quot;&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;I know you’re all desperate to find out what happened with my swimming spreadsheet. Well I decided to embrace the goal of becoming a better swimmer, and added a notes column, it kind of became the goal. But my ability to pay the bills is not dependent on my swimming technique.&lt;/p&gt;
&lt;p&gt;But we find that overwhelmingly developers want to develop their craft and cultivate their skills, which will of course affect their ability to pay the bills later. We just don’t always create environments that support them to do that, or give them the tools to do it. To do that we have to get away from the production line mentality, where we confuse work with the artifact of it, we conflate valuable work with its output.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/YltLMUO3LR-960.avif 960w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://www.sue.codes/blog/fingerscode/YltLMUO3LR-960.webp 960w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://www.sue.codes/blog/fingerscode/YltLMUO3LR-960.jpeg&quot; alt=&quot;Where do you find value in the process rather than the outcome? suesmith.dev&quot; width=&quot;960&quot; height=&quot;540&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;And on that note I would like to leave you with an invitation, to consider the places in your work where you find value in the process, rather than just in the outcome.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Images:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The Cabinet of Dr Caligari (1920)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://generative-placeholders.stefanbohacek.com&quot;&gt;generative-placeholders.stefanbohacek.com&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
</content>
  </entry>
  <entry>
    <title>We should still teach coding</title>
    <link href="https://www.sue.codes/blog/stillteach/" />
    <updated>2025-03-31T00:00:00Z</updated>
    <id>https://www.sue.codes/blog/stillteach/</id>
    <content type="html">&lt;p&gt;&lt;em&gt;&lt;strong&gt;This post was originally published at &lt;a href=&quot;https://dev.to/fastly/we-should-still-teach-coding-3cjh&quot;&gt;dev.to/fastly&lt;/a&gt;.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Software written using generative AI is all over the web. Performance and security issues abound. Open source projects are being &lt;a href=&quot;https://arstechnica.com/ai/2025/03/devs-say-ai-crawlers-dominate-traffic-forcing-blocks-on-entire-countries/&quot;&gt;overwhelmed by bot traffic&lt;/a&gt;. There&#39;s a lot of harm being caused, but as an educator who cares about lowering barriers to software creation, I can&#39;t ignore the &lt;a href=&quot;https://dev.to/glitch/what-is-worth-learning-41e3&quot;&gt;democratizing potential&lt;/a&gt; of these tools either.&lt;/p&gt;
&lt;p&gt;In this post I’d like to explore the opportunities for learning that this paradigm shift presents – from how to make your projects more efficient and secure, to learning about the &lt;a href=&quot;https://hbr.org/2023/04/generative-ai-has-an-intellectual-property-problem&quot;&gt;intellectual property&lt;/a&gt; and &lt;a href=&quot;https://www.technologyreview.com/2022/04/20/1050392/ai-industry-appen-scale-data-labels/&quot;&gt;labor exploitation&lt;/a&gt; that might have gone into training the models you used.&lt;/p&gt;
&lt;h2 id=&quot;understanding-incentives&quot;&gt;Understanding incentives&lt;/h2&gt;
&lt;p&gt;One thing I have learned working in education is the value of accepting people’s motivations – having a goal that a skill will help you achieve is the most effective motivator for learning. Clearly many people are finding ways to use AI to help them achieve goals.&lt;/p&gt;
&lt;p&gt;Motivations are determined by complex socioeconomic factors beyond our ability to reason away. Let’s instead keep the door to the good internet open by empowering people to make responsible choices, equipping them with knowledge of the technical systems they’re creating within.&lt;/p&gt;
&lt;p&gt;Gen AI might &lt;a href=&quot;https://techcrunch.com/2025/03/06/a-quarter-of-startups-in-ycs-current-cohort-have-codebases-that-are-almost-entirely-ai-generated/&quot;&gt;help you spin up an MVP&lt;/a&gt;, but eventually you will have to dig into the code. You’ll either learn software engineering skills, or have to bring in the experts. Far from making engineers obsolete, I worry that less investment in these skills will make the barriers around the profession more extreme. &lt;em&gt;&lt;strong&gt;A select few having insight into how critical systems work is not a future I’m enthusiastic about.&lt;/strong&gt;&lt;/em&gt; Instead I’d like to find learning paths that these new ways of building software present.&lt;/p&gt;
&lt;h2 id=&quot;the-conditions-for-learning-are-in-place&quot;&gt;The conditions for learning are in place&lt;/h2&gt;
&lt;p&gt;Projects developed using gen AI can support a range of good practices in education, including some key activities that we often neglect in both formal learning and the workplace:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Personalization&lt;/strong&gt;: We can work on something meaningful to the learner rather than dragging them through a one-size-fits-all experience.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fast feedback loops&lt;/strong&gt;: Automation can fuel adaptive learning through short iterative cycles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reflection&lt;/strong&gt;: Reflecting on an experience helps you internalize skills you’ve acquired and reapply them in different contexts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Code generated using LLMs enables and requires these perhaps more than “traditional” ways of making software. There are also some &lt;a href=&quot;https://teachcomputing.org/pedagogy&quot;&gt;coding pedagogy techniques&lt;/a&gt; that gen AI projects can lend themselves to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reading before writing&lt;/strong&gt; – code comprehension is a crucial software engineering skill, consider an experienced engineer performing code reviews and mentoring junior teammates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Starting from a functioning application&lt;/strong&gt; instead of a blank slate.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Running&lt;/strong&gt; an app to see what it does, then &lt;strong&gt;investigating&lt;/strong&gt; how it did it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Taking gradual ownership&lt;/strong&gt; of a project by making a first edit, then turning it into something new.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ Generative AI is not an appropriate substitute for the many interpersonal aspects of effective learning IMO. “Mentoring” powered by &lt;a href=&quot;https://hai.stanford.edu/news/covert-racism-ai-how-language-models-are-reinforcing-outdated-stereotypes&quot;&gt;biased LLM content&lt;/a&gt; is incredibly dangerous.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;encouraging-inquiry-and-independent-thought&quot;&gt;Encouraging inquiry and independent thought&lt;/h2&gt;
&lt;p&gt;I wonder about a gen AI coding exercise that gives you a broken project to fix, or prompts you to explore where the code came from – this kind of inquiry is being used in the humanities to support the development of &lt;a href=&quot;https://www.cambridge.org/elt/blog/2023/03/30/enhancing-learners-critical-thinking-skills-with-ai-assisted-technology/&quot;&gt;critical thinking skills&lt;/a&gt;, &lt;em&gt;especially important since these tools might by default &lt;a href=&quot;https://www.microsoft.com/en-us/research/publication/the-impact-of-generative-ai-on-critical-thinking-self-reported-reductions-in-cognitive-effort-and-confidence-effects-from-a-survey-of-knowledge-workers/&quot;&gt;erode those very skills&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Then we have the wealth of problems that arise when people deploy applications with little to no understanding of their implementation. What happens over the long term, what happens if your project becomes a &lt;em&gt;real thing&lt;/em&gt; people depend on, what happens when it breaks, what happens when it causes harm, how do we navigate the obfuscation of accountability? These are learning opportunities we’ll embrace if we want people to make more informed choices about how they use technology.&lt;/p&gt;
&lt;p&gt;Software engineering is a very privileged profession, largely because it requires access to education. &lt;a href=&quot;https://simonwillison.net/2025/Mar/19/vibe-coding/&quot;&gt;Vibe coding&lt;/a&gt; creates new paths into building with tech. The starting point may be different, but we might even manage to invite more people into the spaces where we shape the future of the web.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>What is worth learning?</title>
    <link href="https://www.sue.codes/blog/worthlearning/" />
    <updated>2024-04-25T00:00:00Z</updated>
    <id>https://www.sue.codes/blog/worthlearning/</id>
    <content type="html">&lt;p&gt;&lt;em&gt;&lt;strong&gt;This post was originally published at &lt;a href=&quot;https://dev.to/glitch/what-is-worth-learning-41e3&quot;&gt;dev.to/glitch&lt;/a&gt;.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;AI-assisted coding is lowering the barrier to making software. It’s also increasing the complexity of managing it. You can make applications with less upfront knowledge than before, and organizations are having to figure out how to handle the ensuing unpredictability and risk. So it’s getting easier and harder.&lt;/p&gt;
&lt;p&gt;Building software became unnecessarily difficult over the last few years in my opinion. We switched to frameworks that closed a lot of the doors to opportunity we’d seen open in the earlier years of the web. Now there’s a widening divide between those with the skills to make software “properly” and those who are no longer prevented from participating by this gatekeeping. Then we have the threat of jobs being eliminated because some executives think AI removes the need for engineers. It&#39;s a bit of a mess.&lt;/p&gt;
&lt;p&gt;Working in developer education, I often ask myself if I’m teaching the right skills, the ones that are worth learning. It’s getting harder to make reliable guesses about which topics will enable people to make the web and get paid doing it.&lt;/p&gt;
&lt;h2 id=&quot;for-most-of-us-it-isn-t-about-the-tech&quot;&gt;For most of us it isn’t about the tech&lt;/h2&gt;
&lt;p&gt;I recently set up a local developer environment for a project I wanted to contribute to. It was painful and I resented every minute of it lol. The actual contribution was easier than installing the tooling.&lt;/p&gt;
&lt;p&gt;In spite of essentially being paid to learn coding skills so that I can teach them to others, I find it incredibly hard to motivate myself to learn if the subject doesn&#39;t interest me. A lot of what’s involved in setting up local environments falls into that category. Compatibility between libraries, reciting the correct incantations of path and environment variables, that type of thing. These are not the parts I care about.&lt;/p&gt;
&lt;p&gt;The same frustration kills the motivation to learn. For a new developer to spend hours configuring an environment before they can make a change to a web page that they can see in the browser is a big problem when it comes to learning. The motivating part is where you achieve something visible, tangible, significant to you – that’s what builds momentum as you feel you’re making progress. Exasperating setup experiences tell the person “this is not for you” and most quietly go away.&lt;/p&gt;
&lt;p&gt;The best motivator to learn any skill is a goal that is meaningful to you and that the skill is helping you to achieve. For most people, setting up an effective developer environment does not constitute such a goal.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If it does for you then congrats, but I believe you&#39;re in the minority! In the developer community there’s a wholesome passion for technical elegance, but unfortunately it’s frequently accompanied by an alienating disdain for those who don’t share the interest or understanding.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;it-shouldn-t-need-to-be-hard&quot;&gt;It shouldn’t need to be hard&lt;/h2&gt;
&lt;p&gt;Earlier this year I ran employee training for my Fastly coworkers. I wanted to teach them to use our technical product in a way that absolutely anyone could engage with. Some colleagues feared this might be impossible, but for me, removing the expectation of prerequisite knowledge is a useful constraint – it helps me make learning experiences that are better for everyone. So I gave myself ground rules like no local environment, no dev platform accounts or tooling like GitHub. And it was surprisingly successful!&lt;/p&gt;
&lt;p&gt;This is part of why I’ve always loved Glitch – and how we got those employees to use our technical product by the way. It lets you jump straight to the parts of a project that are intuitively valuable and resonant to most people. I’d rather spend my time learning how to create the functionality or the experience I want to give users than installing the toolchain that only gets me to the starting line for that work.&lt;/p&gt;
&lt;p&gt;If I never had to set up a dev environment again I simply would not. 💅🏻&lt;/p&gt;
&lt;h2 id=&quot;motivations-do-not-need-your-validation&quot;&gt;Motivations do not need your validation&lt;/h2&gt;
&lt;p&gt;Today’s coding tools are abstracting away parts of software engineering that will invite many more people to the party &lt;em&gt;and&lt;/em&gt; create significant challenges around maintenance, security, performance, and more.&lt;/p&gt;
&lt;p&gt;However attached we are to notions of correctness, of what people should know in order to create software, the reality is that most will not invest in something they don’t consider worth learning. You better believe people will flock to the tools that enable them without judgment or the expectation of virtuous toil! We can’t complain about this while insisting that the painful, exclusive alternative is the only valid one.&lt;/p&gt;
&lt;p&gt;If we want software that is reliable, safe, and inclusive, we need to provide paths that empower a wide representation of people to build it. That means accepting the motivators they bring with them.&lt;/p&gt;
&lt;p&gt;Our goals determine what is and isn’t worth our time, and for most of us the technologies that help us get there are largely incidental. Those choices are driven by the opportunities each person is trying to unlock.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What makes something worth learning to you?&lt;/strong&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Software development isn’t writing syntax</title>
    <link href="https://www.sue.codes/blog/notsyntax/" />
    <updated>2023-05-11T00:00:00Z</updated>
    <id>https://www.sue.codes/blog/notsyntax/</id>
    <content type="html">&lt;!--
&lt;img src=&quot;robots.png&quot; alt=&quot;robots&quot; /&gt;
--&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;This post was originally published at &lt;a href=&quot;https://blog.glitch.com/post/software-development-isnt-writing-syntax&quot;&gt;blog.glitch.com&lt;/a&gt;.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;AI assisted coding has really taken off recently. The tech and &lt;a href=&quot;https://blog.glitch.com/post/yes-code-coding-with-ai&quot;&gt;the conversation around it&lt;/a&gt; say some interesting things about our understanding of what developers do.&lt;/p&gt;
&lt;p&gt;AI can write some kinds of code, and it’s even helping people who aren’t coders to make software applications. It’s also frequently wrong. We’re still learning the types of coding task it’s suited to — in what specific contexts it’s a help rather than a hindrance. Unrealistic expectations and inaccurate interpretations abound! &lt;strong&gt;The conversation reveals our inability to define the real skills in being a software developer.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It’s not writing syntax. Being able to recite the right keywords only takes you so far.&lt;/p&gt;
&lt;h2 id=&quot;ok-what-is-it-then&quot;&gt;OK, what is it then?&lt;/h2&gt;
&lt;p&gt;Back when I was training for tech, an instructor told us a story about a research exercise. A mix of people looked at a code sample for a short time and tried to memorize as much of it as possible. Some had never written code, and some were experienced software engineers. The non-coders were able to recount detail about the first couple of lines from the top of the excerpt. The developers remembered almost none of that detail, but recounted a high level overview of the structures they had seen (a loop, a conditional, etc). The developers understood the code differently.&lt;/p&gt;
&lt;p&gt;Code comprehension remains a neglected part of developer education, but this exercise reflects how integral it is to making software, and that abstraction level is a key aspect of working with code. The actual syntax is a &lt;em&gt;detail&lt;/em&gt; — an important one, the code won’t work if it’s wrong — but focusing on syntax is only helpful at a granular level, it doesn’t come close to conveying what a developer actually does.&lt;/p&gt;
&lt;h2 id=&quot;learning-and-context&quot;&gt;Learning and context&lt;/h2&gt;
&lt;p&gt;When I see a job posting that requires experience in specific frameworks or programming languages, it always seems like such a missed opportunity. Software engineering is fundamentally a &lt;em&gt;learning&lt;/em&gt; activity. Developers are always learning new technologies and solving new problems. Once you’ve learned one language you pick up more. What characterizes the more experienced developer is the ability to reapply skills in different contexts.&lt;/p&gt;
&lt;p&gt;I’ve had the privilege to work with incredibly highly skilled software engineers, and if I were to try to describe their talents and contributions, writing correct or efficient syntax would not make the list lol. Part of it is going past “how” and delving into “why” — articulating the problem as it stands within an organizational or social context, making sure you’re solving the right problem, and defining it in an actionable way. There’s a ton of communication and collaboration, and being comfortable with ambiguity is hugely valuable.&lt;/p&gt;
&lt;h2 id=&quot;different-interfaces&quot;&gt;Different interfaces&lt;/h2&gt;
&lt;p&gt;Shifting abstraction levels have given us an evolving definition of software engineering since the inception of coding. What seems like essential knowledge to one generation of coders becomes an invisible part of the stack to the next generation. There’s a strong argument that AI is another interface in this cycle. Remember the discussion a few years ago about knowing how to use effective phrasing for a Google search? The algorithms in the tools we use daily have advanced, but describing many of them as natural language processing is still a stretch.&lt;/p&gt;
&lt;p&gt;Everyone who interacts with tech figures out how to give the inputs that get the desired output, whether you’re writing code or adjusting your accent because the voice recognition tool can’t process Glaswegian — we learn how to get the machines to do what we want.&lt;/p&gt;
&lt;h2 id=&quot;engaging-with-complexity&quot;&gt;Engaging with complexity&lt;/h2&gt;
&lt;p&gt;Increasing abstraction levels have been accompanied by the rise of the API — we make software by combining a lot of components towards a particular goal. Connecting all of these different tools means the activity is in part defined by its technological and community ecosystem. Software engineers make something valuable within a complex landscape of interacting systems.&lt;/p&gt;
&lt;p&gt;The modular style of making software is successful because it frees developers to focus their creativity on the parts of a project that make it &lt;em&gt;unique&lt;/em&gt; — which are also the parts AI is least able to approach.&lt;/p&gt;
&lt;p&gt;Making the web isn’t about writing code, it’s about being able to create and participate through technology. As it becomes harder to say what is and isn’t software development, maybe it becomes more interesting to ask other questions. For example, what does a tool enable people to do, what are the opportunities, and what are the risks of harm?&lt;/p&gt;
</content>
  </entry>
</feed>