The Day Has Finally Come: Junior Devs Only Know ChatGPT!
November 15, 2024
• 3,902 views
We knew this day was coming. They warned us. There was nothing we could do.
Junior developers are joining the job market and they can't code! They can only speak to LLMs!
... Or is that really true?
Let's jump over to this Reddit thread and see how a software engineer is perceiving this as junior developers join their team!
View Transcript
we were warned that this day was coming and it's finally starting to spread across all of our teams and across different companies the day that the junior Engineers were only trained with AI assistance hi my name is Nick centino and I'm a principal software engineering manager at Microsoft today we're going to be going over to our favorite place for software engineering advice Reddit and reading through a post on Junior developers using AI assistance I thought this would be an interesting topic to go through because I think that there are a lot of people exploring these tools and a lot of people at different levels with different opinions on this kind of stuff so if that sounds interesting just a reminder to subscribe to the channel and check out that pin comment for my courses on dome train with that said let's jump over to Reddit
and read this post all right so to kick things off I'm going to read through this post I'm going to give my highlevel opinion we'll scroll through a few comments and then I'll add a little bit more context and my thoughts on what some other folks are saying so the question reads what's everyone's thoughts on Juniors using AI code assistance and the person goes on to say we recently got a junior engineer who only codes using AI autocomplete which makes pair programing a complete pain the autocomplete from the AI assistant was not helpful and only got in the way while it was trying to navigate with them and they couldn't code without it after we told them to turn it off like didn't know how to write a function declaration or declare strs I guess I want to hear if anyone else has experienced anything
like this with Junior deps and it's very interesting right so it very much sounds like this individual is on a team they have a junior that's come in in and it sounds like the junior is not even sure how to program in the particular language that they're using and I think that's an interesting point because I've talked about this before I've said that even at Microsoft I've hired in people that don't know how to program in C we end up teaching these people how to program in C but they have experience in other programming languages so on the surface it's kind of interesting I don't necessarily blame an individual if they don't know how to use a particular language we don't have enough context for from this post whether or not this uh junior developer has experience in the particular language if they don't then
I mean I really don't expect that right in the beginning they're going to understand this stuff certainly if you put me into even Python and said Nick start coding I'm probably going to have to go say wait a second how do I go declare a variable a function little things like that once I see the pattern I go oh yeah I've seen this before and I'm good to go but it probably would get stuck and I've been programming for over 20 years so it's one of those things I think that the muscle memory just has to come back but we don't really know in this case with this junior developer very interesting it sounds like there's a heavy Reliance on using the AI coding tool and I would expect that based on how this person's described this developer that either it's a matter of this
person just doesn't really know the programming language and or they're not really sure how to go code things from scratch I think this is kind of fascinating because I think that for many of us that have been in industry for at least a little while say a few years you know over 10 years some some range like that there's probably a way that we think about things like traditionally which is like you're going to go practice coding in a particular language you're going to go building some stuff you're going to go get a job doing that you're going to switch languages and build different types of things but along the way you're practicing all of these things and that practice involves you writing the code in this case it sounds very much like this individual that they're describing this junior developer uh like I said
either doesn't know the language Andor they're just relying on communicating to the AI tool to be able to write the code for them I personally have not yet experienced this having someone with uh you know what seems like zero Hands-On coding experience trying to build software I have not experienced this but I think we'll probably see more and more of this now I do think that if you're going to use AI tools I still think that it's very important that you do understand the language you're working with I do think that you try to use the tools and jump ahead without at least a basic understanding of what's going on it's going to set you up for a few more challenges down the line and what I mean by that is that llms are still not at a point where we can trust them 100%
because a lot of the time what they're outputting is going to be based on what we're putting into them and if you're very new to software development you might not know the best ways to go prompt the LM to go do things effectively therefore it's going to give you a lackluster result and if you don't know how to go spot check that to to ask it better questions for how to improve it or question what it's doing you're probably going to take that code go to use it and kind of build on top of this Foundation that's maybe a little bit wobbly and when I say a little bit I mean a lot of bit but does that mean that this is impossible for people to start programming this way and I think the answer is no it's not impossible in fact I'm going to
bring him on to the channel a lot of folks probably don't remember him because I mentioned him right when my channel was starting to grow in the very beginning a couple of years ago but my original video editor that got me set up his name is Jamal and he is actually building software heavily using llms if you were to ask him hey Jamal do you know how to program he would tell you nope and he would say that with confidence he doesn't see himself as a programmer but he has successfully put together entire web applications that he has been able to sell I do think that there is this sort of New Order of people coming in leveraging tools like this however I do think that you need to put in more effort to start gluing these pieces together for someone like Jamal that I
was just explaining he might fit the bill that's being described here right if he were hired into a place and they said okay Jamal let's program together he would probably say like depending on the language like I don't really know how to do that let me ask the llm and I agree with what this poster is put here to pair program that would probably feel pretty frustrating because you're like look man it's just a variable declaration it's just a function declaration just type it like don't you just know to do that but for someone like I just described they might not certainly in these instances that are being described here that could make it very challenging to work together and if that's how this team works a lot of the time yes that might be a bit of a barrier for Effective working within the
team but that does doesn't necessarily mean that that person is not going to be able to put together code that works effectively don't get me wrong like I was saying earlier I do think that it's important to understand what you're doing the language the tools that you're using to feed that information into the llm but I do think that you can use it iteratively so maybe if you need more experience you could be using the llm to kind of get you that next step but you should be going back to the llm tools and asking it questions challenging it trying to understand what it's doing and then doing more homework on top of that so again not just taking the llm output not doing any like homework on it just kind of taking it blindly I do think that you want to build on top
of what it's giving you so that you can understand it better that way the next time you're going to prompt it you can do a better job in the context of hiring on Junior developers I'm trying to put myself in this situation if I had someone come onto the team and I sat down with them and we were going to pair program on something that's not really what I do in my role anymore but if that were the case if I saw that they were struggling like this probably what I would try to ask them is like number one like should we get clarification on their understanding of the language because I think that's important if they don't have an understanding of the language again I don't even think that's an llm thing because you know if they didn't have llms if they didn't know
the syntax they're just going to go search it online it's just a different tool to get the syntax I feel like that ones Maybe not a great example but I would like to ask them hey are you familiar with the language and if they are then I might say okay well seems maybe a little weird to me if they're not able to recall that syntax but that's okay right I would just want to confirm with them if they need to do a little bit more uh homework or understanding and to get more introduced or familiar with the language so that's kind of Step One beyond that because this is new to me if someone felt they could be very effective using an llm I would be less concerned about them using that tool to create code like you know from a philosophical perspective I would
be more concerned in which tools they're using and if they're taking company information and putting it somewhere else so for example at Microsoft we have co-pilot we can use that internally if someone was taking code that we had internally putting it through co-pilot internally I would have no problem with that so that wouldn't be an issue but I would have an issue if someone was taking proprietary information and picking a random llm thing that they prefer online and trying to get information out of that so more of like a security type of concern that I would have and less about the philosophy of which tools are using I think for me as a manager bringing on people that are acting like this onto the team that are heavily reliant on llms this would probably be a learning opportunity for me because if they were able
to go through the interview process they did a good job doing that and we vetted them and that all worked out either we have a gap in our inter process and we're bringing on people that we're not necessarily comfortable working with maybe the way that we're testing for skills isn't quite the right way or that is all good and it really it's just a learning opportunity for potentially this new wave of developer that's coming through and to give you a brief example of what I mean by that there's probably people the generation before me as developers and they might say hey it's pretty wild to me that you never programmed in some language like C uh you know a significant amount of time or that you really took some uh time to go like focus on pointers and maybe even learn some assembly and do
uh different instructions like that like they might think that that's weird or sort of holding me back as a developer that I never did that and the same thing could apply here where I'm saying hey if you didn't do these things that I did for learning therefore you're not going to be a good developer I think it's too early for us to make a claim like that so I'm actually pretty interested in seeing how things are going to evolve but for me this wouldn't be a total deal breaker I would just want to make sure I understand where this person's at if they need a little bit more coaching again they are a junior developer then we go look at how that needs to happen if that means spending a little bit less time outside of the llm tools to get more familiar Hands-On with
the language so be it but I would want to work with them to try and understand the best way that we could do that now let's have a little read through some of the comments here the first one says we hired someone unqualified who doesn't know how to do the job so is AI bad right they're kind of mocking the person who's asking this because that's really what it sounds like right they're this person's taking the stance that the the original poster saying hey this person's just unqualified so is artificial intelligence the thing to blame so I think the way that the op responds to this is kind of interesting right because at least through talking with this individual right so he's talking with this junior developer it sounds like based on his experiences that he's talking about that he's able to put things together
successfully so if we read a little bit further right like we started par programming with them uh and he's like I don't know how this person got hired but he goes on to say but yeah a lot of my team were basically Ops people and know instead of learning to code they just use chat GPT or AI assistant until it works he then says it really is only him and one other person that knows how to code so it sounds like there's already other people if I'm interpreting this properly there's already other people on the team that are heavily using AI assistant so kind of interesting uh just I don't I don't know like it's interesting that he's singling out the junior developer although it sounds like there's other people that kind of do the same thing this person goes on to say it's his
first day does he know the programming language you use in your team it's kind of what I hinted at earlier right so it seems like he doesn't so again if this person's not familiar with the syntax and you're expecting them to pair program right away in something that they just don't know how to do they're just using a familiar tool to get that syntax I kind of said this at the beginning if it's not an llm would they be going in right into Google or Bing or directly to stack Overflow and searching and saying like in Ino how do I and then getting an answer for it right that's it's certainly what I would be doing I don't even know maybe for me now I might start going to chat GPT for like some questions like this but I think probably historically it's been ran
into my search bar in my browser just like in whatever language how do I X so this person goes on to say yeah but I mean you also got to invest in your Juniors and this is just a true statement overall I think that if you are bringing on Juniors to the team I know that this can feel different at different Siz companies because at a smaller company it is a lot of effort to bring in someone Junior because that's going to mean time to invest and that means if you're a smaller company it's just proportionally more effort to do that but it is important you are trying to bring on Junior people to ramp them up you do have to invest into them them this person goes on to say and it actually has a ton of upvotes if the company is truly hiring
people who don't know basic syntax without AI assistance it might be time to revisit the hiring or assessment process right so they're going on to say if this is not something that you agree with right if this is not what you know how developers are going to be working like why is it that you are you know grading them as such when they are going through the interview process so kind of interesting this person says yep I definitely use them to outline code now they're such a good productivity hack I prefer fixing code uh to writing new code so I tell the AI what to do and how to structure it so kind of interesting right uh this person's very content they're saying then you're full stack they're a tech lead but they're basically able to be way more productive just patching up some code
so kind of a a unique perspective on some of this stuff this person goes on to say most syntax is a quick Google search away so it's seldom worth remembering okay so let's scroll a little bit lower a couple of people people are going back and forth on this so the op is saying like I would say certain syntax is but you shouldn't forget the basic stuff but is this always like true like what does it mean to know the basic stuff like for me I program in C all the time I'm probably not going to forget the basic stuff because I just do it all the time but this person goes on to say I do because I write and go typescript terraform so much yaml no one likes yaml SQL right Bash scripts and everything in between so they're going between so many
different things that they're like yeah I know this language but like I need a refresher right I need something quick to remind me what the pattern is this person uh they say I disagree but they're disagreeing with the comment above so I Google basic syntax all the time my last job used Pearl python Scala and go and I was Googling like four Loop syntax every time I changed gears so truly trying to get this refresher so there's actually a lot of people in this discussion that are saying look if you're just calling them out for not knowing that basic syntax maybe that isn't the thing to go focus on however I do think kind of bringing this back to some of the original points here basic syntax maybe not a big deal especially if they don't know the language but I do think that if
you're going to lean heavily on llms one of the traps you can fall into is not trying to learn more about what it's suggesting to you if you are a junior developer my perspective is I would not be totally bothered by this but I would be encouraging you hey when you're getting that llm output if you don't understand what it's doing go find out right you could ask the llm to explain in more detail what it's doing why did it choose to do that maybe ask it to give you different options try to do a comparison but I think if you're missing out on this part of the development then you're missing out on building a better Foundation now fortunately llms just will will keep getting better and who knows maybe you can just keep riding that wave and it'll all work out great and
you'll be very effective however I would just say that I do encourage you to go understand what it's outputting and I do think that that will allow you to build a better foundation and ask it better questions and prompt it more effectively I hope you found that interesting if you're using llms go have fun with it and I think that you can build some awesome stuff thanks and I'll see you next time
Frequently Asked Questions
What are the main concerns about junior developers relying heavily on AI coding tools?
I think the main concerns revolve around their understanding of the programming language itself. If a junior developer relies too much on AI tools without having a solid grasp of the language, they might struggle with basic concepts like function declarations or variable definitions. This can lead to challenges in pair programming and overall coding effectiveness.
Is it possible for someone to be successful in software development without knowing traditional coding practices?
Absolutely! I've seen individuals, like my original video editor Jamal, who have built entire web applications using AI tools without considering themselves programmers. While it's possible to succeed this way, I believe it's important to have at least a foundational understanding of the language and coding principles to effectively leverage these tools.
How should companies approach hiring junior developers who may rely on AI tools?
I think companies need to revisit their hiring processes if they're bringing in junior developers who lack basic coding skills. It's essential to invest in these individuals and ensure they have the support they need to learn and grow. If they're able to navigate the interview process successfully, it might just be a matter of adjusting our expectations and providing the right coaching.
These FAQs were generated by AI from the video transcript.