Benjamin Lannon

Select a theme. Click on the overlay or the button again to exit

The Role of a Junior Developer in the Age of AI

Posted on:

We're approaching 2 years on the original release of ChatGPT. Since, almost every large tech company has decided AI is now the future and model creation is a key focus. Between conversational chatbots, image generation, and assistants in software development, you can't deny that Generative AI has exploded in popularity in the last few years. A thing that I though less agree is the concept of developers being out of jobs, and more specifically the death of the junior dev.

Personal Bias: Coming into this, I personally have been using AI tools for many years but have been learning when is the right time to use it and always having some skepticism when going into it. If I am reading a bash script and don't know what a certain line does, I extract that small snippet out rather than upload the entire script to ChatGPT. Outputs from these tools also can be either wrong, misleading, or error prone, so knowing how to digest GenAI outputs rather than just taking it for granted without any cross-examination. As well, I personally still have not gone ahead and integrated AI into my day-to-day software development process of actually writing code due to my work's security policies and not wanting to upload company proprietary code to a 3rd party service / hardware we do not have full control over.

So starting off, Over the months, I've seen a small sentiment going around of people who are heavily invested in GenAI saying this is the end of junior developers or you don't need to know how to code to make software. This is fairly flawed in one major thing, what is the role of a software engineer in general? Some people would say it is to write code, but my personal definition is writing & using software to be able to solve problems. Yes, writing code is a part of that, but there are plenty of things on top as well. Take for instance:

Now, will all developers have excellent skills doing all of these things from the get-go? Of course not. Every single senior developer once wrote hello world for the first time and slowly gained skills over many years. What I would say is an important thing of getting entry-level devs to gain these skills is a support network of teammates and managers assisting them along the way and pushing them to get better as software engineers. Some devs may need more assistance onboarding or getting up to speed than others, but making sure that they can work efficiently and not be in the deep end and never know how to solve something is an important task. With the right amount of assistance, a novice developer should be able to handle tasking without much hand holding and be able to tackle more challenging projects in a professional setting.

Now bringing AI into the mix, I feel that the misconception of needing less devs because we can let AI write large amounts of code for us is a slippery slope. If you ask ChatGPT "Write a nodejs function to fetch the last 10 entries in a Postgres database", it probably would be able to write some code, but is that code error-resistant and maintainable? Does that code have any security vulnerabilities? More often than not it is possible that the code written may be 80% of the way there but still need human intervention to get that last 20%.

As well, due to the technology of Large Language Models & Transformers work, the AI will generate the statistically most likely / accurate code, but who wrote the training data, and how old is the majority of it? Take GitHub Copilot, which was trained by all of GitHub's public repos; there is likely a huge amount of old code on the site. I for instance have over 200 repos on my account, when in reality I probably only maintain a good 10-20 at a time. As well with more and more people learning how to code, a lot of newer devs are going to be using GitHub which means a lot of more novice code is going to be going into the training set. So statistically, it may be more and more likely that the training data may already have certain biases of writing a certain way.

Finally, AI is well known to hallucinate and there seems to be no solutions with the current technology to solve that. Oh cool you found a npm package to format some data, great, well as long as that package actually existed. Just because a piece of code can be generated does not mean it is good or even works. Due to that, again, humans need to step in and resolve these issues, and if you are solving these types of issues so often, the question arises is that tool actually bringing a net value to your workflow?

So to take all of this at its value, AI can be a useful tool, but it does not replace the human part of software engineering. Novice devs and really anyone in any field will start out not knowing much, be trained by people who are more experienced and eventually get to the point that they are the ones teaching the next generation. AI over time has the possibility of helping upskill devs faster than what was possible in the past, but it is a tool at the end of the day. Due to that, an entry level dev will likely always be in the picture of many companies. The role may change, but at large the upskilling / learning on the job for the first few years of your career still will exist.