Why AI won't kill programming
Programming isn't dead; it's evolving. Vibe coding opens doors, yet true mastery demands deep skills. Embrace the change and thrive in this new tech era.
In the past few weeks, I’ve seen a lot of commentary about programming becoming obsolete with the rise of vibe-coding and AI systems that can create full apps. Junior developer jobs and internships are dying, and some people suggest there is no point in learning programming.
However, my experience as a software engineer says otherwise, and while AI will change the software landscape and the way we build products, there is no better time to learn software development.
The low barrier to entry
I started programming when I was nine, on an Apple II computer collecting dust in the corner of my classroom. Thanks to a basic programming language and a turtle graphics interface, I was able to experience the exhilaration of building something on my own. (Below is an example of programming with the Apple II).
That got me hooked and I started exploring other programming languages. I soon discovered Hypercard on a Macintosh LC II. I learned about building simple programs with easy-to-use graphical user interfaces. From there, I moved on to Windows programming with Visual Basic 3.0 and started creating executable files that could be distributed to other users.
These simple programming languages and IDEs were my window to the world of software development. But my journey didn’t stop there. As I learned more about software development, I also became more interested in lifting the hood and understanding what was happening behind the scenes. This is what got me interested in low-level programming languages such as C and C++. I ended up writing more code in C++ than any other programming language I learned throughout my career (which includes Java, Perl, C#, Visual Basic .Net, Python, R, and more).
But I got deeper into the stack, learned more about computer architecture, taught myself Assembly, and started reading the x86 and x64 instruction manuals. This helped me better understand how computer programs work and made me a better programmer at the high-level languages that I used every day.
At the time that I started coding, IDEs were black or green screens with flashing cursors. There were no autocomplete or IntelliSense features. You often had to write your own makefiles and manually compile and link your code. But the tools we had at our disposal were easier to use than those of our predecessors and made it possible for young kids and lower-skilled people to learn programming.
I think those basic principles still apply today. There is still a magic feeling to creating your first program. And today’s Vibe coding tools, such as Lovable and Bolt, lower the barrier to experiencing that magic, whether it is by creating a personal productivity tool, a specialized chat and collaboration tool, or a game.
Some people will limit their skills to vibe coding. But many will be like my younger self. Vibe coding will be their gateway to software development, but they will be curious to dig deeper and learn more about how software works and how they can become a good developer.
Build deep skills
Another important experience I obtained during my coding journey was wandering and building deep skills in different fields. For example, like many of my peers, I got into programming to create video games. At some point, I spent a lot of time grokking computer graphics, math for 3D programming, and DirectX programming. I had to learn Win32 programming in C++, Component Object Models (COM), and other skills. A lot of those skills became springboards for other skills I picked up later.
I later became a lone programmer maintaining an open source ERP solution, which forced me to deepen my skills in web development, web server management, database management, and SQL.
My venture into game programming also exposed me to design patterns, and I went down a rabbit hole that changed my entire view on software architecture.
While I meandered through different paths, the one constant throughout my journey was curiosity and obtaining skills through hands-on experience. I made a conscious effort to write my own custom libraries from scratch, implement patterns, and create classes and tools that I would use across programs. I would fail, debug, rewrite, until the fundamentals became etched in my mind.
The hands-on experience helped me speed up the process of learning new skills. For example, when I became interested in machine learning, my experience in 3D programming helped me better understand the math behind ML and deep learning models, especially how they were implemented on GPUs. My experience running tens of thousands of queries in SQL Server and optimizing tables with millions of records helped me better understand how data manipulation libraries work and build my data engineering skills for ML pipelines.
In the age of AI, building deep skills is still important, especially if you want to move beyond vibe coding for yourself to building production-ready software. Fortunately, current LLMs are also very good learning tools and can help you create personalized curricula to learn new skills based on what you already know. You’ll still need to roll up your sleeves and get things done—that’s how knowledge becomes etched in your mind. The LLM will be in the background, nudging you in the right direction and helping you learn faster.
I’m going to finish this essay with this meme I saw a few days ago:
One way to look at things is that AI has diluted the developer community, and the age of elite programmers who could build great things from scratch is over. Another way to look at it is that the elite have not gone away and are even more numerous than before. But with AI, the developer community has expanded and we now have many more programmers, even if they are not all at the elite level. I am hoping that the latter will turn out to be true.
Elite is a relative term. These “elites” were looked down upon by elder elites that could load a mag tape one handed in five seconds. Tools always change, unless we’ve had a nuclear winter. Carry forward hard lessons learned from the past that are still relevant. OO design principles and patterns? Have you chatted with Gemini in those terms? Secret sauce.
Thanks for sharing your history, you're a genuine mastermind in programming, which is rare to find these days. I miss Visual Basics, I liked it a lot. And I still like (maybe love) SQL.