Sunday, April 27, 2025

Senior Programmers Have Nothing to Fear From AI

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.

6 comments:

nytpu said...

So is the purpose of a junior programmer to be an automata that does tasks, and not someone who is supposed to be trained so they can become more independent and experienced? Do you think senior programmers just materialize out of thin air so junior programmers don't need to exist?

Joe Marshall said...

As a senior programmer, delivering software to my employer is my primary task, training the junior programmers is secondary. I should have mentioned that another important criterion of tasks is that they be challenging so that the junior programmers can develop their skills.

If AI replaces junior programmers, I'm not sure where we'll get senior programmers from. I know some programmers that seem to have innate high-level talent, but they are rare. I don't think companies are going to avoid AI just to keep the junior programmer pipeline full. There may be a need for junior programmers in order to mature into senior programmers, but there is far less of a need for them to actually write code.

Allan Wind said...

As a VPE it is about optimizing the value engineering for the business. Learning is a large part of that (among with other things like strategy, tactical decisions, attract the best possible talent & retain them etc). For an individual (including me), you maximize your learning rate at the cliff of your knowledge. It's called deliberate practice when you learn to play a musical instrument. I never had any interest or time to micro-managing engineers, so you build a culture around it so each engineer picks up the most interesting task for them, but also leave room to struggle and to engage others for help as needed (team cohesion). When you manage people it's your job to tune that balance. Btw, if AI does the "easy" stuff our industry will be... hollowed out in a just few years. That's very short-sighted, and for the individual company that may be best decision, but that's how manufacturing was outsourced and those skills and all future growth resides elsewhere.

Anonymous said...

I gave this some thought (as a senior programmer), and I mostly agree with it. It will be harder to become a senior, and will require different skills than what schools give people nowadays.

Joe Marshall said...

The kind of skills you get becoming a senior programmer (learning what NOT to do in addition to learning what to do) transfer pretty easily to prompting an AI. You say "Make me a foo. Don't allow the empty string as a name. Lock it with a mutex." and it does it. But those latter two details won't occur to a junior programmer and that makes a big difference.

Christian Lynbech said...

I see a conundrum when using AI to do coding. I see programming more as a journey of learning rather than puzzle; as you write the program, you gradually build up your understanding of what the program is to do. Brooks put it as “throw one away, you are going to anyway”, Pittman had a similar observation in an old Lisp Pointers article, that now that he was done, he understood how the program should have been written. I could fear that the more one uses AI, the less learning (about the nature of the program) one does but the consequences of that might not be apparent until much further down the road (vis-a-vis the 80/20 rule).