I have, through experimentation, discovered that vibe coding in Common Lisp is not effective. But other kinds of AI coding are highly effective and have been saving me hours of work. AI is not going to replace senior programmers, but it will take over many of the tasks that junior programmers do. I’m not worried about my job, but were I a junior programmer, I’d be concerned.
Part of my job as a senior programmer is to identify tasks that are suitable for junior programmers. These tasks have certain properties:
- They are well-defined.
- They are repetitive, making them suitable for development of a program to carry them out.
- They are not too difficult, so that a junior programmer can complete them with a little help.
- They have a clear acceptance criteria, so that the junior programmer can tell when they are done.
- They have a clear abstraction boundary so that integrating the code after the junior programmer is done is not too difficult.
But because junior programmers are human, we have to consider these factors as well:
- The task must not be too simple or too boring.
- The task must be written in a popular programming language. Junior programmers don’t have the inclination to learn new programming languages.
- The task must not be time critical because junior programmers are slow.
- The task should not be core critical to the larger project. Junior programmers write crappy code, and you don’t want crappy code at the heart of your project.
Oftentimes, I find some tasks that fits many of these criteria, but then I find that I can do it myself better and faster than a junior programer could.
AI coding can handle many of the tasks that I would otherwise assign to a junior programmer. It works best when the task is well defined, not too difficult, and written in a popular language. It doesn’t care if the task is boring and repetitive. AI coding is much faster than a junior programmer, and it writes code that tends to follow standard conventions. If you can specify good abstraction barriers, the AI can do a good job of coding to them. While AI coding is not perfect, neither are junior programmers. In either case, a senior programmer needs to carefully review the code.
AI coding is not going to replace senior programmers. The AI will not generate code without a prompt, and the better the prompt, the better the generated code. Senior programmers can take a large program and break it down into smaller tasks. They can create definitions of the smaller tasks and define the acceptance criteria, the API, and the abstractions to be used. They can carefully and precisely craft the prompts that generate the code. Senior programmers are needed to drive the AI.
Which leads to the question of where senior programmers will come from if junior programmers are no longer needed. I don’t have a good answer for this.