So the other night I had the opportunity to give a talk at DDD Melbourne By Night, I spoke about DevEx, giving a bit of an overview of what it is and what things we can do to start improving the Developer Experience.
After this talk, I was asked a question that I will paraphrase here. “With AI tools now available, why do we still need junior developers?”.
At the time I answered pretty quickly that AI tools such as GitHub Copilot and ChatGPT are just that, tools, and we still need junior developers. But I thought that this required a more in-depth discussion.
AI Tools and Development
To start with I think it would be a good idea to define what I think AI tools can be used for in development, and where they currently have limitations.
This one is going to be pretty opinionated and I welcome any discussion or disagreement here.
To me, AI tools such as Copilot and ChatGPT are good at helping speed up developers, help find simple code solutions to well-defined problems, and help with documentation.
But right now they are really limited to just finding solutions that mimic code that has been included inside the training data and trying to find snippets that fit the context of the code it can see.
With improvements, I feel that AI will be able to assist in more complex problems but will still be limited to producing code in context to what you give it.
It won’t be able to replace an actual developer who can do more than just produce code, the tools aren’t going to be able to talk to someone and understand context, won’t be able to present solutions to a wide audience and won’t be able to be a part of a team culture.
I also feel that while AI tools can produce code we should always be looking at this code, understanding what it is doing and why it is suggesting these solutions.
Junior Developers
So how do junior developers fit into this conversation?
While I think that the question itself might have been a bit tongue in cheek I think we should get ahead of this being something that is asked more and more.
In my mind a junior developer is a bit of a blank slate, they come in with a basic understanding of development but are looking to learn and grow.
And to put it bluntly, without junior developers we would not have senior developers.
But a business that just wants to get a product out the door, might not see the value in having junior developers. They might see them as a cost. But I think that is a very short-sighted view.
So here are some things that I feel that junior developers provide value to a development team:
- They are a fresh set of eyes, they can look at a problem and see it in a different way than how a senior developer might.
- They are a great way to get new ideas and new ways of doing things.
- They don’t have the same preconceptions that a senior developer might have.
- They are usually eager to learn and grow, branching out into new technologies and areas of development.
As they grow in experience they also learn soft skills around the business they are in, learning key context around what the business is trying to achieve and how they want to go about doing that.
Conclusion
So to answer the question, I think Junior Developers are a critical part of a development team and cannot be replaced by AI tools. No developer can be replaced by them, they are just tools to help us do our jobs better and faster.
We should be embracing the junior developer, encouraging them to grow, question things and express themselves. They are a critical part of creating a diverse and inclusive team. And from them, we can grow exciting senior developers who will make things that we can’t even imagine yet.
AI Tools are going to revolutionize the way we work but we shouldn’t fear that. We need to ensure we understand the limitations of these tools and how they can be used to help us do our jobs better.
The tools will never be able to replace a person who joins a team of other people, working together to solve problems and create amazing things.
Beyond just the technical aspects a junior or any new developer that join a team will join the culture of that team, becoming a part of a wider social group that is working together to achieve a common goal.
And to any junior developer out there that might be reading this, I want to say that you are a valued member of the tech community, stay curious and don’t be afraid to ask questions. You are the future of our industry and we need you.
So what are your thoughts on this? Feel free to let me know on LinkedIn or Twitter, always happy to discuss this further and get perspectives from everyone in the community.