One of may favorite things to do was to spend some time tinkering around to learn a new programming language. I collected quite a few and it was fun to learn new paradigms and how to organize programs. But now since AI… idk I just can’t do it, it seems just completely useless in the age of AI. Like getting better at the technical aspects of programming just doesn’t feel important anymore. I don’t think I’ll ever be able to forgive LLMs for that. It really took away something I enjoyed.
Now that you've made the Faustian bargain at this low low introductory price, how long until they start ratcheting up the price? How long will you be able to bear it?
You're still allowed to do things the old fashioned way you know. Given the rapid skill degradation that results from LLM-driven coding usage, I'd recommend it if you want to retain any skill at all.
One thing AI did take away; I love reading source code written by other people. Node modules, plugins, LUA, python scripts... whatever. I loved seeing how people organized their logic, named their variables, the flavor of their comments... all of it. I learned so much diving through the source code of all the major tools.
Now it's all AI generated. You don't know if you're reading a novel human's take on a pattern or an LLM's attempt to reproduce. Worse; even if the AI presented something novel it produces at such a rate it's a needle in a haystack.
I feel cautious of any claim people make about their use of AI. I'm not even anti-AI; I use it. But at minimum wish there were a mechanism to know where the lines were.
You can open linux source tree from 5 years ago and read that for a couple years.
The feeling of helplessness doesn’t come from the fact that you can’t get out of the AI hype but the fact that advertisers have captured the attention of large portions of the population.
They are talking about the enjoyement. AI did disolve a lot of the meaning and magic behind pure code exercises.
What felt like a creative endeavor now feels and is even more treated by society and other software engineers as grossly mechanical.
And to me too that hurts. I think a lot of people whose identity or passion was tied to this feel like that.
It is very much a "what is painting purpose now that photography exists ?" or "what is craft in an era of industrial mass production" moment for some of us. There are answers but finding them require exploration and being willing to change what we are
So much life enjoyment is tied to feeling competent and respected. Seeing a new, more talented challenger on the horizon is bound to be discouraging to some extent. It's like going from high school to college all over again: you used to be the top of your class, now you're surrounded by people just as competent as you.
I just spent the past three hours debugging a long latent bug from vibe coding a thing. The only way I found it was running a debugger through the C++ code and tracing everything -- Claude was utterly useless until I basically pointed out the problem to it. I don't think understanding technical aspects of programming is a waste of time at all, it's still very necessary. The annoying thing too is that, whatever time I saved having the LLM write it, I pretty much just lost having to debug it. (For what it's worth: the bug it introduced is one I never would have introduced on my own, because it fundamentally misunderstood a key component of the design)
I'm curious how many years you were into your career before LLMs took off. Reading and writing code is just another form of literacy, so I don't get this perspective at all.
I've been a developer for just over a decade and my usage of LLMs is minimal. It takes a similar amount of time to review as it does to just write it myself. How much time do you have for your tasks? I rarely have deadlines quicker than a few days. It wouldn't even matter if I got it done faster since the bottleneck is decisions in the next meeting or waiting to hear back from another team. Dev time was always trivial and irrelevant. Even back in the 2010s, my need for stackoverflow and google had become minimal.
What else are you doing with your time? How much discussion does your team even have if the nuances of the code aren't important to you?
I used to have this feeling, and I just got over this hurdle. I now continue coding by hand with zero AI usage. It's amazing how much better you feel when you get to use your brain. What really helped me was many perspective shifts
perspective shift 1: the people that never cared about programming/engineer finally left of the room. the people chasing the trends, trying to grift, or just after money are finally gone. we can finally be in a room and just talk about good engineering. the people we as engineers never wanted to hear from are off attempting to force the world to use a tool that everyone 40 and under passionately rejects (this is spicy for HN terms, but the avg joe hates AI. people aren't stupid - they know they only stand to lose from it in the longer term).
perspective shift 2: I just read Zen, and the Art of Motorcycle Maintenance. It taught me a lot. I came away from that book understanding what "quality" means at a very philosophical level, and it gave me a lot of confidence for some fuzzy thoughts I already felt. it's too abstract to explain here, but it does a good job of explaining that there is perceived and strong difference between caring something into existence, verses just generating something into existence. this book breaks down how quality is not some artifact that lives in what you're making, and or is some feeling you get when you look at something that is aesthetically pleasing - quality is an event that occurs before you mind has differentiated yourself from the thing subject/object you're admiring - and in that moment, quality arises from the care you give it. there must exists energy and care towards what you're doing for quality to arise. generating anything with AI will never bring that fruition.
many people try to counter this stance by saying that they iterate with AI forever, and assume that iteration is a the same as the caring event described in ZATAOMM - but the difference is that grading output is not the same as creating/authorship. it's must a read and deep study I think if you're into programming and this mental state
perspective shift 3: This talk from Brandon Sanderson called We are the Art [1]. I personally do a lot of creative coding - like games and such. this talk does a great job of breaking down how art and creation ultimately lives in the person. I won't summarize here, just a must a watch
perspective shift 4: I got off all the mainstream social media site bc the PR machine for AI is relentless. of course you're going to feel like crap when every site says, future generations will be homeless, K shaped economy, permanent underclass, etc. you gotta log off these sites to create some distance with the beast - it's not you, the world really is just messed up rn. Also I barely browse HN anymore. this place is the public square for VCs and people who lost hte plot with technology - I just happened to be here, and wanted to help my fellow programmer grinding through the same mental trenches I was in
perspective shift 5: go find some programming communities on discord. I'm in a discord with like 5000 active members that really care about coding, and doing so without AI. this is a very active discord. once you realize there is a strong community still building like this, it really showed me we're not low in numbers, and there still a large group of people that will celebrate engineering efforts done by hand. and there are still people that need to understand these machines at a very deep level - you're efforts aren't wasted
perspective shift 6: look at AI on the job as a way to get your work done faster to get home to do real programming. work code can be trash, home is where the real work is done. The analogy I’ve been telling myself is that it’s like going into a gold mine - no one wants to be in the mine, but i do like leaving with gold. i gotta pay the bills, but i don’t need to love it.
perspective shift 7: The overall environment we live is just depressing and is reminiscent to Fahrenheit 451. I came away feeling closer to the author and protagonist than my first read. specifically the kind of hubris/ignorance found in all the side characters of F451 mimics what it feels like to talk with ai optimists. also, the way F451 is a world filled with people that are actively disengaged and comfortable being passively entertained feels almost too real. this book draws a lot of parallels with modern times, and it's a nice book to remind you that other people have felt this way in times of large technological change - and you're not crazy to feel depressed.
Go start working on that side project you use to be really passionate about. me and all the other serious engineers are excited to see it
No 4: getting off social media and HN is a good thing in general and in particular. There really is a distortion field around these sites that can make you feel sick.
Hey I just wanted to say thanks for writing this. I’m going to check out the things you mentioned, and it just feels nice to know there are like minded people out there. You writing this has helped me feel better about the state of things, and I appreciate that.
From my experience, just to say the thing that many such articles never mentioned, because the author has the innate ability anyway:
Seek mental stability, or whatever mental state that can push you to programming for 10 years without completely burning you out. If you can’t even do some programming after a relatively easy work day, you are burnt out.
It’s okay to recognise when you’ve had enough. If your workday involves programming, ours pretty normal (for me at least) to not want to do more programming at home. You gotta let yourself miss it a bit if you want to want it.
When I decided to really learn how to program, after dabbling in very basic C++ from books and using BASIC this article and Eric S. Raymond’s ‘How to Become a Hacker’ [1] (CATB is struggling to load at all these days it seems) were two of the first articles I found. While HtBaH was probably more influential on me immediately, Teach Yourself was a great appetizer for the concept of pacing myself in my learning and in the choices I made.
With all the “AI” has made coding/learning to code a dead end and unnecessary crud being peddled currently I don’t know if people who want to actually learn to program are going to find resources that can be as motivating as this and other articles from `the before times`. It leaves me slightly bummed out, but in my less pessimistic moments I think motivated learners are going to see through the hype and find these types of resource anyway.
On a side note, the Norvig’s articles about implementing a Scheme in Python were my first foray into designing and implementing programming languages, compilers, and interpreters which really shaped my interest all the way through to today.
FWIW, Peter Norvig also gave an updated take on what programming will look like with LLMs around 2 years ago. It did give me some hope back then, but with the development of Fables and Kimis and Sols I think it's truly anyone's guess where the art of programming will go.
I started before the guide was published. I am 40 years in on challenging myself and learning and improving and there remains so much more I have the opportunity to master.
I myself am spending a lot of time leveling up, I recently realized there are so many things about programming and CS that I don't know about or only have a superficial knowledge. There's so much to learn but it's very rewarding.
In ten years. The kids may not believe that, but you could give realistic timeframes without getting hanged for it. In the age of LLMs, if you weren't done yesterday, it takes too long.
I don't personally know anyone who writes code any more (for work). Is this not the case for you?
The distinction I see now is between teams that read PRs and teams that don't. I still think the former is a good approach... for now, but I don't expect this will necessarily be the case in a year (or less).
This article was such an inspiration to me when I was younger, and the advice, for that time, was very correct. However seeing it today really drives home how big the gap is going to be in really understanding code in just a few more years.
Programming without writing, to me, feels like doing mathematics by reading proofs but not doing proofs. Which quite frankly works very poorly for me. I write code if, for nothing else, so that I can spot bad code/proofs with an easier time, rather than dealing with an equation that blew up in prod.
Claude isn’t even good enough for Anthropic to release native desktop applications for each OS. As someone said in a comment in a different post here, it seems like these tools are good at web and web related (like Electron) development.
Anthropic intentionally missed the opportunity to show that its models can develop really good native applications.
OpenAI’s latest desktop applications seem to be worse than before too.
1) By the time I’ve determined, and expressed to my satisfaction, exactly what I want, I’ve already done the hard work of coding that thing. The rest is fairly mechanical by comparison.
2) It’s a universal truth (which I know someone’s gonna argue with :D ) that reading and working with other peoples’ code is much less fun than reading and working with your own. This applies even if the other people are robots.
3) When checking and troubleshooting code, the bulk of the time is spent understanding it in the first place. If you wrote the code yourself this already implicitly happened and is ‘free’.
Put those four[1] things together and at least for me personally, AI-assisted coding isn’t a better experience than just doing it myself. It’s still great for bootstrapping yourself into a new unfamiliar language/environment though.
"I love building software, I just don't like the data entry parts", to paraphrase a guy I worked with once who explained how he loved writing design docs for junior engineers to implement.
These days, I'm not sure anymore. I learned through self-study, reading documents. I don't have a degree, and I don't have the exceptional talent to be involved in language standardization.
Everyone around me codes with AI, and most of them produce better results than I do. That's natural. I'm good at some things, but I'm bad at many others. I still hand-code occasionally, but now the main is AI coding, and hand-coding is the sub.
This document probably held true until about 3 or 4 years ago. But since last year, I'm not sure. I have nothing to say other than 'Just do it.'
People say vibe coding has security issues, but honestly, I have security issues in my own code too, from TTL and all that. In the end, with vibe coding, knowing the right security keywords and understanding the problems seems to come from experience anyway.
Reading 'So You Want to be a Programmer,' I feel like conversations with other programmers and the whole process of being a programmer feel distant to me now. Since AI came out, I barely talk about programming with other programmers.
It's not just me—most Korean programmers around me are the same. The reason is simple: those kinds of programming discussions make us realize how limited our knowledge is, since our understanding is often filtered through English sources and then translated into Korean. So we just end up not talking to each other about it.
When I saw this document about 4 or 5 years ago, it felt like it was absolutely true. The environment has changed drastically, and reading this again now. Back then I treated it like a Bible, but not anymore. I realize that if you don't have a degree or aren't a native English speaker, there was always a limit to how much you could participate. These days, everything is changing so fast. As AI breaks down the English barrier, the quality of materials I can read has gone up, and I'm starting to think that even programming mindsets might change depending on language background.
But if I were to advise someone starting programming from scratch today, I'd probably just tell them to learn through vibe coding and get familiar with programming keywords and black-box coding.
Vibe coding has become the baseline these days. The domains individuals need to handle have become so broad that it's gotten more complex.
In the past, being good at just one domain was enough to make a living. But these days, everyone wants to become a full-stack developer—something that used to be rare. Even then, full-stack developers had a clear front-end or back-end bias, with some areas being shallow and others deep. Now, people are expected to be good at everything.
If you want to become a true expert, I'd say keep hand-coding and focus on a single domain. But if not, I'd say just go all in on vibe coding. Use it a lot, and build your own worldview through it
The feeling of hand-coding and vibe coding is so different that I can't help but tell people to practice both. They complement each other, but they don't really feel like they're connected or intertwined. They rely on different kinds of intuition.
Still, I think I'll keep hand-coding. Not because it's more productive, but purely because I enjoy it as a hobby. AI writes better code than I do, but hand-coding is still enjoyable enough as a hobby
I have used AI almost exclusively for a year, but I was programming by hand for almost 30 years before that. I don't think there is any difference between going from assembly -> C -> Java, TypeScript, C#, Go, etc, and taking the next step to AI. It is just another intermediate abstraction layer that allows you to work at larger scale.
Programming with AI enforces some good disciplines, which were always true, but could be avoided doing it by hand. Most importantly: you are shipping your tests. If you don't have reproducible automated tests then it probably doesn't work.