{"id":3199,"date":"2024-12-03T03:15:41","date_gmt":"2024-12-03T07:15:41","guid":{"rendered":"https:\/\/wizardwalk.com\/newblather\/?p=3199"},"modified":"2024-12-03T03:22:57","modified_gmt":"2024-12-03T07:22:57","slug":"programming-with-ai-one-year-later-guest-post","status":"publish","type":"post","link":"http:\/\/wizardwalk.com\/newblather\/?p=3199","title":{"rendered":"Programming with AI: One Year Later (Guest Post)"},"content":{"rendered":"<p><img loading=\"lazy\" style=\"display: block; float: none; margin-left: auto; margin-right: auto; box-shadow: 3px 3px 7px #000; border-width: 0px; border-radius: 8px;\" src=\"http:\/\/wizardwalk.com\/newblather\/wp-content\/uploads\/2024\/12\/robot_programming-300x300.png\" alt=\"\" width=\"300\" height=\"300\" class=\"aligncenter size-medium wp-image-3204\" srcset=\"http:\/\/wizardwalk.com\/newblather\/wp-content\/uploads\/2024\/12\/robot_programming-300x300.png 300w, http:\/\/wizardwalk.com\/newblather\/wp-content\/uploads\/2024\/12\/robot_programming-150x150.png 150w, http:\/\/wizardwalk.com\/newblather\/wp-content\/uploads\/2024\/12\/robot_programming-768x768.png 768w, http:\/\/wizardwalk.com\/newblather\/wp-content\/uploads\/2024\/12\/robot_programming-50x50.png 50w, http:\/\/wizardwalk.com\/newblather\/wp-content\/uploads\/2024\/12\/robot_programming.png 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p><span style=\"color: #e36464;\"><em>I&#8217;ve been meaning to blog, but I just can&#8217;t find the time or energy these days, sorry. But don&#8217;t worry, here&#8217;s a guest post from AI! I gave <a href=\"https:\/\/claude.ai\/\">Claude<\/a> some example posts from this blog and told it to write a new one. Below is what it came up with. However, I&#8217;m interjecting my own real-life human comments and corrections in the italicized and colored brackets. OK, here&#8217;s the AI:<\/em><\/span><\/p>\n<p class=\"whitespace-pre-wrap break-words\">Last year\u00a0<span style=\"color: #e36464;\"><em>[it wasn&#8217;t really that long ago]<\/em><\/span> I wrote about remaking Trovedex with Claude&#8217;s help, and since then I&#8217;ve had quite a journey exploring AI-assisted programming. I thought it might be interesting to reflect on what I&#8217;ve learned after a full year of coding alongside AI.\u00a0<span style=\"color: #e36464;\"><em>[It hasn&#8217;t been a full year.]<\/em><\/span><\/p>\n<p class=\"whitespace-pre-wrap break-words\">The biggest surprise has been how the AI assistant&#8217;s role has evolved in my workflow. Initially, I treated it like a magical code generator \u2013 &#8220;Make me a login system!&#8221; or &#8220;Add a delete function!&#8221; <span style=\"color: #e36464;\"><em>[No, I didn&#8217;t.] <\/em><\/span>But I quickly learned this approach leads to a lot of debugging headaches. The AI might give you working code, but understanding how to maintain or modify it is another story entirely.\u00a0<span style=\"color: #e36464;\"><em>[Not really, just ask the AI to do that too!]<\/em><\/span><\/p>\n<p class=\"whitespace-pre-wrap break-words\">These days, I use AI more as a programming mentor or rubber duck.\u00a0<span style=\"color: #e36464;\"><em>[No, I don&#8217;t. Maybe more like a nerdy friend who knows a lot and will answer even really dumb questions without judgment. And honestly I&#8217;m not sure I&#8217;ve ever even heard of &#8220;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Rubber_duck_debugging\">rubber duck debugging<\/a>&#8221; until now, ha!]<\/em><\/span> Instead of asking it to write entire features, I&#8217;ll describe my implementation plan and have it point out potential issues or suggest alternative approaches.\u00a0<span style=\"color: #e36464;\"><em>[No, I don&#8217;t. Maybe I should?]<\/em><\/span> This has actually made me a better programmer, since I&#8217;m forced to think through the logic myself while still having a knowledgeable guide to bounce ideas off of.<\/p>\n<p class=\"whitespace-pre-wrap break-words\">That said, AI still shines at certain tasks. Need to figure out the correct syntax for a particularly gnarly regex?\u00a0<span style=\"color: #e36464;\"><em>[I&#8217;m not sure I&#8217;ve ever needed to write my own regex syntax, but that does sound like something Claude would be great at.]<\/em><\/span> AI&#8217;s got your back. Want to quickly transform data between different formats? AI can save you a lot of time compared to manually writing parsing logic.\u00a0<span style=\"color: #e36464;\"><em>[This is true and I&#8217;ve used it for that quite a few times.]<\/em><\/span> It&#8217;s especially helpful with those &#8220;I know this is possible but I can&#8217;t remember how to do it&#8221; moments that used to send me down long documentation rabbit holes.\u00a0<span style=\"color: #e36464;\"><em>[Also true.]<\/em><\/span><\/p>\n<p class=\"whitespace-pre-wrap break-words\">The hardest lesson was learning to be more specific in my requests. &#8220;Add user authentication&#8221; might get you some code, but &#8220;Add email\/password authentication using bcrypt for password hashing, with rate limiting on failed attempts&#8221; will get you something you can actually use. I&#8217;ve found that the more detailed I am about requirements up front, the less time I spend fixing issues later.\u00a0<span style=\"color: #e36464;\"><em>[Actually, I&#8217;ve found the opposite. In my experience, it&#8217;s more likely to mess something up or implement something in a way I don&#8217;t want if I give it too many requirements up front. I find it better to start small.]<\/em><\/span><\/p>\n<p class=\"whitespace-pre-wrap break-words\">There have been some amusing mishaps along the way. Like the time I asked for help adding file upload functionality and got a beautiful implementation&#8230; that stored everything in memory instead of writing to disk.\u00a0<span style=\"color: #e36464;\"><em>[Haha, what? No.]<\/em><\/span> Or when I requested &#8220;mobile-friendly styling&#8221; and ended up with a UI that looked great on phones but was completely unusable on desktop. <span style=\"color: #e36464;\"><em>[No.]<\/em><\/span> These experiences taught me to always verify the assumptions being made before implementing AI-suggested code.\u00a0<span style=\"color: #e36464;\"><em>[Huh?]<\/em><\/span><\/p>\n<p class=\"whitespace-pre-wrap break-words\">Looking ahead, I&#8217;m excited about how AI coding assistants will evolve. <span style=\"color: #e36464;\"><em>[True dat.]<\/em><\/span> They&#8217;re already getting better at understanding project context and maintaining consistency across multiple requests. But I hope they&#8217;ll develop better ways to explain their suggestions and help developers understand the &#8220;why&#8221; behind different implementation choices.\u00a0<span style=\"color: #e36464;\"><em>[Sure, why not.]<\/em><\/span> After all, the goal isn&#8217;t just to write working code \u2013 it&#8217;s to write code we can confidently maintain and extend.\u00a0<span style=\"color: #e36464;\"><em>[Yeah, sure.]<\/em><\/span><\/p>\n<p class=\"whitespace-pre-wrap break-words\">For now, I&#8217;ve found my sweet spot: use AI as a collaborative tool to enhance my own programming abilities, rather than trying to outsource the actual thinking to it.\u00a0<span style=\"color: #e36464;\"><em>[No, I&#8217;m outsourcing thinking!]<\/em><\/span> It&#8217;s not quite the &#8220;AGI will make programmers obsolete&#8221; future some predicted, but it&#8217;s a pretty useful present.<\/p>\n<p class=\"whitespace-pre-wrap break-words\">Though I still occasionally catch myself asking it to &#8220;just fix all the bugs&#8221; when I&#8217;m feeling particularly frustrated. <span style=\"color: #e36464;\"><em>[Haha, no.] <\/em><\/span>Hey, a developer can dream, right?<\/p>\n<p><span style=\"color: #e36464;\"><em>Thank you for that great post, AI!<\/em><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve been meaning to blog, but I just can&#8217;t find the time or energy these days, sorry. But don&#8217;t worry, here&#8217;s a guest post from AI! I gave Claude some example posts from this blog and told it to write a new one. Below is what it came up with. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[83],"tags":[845,865],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p7gI4B-PB","_links":{"self":[{"href":"http:\/\/wizardwalk.com\/newblather\/index.php?rest_route=\/wp\/v2\/posts\/3199"}],"collection":[{"href":"http:\/\/wizardwalk.com\/newblather\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/wizardwalk.com\/newblather\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/wizardwalk.com\/newblather\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/wizardwalk.com\/newblather\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3199"}],"version-history":[{"count":5,"href":"http:\/\/wizardwalk.com\/newblather\/index.php?rest_route=\/wp\/v2\/posts\/3199\/revisions"}],"predecessor-version":[{"id":3205,"href":"http:\/\/wizardwalk.com\/newblather\/index.php?rest_route=\/wp\/v2\/posts\/3199\/revisions\/3205"}],"wp:attachment":[{"href":"http:\/\/wizardwalk.com\/newblather\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/wizardwalk.com\/newblather\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3199"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/wizardwalk.com\/newblather\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}