
Kyle Austad
2026-09-21
Throughout all of humanity, society and humans as a whole have built. From simple tools of sticks and rocks, to the aqueducts in ancient Rome. The Sistine Chapel and the Sagrada Familia in Barcelona. The industrial revolution, the towns and cities we live in, all the way down to the solitary woodworker in his garage planing a block of wood by hand so that it fits just right for what he envisions.
All of these creations, and creation as a whole is a process. The process is defined by the discipline being exercised but nothing is willed into existence regardless of how hard one might manifest it to be so without action. That process undoubtedly will involve hurdles and obstacles and roadblocks that require resolving, lest one be bested by them and the fruits of their labor be for naught. But, when someone in the process of creation overcomes these seemingly demarcating problems, the feeling is incomparable, especially when the result brings one closer to the vision of their creation.
This feeling is the entirety of learning. In my entire life of learning something, never have I ever undertaken the task of learning something significant and ever felt that it clicked inside me immediately. Anything worth learning that I have learned, has always been met with a moment of wondering:
"Is this even worth my time?"
Or
"I'm not sure I can do this, maybe I'll just settle for what I've learned so far"
Or
"I don't think I am smart enough to figure this out.."
I think a lot of people can relate to these thoughts as they attempt to pick up something new. It can even be challenging when others around you seem to grasp concepts in the same medium or discipline faster than you do, or heaven forbid, someone you are attempting to learn from belittles your inability to grasp the concepts at hand (apologies if I have ever done that to you). My good friend Isaac Hamblin told me, when I was first learning to program and write semi-coherent code, "Programming is basically just recognizing patterns, when to use them, and how to use them on data". I had no clue what he meant at the time, since I could barely get my single file JavaScript script to run, or my Unreal project to build.
I believe the key to overcoming these hurdles, negative thoughts, or barriers to your growth is simply Persistence. Not intelligence, talent, or genetics, but sheer grit and willpower to infinitely fail and the capacity to identify why and how. If something I create doesn't immediately work as intended, I should know, or be able to figure out why, because without that understanding: 1. How can I fix it? and: 2. How can I truly claim ownership of my creation if I didn't own every aspect of its creation?
As I began to program more and delve into web development, I used Visual Studio Code primarily as my IDE (along with the browser console lol). Upon finishing most of the guided courses, tutorial series, or Udemy lectures I had purchased, I began to utilize AI more and more throughout programming to learn what I was doing wrong and have it show me the correct version. This led to an iteration loop of me writing bad code, HTML, CSS, etc. opening ChatGPT in my browser and copy-pasting back and forth while skimming the explanations it provided. I did grasp things as I began to see the patterns it was utilizing. At the very beginning something as simply as providing a key prop to each element in an array when mapping over them in React. As I learned more and more, upon a friends recommendation I started using Cursor. It was basically VSCode with AI built in and the tab completion feature was truly a huge time saver.
I programmed in Cursor for a long while. As I began to learn other languages however, such as Rust, I was writing bad code, Cursor was writing bad code, and then I would have to spend time fixing it either manually after reading chapters in the Rust Book or letting Cursor agents stew a little longer. Being a completely hobbyist developer (you can hire me π) life got busy with my day job, I attempted to continue learning, but my weekends and projects that I usually enjoyed hammering away on became tasks to feed to agents and wait until the finished product popped out.
This was not enjoyable or fulfilling.
I semi-recently had an interview with a tech startup for both a sales and development job with separate departments. In both interviews, separately, I was asked if I use AI, and to what degree in my programming. I replied similarly both times, upon the realization that result or outcome-based, agentic only programming was unfulfilling and un-enjoyable, in that I believe any software designed to be used by humans should be built by humans, who utilize the tools at their disposal to craft their artistic vision without replacing the touch of human creation. One of the interviewers was genuinely flabbergasted and replied, "Thats wild. Most people I interview simply say 'why should I learn to do this thing if AI can do it for me'".
Don't get me wrong, AI is a tool, a tool I still use and will continue to use. But to rely entirely on generated, probably plagiarized for training, and inhuman data to completely construct, architect and publish my creative vision is not something I agree with. In The Pragmatic Programmer they emphasize that writing code, software engineering as whole, is an art form. Yes it is highly technical and there are rules to the art, but it is art none the less.
This isn't a post to bash on AI, or romanticize writing code or software engineering (maybe a lil). I don't begrudge anyone who uses AI, vibe codes, or the like. I still utilize it. I have switched my IDE to Zed and disabled AI features such as chat, auto-completion and the like, only relying on LSPs for suggestions however. The triumph of overcoming a challenge in the pursuit of learning or building your vision for your creation is what makes software engineering enjoyable to me. This post may read like junior developer, or hobbyist ramblings, since it largely is. But I retain my thesis that we as software engineers have the ability to shape the world around us. We have the power to create limitless possibility in the digital age, with the only limitation being our persistence to obstacles in the way of that vision.
To quote Andrew Hunt from The Pragmatic Programmer:
βIn some ways, programming is like painting. You start with a blank canvas and certain basic raw materials. You use a combination of science, art, and craft to determine what to do with them. You sketch out an overall shape, paint the underlying environment, then fill in the details. You constantly step back with a critical eye to view what you've done. Every now and then you'll throw a canvas away and start again. But artists will tell you that all the hard work is ruined if you don't know when to stop. If you add layer upon layer, detail over detail, the painting becomes lost in the paint.β
Thanks for coming to my TED talk.