I started my degree just 1-2 months ago, which means I will be graduating in 2030. Given how rapidly things are moving, will manual coding (or even manual code review) still be a required skill by then?
I’ve been reading several articles discussing how AI is already outperforming devs at writing code, such as this one by Sylwia Laskowska:
AI Is Already Better at Coding Than Most Software Developers
I largely agree. AI is already extremely capable, and it will only become far more advanced over the next four years.
Lately, I’ve been trying to learn ESP-IDF to program microcontrollers, but C has a brutal learning curve. I spend a significant amount of time just trying to understand the documentation and the official examples, both of which feel drastically more complicated than the documentation I was used to in web development (like Next.js and React).
While I can use AI to generate code and finish projects much faster, my limited C knowledge makes it very difficult for me to properly review or verify the generated output. I am actively trying to fill this knowledge gap, but the process is extremely time-consuming. This leaves me worried that I am spending massive effort mastering a skill that will be useless by the time I enter the workforce.
Why spend years struggling through syntax if AI will always write code better and faster than any human can?
Some people say that it's us who should step in when AI makes a mistake. But what if we make more mistakes than AI?
Looking around developer discussions, the sentiment seems consistent: devs are increasingly shifting away from manual coding toward higher-level tasks. I’ve even seen developers claim they don't even look at AI-generated code anymore, making it feel like even code review itself is ceasing to exist.
I need an updated, realistic perspective on this problem:
- Should I stop spending my time deeply learning C programming and syntax?
- If I should stop, what should I prioritize instead?
Top comments (26)
Here is what I learn overtime. Start building.
You can learn any language you want, but at the end of the day, you are learning the structure of the hammer, not how to use it.
Build projects in various language and choose the ones you like and stick to it. If my ideal language for full stack development is Next.js, learn next.js.
Ignore the market for now since it's VERY volatile and things can change. Maybe one day Python is the most in demand then it's JavaScript the next.
Overall, specialize specialize specialize. Regardless of demand, the market always look for a person who specialize in something over the person that uses the language since it's "demanding".
I do not know how to tell you how useful that advice was to me.
I am the kind of person who jumps between languages, frameworks, and even entire fields of software development just because of the market. I started by making games (Unity), then desktop apps, then Android apps, then games again (Godot), then web development (Next.js), and now I am into ESP-IDF.
Just like you said. I am going to stick with this from now on. Like @unitbuilds said in this post, the market always demands a specialist, not a "jack-of-all-trades".
As a starting point, I built this after a couple of hours of writing this post: effessdev.github.io/esp-idf
I am going to document everything I learn on this website, so that I can learn and I can hopefully teach others in the future too.
Imo, learning C is useless. It's so well documented and because it's foundational language, AI is exceptionally good at it. So I honestly wouldnt bother. An example, my SASOS, over 500m LOC of low-level C, I didnt write any of it, because I orchestrated my AI to get it working, I just steered it. Knowing C wouldnt have made it any better, or made it happen any sooner. It's a pointless skill today. What I would rather focus on, is team management. MoA architecture is the next phase of AI development. Claude, etc. already try to do it, by having the agent spawn sub-agents with specific tasks, but when you look into their system instructions, they essentially tell them 'you are a network engineering expert' and then the task. Today, IMO the most valuable skill, is to be able to look at a codebase and figure out how many domain experts are necessary to maintain the codebase. Automation is where development is going, because a team of AI can patch in 30 min, what takes a team of humans 3 hours. It's a matter of a year, then AI will officially out-code us all and out reason us all on fixing bugs. So best skill to have, is how to appropriately use AI. It's a much smaller, easier to learn domain, but it only looks simple on the surface, it's just just prompting, or setting up skill files, it's orchestration, knowing who works first and who works together, how are conflicts handled and where to expand on the system. Those are the skills that'll survive the next 3 years, practically nothing else.
I know you will say exactly that 😂. But I wonder what the perspective of other people is. I am more inclined to your opinion by the way.
Also, have you posted anything related to what your AI workflow looks like? I really want to see how you work. I'm sure others will like it too.
I'll make 1 probably over the weekend, that way I can also teach people how to use velocity ide. I added a cool feature, it can now offload work to a headless instance (i.e. you can run the IDE on your laptop and have it use your pc/a cloud server to do the heavy lifting). Which I dont think any other agentic IDE can do currently? Though I could be wrong on that
Yes! I have an old PC sitting there doing nothing. Waiting for the tutorial!
That was the exact reasoning behind it! When I did the compiles for pgrust, my laptop struggled and ran out of ram... My PC was too full to have the space it'd need to do it via WSL (SSDs are too damn expensive)... Then I remembered, I quit my job, so I have my workstation pc (mine, not company's) sitting there fully cleaned... So I installed Ubuntu server on it and prepped it, so I can use it as a buildbox. Worked fine via SSH, then I decided why not just add it as a function to the IDE, now it can natively distribute work across 'nodes'. Next phase is to allow it to use a cloud VM (tiny 1) as the core instance, then scale out (like kubernetes), for the agent instances, the sitemap system keeps them all comprehensive, so they arent bumping heads and the instances are anyway sandboxed, so it's just a natural evolution of it. Dunno if you know Google's demo where they had like 100+ agents build an entire OS in 12 hours? That's the end-game, except it'll cost a fraction of what their demo cost and able to run either in cloud, or fully local.
Yes, I watched than Google's demo right when it came out on YouTube! I also watched a couple of reaction videos (like Fireship did). So your IDE is cheaper than Antigravity? Let me try it right now.
My IDE is open ended, you can throw whatever model you want at it. I got myself a qwencloud token plan, which (unlike everyone else) gives you an api key you can use! Which is what I used during development to test it out
Then, I'll use it with DeepSeek. Got to top up my account.
Oh! This really needs a tutorial. 😬 I wasn't expecting this many features.
Yeah... It's not just a basic IDE 😅 I definitely need to get a user-guide prepped for it to explain all the functions and features...
Is it something that you use daily? Or is it still unfinished to be useable?
I use it regularly, for basic tasks, I still revert to qoder, but I do use it daily
That's impressive! If you make a tutorial or documentation for it, others can use it too!
Yes, absolutely! Learn a low level programming language like C deeply!
In my CS undergrad, I designed my own computer, a very basic computer, but at the hardware level. Then wrote instruction set for it, and operating system. That was the best learning experience I ever had.
I know exactly how computer works.
I treasure learning assembly language, and of course, C.
You need to learn a low level programming language like C very well for exactly 2 reasons:
Most people will either not deeply learn such fundamental programming or forget by 2030. So you’ll be one of the few. Hence, you’ll stand out. That’s important.
No matter how advanced AI becomes, communicating with AI in natural language will always be flawed. Natural human languages are ambiguous. A language like C is not. So for human security and 100% flawless deterministic programming needs, there will always be demand for those who know fundamental low level programming languages like C.
Don’t listen to others. Make up your own mind. However, by not learning fundamentals, you gain no advantage over others. Besides, today's AI tools and AI models will soon become obsolete. So by learning these, others will gain no advantage over you.
Your only way to stand out is to learn fundamentals deeply 🥰
I cannot disagree with it honestly. Maybe I should target a middle ground: Don't dismiss C & C++ outright, but learn just enough to know what is happening under the hood and review Ai-generated code. How does that sound?
That sounds alright for now, but eventually deep knowledge is necessary in at least one field. No one is going to pay you just because you somewhat know something.
You don't have to learn C, it can be Rust, but learning a low level programming language has tremendous benefits.
Of course, someone who'll just build his/her carrier around developing web apps, don't really need to learn C. However, if you have deep understanding of how computers work, how networking works, how the internet works - these will always benefit you. Keep you multiple steps ahead of others.
This is the only time you'll ever get in your life to dive deep into fundamentals. Once you enter career, your work will dictate what you'll learn to survive. Fundamentals will have to take a back seat. Growth will mostly be one dimensional.
Besides, you said you'll graduate in 2030. Who knows what any field will look like by then!
That's why, having deep understanding of the fundamentals and then being very good at something others are willing to pay for (e.g. full stack web development with React/Next) - is a much better strategy.
About reviewing
Reviewing and programming are completely two different things.
If you build a sizable software from scratch, you'll have to think about scope, architecture, software engineering, security, future development, testing, debugging techniques, maintenance etc. etc. i.e. the entire life-cycle of the software.
Merely reviewing will teach you none of that.
Also, most people don't get this, but from a purely programming point of view (other than some things I've mentioned above ... architecture et al.), actual reviewing (like really executing each line of code someone else have written, in your head and trying to understand what they intended to achieve and if they achieved that and only that without side effects) is order of magnitude more difficult than writing the code yourself.
So, what most people mean when they claim "review", is actually skim through.
If you review, I mean really really review - there's a lot that you'll learn from that process. But skimming through code generated by LLMs will get you nowhere. You can as well simply vibe code and leave the review process to another one or more LLMs.
Besides, even best models like Fable write horrible low quality code at times, you'll not learn much by reviewing those. You'll learn a lot more by trying to understand high quality open source human written software.
Learning C is less about preserving a syntax skill and more about gaining a cost model for the machine your agent is targeting. For ESP-IDF, I’d focus on memory lifetime, stack versus heap, interrupts, concurrency, and reading compiler/toolchain output; let the agent draft the boilerplate, but require it to explain the invariants and test on hardware. That combination keeps the review skill useful even as code generation improves.
Thanks a lot! 🙂 Can you share where you learned all of that? I once AI-generated an embedded C course on my website, aiming to learn exactly that. But it wasn't that good.
The sentence in your post that answers the question is the one where you say you can't verify what the AI generates. On a microcontroller that matters more than on the web, because bad output usually compiles fine and then shows up as a watchdog reset or a panic backtrace an hour into running. Reading that backtrace and working out which buffer or task stack it points at is the part nobody can do for you without C. So I'd aim for "can debug it" rather than "can write it from scratch", which is a much smaller target than mastering the language.
Yes that's correct! "Can debug" is much easier than being able to write from scratch. But what I was afraid about is a situation where the AI can actually read the backtrace and work out what it points at, better than we can. If AI can do the task better than us, and in microcontrollers bad output is very bad, then there is no reason to let AI do it than we do it and introduce uncesessary problems, right? Also, what if AI can debug the code better than us? I am more afraid of a situation like that. While current models are unable to do it, they are improving really fast. While we can't predict what happens in 2030, I am really worried about it.
Wishing you the very best of luck on your journey ahead. May it brings you immense happiness and success!
Thanks so much!! 🙂🙂
Welcome! :D