I started coding with the help of LLMs about a year ago at the time of writing this, and boy what a ride it has been. Throughout my life I kind of always regretted not taking up coding. I saw it as...not something I'd be good at, and also wasn't really exposed to it directly.
I was particularly scared by the syntax and all the different languages. Where even to start? So I didn't start, somewhat resigned to the FOMO, as I heard about software devs making six figures right out the gate.
Even when ChatGPT and all the other LLMs dropped, coding just wasn't for me. There was some gap I couldn't really bridge. I was starting to understand some concepts, get a little more comfortable with code as I was exposed to things like Markdown and JSON, but it still felt unattainable.
My first self-imposed coding project became creating a discord bot of Professor Synapse. I was comfortable with discord, and found a lot of Youtube videos and opensource GitHub repos that I could use for support. I wasn't starting completely from scratch, having built the bot itself with prompts and a knowledge base, using a third party vendor, so all I really needed to figure out was how to connect that vendor's bot to the discord server so people could interact with it.
The biggest barrier I found was just learning how to use VS Code (code editor) and GitHub (code versioning). I just had no clue how to navigate these two ubiquitous pieces of software, and learned the hard way through many a Youtube video, LLM question, and asking some colleagues of mine who code.
It also doesn't help that everyone online seems to talk about using these tools as if you already have some knowledge of how to navigate them. They are like 10 steps ahead when you're just trying to create a new file with the right extension. And don't even get me started on README's and documentation to try and decipher or use someone else's code. It is a nightmare.
It took me quite a bit of banging my head against the LLMs, and feeding it lots of examples, but eventually I got the first prototype to just answer a question on discord. It felt marvelous! A real rush of dopamine...and then you start to dream. Well what if it could do this? And how about that? And wouldn't it be cool if...?
It is a truly addictive and magical experience to get the prototype of something working, and then beginning to build on it yourself, without actually having any clue HOW to code.
This is the crazy moment in time we're living in. If you asked me to sit down and code something I would have no freaking clue how to do it.
I want to temper this LLM coding excitement, though, with some real clear boundaries. My experience has NOT been a simple - hey code this and that and this and voila! Program done I'm about to make my billion.
Mostly it's stumbling in the dark, getting caught with bugs and errors that you have no clue how to fix, and when you hit your rate limit...well that's it for the day. There are serious limitations at the current level of LLMs, and lots of haphazardly strung together workflows to solve these problems. Of course it will get better, and maybe one day it truly will be as simple as telling a model what you want, and it pulling it together for you without having to open the hood and try to mess around in the dark because you have no clue how the car actually works.
I've been trying to figure out some analogy for this experience, and the closest I've come is to learning to play an instrument without having any idea how to read or write music.
I can speak somewhat from personal experience on this topic. I grew up playing the saxophone. I was...not great when it came to playing in the middle school band. I did not have the patience or the desire to practice the songs we were given as much as I was supposed to.
But I loved to just jam out. Especially later in life when I was just playing because I wanted to. Because it felt cathartic just to play. Sax is probably one of the easiest instruments to jazz out on, especially once you learn a few keys to stay in or switch up. You're able to play more by feel after a while. You can mold the sounds more intuitively and emotionally.
We can look to some of the greatest rock stars to see this analogy play out. None of the Beatles could read or write music. Neither did Elvis, Jimi Hendrix, or even the more contemporary Taylor Swift.
It's an amazing time to be alive, to go from being afraid to code all the way to starting to build full stack applications with the help and advancement of AI in the space of a year. To feel your way around building something you've dreamed up in dialogue with a next token predictor.
Am I the Jimi Hendrix of coding? No haha, absolutely not. And this analogy falls apart pretty quickly upon further inspection. Music is one thing. It's for entertainment, expression of the emotional. It's art.
Coding is another thing entirely, especially when trying to develop things for other people. I've discovered very quickly that a prototype that might work for you or you thing is awesome, falls apart almost immediately once you put it in someone else's hands. There is so much around safety, security, design principles that I'm still trying to wrap my head around. I'm still such a noob in all of this, and definitely feel like an impostor with the explicit knowledge that if you sat me down next to someone who's been learning to code for a few months, and asked us to build something simple without an LLM...I'd be useless.
But the progress is real, and intrinsically demanding. Satisfying, and productive in some deep way. It feels like you're trying to solve a puzzle that your building as you put the pieces together. It really does feel like a kind of...art and engineering.
The best way to learn I've always found is by doing. Following your curiosity with some guidance along the way. When something doesn't work, no matter how many ways I ask ChatGPT, it forces you to research, to think, to reason about what is wrong and why.
99% of coding for me has been failure, but that 1% where it works feels oh so good. I liken it to playing the Dark Souls types games. You kind of have to be a masochist. It forces you to understand something, and not just recursively loop through errors while nothing changes.
You gotta jam.
I'm not sure where my coding journey will take me in this next year, but I am starting to feel less and less like an impostor the more and more I build. I'm forced to learn because I want what I'm building to just DO THE THING.
If you’re interested in starting your own coding journey, I’ve started a series on learning to code with LLMs - follow the link below and don’t forget to subscribe!