Transcription
Oh no, this is a title that makes me want to read it, because again, biases confirming my biases. Also, last week I did a full seven days in the tower, doing nothing but vibe coding with Cursor and also regular coding, and also complaining about AI, and then also loving Tab. Very complicated relationship right now.
But I have a problem here. April 1st. I don't know where this is going to go. Like, is this going to be a good article, or is this going to be another article in which I get sad about reading because it's April 1st? Let's find out.
TLDR; I choose to make using AI a manual action because I felt the slow loss of competence over time when I relied on it, and I recommend everyone to be cautious with making AI a key part of their workflow. I still think I'm going to get, I still think I'm going to get AI, uh, what's it called, April fooled here any moment. Here we go. We're going to get ready.
Uh, in the late 2022, I used AI tools for the first time. Even before the first version of Chad Jippity, uh, in 2023, by the way. The first time using Copilot, I still remember—I still, I, I talk about this all the time—is the magic moment. Magic moment. Absolutely magic. One of the best moments I've ever had. Very, very magic.
In 2023, I started using AI-based tools in my development workflow. Initially, I was super impressed with the capabilities of LLMs. The fact that I could just copy and paste obscure compiler errors along with C++ source code and be told where the error is, cause, uh, caused, felt like magic. Yeah. Yeah, that does feel like magic, because forget C++ errors. Yo. Yo, if there's one thing I hate more in life than C++ errors, it's signing into my terminal; right, like there's few things I hate more, but that's one of them.
Um, once GitHub Copilot started becoming more and more powerful, I started using it more and more. I used various other LLM integrations right in my editor, using AI as a part of my workflow. I do want to say though that GitHub Copilot sucks. It just does. It's not good. It's not been good. It's not being good. It's not looking good. It doesn't feel good. It doesn't make me happy. It's just mostly bad. It predicts many two lines. It's often just gross. It's just wrong.
But I've been converted. I've always said, I've always said this for a long time: I think the best AI coding like assist isn't these question-and-asking vibe coding approaches. I think they're just horrible. The best assist is a really good autocomplete. And before I ever even used Cursor, I, we were, I even kind of made my own little quick version in, uh, VS or Vim, just to kind of feel how it would be, in a Neovim feel what it was. And I was like, "Okay, that's pretty cool." But then when I use Cursor, it actually has such a good version of Copilot. Their version of Copilot Tab is so good. It's totally worth at least giving a try, but your skills will immediately atrophy. It's always the problem about offloading stuff. The moment you offload, you just don't think about things as more.
Anyways, in the late 2024, I removed all LLM integrations for my code editors. I still use LLMs occasionally, and I do not think AI can be used in a way that is very beneficial for many programmers. Generally agree. So then why don't I use AI-powered code editing tools?
Uh, Tesla FSD from 2019 to 2021. I drove a Tesla. Bros just out there, just telling you what he's driving, flexing on us kids. 2019 Tesla days. Those are pretty popular days, a Tesla. Though I would never make the same purchase again. Not for political reasons, just because the cars are quite low quality, very overpriced, and a hell to repair or maintain. Yeah, I've heard the, I've heard the repairing is insane. By the way, when I was in the Bay Area, like the 2014, 2015, 2019, it was a flex to have a Tesla. Right when I got my Tesla, I started using the full self-driving FSD anytime I could. It felt great just to put the car on FSD on the highway and zone out a bit. Switching lanes was as simple as hitting the turn signal, and the car would switch lanes. Driving for me was getting to the highway, turning on FSD, telling the car to switch lanes every now and then, and listen to music and podcasts while zoning out. If you drive a car often, you'll know that when you're driving on the highway, everything sort, uh, sort of happens automatically. Keeping your car in the lane at the right speed becomes a passive action. It does not require the type of focus that, for example, reading a book requires. It's the same type of focus that walking requires. It happens in the background of your mind. Fair. It's just really annoying. So far, he's making a great case for me to want to get a self-driving car. I hate driving. I just hate driving. Driving is hypnosis, dude. It's, dude, it's…
In the period of from 2019 to 2021, I exclusively drove my Tesla for longer rides. After 2021, I went back to driving regular cars, and making the switch was definitely not what I expected. Driving on the highway required my full attention for the first, uh, for the first month or so. I had to relearn keeping the car in the middle of the lane without thinking about it. Being reliant on Tesla's FSD took away my own ability to go into autopilot. Okay, that's actually an interesting argument. So I think the argument he's trying to make is that tasks in which we do regularly become background tasks, like walking. There's a lot of like hidden things that you do that you don't realize you're doing, or the calculations that are required that your body just does naturally for you. And if you take that ability to do that away, the natural easy thing that used to be easy becomes hard. Okay, that's a good, hey, it's a good, it's a, it's a very good basis to build a good argument. I think, I think this is, yeah, literally muscle memory. Well, it's actually like spinal memory, to be completely fair. Everyone talks about it, but, uh, this is actually a really, I think this is actually a pretty great basis for an argument.
My experience with AI code editors, working with AI-powered code editors, was somewhat similar. Initially, I felt that I was comp, uh, I completed work a lot faster when assisted by AI. The work I was doing most of the time was not super complex, and AI felt like putting my Tesla on FSD. I could just guide the machine to do the work for me. Yeah. Yeah.
In my free time, I started working on side projects on my personal account, on my work device. Uh, on this account, I did not have access to Copilot and other cool fancy AI tools. This is when using AI started to feel very similar to te, uh, the Tesla FSD story. Yeah. Now that I got done using Cursor for a week, honestly, going back to Neovim, sometimes I'm, uh, sometimes I'm in here, and when I start going here and I go like this, all right, uh, or I go, uh, param, and I'm like, gosh, just autocompleted already for me. Yeah, I have a snippet, but then I have to go like number, and I have to go number, and then I have to like go number, right? Oh my gosh, just, I already know what you want. You know what I want. I know what I want. Just make it happen, right? And if I use Copilot, I could get that back on. But Copilot's also super annoying everywhere else, cuz Copilot's like, actually… and it's always wrong, like 95% of the time it feels like, and just makes me feel like I'm going to go bonkers. Oh my gosh. It just, I just want, I just, I just hate, I just hate using it. It's like pair programming with the most annoying person in the universe. Uh, you just get to see their thoughts just all the time.
All right. Anyways, I felt less competent at doing what I was, quite basically, software development, than a year or so before. All of a sudden, it made very clear to me how reliant I had become on AI tools. I don't think this is a bad thing, right? Like, I'm not sure if it's a bad thing. I have to think about this more, but I'm not quite positive if the, if just programming is the end-all be-all. I think that you lose a lot of really keen sense of what's going on when you don't type it yourself. And I think that you lose a lot of mastery, and you lose a lot of just like familiarity with the API, and you lose like… but I could also argue that LSP, in some sense, makes the exact same thing happen; that the LSP itself also makes you lose some of that quality that, when it comes to being a really good programmer, I think they're on a near same level. Not quite. They're, they're like a different in, they're a different in magnitude, not a difference in kind.
Uh, anytime I defined a function, I paused in my editor to wait until the AI tools would write the implementation for me. It took some effort to remember what the syntax was to write a unit test by hand. Ah yes, the old Copilot pause. So this is a real effect for those that are using, uh, AI regularly. Try, uh, just try writing without it for a second. Try writing without Copilot, and you'll realize that you just like stop, and your brain just like literally turns off. LSP for faster navigation, by the way, is very, very good. I like that. You like literally turn off your brain, and it's just super annoying, and you're like, why am I turning it off all the time, uh, with my work. AI started to become less useful over time as well. Not only did it take out the, uh, out the fun for me, but I started to feel a bit insecure about making some implementation decisions myself. Oh, interesting. Outsourcing the decisions to the AI seemed a lot easier, but sometimes the AI couldn't figure things out, even with the best prompts, uh, it was quite clear that because I did not practice the basics often, I was less capable with the harder parts as well.
So this actually was an argument within, um, the there was a paper by Microsoft and Carnegie Mellon about the effects of turning off critical thinking and, uh, using AI, and they made this really great argument. I forget what the, there's an author that talks about to do the hard things requires you to do the easy things millions of times. And so one of their kind of core arguments of the paper was that by stopping doing the easy things, the harder things become harder, which is actually a pretty interesting argument. The paper took literally 30 pages to say, like, a two sentence to say two sentences. It was absolutely mind-numbing to read, right? It was like, but it was like a really, uh, it comes from Whitehead. It comes, it's actually, let's see, it's an old argument. And it comes from Whitehead, uh, well, the real analysis of it. Yeah. So there's like this idea that if you don't make a thousand little decisions that are easy, you're not going to be able to make one hard decision. And that's all there is to it. And it's, it, he's kind of, I think he's saying that without saying that, uh, with my work AI started to become less… Oh, I already read that. Uh, the loss of finger, uh, finger spits and goil, uh, finger spits and goil. Yeah, is a jam and term, literally meaning fingertips feeling. Oh yeah, the feelings go, feel and meaning intuitive flare or instinct, which has been adopted by the English language as a lone word. It describes a great situational awareness and the ability to respond most appropriately and tactfully. Interesting. So it's like a, it's like a form, it's like a form of muscle memory, but in the realm of competency. To play an instrument very fast, the only way to play it, uh, is to play very slow in repetition over time. I think this is, I think this often with AI plus programming. Interesting. Yeah, finger feel. We do, we just call, is this what we call, uh, muscle memory, otherwise known as touch in the NFL? Yeah, finesse. And I think in sports ball we call it finesse. Who, who, no one uses this word. I think we just call it finesse. Right. Hey, finger spits. Thank you. The only way to chop fast is to start chopping slowly. Yes. Correct. Defining seniority is a very tough thing. Though, in my opinion, a lot of being a senior is in soft skills. When it comes to the technical hard skills, a lot comes down to finger spits. I don't even know how to say that word. The longer you work with a language, framework, or codebase, the more you develop this kind of intuition of what the correct approach is. Yeah, I think that's all true, right? Like anyone who's worked in a larger codebase, it's like mysterious, large, and annoying at first, and becomes easier and nicer as time goes on, and then eventually it becomes easy to work in. And then soon you're off running fast. And that's just like, you know, we, I think people often can call that thing like tribal knowledge. People try to say you need to document everything, but there's a certain level of documentation that just stops working. Like you just can't do it. It no longer works in that realm. It's like, yeah, intuition, it's good. It's a good thing. It feels good to be an expert at something. Um, the gut feeling of something feels off slowly turns into a feeling of this is what we should do. This developed intuition is not just an architectural level, level. A big component is in the lower-level details. When you use pointers, or what type of pointers, whether you use asserts or checks, what to pick from the standard library when multiple options are available. Those senior C++ programmers still can't seem to agree on this. This intuition is what I was slowly losing when relying on AI tools a lot. And this is coming from a lead developer. When I see a lot of hype about vibe coding, I can't help but think, how do you exactly expect to vibe code your way to a senior? Where, where will you get the skills, uh, from to maintain and extend the vibe coding codebase when the AI tools are down or have become too expensive? I think, I mean, I think there's probably a level of intuition, finger spits, finger sprites, and there's a bit of finesse that probably comes with, uh, prompts and context that you also can probably grow on when it comes to prompting. There are people who are better at prompting than me. Cockburn, don't even try that with me. Uh, L take. It's always becoming, uh, it's always up and becoming cheaper. Uh, lately things haven't been cheaper. Okay, I'm just saying Jippity 45 is really expensive. Okay, Sam Altman was promising, is promising me 10x cheaper per year, and 6 months after he said that, it got 100x more expensive. Okay, this is stupid. I want a 10x. Sam wouldn't lie, would he? He did, he did just get done raising 40 billion. So sure, I'm now, he's, I'm sure he's tweeting now like, wow, man, this shit's expensive. We got a lot of money to fix these problems now. Don't you worry. Eggs went up almost 10%, yeah, or 10x. Yeah, it's crazy.
Uh, even with larger context windows, more computing power, reasoning models, or agents, there will be things that AI won't be able to do. Over time, the AI tools will get more and more powerful. Sure. But when you receive a Slack message that, uh, the website works fine, but the app is down in production, I tried locally and there it works fine. Nothing in Sentry either. Good luck getting an AI agent to fix this for you. Maybe it can, maybe it can't. And when the AI agent can't figure it out, will you reply, "Sorry, Cursor doesn't get it. We'll, uh, we'll prompt more tomorrow." I do love that, David. Sorry. We'll prompt again tomorrow. I'm kind of out, I'm kind of, you know, my creative prompt juices are kind of out for the day, so I'm just going to prompt again tomorrow. Okay, dude. That's such a great phrase. I want to use this all the time.
You can get by without these tools. Yeah, you most certainly can. Uh, people that say that like you're being left behind, I think are incorrect. You know, I haven't used Tab or Cursor until just last week. And after using it just for one moment, maybe like what, an hour and a half, I became a very big expert at exactly how Tab works and where it works and why it works and when to use it. And so it's just like, I don't think, I just don't think there's like this so-called barrier to entry where it's like if you're not profiting now, you're never profiting again. Okay, so you're saying they're going to get better all the time? Yeah, they're going to get much better. We're going to get way more integrated. It's going to be completely different here in like three years. Okay. So what am I learning now? Checkmate, atheist. Uh, you can get by with these tools. Uh, you're late for, for things. Uh, sometimes it feels like you have to use AI or be out of a job in 6 months. We've been hearing the 3 to 6 months away now story forever, uh, over two years at this point. Uh, when I got my Tesla in 2019, I paid 6400 for functionality that was supposed to arrive in 3 to 6 months from now. And the functionality is still not present the way it was promised over five years ago. Self-driving cars is like the greatest look into the future. Look at self-driving cars. We've been promised self-driving cars for a long, long time.
Right now, it is unlikely that letting AI do your coding work for larger projects than a university project. When working on legacy systems or larger projects in enterprise, or when you need to work with and consult a lot of dependency internals, like I do with Unreal Engine, AI tools will often not be able to make things work. When you need to work with internal DSLs, uh, tools or frameworks, good luck getting LLMs to generate, uh, useful output for industries. You can't even use AI tools at all for a multitude of reasons. Yeah, first off, let's go backwards that list. By the way, this is really important. If you solely depend on this, you're like not getting a job in medical, finance, government, banking, like there's a whole slew of industries that just like, AI not allowed, right? And I'm sure that will change over time, and things will change, and blah, blah, blah, blah, blah, blah, blah, blah, but right now, like that's just like a closed door for you. So it's a good thing to recognize. And I don't know. Let's see. Uh, Goldman is big on AI tools now for dev. Yeah. And so that could change in banks, but I'm not sure how fast or quick that's going to change.
Uh, second off, this is really, really good. I think the biggest takeaway you can take from this sentence is stop making DSLs. Just use Lua. Just Lua. Lua easy, DSL hard. Every time I make a DSL, I make sad. Like, that's it. That's it. That's it. That's, that's all, that's all I have to say for that. For some things, you really should not want to rely on AI when implementing authentication systems, like JWT signing, uh, or RBAC. Adding, and it should be secure to the prompt won't make it secure if it's been trained on GitHub code that had CVEs. By the way, there's an if statement in here that's not useful and also is a very, very exciting part about the future. Security is going to be a very needed field for a long time because the reality is, where is this code coming from? It's coming from GitHub. Where are we discovering all these security issues? They're always in software that is open source that people use. Why? That's because like security issues are just a natural part of programming. So if everything's trained on this, what's going to happen? It's just going to make more of it. It's just going to replicate it. Statistically speaking, it makes security problems for you. Everybody's just stealing my terrible code. Uh, when it comes to security, you should be the person who is responsible and understands this fully. Critical systems should be written and reviewed by humans here.
Actually, a great example. Next.js last security, uh, bug. This was just up here. Where was it? Their low-level alerting had a really great one, but it's very, very simple. Here's how effectively it works, right? It says it lets attackers bypass authentication. Maybe this will be it. But here, let me, let me just give you the, the skinny of how it works. It's very, very simple. There exists some sort of like X, uh, trust me bro header that you could just add to a request, and if the middleware saw trust me bro, it would just go, uh, yeah, we don't need to run authentication on this request. And that was just out there. The whole idea was this, uh, the idea why this thing exists to begin with, dev's doing security, am I right? The reason why this existed is that you have some sort of HTTP request coming in, right, uh, and then it goes into your system. Well, then you have middleware that goes off and does a request, cuz everything is like microservices and all this stuff, to go and see are you authenticated? That authentication needs to make a request that needs to pass through middleware again, apparently, like apparently this is how people have things set up. So then it would then do this thing forever. So their way around that was X trust me bro, and bro would be like, ah, trust you, and you just pass right through the middleware and just keep on going, or you pass right through the authentication, uh, middleware, like that's it. Was SSA? Yeah. Super secure authentication. Trust me bro. True. True. Right. That's insane. I mean, it's, it's a thing. It's just, it, it just happened. Um, is it a, is it, is it, is it that crazy? It's really not that crazy. There it is. X middleware sub request. That's the trust me bro. Right. Everybody was clapping when someone introduced this optimization. Exactly. When someone solved this recursive middleware request thing, everybody clapped. Beautiful. Absolutely beautiful. There's, there's about 10 more dozen examples of this, uh, of the same type of attack. Oh, it exists everywhere. Good answer. Good answer. Right. And so it's just like, remember that was just fixed like a week ago in Next.js. That means there is a nonzero chance that if you're doing security in an AI's programming things can happen. You know, you might just accidentally eat that snake's tail. When it comes to security, you should be the person who is responsible and understands this fully. I've done that, and I've also introduced security problems. Critical systems should be written and reviewed by humans. And if we are heading to a situation where one AI agent writes the code and another reviews the autogenerated PR, and then another AI agent deploys the code, we will see a huge spike of security issues soon. Absolutely. Like, absolutely. By the way, that was not a knock against Next.js. Uh, for those that are wondering, this is just why it's hard. Like security is hard, and things that seem like reasonable solutions to somebody that doesn't have the context of how things work will go, "Wow, that's a reasonable solution." Because, you know, whoever made that change there was probably somebody else that reviewed it and said, "Oh, that's a good idea. Good answer, Todd." Right? Like Todd made it, like I'm a genius. And then somebody else was like, "Todd's a genius." Right? Like there's multiple people that let this thing go through. Who knows how many, right? So, uh, let's see. As an XJS, uh, Next.js user, it should have been a knock on Next.js. It's not, it's not a knock on Next.js. It's just like that's the, like security is hard. Security, it, uh, what, what was it, uh, Androl from the Black Tower, Wheel of Time book 14, uh, boom. Yeah, we're citing more Wheel of Time. I'm just about to finish Wheel of Time. Okay, uh, someone, the, uh, Pava was with him, and she's like, all men are ignorant, and he said, yes, that's because not all men can know everything, and so everyone is ignorant of something, which is awesome, which is an awesome line. You, it's just, it's just simple ignorance on security, right? It's not, it's not, it's, I, it's not even a knock against him, right?
Where I draw the line: I still use AI sometimes. I think it can be a great tool when used wisely. I draw the line at integrations. I keep AI fully separate from my code editor. So that's actually my opposite take. If you're going to use AI, you might as well have it in your editor. Uh, all of the context I add manually, I intentionally keep…
The effort required is quite high. So it is, uh, so it decentizes me. Interesting. Okay. That's because you can't help yourself.
Okay. Yeah, I guess that makes sense. Um, let's see. Examples of where I use AI for work include: convert these go tests instructs to tests in a map; convert this calculation to SIMD. This is nuts. Uh, and when the content type is application/zlib, decode the body. I have to set up some custom instructions to only give me the code that has changed and to give me instructions for adding it. This way, I'm still the one making the changes in the codebase. Just approving a git diff is not enough. I want to manually add the code myself. Only then do I feel confident to sign off on it and take responsibility for it.
Yeah. I mean, there, there is something to that, where you can get lost in the sauce of a git diff. That's fair. You could get lost in the sauce. That's, that's fair. That happens. It's easy to, like, that's why when I do a review of code, I think it's easier to review code on GitHub than in my editor. Like, even though I know how to do diffs on my editor, I know how to do all those things, I can definitely look at stuff. I just look at it differently when I'm on GitHub. Like my, my mind changes. I have this very intense kind of thought process because I've trained myself: when I'm on a website, I somehow just review it better than when I'm in my editor. When I'm in my editor, I just don't review it as well. I don't know why. I can't explain why. I don't think it's a UI problem; I think it's a mentality problem for me. I think it's just simply when I look at it, I've adopted the mentality of, "I'm reviewing," and a lot different, like internal, like it's like driving on the highway. I don't think about it anymore, but it's like, it's like this automatic process that comes up. I'm not even trying to say it's good or bad; I'm just saying it's just, I get it.
Another great use case for AI is learning. I often have questions that are quite uncommon, as I have a few very niche interests. Turns out adding net code to a custom game engine using ECS doesn't have a lot of learning resources. What has worked for me is asking the AI to explain pieces of code, like: "Explain this assembly code," "Explain what this shader does," "Which books go in depth about resolving client-server desyncs in game engines." The AI seems to struggle with these sometimes; I'm getting mixed results, but the results are still much better than search engines.
Yeah, I do like, uh, AI as a search engine. I think that, I dude, RIP Google, or not even RIP, you know, rest in, rest in poop, Google. I dislike you. Uh, I don't like Google at all. Uh, I will even use it for this article though, I'm not right. Let's see. Though not for writing content, but for checking, like AI as search is pretty great. I like AI; AI search is very good. Another benefit of using AI this way is the cost: no unnecessary API calls, manually managing context, and more control over the LLM settings. I use a desktop application with a bunch of different LLMs hooked up to it. I have used it daily for the last three months or so, and in total, I have consumed around $4 in credits. I don't want to add, let's see, I do want to add that with some things, I am more strict on my personal website. I don't have any AI-generated content, whether that's text or images. I don't like the AI-generated images or art personally, for various reasons, and I think AI-generated text lacked character. It feels very flat and boring. When something is created by humans, it, to me, has more value than, uh, when it's created by AI.
Yeah, that's fair. I think a lot of people feel that way. So I, I'm, I'm on this team; I'm on that team. AI is stealing, uh, artist jobs is brain rot. It's not, I, I don't think it's brain rot. I think AI is going to take artist jobs for sure. I think a lot of people, like, I can't tell you how many people that just need, like, small icons or potions for their games and stuff like that, and they'll just generate it, uh, and just kind of walk away with it, especially a lot of indie stuff, stuff that's only run by one person. Totally can see that consuming a lot of, like, what used to have to be, well, I won't have good art unless if I have an artist. Uh, I, I think it's going to happen, but again, I think that's, that's because it's, it's again measuring the wrong thing, which at the end of the day, it's about measuring the output. Like, we could have generated all the towers, all the tiles, all the dirt and everything for our tower defense game, but instead, we had Adam see Ununice. You may have heard of him; amazing pixel artist guy. Come and join us at the tower, and he was there; he was talking; he was coming up with ideas; he was making great art. The art is so coherent through all the pieces of art that it's much, much better, and that's because it's not created in a vacuum; it's created holistically from one person, so there's like a theme and a feel that's really, really amazing. And this is, of course, me not touching on any of the topics around, like, copyright licenses and all that. I think that's going to be an entire, like, I think the next five years we will see some pretty serious issues when it comes to AI and that, don't steal Adam from releasing his game. I only used him for a week or 5 days, so it's very, very little, and he's already in America, and he was already traveling for GDC. So it's not, it's, it's not a lot, right? I think, I think, uh, AI is going to have a lot of, a lot of problems, uh, when it comes to, uh, when it comes to stuff. It's theft. It's fraud. Plain and simple. Many AI arguments are not technical; they are legal. Some people see, some people, companies understand and only, uh, let's see, only the stick, or some people's company only understand with the stick. I'm not sure if that's true. I'm not sure how much of it is legal or not legal. Uh, I think that there's plenty of public, public domain images that you can train off of. There's also, uh, AI programs that are trained off of artists who opt in and give their styles. Um, and so, like, that's, that's a thing people do, that. And so that's real. Also, I think this is, I think this is a very interesting argument that we have to come to terms with, which is: legal doesn't matter to China, right? There's, there's a lot of things that you're going to have to kind of think about in the future. I don't think it's a, I, I think there's a lot of reckoning and a lot of laws that are about to happen. I just don't know what, how, where, and how do you approach it. It's just more very interesting.
All right. It is also worth noting that there are more things to think about than efficiency and productivity. It's also about doing what you love. If you love coding, keep doing it yourself, even if the computer might be better at it.
True. And if you like making products and you don't really like coding, then it's probably better to trade-off, to use something that makes the code for you. Right. In 1997, Deep Blue won the chess match against the world chess champion, Gary Kaspor, uh, Kasporov. Yet people still play chess. When it comes to programming, I'd say that I program for the same reasons that people still play chess. Though chess and software development are very different, with chess being much more limited in scope.
True. Uh, I love just dunking on chess. Um, I think it is good to keep in mind that sometimes we can do things just to enjoy them.
True. My advice to new program, I like this statement by the way. This is a good statement. You can just do things because you like them. There doesn't have to be some sort of monetizing outcome to it. And you know what the best part is? Sometimes monetization happens at the end. Like, good things happen at the end, but it doesn't have to be the strict motivation for it. My advice to new programmers: don't become a forever junior who lets AI do all their work. If you want to become a programmer, learn to program yourself. Be curious. Just, let's see, put in the time and effort to learn how things really work. Yeah, TJC course on boot.dev; my HTTP course on boot.dev. Just saying. Good ways to start learning some backbone stuff and how things work in the layer below that. It really pays off, learning how everything works under the hood. And using that is amazing. Just keep learning. Don't be a prompt engineer. Even if you call that engineering, believe me, it's more fun to be competent. I love this term. That's by, that's a DHH one. DHH, DHH, DHH, DHH. Yep. Boom. It is just more fun to be competent. Let's go DHH. Let's go. He's a fact. Fact of life. It is more fun to be competent. Called it. Oh yeah. That's because that is like, that was like the greatest, it was the greatest interview of all time. DHH is just a, just a legend, right, just an absolute legend.
Even though AI might be smarter than you, I don't think it is, that I don't think you can use the term smarter. It's not smarter. It's not dumber or smarter than you. Never blindly trust the AI output. Don't build your whole workflow around it. Sometimes try to work, uh, without it for a few days. I like the airplane test: if you can't program what you're doing on an airplane, I, you don't know it. Like, if you can't turn off the internet, sit on an airplane, sit uncomfortably, be taken completely out of your workplace, work on a little laptop computer, and you can't be efficient in work, I don't think you have a good setup. The better at programming you are, the more AI will get in your way for the more complex work. If you learn to code now, keep building your skills instead of letting AI do all the heavy lifting. You are capable of fixing the messes that vibe coding is now creating. I don't want to sound elitist, but if you don't want to learn to go beyond vibe coding, maybe coding isn't for you, because positions where all work can be done by vibe coding are the ones that will be eliminated first when AI becomes more powerful.
Also true. Good trueing right there. That's actually a pretty hilarious observation. Vibe coding, vibe coders will be the first to be eliminated as they get more, as they get more powerful. If, and remember, if you cannot code without AI, you cannot code. Also great statement. But I do mean that the airplane thing, I, I don't say that as like some sort of jerk, like, "Oh, you just don't understand how to program." It's because your best thoughts will come when you are limited and you're just sitting there and you're just thinking; nothing's interrupting you; nothing's writing code for you; nothing is doing anything for you; it's just you, your computer, you're trying something, you're thinking, you're trying something, you're thinking. It's completely blank of all other distractions, and all of a sudden you'll come up with, like, your best ideas, and that's because you've actually had time to allow inspiration to happen. You cannot be inspired when you're constantly interrupted, right? It's just like the constant forever. It just doesn't work. Honestly, I, I, I've always hated that, I've always hated that argument. Oh well, just you got, like, you know, the syntax is like the, like, what, what do you mean if syntax is the barrier for you to understand programming? It's like, brother, the semantics is way harder. It's way, way, way, way harder than the syntax. Universally, all modern languages give you great output when you goof something up. Okay, shots fired at COBOL. That's why I said modern. Okay, this dude got one guy hard. I did, but I, but it's just like such a common one-guy-ing. It's such a common one that people say this constantly, like, "Oh, something about syntax." And I always just get so blown away that syntax is the barrier. Like, syntax is just not the barrier. It's not hard.
Anyways, conclusion: when you're using AIs, you are sacrificing knowledge for speed. Sometimes it's worth making the trade-off.
Yeah. Yeah. Absolutely. You should know when to do that. I think this article is a little heavy-handed on when you should and shouldn't do it. Um, I think that you just got to figure out what you like the best and the reasons why you program. At the end of the day, I don't think there's a solid answer. I don't think there's like, I don't look down on the person that just vibe codes everything. I just wouldn't, I just wouldn't work on their projects. And if someone's like, "Here's $1,000. Could you fix a bug?" I'd say no. I just, I, I don't want to be, I don't, I don't even want to be a part of it, unless if I can prompt my way also and spend, uh, 30 minutes doing it, or else I don't want anything to do with your code. Like, your code is trash, and I don't want anything to do with it. That's it. Right. I don't want to have to deal with your crap. Right. I'm more on the implication side of things, as long as you're, as long as at the end of the day the code looks good and you've done a good job, like, I don't care how you made it, right. Uh, though it is important to remember that even the best athletes in the world are still doing their basic drills, for, for a reason.
Yes. Yes. This is good. Uh, the same applies to software development. You need to practice the basics to be able to do the advanced work. You need to keep your axe sharp. We are still a long way out from AI taking over our jobs. A lot of companies are creating FOMO as a sales tactic to get more customers and/or raise money to show traction to their investors to get another round of funding to generate the next model that will definitely revolutionize everything. AI is a tool. It is not good or bad in itself; it's what you do with it. You know, they say it's not the size of the tool that matters. It's not the size of the parameters that matter. Uh, I do think it can be a great tool as long as you are not reliant on it for your workflow. Uh, make sure you still can work effectively without it. Make sure you don't push code to production that you don't fully understand, and don't think of AI as a replacement for your own thinking. Stay curious; keep learning. I think this is one thing that, uh, Cursor did really, really well, which is like, I think Devon made the big mistake, and I think Cursor did not make the big mistake. Cursor goes: engineers are going to be around; we're going to make it easy to use AI. Devon said: "Engineers aren't going to be around; we're going to replace them; we're going to make it easy for you to, to use LLMs." And they're two distinct schools of thought. The Devon one, I think, is built and predicated on this idea that AI is going to improve at this really crazy rate. Cursor is built on this idea that increased conveniences will make you use it more, but you are still the one in control. I think Devon ultimately is not going to be successful unless if there is an intense change in the power of LLM to the point where it actually makes it possible to vibe code uniformly for all problems, or B, Cursor is going to be the success because it has the good tabbing; it has, uh, it has better integration, and a lot of people are going to just rely on it for a lot of coding, right? Devon got replaced by AI unironically. Devon got replaced by AI.
All right. Hey, I like the article. I, I really, I, I really did like the, the Tesla one and just the emphasis on a lot of small prac, like a lot of practicing the little things make you good at the big things. And I think that that's the shortcut a lot of people want to find. I think this is just like, you see it in kids. If anyone in here has raised kids, it's the number one problem of a lot of kids is that the small things they don't want to do. It's the big thing. People always want to do the big thing. Why can I not do the big thing? Why can I not lead the big thing? Why can't I do that, you know? But if you watch Jiro Dreams of Sushi, the people that he brings on to help make the world's greatest sushi have to spend three years making rice. Just making rice. That is it. Because to understand the process in the most intimate possible way, you have to do something over and over and over and over and over and over and over again until the point where you just get it so deeply that it's like a completely different understanding of what you get. And so therefore it's a message lost on a lot of people because people don't get that there's layers of knowledge. There's not just knowing the thing; there's like a deeper knowing the thing and why it's good, but not just simply, "I like some things." I know about programming; I cannot write into a book. You cannot write into a book. It just exists. It exists within you. And even if you try to write them down, it's never going to come out correct. The name is, I feel like I was halfway through my sentence and I stopped.
Yeah, it's intuition is the, is the term you're looking for, but it's like, it's, it's more than intuition. It's, it's also, it's like, it's these sequential logical jumps with the gaps being filled in by intuition. So it's not just simply, "Oh, I think this is better." It's like, "This is better because if I think about this next thing, I think this will be better here, and then if I think about the next thing, the next thing." It's like playing chess on top of programming that makes it end up so good. It's not just one simple jump; it's the many jumps in between.
Right. Anyways, it's finger spits and fragle. Yes, exactly.