Top
Best
New

Posted by JohnDSDev 2 days ago

Ask HN: How much coding should beginners learn in the AI era?

As someone who wants to work in tech in the future, say 5-10 years from now, to what extent do you think coding will be a valuable skill? How much should I learn?
35 points | 45 comments
sowbug 2 days ago|
On effective engineering teams, there's always at least one person who is fluent one layer below where the rest of the team operates. That person tends to be extraordinarily useful in tricky situations. Examples: someone who can read assembly on a team writing C; someone who spends a lot of time in the browser debugger on a frontend team; or someone who is comfortable stepping deep into third-party library code with a debugger.

If any of these examples are familiar, you might chuckle that of course everyone on the team has these skills. But there's a big difference between someone who can barely parse the symbols, and someone who can actually interpret them and extract meaning.

Five to ten years from now, I have no idea whether software engineers still be coding. But I'm sure there will still be code. Do you want to be the person on your team who is fluent in it, or one of the rest who rely on that person?

n4r9 2 days ago|
Well put. The step to AI is a little like the step to using an IDE. It simplifies and automate a various bottlenecks. But when the IDE starts randomly failing, you need to call on that guy that knows how to work without the IDE.
vitally3643 2 days ago||
It is exactly analagous to ask how much math you should learn given literally everyone has a scientific calculator in their pocket at all times.

The answer is: to be a mathematician or an engineer, you still need to learn how to do the math yourself. A calculator makes the math easier and faster than doing integrals longhand, but owning a calculator does not mean you know how to apply an integral to a real problem.

You still must learn to write code yourself. You need to know the fundamentals of computer science, programming, algorithms. The AI is good, but it still requires human engineering effort to get good results in exactly the same way that a scientific calculator requires mathematic skill to be input in order to produce useful results.

Facing a tricky software engineering problem armed with AI and no fundamental knowledge puts you in exactly the same situation as facing a tricky vector problem armed with a calculator and no fundamental knowledge. You can punch keys and get numbers out. Maybe you'll even land on the right answer, but it will take you ten times longer, produce worse results, and you won't even know if your answer is right. You won't learn anything either.

Working a tricky problem is how you learn which solutions apply and how to best use your skills. AI is the same way. If you don't have the fundamental skills, you won't learn, you won't get good results, and you'll waste a ton of time producing garbage for no benefit.

AI is a skill multiplier, just like a calculator. It really, truly is a garbage in, garbage out situation. If you don't put in skill and effort, you don't get good results. If you lack the fundamental skill and engineering mindset you will never get good results, you'll never learn how to get better, and you likely won't even have the capacity to judge your work as the garbage it is.

The only exception is the case that AI truly reaches super-human levels of ability in the near future. That case isn't worth worrying about because the problems it will cause go far, far beyond "should I learn to code".

So yes, you should learn the fundamentals. AI makes good programmers better, and conversely makes bad programmers worse.

alfanick 2 days ago||
All of it. AI is magnificent in hands of a skilled coder. And absolutely crap in hands of someone who has no clue how computers work.
dieselgate 2 days ago||
I agree with "all of it" and am, respectfully, more than a bit annoyed when this question is asked because it's common. We still learn math while having calculators and there are myriad other examples illustrating the same basic point.
icedchai 2 days ago||
Yep. There's a lot of room for error when you start by asking the wrong thing, then don't understand the output. I've seen prompts that were literally "fix it", then the LLM goes and changes assert status == 200 to 500. Tests pass now! Problem solved!
al_borland 2 days ago||
Learning how to code will teach you how to break down problems and think in the way you’ll need to think to use and review code form AI. It will also teach you the language needed… not just the syntax of a programming language, but what is a function, variable, loop, conditional, etc. This will help you better talk to the AI and understand it. Trying to describe a concept you don’t really understand, when there is a simple word that can be used, will save a lot of trouble and headaches.

I’d learn as much as you can without the help or use of AI, to build a solid foundation. If AI falls on its face, you’ll be ahead of all those who didn’t do that. If AI ends up being great, you’ll be able to better utilize it if you speak the same language.

As far as I see it, there is only upside to learning. Even if you’re not going into the industry, learning to code helps the thinking process in a way I think almost anyone can benefit from.

jonfw 2 days ago||
Just like math is learned by solving equations, software engineering is learned by writing code

Due to technological advances, solving equations stopped being a marketable skill, but understanding mathematics is as important as ever.

Software engineering will follow a similar route as math- the marketable skill will no longer be to write code, but writing code will be necessary to understand the big picture and build the marketable skills.

lemonademan 2 days ago||
Most people in big tech companies relying on AI to code already know how to code. AI is an addition to their skills, and it makes their work even faster. People who don't understand coding to some degree can't use AI to code because they lack basic skills like deploying the code AI writes. I understand you're worried that coding will no longer be a valuable skill in the future, and you are right to be worried because of all the layoffs and other AI created crisis, but you should still learn to code because tech will always need coders in the future. Plus, humans who can code are the ones who check the code AI writes most of the time.
w10-1 2 days ago||
"coding" is the skill that realizes other skills: it's a delivery medium.

