Transcription
I want to talk about how the lives of developers will change due to artificial intelligence over the next 5-10 years. Of course, nowadays planning a decade ahead is not such a great idea, but I have a small advantage. I've been working as a developer for 25 years, and I've felt all these trends of recent decades firsthand. Well, and I will reflect on what we, developers, should do to keep up with the times, continue doing what we like, and earn money from it.
The first change that I foresee is that libraries and frameworks may partially disappear. How do we learn in development now? First, we study the language. If it's web, we learn HTML and CSS, if it's backend, then databases. But besides this, an essential part of a developer's education is learning libraries, frameworks, boilerplate, scaffolding, which simplify coding. Of course, you can write a web server on Node.js from scratch, working directly with HTTP sockets, but it's much more convenient to use Express, Next.js, or NestJS. All these frameworks are designed to solve standard tasks more easily with fewer lines of code, and therefore, with fewer errors.
With the development of artificial intelligence, the situation is changing. And in general, it doesn't matter whether you write code from scratch or use a framework; it can write a web server in any way. Frameworks have a fundamental problem. You write based on it for a long time, everything works perfectly, but sooner or later, there's a need to do something that the framework doesn't do out of the box. You have to go down a level and hack the framework itself. Good frameworks allow you to do this relatively painlessly. With bad ones, you have to contort yourself. And the advantage is that it can immediately write code adapted to your specific needs, bypassing framework abstractions.
I don't think frameworks will disappear entirely. React will surely remain. But here's a simple example. If you ask ChatGPT to write a web page, what framework will it use for CSS? None. It will write directly in CSS, ignoring Tailwind, Material UI, or Chakra UI. You can explicitly ask it to use Tailwind, and it will do so. But by default, why complicate things? The same goes for something like React. If you ask it to create Tetris, it will write it in pure JavaScript. You can ask it to create a React application, and it will do it, but by default, it will choose the simpler path. And this trend will only intensify.
How to prepare for this? Focus not on frameworks, but on architecture and design patterns. On the one hand, you need an understanding of low-level things, and on the other, an understanding of the application's architecture as a whole.
The next change: developers will review code and read existing code more than write new code. If AI generates code, it's much easier to ask it to write something new and then review it. What happens after a code review? Now I fix code manually. In the future, it might be faster to ask an agent to make changes. And agents will learn to adapt to the coding style. If you make a remark once, it will remember it and won't repeat the mistake next time.
Code style rules now, including informally, live in developers' heads, from coding standards to variable naming conventions. If a person works in a team for a long time, they know the local conventions. For example, here, it's not customary to use class inheritance; instead, composition is used. After some time, tools will learn the style of the team and a specific person, and you will have to correct them less. From personal experience, for the first 4-5 years of my career, I practically didn't see anyone else's code. I only started professionally reviewing code in 2004, and before that, I worked in small companies where each developer wrote their own code, which went into production without review. Back then, it somehow worked. Now, I think it's unthinkable, except perhaps in some prototypes.
What am I getting at? That the trend of looking at each other's code didn't appear immediately. The fact that people will have to look at generated code more instead of writing it themselves seems like a natural continuation of this trend. But I know many are upset. They came into development to write code. It brings them pleasure. My advice in this case: accept that the code generated by AI is also your code. You are responsible for it; it's your tool that you control; it's the result of your work. I manage to feel proud of AI-generated code because I directed it; it's my creation.
The next change is that programming is becoming more about describing the desired result than writing instructions for a computer. This is similar to the emergence of declarative approaches like React. React doesn't say, "Take this div element and change its content." It says, "The page should look like this." And then it takes care of bringing the DOM to the desired state. This directive approach will become increasingly popular, I think, in all development. For example, you say, "This page should display a sorted list of products." Previously, developers explicitly called a sorting function, passed data, and got results. Now you don't need to say, "Call this function." You just say, "I want a sorted list." And AI itself decides how it will implement it.
Development will be built on a constant feedback loop. You look at what was written and ask for corrections here and there. You check the result. This also happens now. You write code, run it, test it, fix it, but the cycle will shift towards a dialogue with AI.
The next important point. The demand for developers is changing. This is already happening. Judging by the news, entry-level developers are needed less and less, while experts in architecture and building complex systems are needed more and more. This is logical, and most agree with it. But I don't think this is a hopeless situation for beginners. Yes, they say there's no demand for juniors. Juniors won't grow; where will the seniors that everyone needs come from? Therefore, I hope that at some point, the market will correct itself, and the demand for junior developers will return because there simply won't be enough seniors for everyone.
There is also another aspect. Now juniors are not in demand because they have coding skills but lack architecture development skills. This is perhaps a problem with the current approach to entering the profession. What is the path now? Learn a programming language, become a developer. Learn Python, become a backend developer. Learn JavaScript, become a frontend developer. Perhaps this is wrong. Perhaps it's better this way: Learn frontend application development architecture, become a frontend developer. You don't necessarily need to know how JavaScript works in detail; you don't necessarily need to know all HTML tags. A person can know only the basic principles. Code is broken down into modules. There are loops, classes, conditions. I can't quite imagine how to write code, in fact, manually, but they can manage and say, "Write a module. This page should do this, this should do that." Or, for example, they understand how to neatly arrange everything according to the correct architecture: load balancer, application services, database, primary, secondary replicas, and so on. They can perfectly understand the organization of the architecture but not know a single programming language and still successfully handle development. This will be a junior who started their career directly with AI tools. I think this is possible, and perhaps someone will have to start their career this way.
As an illustration, I read in the news that a course called "The Modern Software Developer" appeared at Stanford. It focuses on development using AI, and you can successfully complete the course without writing a single line of code manually. In general, education is also changing and will change even more. Even seniors will have to learn broader things, think about the product, know UX, understand infrastructure and business logic. I'm not saying that narrow specialists will disappear. They have always been needed. For example, an expert in rendering performance optimization through WebGL will always be in demand, but this is not a mass phenomenon. Such specialists are sometimes needed in some companies. More broadly, developers with a deep but not narrowly specialized understanding will be needed en masse. This trend, in general, corresponds to what I have observed over the last 25 years.
The building blocks from which we build software are becoming larger. I studied Pascal in college, and we had small modules like CRT for drawing on the screen. Over time, these building blocks grew larger, libraries appeared, then frameworks. And these are no longer just libraries. A framework dictates how to build the system's architecture. Frameworks started appearing, well, more or less after 2005, and around 2015, manager services like AWS became popular. This is a huge set of building blocks for all occasions. Lambdas for the backend and S3 for manual configuration, containers, Kubernetes, managed databases – these are even higher-level building blocks. Developers had to operate with increasingly higher-level abstractions. And it's just the next step, an even higher abstraction, where you say what needs to be done.
Another trend is that AI generates better quality code for more popular languages. For a rare exotic language, it makes mistakes much more often than for TypeScript or Python. From this, it follows that less popular languages will become even less popular. And popular ones, even more popular. The point of learning something other than Python, JavaScript, Rust, PHP, C++, C#, or this dozen mainstream languages is already small, and in the future, it will become even smaller, and perhaps 99% of code will be written in Python and JavaScript, and other languages will become, well, niche.
Perhaps this will be a temporary situation. At some point, AI will learn to write equally well in any language, even one you just invented, but in the coming years, I think such a gap will exist. There is an opinion that either a language will appear that is not for humans but for language models, or models will start writing code that is so unreadable that it will be intended only for machines. Perhaps all good practices for code readability will die out. What will replace it? It would be logical to assume that prompts, dialogues with AI, will become the source code, but this makes little sense because generation by prompt is non-deterministic. You can run the same prompt 100 times and get 100 different code variants. My idea is that programming languages may disappear altogether, but at least they will not be used by most developers. And either machine code or pseudocode for virtual machines, like Python.net, will be generated. Why generate code in Python if you can generate assembler for a Python virtual machine?
I have simple logic here. If no one reads the code, why make it understandable for humans? Already now, coding creates such spaghetti code that it's very difficult to understand. It's clearly not intended for reading. This, of course, is not a prospect for the next 2 years, but in many cases, code will be written in such a way that people won't look at it at all.
What to do about this? Work with code through an agent that will explain what's happening, or look at code as a black box through tests, using tests to understand the logic. There's also this point: now no one understands how billions of parameters in language models interact with each other. There are special methods that try to understand what a specific neuron does. And at some point, AI-generated systems will become so complex, there will be so much code that a person wouldn't write in a million years, but AI will be able to generate it quickly, and these systems will work perfectly, but the need to understand how they work will remain. Perhaps a special profession will appear for people who delve into such systems and understand them. It's no coincidence that there's already a joke about LinkedIn profiles with the position "Wipe-coding specialist." This is a person who fixes what others have "wiped-coded." And jokes aside, this is a real need. Over the past couple of weeks, I've heard about such demand twice. My former colleague said he was hired as a manager to create a product and assemble a team. While he was preparing documentation, before even starting hiring, he quietly "wiped-coded" the entire product himself. He has a fully working prototype, and he's happy. Although, of course, it cannot be released into production. Now he needs people who will either polish it to production quality or rewrite it from scratch. Second case. A person contacted me who doesn't know how to program, but he has "wiped-coded" 90% of his product. Now he's looking for a way or an agent to sort all this out and bring it to a working product. Although, I think he needs to hire a developer. The demand for such specialists exists and will grow in the coming years until AI tools become powerful enough to create production code. And even after that, in some cases, cleanup will be required.
Would I like to do such work? Why not. I love working with code, even if it's tangled code that needs to be sorted out, covered with tests, beautifully reformatted with the correct architecture. This, in general, is also an interesting occupation. Around 2010, there was a popular joke about the programmer's keyboard of the future with two buttons: "to work" and "to not glitch." You press the first, you get a product, but with glitches. You press the second, all bugs are fixed. It's amazing how similar this is to what's happening now. In general, I think the second button will appear. It has already appeared. It's debugging with AI agents. Many copy errors and code into ChatGPT, ask what's wrong, and get answers. In the future, this will become an even more integrated process.
Now let me philosophize about the change in the world as a whole. Sometimes I encounter scary predictions about total unemployment. All programmers will be out of work because AI will write code, and developers won't be needed. Moreover, no professions will be needed because robots will do everything, and 99% of people won't be able to find work at all. I don't believe this and hope it won't be the case. And here's why. Let's conduct a thought experiment. Imagine a rich man, the owner of a company, who owns a powerful AI. He has billions of dollars because much of the world is produced by this AI. He has a large, expensive house. What picture will he hang on the wall? Something generated by some hypothetical ChatGPT? No, he will hang a work by an old master or a modern artist, for whom he will pay a huge amount of money. Why a huge amount of money? Because an item that costs 3 kopecks, even if it looks better than a Louvre masterpiece but is printed by a robot, he won't hang it. And he will even find a frame that a person carved by hand. Because if the frame is even made of gold, but a robot made it, it's not art. There will be huge demand for expensive art from wealthy people, and big money will go to such masters.
Okay, billionaires and masters have children. Where will they send them to study? To sit at a computer to be taught by ChatGPT? They are unlikely to send their children to a prestigious university or school. Will they want robots to teach their children? I doubt it. They will want intelligent, wise professors. Of course, these professors should know how to use AI, but there must be live teachers in school. And the school must be expensive. The rich won't send their children to cheap schools. Expensive means the best teachers, and the best teachers need to be paid a lot because there is high demand for them and few of them.
Now imagine that such a teacher, master, or billionaire falls mortally ill and receives a diagnosis. What next? Will he just accept it? No, he will seek specialists. Even if AI offers treatment, people will always want to hear the opinion of a human specialist. Good doctors are needed, and rich people are willing to pay gigantic sums. If you are rich, you will hire only the best.
Also, remember how gamers get outraged when they find out that AI was used to generate content in their favorite game. Many game companies now indicate in their advertising that AI was not used. This applies not only to games but also to movies; people's desire to use a product that was made without AI will not go away. Add to this the professions that will appear due to its spread, and they will also require people. Therefore, I don't believe we will be left without work. I think there will be even more work. We just need to give the world and all of us time to change and get used to it.
These are my thoughts on the future of development. Perhaps something will go differently, but the main thing is to be ready to adapt, learn new things, and not be afraid of change. Thank you for watching until the end. This was Lesha Krepanov. Goodbye, everyone.