2025-05-20 23:42:00
adventuresincoding.substack.com
Over the last few months, I have had conversations with people from all over the tech world about various and sundry subjects related to our fields — Professors, Undergrads, Ph.D. students, CEOs and CTOs, Senior Software Engineers, Junior Engineers, Data Scientists, and everything in between. From all of these points of view, we have observed one particular issue: the role of the junior engineer is disappearing. Some that I have talked to think it is a natural byproduct of the advent of artificial intelligence (AI) coding assistants. Others believe that it is the beginning of the end of the computer science degree altogether, and that in five to ten years there will be a massive shortage of senior-level engineers. Still others believe that this dip in junior-level positions is temporary, and that no course correction is necessary. In this article, I will explain my point of view on the crisis of the junior engineering role, and what I think we can do about it.
Let’s begin with what I perceive to be the difference between a junior engineer and their more experienced counterparts. The biggest difference between junior and senior/staff/lead engineers is the ability to understand a problem from its highest level, break the problem down into smaller pieces, solve the smaller pieces, and then, very importantly, put the smaller pieces together again in the right way to make the final product as efficient and robust as possible.
My view of how this works in the classic tech company is that the higher-level engineer will break down the business problem into smaller problems for more junior engineers to solve. Often, in bigger projects, the lead engineer will break the problem into still-large sub-problems that need to be further broken down. The senior engineer will break that sub-problem down and assign the smaller pieces to junior engineers. The lead and senior engineers work on ensuring that all of the pieces that they broke apart will fit nicely together, and the junior engineers build the bulk of the code.
Junior engineers learn from this experience by watching how their superiors break down these problems and put them back together again. This is particularly effective in in-person environments, and less-so in remote environments (another contribution to the disappearance of junior-level roles). It has been shown over and over that people learn more effectively in in-person environments both in school and out. In conversations that I have had outside of or adjacent to the tech world, this trend towards remote environments reflects issues that are faced by junior lawyers, financiers, and nearly every other industry. If a junior engineer wants to advance their career, they must learn to do the job of their superiors. However, traditionally, the main use case for a junior engineer is to implement the code that would take too much time for a higher-level engineer to build.
I think that at this point, you might see the problem for many junior engineers. If a senior or even lead engineer can break down his problem into the smallest pieces and task an AI coding assistant with writing those pieces, then why bother with a junior engineer at all? Junior engineers take training and code review and mentorship. Junior engineers make mistakes, and can sometimes make mistakes that are very difficult to spot. Previously, junior engineers were necessary to a business because the senior and lead engineers cost too much money to task with writing the bulk of a codebase. Now, junior engineers cost too much time, money, and hassle to not replace them with AI coding assistants.
In college, there is a skill taught that I would argue is even more important than coding. I am speaking of course of the skill of breaking problems down into abstract sub-problems, solving those sub-problems, and then piecing them all back together again — in short, problem-solving skills. In the age of AI coding assistants, I think that this skill is more important than ever for future junior engineers to hone. Certainly the skill of writing efficient and elegant code is still a requirement, but it is comparatively less important than this problem-solving skill that separates us from AI coding assistants. To be clear, colleges have always taught problem-solving skills in nearly any degree that they offer. Computer science was the pinnacle of the abstract problem-solving degree.
I believe that the response of computer science departments should be to refocus themselves on the skill abstract problem-solving. When I was an undergraduate from 2011 to 2015, professors could assign difficult problem sets that honed both the problem-solving skill and the coding skill. Now, we as professors cannot effectively force students to hone their coding skills. They have to choose to do that instead of having an AI coding assistant do it for them. However, we can still certainly force them to hone the problem-solving skill.
This refocusing could, and maybe should, lead to a different high-level design of the computer science degree. What started as a specialized mathematics degree has transformed in many colleges into a degree to learn to code. Mathematics is very clearly a problem-solving field, and at this moment in time, the field of computer science must reconnect with its roots. I propose that we should incorporate more math courses into computer science degrees, for the simple sake of directly honing problem solving skills.
During my vast conversations, everyone agreed that regardless of whether computer science degrees reconnect with their mathematical roots, we will certainly see huge changes in the composure of computer science courses. I believe that assignments should focus on solving a problem and then, if necessary, coding it up. We need to realize that, in a complete flip from the past ten to fifteen years, the vast majority of a student’s time spent on a given assignment will almost certainly not be spent coding — it will be spent problem-solving. If the problem that we assign is trivial or not challenging enough, then the student will either not gain anything from the assignment because they did not have to think critically about the problem, or because it was easy enough that they could ask an AI assistant how to solve the problem. As AI assistants improve, we might not even be able to guarantee that a student could not outsource the problem-solving itself. So how do we ensure that they do the work?
One word, two per semester: Exams. Exams in the field of computer science should not test a student’s recall. They cannot really effectively test a student’s coding ability without giving them access to a computer and therefore an AI assistant. But, exams can still rigorously test a student’s problem-solving skills. Write difficult exams, even ones that might be too difficult for some or most of the students. This is not to scare them, but to make them realize what they should be focusing on. If students outsource the problem-solving practice from assignments, they will, and should, almost certainly fail their midterm. There will be two possible outcomes: either the student doesn’t learn the meaning of this and continues to outsource everything to AI, or the student begins to hone their problem-solving skills by doing their assignments themselves. In the case of the former, I would say that they deserve to fail the class, because they are not putting in the effort and they are not learning the material.
I personally loved exams as a student. I was, and am, a good problem solver, and even better under pressure. I do not like exams as a professor. I hate grading exams, especially because students who I know to be intelligent often perform poorly. On top of that, I would so much rather assign one or two more interesting programming assignments in their place. But it seems to me that the times are gone where we could trust that our assignment was unique enough that our students couldn’t find the answer on google. Now, the students don’t even need to spend three hours carefully constructing google search queries to find a PDF in a different language with the solutions to one of the three problems in their weekly problem set. Now, we know with certainty that our students can use an AI-assistant to solve almost any of the programming assignments that we create. Exams — physical, in-person exams — will create junior engineers with the best shot of being successful in industry, because they will provide students with a reason to hone their problem-solving skills above all else.
Keep your files stored safely and securely with the SanDisk 2TB Extreme Portable SSD. With over 69,505 ratings and an impressive 4.6 out of 5 stars, this product has been purchased over 8K+ times in the past month. At only $129.99, this Amazon’s Choice product is a must-have for secure file storage.
Help keep private content private with the included password protection featuring 256-bit AES hardware encryption. Order now for just $129.99 on Amazon!
Help Power Techcratic’s Future – Scan To Support
If Techcratic’s content and insights have helped you, consider giving back by supporting the platform with crypto. Every contribution makes a difference, whether it’s for high-quality content, server maintenance, or future updates. Techcratic is constantly evolving, and your support helps drive that progress.
As a solo operator who wears all the hats, creating content, managing the tech, and running the site, your support allows me to stay focused on delivering valuable resources. Your support keeps everything running smoothly and enables me to continue creating the content you love. I’m deeply grateful for your support, it truly means the world to me! Thank you!
BITCOIN bc1qlszw7elx2qahjwvaryh0tkgg8y68enw30gpvge Scan the QR code with your crypto wallet app |
DOGECOIN D64GwvvYQxFXYyan3oQCrmWfidf6T3JpBA Scan the QR code with your crypto wallet app |
ETHEREUM 0xe9BC980DF3d985730dA827996B43E4A62CCBAA7a Scan the QR code with your crypto wallet app |
Please read the Privacy and Security Disclaimer on how Techcratic handles your support.
Disclaimer: As an Amazon Associate, Techcratic may earn from qualifying purchases.