Learn to code, ignore AI, then use AI to code even better
kyrylo.org
kyrylo.org
Many, many posts of people looking for help fixing AI-generated code because the AI got it wrong and they have no idea what the code even does. Much of the time the problem is simply an invented method name that doesn’t exist, a problem that is trivially solved by the error message and documentation. But they say they’ve spent several days or whatever going back and forth with the AI trying to fix it.
It’s almost a little sad. If they just take the time to actually learn what they’re doing they’ll be able to accomplish so much more.
Now of course people learning the traditional way have these same problems, but they’re debugging code they wrote, not gobbledygook from an AI. It’s also easier to explain the solution to them because they wrote the code, so it tends to be simpler. Several times I’ve pitied someone asking for help with AI code and even when I explained the solution they still didn’t understand it, and I had to just give up on them - I’m not getting paid to help them.
Rule number 1 and the only rule: You need to be a subject matter expert. Be it program logic or be it programming language. AI is only a helper, it will go wrong, frequently, and if you do not understand the reason for the code and the programming language, you will take so much more time than if you did not even use the AI.
Without naming the IDE, but one of the top 3 I guess, I asked it to simplify some code. I had repeated code 8 times. 6 of them were identical, the last 2 had a variation. The AI just did not catch it, and refactored all 8 blocks to use the logic of first block. How can you even do that? The code is similar but different, it looks the same but there are extra lines of code in the last 2 blocks !!
And it took me a while to realize this. I never ingest AI code directly so at first I was marveling at a job well done, and as I read and compared, the horror !! And that was not the first time it happened, but once again I got tricked by the soft spoken well mannered AI to believe that it did a fantastic job when it did not.
Edit: It is just an assistant. You give it a task, it will make a mistake, you tell it to fix the mistake, it will fix the mistake. It still saves you time. Next day, it will make the same mistake - and hopefully that gets reduced as the versions evolve.
It's a force constant, rather than a multiplier. If you're low skilled, asking it to do a low skilled task, it works fine. If you're high skilled, and asked it to do the low skilled task, you saved a tiny bit of time (less than that of the low skilled person).
But it cannot do a high skilled task (at least, not right now). It can pretend, which can lead the low skilled person astray (but not the high skilled person).
Therefore, all AI does is raise the floor of what is achievable by the laymen, rather than multiply the productivity of a high skilled programmer.
Still, I'm not sure I need to spend $250/yr to occasionally generate some HTML that I could use a template to generate
Let’s take the web. React, Svelte, Angular, Alpine.js, all have the same problems they’re solving. Binding some kind of state to a template, handling form interactions, decompose the page into “components”,… once you got the gist of that, it’s pretty easy to learn. And if you care about your code being correct, you still have to learn the framework to avoid pitfalls.
Same things with 3D engines, audio frameworks, physic engines, math packages,…
So now I want to do a new web application -- If I fall back on my C roots, my Javascript looks a lot like C. Example: adding an item to an array. The C style in Javascript would be to track the length of the array in another variable "len", and do something like myarray[len++] = new_value;
I can feed this into an LLM, or even say "Give me the syntax to add a value to an array", and it gives me "myArray.push(newValue)", which reminds me that "Oh yeah, I'm dealing with a functional/object oriented language, I can do stuff like this". And it reminds me that camelCase is preferred in Javascript. (of course, this isn't the real situation I've run into, just a simplified example -- but I really don't have all the method names memorized for each data type. So in that manner it is useful to get more concise (and proper) code.
I've worked professionally in many languages like Perl, Python, Kotlin, C# and dabbled in Common Lisp, Prolog, Clojure, and other exotics one. Whenever I forgot the exact syntax (like the loop DSL in CL), I know that there is a specific page in the docs that details all of these information. So just a quick keyword in a search engine and I will find it.
So when I come back in a language I haven't used in a while, I've got a few browser tabs opened. But that only lasts for a few days until I get back in the grove.
So for your specific example, my primary choice would have been the IDE autocompletion, then the MDN documentation for the array type. Barring that, I would have some books on the language opened (if it were some language that I'm learning).
But that's a very low level task, where i had already decided on the "how it should be done" part. I find in general that for things that aren't really obvious, telling the llm _how_ to do it produces much more satisfactory results. I'm not quite sure how to measure that force multiplier - I can put in the same amount of work as a junior person and get better output?
Strong disagree. I've been coding for 25+years but never on the front-end side. I couldn't write JS w/ pen & paper with a gun against my head. But I know what to ask and how to make sure a react component does what I want it to do, with these tools.
That is the subject matter expertise that many lack.
> Rule number 1 and the only rule: You need to be a subject matter expert. Be it program logic or be it programming language.
You are a subject matter in program logic, just not programming language. You are supporting their point, not disagreeing.
I guess that's the part I disagree on. The programming language is largely irrelevant now is what I'm seeing. And especially the "time to first result" is orders of magnitude smaller when using AI assistants than having to rtfm/google/so every little problem I encounter in an unfamiliar language.
And I am in no way stating that my code will match an expert in that field, of course.
Do you have to maintain the code?
Unless you're using a LLM with really long context, it's prone that some context loss will happen soner or later - when that happens, pointing errors that dropped out of the context will just result in repeated or garbage output.
Claude Code forces you to create a CLAUDE.md to direct how it works, with Cursor you can (and should) write Cursor Rules.
The difference with a good spec + AI vs just vibe coding from scratch is like night and day.
Basically they're just a markdown files where you write what the project is about, where everything is located and things like that. Pretty much something you'd need to have for another human to bring them up to speed.
An example snippet from the project I just happened to have open:
## Code Structure
- All import processors go under the `cmd/` directory - The internal/ directory contains common utility functions, use it when possible. Add to it when necessary. - Each processor has its own subdirectory and Go package
## Implementation Requirements
- Maintain consistent Go style and idiomatic patterns - Follow the existing architectural patterns - Each data source processor should be implemented as a separate command
This way the LLM (Cursor in this project) knows to, for example, check the internal/ directory for common utils. And if it finds duplication, it'll automatically generate any common functions in there.
It's a way to add guidelines/rails for projects, if you don't add anything the LLM will just pick whatever. It may even change style depending on what's being implemented. In this project the Goodreads processor was 100% different from the Steam processor. A human would've seen the similarities and followed the same style, but the LLM can't do that without help.
pro AI people sound like someone with an expensive addiction trying to justify it. the free product is bad, so I just need to pay to see the light?
Why would Anthropic let me use a model for free that is going to make me more skeptical of their paid offerings unless it is pretty similar to the paid ones and they think it's good?
Just read the manual and write the code yourself. These toys are a distraction.
(I know what I was doing and had a great understanding of what is going on).
There are plenty of people who are way too high on the current abilities of AI, but I find that the “AI is useless crowd” to be equally ridiculous.
It reminds me of early in my career working in statistics where the company I joined out of grad school was justifiably looking to move out of SAS and start working in R and Python. Many were enthusiastic about the change and quickly saw the benefit, but there were some who were too entrenched in their previous way of working, and insisted that there was no benefit to changing, they could do anything required in SAS, and stubbornly refused to entertain the idea that there was a benefit to be gained by learning a new skill.
You needn’t become an AI cultist. But with the number of people who are getting at least some benefit to using AI coding assistants, if you are finding it to be worthless in your personal experience, it may be worth stepping back and considering if there is something wrong with how you are trying to utilize it.
Example: I wanted a tool that notifies me of replies or upvotes to my recent Hacker News comments. Grok3 did it in 133 seconds with Think mode enabled. Total time including me giving it the example HTML as attachment and writing the specs + pasting the response to a file and running it? About 5 minutes.
I know perfectly well how to do it myself, but do I want to spend the hour or so to write all the boilerplate for managing state and grabbing HTML and figuring out the correct html elements to poll? Fuck no.
90% of the posts are about marketing or are self-help/motivational.
Anything related to art, sound or programming barely gets upvotes.
To paraphrase a meme "best I can do is text editor wars".
Gamedev.net was an amazing hang back in the early 2000s up to the 2010s.
Now it's just a perpetual "how do I do this with Unity" that is super hard to filter.
I just go to meetups now.
> best I can do is text editor wars
Or Unreal vs Unity wars in this case :'D
Then why does the AI not solve it anyways?
I think understanding "the code" will eventually be as important as understanding machine code or assembly nowadays - still very important for a small number of devs, important in very rare cases for some other devs and completely irrelevant to the majority of devs.
Because from my experience, sonnet 3.7 can almost always fix issues of that type and if it can't, it's usually not "trivial" at least not by my understanding of the word.
The scale may change, but that is likely just because more people code. You couldn't do X but now you almost can!
> Now of course people learning the traditional way have these same problems, but they’re debugging code they wrote,
Really? They've not copied and pasted something from SO? They're that early in their coding journey?
> It’s almost a little sad. If they just take the time to actually learn what they’re doing they’ll be able to accomplish so much more.
Leading a horse to water, etc. but llms are excellent at being a patient teacher of basic coding.
Frankly they can be excellent at lots of things people keep saying they're bad at but some seem to refuse to learn how to use them as a tool. It reminds me of watching people be unable to use Google in the past - how to not just ask a question but search for information.
Hey, trying to translate excel sheet with chatgpt, cant understand what to do (posts screenshot with explanation and example "pip install [package-name]"
You just need to execute specified command in your environment
What is "my environment"?Even if the code it generates works, what happens when you need to change it and no longer have that AI conversation and its state available?
Then there's the security nightmare this is going to be. All this slop-code generated by ignorant hustlers with AIs is going to be a hellscape of security bugs.
> is it weird or an anti-pattern to use a timer like this?
The response:
> Yes, using a timer like this is generally considered an anti-pattern in React for several reasons: It introduces non-deterministic behavior (timing-dependent code), It's a workaround rather than addressing the root cause, It can be brittle and lead to race conditions.
I'm sure all those things are true. This is a classic example of the problem with people using AI programming tools but lacking a real understanding of what they're doing. They don't know enough to question the advice they're getting, let alone properly review the code its generating.
The other day, in a Rails app, Claude generated a bunch of code that spawned various threads to accomplish certain things I needed to do asynchronously. Maybe these days, in Ruby 3 and Rails 8, this is safe. But I remember that back in the Rails 2 days, going off and spawning new threads was not a good idea. Plus, I have a back-end async job processor already set up. Again, I questioned the approach. The revised code I got back was a lot simpler, and once I'd reviewed and tested it, I (mostly) used it as-is.
is this the best way to do it or are there other solutions? what are the pros and cons?
are there security problems with this? how could I make this code more secure?
what are some things I should look out for with AI coding(meta question)?
what does this error mean?
just talking back and forth with the AI on the phone you can get a high level understanding of a topic pretty quickly and way more in depth and personalized than a tutorial on the internet.
Traits much less common than you might think among people who want to get into programming.
I spent a solid 2 hours yesterday trying to get an SSDP protocol implementation going because the LLM was absolutely insistent upon using 3rd party libraries that don't exist and UDP client methods defined in Narnia. I had to spoon feed it half-way attempts before I could get it to budge on useful code. This was all before I realized we had a problem with multicast group membership and multiple network adapters.
These models definitely can help (I wouldn't have gotten as far as I did without one), but you need to know what you want every step of the way. Having mere "vibes" about a sophisticated end result will result in unhappy outcomes. I think the model would have made my life much worse if I wasn't as cynical and suspicious regarding every aspect of its operation. I can see how these models would steal learning opportunities from more novice developers. Breaking out Wireshark is the sort of desperation that only arises when you can't constantly ping some rubber duck for shreds of hope (or once you realize there is no hope).
If the AI had access to the AST and could know what functions exist they might be helpful. Then they could write that function they wished existed if it doesn't. However that means they need to know how to understand the code not just the structure.
I’m not sure this is true. Prior to AI you saw a lot of the same behavior, but it was with code copied and pasted from stack overflow, or tutorials, or what have you.
I don’t think AI has changed much in terms of behavior. There has always been a subset of people who have just looked for getting something that “worked” without understanding why, whether that’s from an AI code assistant, or an online forum, or their fellow teammates, and others who want to understand why something works. AI has perhaps made this more apparent, but it’s always been a thing.
"How do students learn to code nowadays?" - I think about this pretty much all the time.
In my intro class, the two main goals are to learn about structured programming (using loops, functions, etc.) and build a mental model of how programs execute. Students should be able to look at a piece of code and reason through what it does. I've moved most of the traditional homework problems into class and lab time, so I can observe the students coding without using AI. The out-of-class projects are now bigger and more creative and include specific steps to teach students how to use AI collaboratively.
My upper-level students are now doing more ambitious and challenging projects. What we've seen is that AI moves the difficulty of programming away from remembering details of languages or frameworks, but rewards having a careful, structured development process:
- Thinking hard and chatting about the problem and the changes you need to implement before doing anything
- Keeping components encapsulated and thinking about interfaces
- Controlling the scope of your changes; current AIs work best at the function or class level
- Testing and validation
- Good manual debugging skills; you can't rely on AI to fix everything for you
- General system knowledge: networking, OS, data formats, databases
One of my key theories is that AI might lower the value of "computer science" as a standalone major, but will lead to a lot more coding across fields that currently don't use it. The intersection of "not a traditional engineer" and "can work with AI to solve problems with code" is going to be an emerging skill set that will change a lot of disciplines.
The same applies to software development. If you lack the fundamentals - how memory, I/O, networking, and databases work - you’re at risk of building something fragile that will break under real-world conditions. But for those who understand the moving parts, tools like Cursor supercharge efficiency, allowing them to focus on high-level problem-solving rather than boilerplate coding.
Technology evolves, but the need for deep knowledge remains. Those who invest in learning the craft will always have the advantage.
The second point is the one who control « what » produces value wins it all. In France we had amazing industries and some were deported offshore. Maybe some genius thought that only the brain mattered. Now countries have to rely on other countries to build or make products evolve and those countries can make their own products now and can charge us whatever they want (I’m simplifying) because we don’t know how to build things anymore, tools and craftsmanship is gone and not learned anymore. I feel the article pin points exactly the main idea behind AI : who will have control and who will be able to decide that the API price can be x100 ? If no one knows how to code, that is very dangerous and what happened in the industrial world shows it’s dangerous. Companies have an endgame of power and as a developer deciding to not learn or delegate my know how makes me at mercy in the end
When I look at fields like car manufacturing, which is mostly robotic, it seems that nowadays humans are force multipliers for machines rather than the other way around.
The day machines 100% replaced humans throughout the industries it will be an other problem because capitalism is built upon the premise that man is paid because he brings value. Once that’s over and you don’t have money the things you’ll consume less are the nice to have so whole countries might be in trouble. So either we all be able to bring other kinds of values, either the system will have to change not to collapse ?
And people with money/means. Children of software engineers may be able to learn the profession easier than others. The same goes for children with affluent parents that can pay for many years of education.
It seems a retreat back to a more medieval economy that excludes large parts of society.
SE is one of the few professions that one can _learn_ for free, by themselves.
It could take longer than going into a fancy university, and it won't open corporate doors as easily, but basically anyone with a computer and an Internet connection can learn SE.
I'm also at least somewhat cautious about making "passion" (or whatever) a prerequisite for working in general.
Factories were extremely dangerous because the machines had no safety measures. And they continued to be dangerous, for everybody skilled or not, until the introduction of workers rights, regulations and enforced safety measures and protocols.
> But for skilled craftsmen, these machines became force multipliers, dramatically increasing productivity and improving overall living standards.
Skilled craftsmen continued working as they traditionally did so much so that up to today it is possible to find craftsmen that use traditional tools.
> Those who invest in learning the craft will always have the advantage.
I agree with your conclusion, thou.
If I could honestly say I was any good at coding I'd be using this as an argument for unlimited free access to these platforms!
It's not that theyre not useful at all it's just that they look more like a step change dressed up as a revolution.
for folks who haven’t spent the last 15 years honing their finding out technical information with a search engine craft i can see why they might be useful.
but a search engine won’t sometimes mangle the output and provide an incorrect answer — it only provides a link to the raw data (webpage), rather than trying to create a paragraph of text about it.
i’d rather have access to the raw data guaranteed unmangled. i’m fast enough using that method.
> But for skilled craftsmen, these machines became force multipliers, dramatically increasing productivity and improving overall living standards.
I don't know if I agree with this line of thought (is there evidence this is true?). Once you have a metal press, you precisely no longer need a blacksmith skilled at swinging a hammer; in fact, all you need is someone that can be trained to read the manual and follow the instructions -- the exact opposite of a skilled tradesman.I do think it is like an industrialization of software engineering[0], but I don't think it favors the skilled craftsman; rather it shifts the sets of skills required and focuses more on reading code rather than writing.
[0] https://coderev.app/blog/ais-coming-industrialization-of-cod...
Until they eventually and inevitably got injured themselves. Factories were just dangerous (and still are in many many places around the world).
That's really the money shot, right there.
CEOs have this dream of firing all their "obnoxious" engineers, and "vibe-coding" their own products. That's not something new. People have been selling this dream to gullible C-suiters since I first started coding in Machine Code (1980s).
The future will belong to the engineers that can leverage AI. Engineering is a lot more involved than "HAL, write me a Facebook," which is the C-suite dream.
It's just that engineering will move another level up, as it has, for hundreds of years.
Give one of the key skills of a CEO's is pulling together the resources to make something happen, what happens to CEO's if you no longer need resources to make stuff happen?
ie if everybody can Vibe code, vibe market, vibe deploy - aren't you going to be swamped with competitors?
So the interesting thought experiment here is - in such an environment - what are the critical success factors?
Never underestimate how much importance a lot of people in middle and upper management place in the number of reports they have. It’s almost a <thing> measuring contest with some of them.
They’ll hire people. It might not be in engineering. But I bet they’ll find a reason to hire more engineering. It might even be justified. Software productivity has been increasing for decades. This has not led to a smaller number of software engineers. Only to more ambitious projects.
The future might be different, but I think the chances of that are small.
Both will fail, unfortunately, because it's easy to underestimate the complexities and intricacies of processes you do not understand in the first place. These various AI offerings are just making the situation worse, because they (as with most things in AI) give the appearance of being functional while falling apart under scrutiny -- the "confidently wrong" problem and all.
I will use ChatGPT (generally) to help me solve occasional issues. I'll come across some conundrum, and ask ChatGPT for a suggestion, which it confidently delivers.
The first suggestion is almost always wrong.
I'll say something like "That won't work," or "That answer is deprecated."
It will say "You're right!", followed by one that is more useful.
I suspect lots of folks run with the first answer.
Anyway, resistance is futile. You will be assimilated ... or retired. The reality of our job is that new generations are going to come in and they'll be using all the latest tools and gadgets. That's nothing new. And I'm part of a generation that in a decade or two will be mostly on the sidelines enjoying retirement. So, I'm well aware that progress isn't going to stop over my whining and grumbling. It annoys me when I catch myself doing that. I want to be better than that.
LLMs are part of the job now. They are tools. And tools are only as good as the people wielding them. So, skill up and learn. It's not like it's very hard. If you are getting poor results, you might be doing it wrong. Figure it out; part of the job. Your mileage may vary. But there are a lot of tools and chances are you just haven't found the right one yet. Also, if some tool/llm limitation is blocking getting good results for something, wait 3 months and try again. The pace of progress is ridiculous currently.
Or better yet: become part of the solution and make your own tools. This stuff is stupidly easy. It's prompt engineering with some trivial plumbing around them mostly. And you can generate the plumbing (what, you were going to do that manually?). That's why there are so many AI tools popping up right now. Most of them won't survive very long. But there are some good ideas lurking there.
So retire me, I guess. I'm probably younger than you, but I'm almost ready to retire because I'm cheap and I don't buy into expensive fads, so I'm almost ready to cash out of this nightmare
except then you realize the valuations of anthropic etc are propping up the whole economy and doing so on the promise that LLMs are going to deliver AGI!
LLMs are marginally useful in some contexts. But I have seen absolutely nothing -- nothing -- to justify the costs or the valuations of these companies. They are definitely not AGI and before you accuse me of moving the goalposts, the AI companies are the ones promising this.
It's a bubble. It's easy to get started. Good luck building a real product with just AI though. Good luck with that.
If you turn out to be right I will happily exit this God forsaken industry. Lord free me from silicon valley; I liked computers. Not this. Not these people.
I don't know if you're old enough, but remember when speech-to-text was the next big thing? DragonSpeak was released in 1997, everyone was losing their minds about dictating letters/documents in MS Word, and we were promised that THIS would be the key interface for computing evermore. And.. 27 years later, talking to the latest Siri, it makes just as many mistakes as it did back then. In messenger applications people are sending literal voice notes -- audio clips -- back and forth because dictation is so unreliable. And audio clips are possibly the worst interface for communication ever (no searching, etc).
Remember how blockchain was going to change the world? Web3? IoT? Etc etc.
I've been through enough of these cycles to understand that, while the AI gimmick is cool and all, we're probably at the local maximum. The reliability won't improve much from here (hallucinations etc), while the costs to run it will stay high. The final tombstone will be when the AI companies stop running at a loss and actually charge for the massive costs associated with running these models.
The way he uses AI is just completely different from how the technical folks I know use AI because he doesn't think about the code at all. The way he instructs the AI is different from how engineers prompt the AI.
I actually think that his success with AI is in particular because he doesn't know how to code but was previously managing projects and offshore teams (so lots of writing down exactly what he wants, but with no specifics on how it gets implemented).
Though you suggest he's non-technical... "writing down exactly what he wants" is just coding!
Agreed. The more exact and clear your instructions are, the closer to programming it is. Presumably the non-technical person has an application where they care about things like performance, scalability, compatibility and all those things coders sweat over.
> "writing down exactly what he wants" is just coding!
That would make good project managers and business analysts "coders" and they are not coders. It is only in this age with LLMs does that line between functional requirements and code become blurred.He doesn't know how to write code well; he knows how to write requirements and instructions well from managing offshore teams.
In practice, his instructions are detailed in the functional domain. Engineers bias too much in the technical domain.
> The flip side of 'we replaced our dev team with vibe coders look how fast we print shitware' is now shitware value falls close to 0, as anyone can make it.
Actually, he recognizes this and said something to the effect of "this is the end of SaaS" meaning that anyone can build this. That's his biggest fear going all in on this (he is still keeping his day job despite this project gaining traction so quickly)But I don't think this is true; I think there are still some technical barriers (at the moment) like one needs to know to instruct about databases, set up external services, etc. The AI is writing the connections to some third party APIs, but one needs to know what an API is and which one to use to instruct the agent.
A future may be coming where this is no longer the case (e.g. combining deep research and computer use that will automatically set up domains, connect external services, etc.), but it's not here yet.
> 'shitware'
Is it "shitware" if customers are paying because they are deriving value from it? He's got 30 customers, a few of which paid annual subscriptions because it provided value to their actual business. Is it "shitware" because it's not handcrafted? Does it matter if it's solving some real problem and customers want to pay for it?Most of us here will assume functional refers to functional programming which is very much in the technical domain.
That’s what I’m trying to fix. Instead of just showing lines, my AI coach gives voice-guided feedback, visual highlights, and practical insights. More like working with a real coach than sifting through raw engine output.
The goal is to make analysis as engaging as playing—and shift the mindset from “just tell me the best move” to “help me think better.”
Demo if curious: https://www.loom.com/share/9e1578f1348841c1992c5d902e371312?...
Some other thoughts:
Isn't the first example just wrong? The AI says "after dxe3 Rxd8 Rxd8, white wins the exchange, gaining a Rook for a Bishop" but unless I am mistaken actually it's a Queen for a Rook and Bishop?
Also, it seems the visual highlight AI referenced is not working? Talks about Rad1 while the pawn is still highlighted.
Yes you are right. It is still in demo phase, it still does make mistakes. I am refining the model and inputs, so definitely a work in progress :)
Regarding the circle highlighting, the agent is deciding / reasoning which square to highlight. So it is non-determinsitic, so it is sometimes right / wrong.
It will definitely get better as the models improve
I learned BASIC as a small kid, using a clone of ZX Spectrum. I was aware that the memory was limited and that I can poke and peek a memory address to set or retrieve the info.
I learned Pascal and then rapidly went to C and C++. I learned about pointers and how the memory is layed out and what are system calls.
I learned about CPUs and I learned some X86 assembly.
Ar the university I learned about digital circuits and how to assemble one using logical gates. Of course I learned much more, data structures, algorithms, operating systems, distributed systems, parallel and concurrent programming, formal languages and automata theory, cryptography, web, lots of stuff.
I learned other lots of stuff by myself.
I've built desktop apps, websites, software for microcontrollers, games, web applications and now I am working on microservices based apps running in cloud.
I was a junior developer, graduated somehow to senior. I worked as a software architect and now I am a team leader.
These days I work almost exclusively with C#, but I am also interested in other languages if I have some spare time to evaluate them.
What I want to say is this: is not enough to learn the highest level of technology of today. Today that is AI, few years ago it was JS frameworks, more years ago it was Java, .NET, Python.
To be good at what you do you always have to learn all layers under the current top layer. Learn from bottom up. You don't have to be good at every technical detail, but you have to understand at least how the things work.
The downside is that at the current speed of improvement, AI might very well already be at escape velocity, where it improves faster than you, and you'll never be able to catch up and contribute anything useful. For a lot of small hobby projects, that's already the case.
I don't think there are any easy answers here. Nothing wrong with learning to code because it's fun. But as a career choice, it might not have a lot of future, but then, neither might most other white-collar jobs. Weird times are ahead of us.
Yep, AI can teach beginners the fundamentals with endless patience and examples to suit everyone's style and goals. Walking you through concepts and giving you simulated encouragement as you progress. Scary stuff, but that's how it is.
But... as we know, it doesn't always provide the best solution. Or it gets muddled. When you point out its mistakes, it apologises, recognises the mistake and explains why its a mistake. It's reasoning is incredible, but it still makes mistakes. This could be very risky for production code.
Related anecdote... I needed Photoshop help recently for horizontally offsetting a vignette effect. Surprisingly not easy. The built-in vignette filter can't be applied to a new blank layer, and is always centred on the image. AI suggested making it manually but I didn't want to do that, as I like the built-in vignette better. AI's next solution involved several complicated steps using channel isolation and weird selection masking etc. No thanks. Then my own brain sparked a better idea... simply increase the canvas size temporarily, apply the vignette, then crop back to the original size. Job done. I told AI about my solution and it was gushing with praise about how brilliant my solution was compared to its own. Moral: never stop trusting your own brain.
What does your day look like?
In a way, I'm feeling lucky that my company currently explicitly bans the use of AI tools on our code bases (for good reasons). This forces me to write all my own code and understand what it's doing. The only thing I use AI tools for is to explain some new concepts or paradigms in ways I can understand.
What's also great is that I can throw some code from Stack or Github in there and get it explained. I'm glad these tools exist, since they make learning much easier, but they're also a trap if you depend on them in stead of your own knowledge.
Devin won't replace you if you can create valuable products through "vibe coding" or whatever else you call it.
when coding itself becomes a commodity, value creation becomes more concentrated up the stack: what you choose to build, how well you market / sell it, how you connect with your customers, product design. Devin won't outcompete humans at these skills anytime soon.
instead of sticking to a skill that's quickly becoming a commodity (as the author recommends), moving up the stack is the way to go (outside of very niche, specialized engineering domains - e.g: training base models).
It doesn't matter if you communicate with a compiler or an LLM - you still need to express your thoughts and ideas with no ambiguity for it to produce the wanted behavior. What makes "vibe coding" with an LLM both easier and more challenging at the same time is that is will guess what you mean and give you results that "kind of " work even when you express yourself unclearly. For someone who can code, the "kind of work" results can be used as a starting point to evolve into something useful. For someone who can't code, it's an inevitable dead end.
I find that those who struggle with programming have the exact same type of struggles when trying to do it with LLMs - no structured plan on how to approach a problem and difficulties to understand the context in which they are working.
Since AGI does not seem around the corner, coders will be required as ever.
But I would not ignore AI to learn to code. Its great for asking endles stupid beginner questions. And yeah, some answers will be wrong, but my human tutors also taught me some very wrong concepts. But some coding without any help, is likely beneficial for learning.
Generally curious if it is gaining traction and somehow I haven't bumped into others who use it.
If its novel code, it's not in its training set.
What LLMs don't suck as much is writing semi readable docs and commit messages.
On the one side, people should write good MR titles for this reason. On the other, sometimes you just don't know, and people's brains are already overflowing with all of the tasks they need to do in order to do their job properly.
But also, finally, it's just a suggestion; we don't have AIs writing our changelog yet, except ironically to make them worse / cringe.
Could it have written some really, really bad and unmaintainable code and it was just justifying things? Very possible. I asked to strip some 60% of the code after I thought I understood, and it was still working. The original code was too abstract for me and hard to follow. Did I learn in this whole process? I think yes. Would I have learned more if I had worked without AI? I think yes.
In life, some people play games and figure out the best builds after a lot of sweat and tears while others prefer googling the meta and only doing those builds, it seems. Both approach seems fine.
In this context, AI is just one of many resources you can use - books, websites, SO, etc - to improve your coding. The big differentiator is that you can have a realtime conversation with AI, whereas when talking to other people - be it on SO, IRC, Github, forums etc - you may or may not get a response and it may or may not be helpful. AI tools are a bit more predictable that way.
I'm of the opinion that AI will not replace developers but will be another tool in their arsenal. And part of the skillset of (some) developers will be working with an AI tool effectively. I don't have that yet, but then, I don't know much about Docker / K8S, cloud providers, low level memory management, pure functional coding, Rust, graphics programming etc etc either.
However, this is not about researching for solutions, it is about offloading your coding capacity to the machine. These are two different things and I think the author is addressing the latter.
Because if a lot, I predict that as more published code is generated, we will find ourselves locked in a certain point in history in terms of versions of dependencies.
Newcomers may be tempted to maintain the uttermost ignorance of what they are creating, as I imagine "vibe coding" implies, where the height of problem-solving is creating quicker pipes between errors and re-submission to AI to fix those errors.
I'm really glad I learned programming a long time ago, before AI. I use AI more like a tool for getting information (much like browsing manuals, forums, Stack Overflow), but it is, of course, magnitudes better. I still do the conceptual outlining and problem solving, and that is what programming is to me. If there's something I don't understand from the AI, I always query to know how it works. It's even easier now to understand how things work thanks to AI.
But to be honest, I think the main thing is that they just absolutely suck the joy and fun out of an activity. I like writing, I like coding, these are things that I do at least in part because I get some kind of direct enjoyment out of doing them. Using a chatbot simply is not interesting or fun to me. It's like being a spectator and thinking that means you "participated" in the game you watched.
If you code or whatever just as a means to make ends meet sure, it makes total sense that you'll want to use these tools, but I will absolutely never understand the people that claim to like a craft and reach for LLMs to do it—to me these people have just entirely missed the point of what it means to have an activity you enjoy. It's not about the output, it's all about the process and self-enrichment that happens along the way.
But maybe that’s not your intent.
You can’t vanish math and computers globally like that.
(Noting this is all sarcasm in case I didn't lay it on thick enough)
This shit is magical.
I used to know java sdk by memory whe I was young. Nowdays theres too many languages I have to remember. Easier just to ask copilot.