The skill to learn is to be able to see and address the problems that will need solving in the medium term.

Even before AI, software changes a lot (desktop, enterprise, consumer web, IoT, devices, robotics...). So for the "seeing" part, it's like planning to cross the continent not knowing what transport or maps will be available: you can mainly guess they'll come out of the terrain and available materials and expertise.

For the "address" part, it's helpful to have seen similar problems, but probably more helpful to have seen a variety of problems and developed some high-level approaches, typically in academic study. Depending on your domain, that might involve math, or engineering, or biology, or.... All coding is encoding, which is fitting some domain to data structures and algorithms.

For the "delivery" part, it's especially important that your code restrict itself to what's needed by the actual end use. That might not be cool or interesting, and it often requires getting more direct appreciation of the end-use than the often-weak problem statement. It's a trap to just enjoy the beauty of it.

Someone like Noam Shazeer demonstrates the value of good coding: lots of people in his environment had lots of good ideas, but he made it happen (and it looks like he enjoyed it).

thiago_fm 2 days ago||
Of course, for example, a Civil Engineer learns integrals, so it can learn advanced engineering topics.

It may not often use them often as it uses software, or it may not remember all integrals rule tables, but it understands the concept, it's usefulness, and in case he needs it, he can figure out a way to work it out.

This is the same for Software Engineering and code. You don't need to have written the HTTP protocol library in order to use it.

I haven't written a single line of code since more than an year, but I've made the AI write multiple thousands of lines of code since then.

It's just a calculator. You still need to know how to use the calculator and for what purpose do you use it.

What changed is that you no longer will need to learn all ins and outs of coding.

lubujackson 2 days ago||
Instead of saying "all of it", let me differentiate what is important to learn in your bones and what is more or less solved (or at least secondary).

You need to understand abstraction layers in the code and how to mentally navigate between them. Every change I make to code goes through a battery of concerns at different levels and perspectives: does this cause any security concerns? Are there unintended downstream effects? What is using this code I changed? How does it affect users? Are there performance concerns? Are there edge cases I am not considering? Can this be done in a cleaner way? Did I make something hard (encode logic/values) that should be soft (config setting, database value)? Are errors being caught? How are errors tracked and observed?

It is most necessary to know the right questions - an LLM can help solve them. Be excessive and wasteful with questions until you internalize when they are helpful. You will be surprised at the things you didn't consider even with small changes to an existing codebase.

You need to be able to read code and reason about it. If I was learning to code now I would spend most of my effort on reading code and conversing with an LLM to explain logic I don't understand, generate Mermaid graphs of code architecture, etc. You can rapidly level up by using LLM to help fill gaps in understanding.

Before all that, you need to know the basics: loops, data structures, variables. You need to understand tech stacks, how and why different layers are distinct (frontend, backend, database, logging, infra etc), how the communicate and how data passes through them.

In other words, architectural understanding and reducing "unknown unknowns" is the priority. If you know you don't know something, it is increasingly easy to address it directly, even if it takes a few more iterations.

dansmyers 2 days ago|
I'm a CS professor at a primarily undergraduate college. I teach our intro programming course most years and also teach upper-level classes in AI and software engineering.

I've used agentic tools with no restrictions in my upper-level classes and also in a new programming course for non-CS students. I've seen several examples of students using an agent to crank out version .01 of a program, but then have no idea what to do next, because they don't understand what changes are even possible or how to guide the model to add new features.

AI coding deemphasizes knowing specific language features or frameworks, but requires having a careful, structured development process. Memorizing the syntax of library functions is less important, but you need to know the language of software design and how the features of your program are implemented, even if you're no longer writing individual lines of code.

Breaking a design into independent units is important for revision and testing. You want to keep AI generations small and focused, which requires knowing where and how features are implemented.

We're also moving past the tokenmaxxing trend and swinging back to cost-conscious AI use. Classical CS knowledge will help you choose algorithms and systems that can minimize token consumption.

My advice would be to take a standard CS 101 course that teaches the fundamentals of structured programming in Python or another standard language. Focus on understanding how to write loops and functions and use basic data structures. Use AI tactically to help with debugging and understanding code, but do most of your writing by hand - don't generate entire programs yet. Ideally, this will happen in a class with an expert who can observe and guide you. I have some resources from my class that may be useful:

https://github.com/dansmyers/IntroToCS

After that point, you can start introducing some AI coding and gradually build up the size and complexity of your programs. Learn about software design and object-oriented programming, security, and fundamental systems. We are moving most of this content earlier in the curriculum, so students see it in the first two years, rather than waiting until elective classes. The details of data structures and algorithms can probably come later, once you have more context for where they're useful.

Last point: I teach the specs-driven development process in all of my classes. It's the best way to approach more complex projects. Prioritize creating ambitious projects that do interesting things.

JohnDSDev 2 days ago|
Thanks for the resources!
More comments...