- cross-posted to:
- technology@lemmy.world
- cross-posted to:
- technology@lemmy.world
Junior Devs could never code, yes including us
Oddly enough, on my first development project I was paired with a “senior dev” who turned out just to be a guy in his 60s who had never actually coded before, so… just a senior.
I ended up doing 100% of the coding, but the guy managed to keep his job for a few months.
Agreed. I was hired for my first job due to an impressive demo, and making that demo became my job. I got there, but I produced a ton of tech debt in the process.
Agreed. A few year back the devs looking for quick fixes would go over to StackOverflow and just copy answers without reading explanations. This caused the same type of problems that OP is talking about. That said, the ease of AI might be making things even worse.
Hell, I would copy the question sometimes :P
Not in any way a new phenomenon, there’s a reason fizzbuzz was invented, there’s been a steady stream of CS graduates who can’t code their way out of a wet paper bag ever since the profession hit the mainstream.
Actually fucking interview your candidates, especially if you’re sourcing candidates from a country with for-profit education and/or rote learning cultures, both of which suck when it comes to failing people who didn’t learn anything. No BS coding tests go for “explain this code to me” kind of stuff, worst case they can understand code but suck at producing it, that’s still prime QA material right there.
We do two “code challenges”:
- Very simple, many are done in 5 min; this just weeds out the incompetent applicants, and 90% of the code is written (i.e. simulate working in an existing codebase)
- Ambiguous requirements, the point is to ask questions, and we actually have different branches depending on assumptions they made (to challenge their assumptions); i.e. simulate building a solution with product team
The first is in the first round, the second is in the technical interview. Neither are difficult, and we provide any equations they’ll need.
It’s much more important that they can reason about requirements than code something quick, because life won’t give you firm requirements, and we don’t want a ton of back and forth with product team if we can avoid it, so we need to catch most of that at the start.
In short, we’re looking for actual software engineers, not code monkeys.
Sounds nice? What type of place you work at? I’m guess not a big corp
We’re a somewhat big player in a niche industry that manufactures for a large industry. Yearly profits are in the hundreds of millions of dollars, market cap is a few billion, so low end of mid cap stocks. I don’t want to doxx myself, but think of something like producing drills for oil rigs and you won’t be far off.
We have about 50 software developers across three time zones (7 or 8 scrum teams) and a pretty high requirement for correctness and very little emphasis on rapid delivery. It’s okay if it takes more time, as long as can plan around it, so we end up with estimates like 2-3 months for things that could have an MVP in under a month (in fact, we often build an MVP during estimation), with the extra time spent testing.
So yeah, it’s a nice place to work. I very rarely stay late, and it’s never because a project is late, but because of a high severity bug in prod (e.g. a customer can’t complete a task).
Most hiring managers are looking for unicorns
Those are good approaches, I would note that the “90% is written” one is mostly about code comprehension, not writing (as in: Actually architect something), and the requirement thing is a thing that you should, IMO, learn as a junior, it’s not a prerequisite. It needs a lot of experience, and often domain knowledge new candidates have no chance of having. But, then, throwing such stuff at them and then judging them by their approach, not end result, should be fair.
The main question I ask myself, in general, is “can this person look at code from different angles”. Somewhat like rotating a cube in your mind’s eye if you get what I mean. And it might even be that they’re no good at it, but they demonstrate the ability when talking about coffee making. People who don’t get lost when you’re talking about cash registers having a common queue having better overall latency than cash registers with individual queues. Just as a carpenter would ask someone “do you like working with your hands”, the question is “do you like to rotate implication structures in your mind”.
judging them by their approach, not end result, should be fair.
Yup, that’s the approach. It’s okay if they don’t finish, I want to know how they approach the problem. We absolutely adjust our decision based on the role.
If they can extend existing code and design a new system (with minimal new code) and ask the right questions, we can work with them.
I’m just getting started on my third attempt at changing careers from sys-admining over to coding (starting with the Odin project this time). I’m not sure the questions you ask, while interesting, will be covered. Can you point to some resources or subject matter to research to get exposure to these questions? The non coding, coding questions are interesting to me and I’m curious if my experience will help or if it’s something I need to account for while learning.
We stay away from riddles, and instead focus on CS concepts. We’ll rephrase to avoid jargon if you don’t have a formal education, or it has been a while. Here are a few categories:
- OOP concepts like SOLID
- concurrency vs parallelism, approaches for each (generators, threads, async,’ etc), and tradeoffs
- typing (e.g. is a Python strongly or weakly typed? Java? JavaScript?), and practical implications
- functional programming concepts like closures, partial application, etc
- SQL knowledge
- types of tests, and approaches/goals for each
And some practical details like:
- major implementation details of our stack (Python’s GIL, browser features like service workers, etc)
- git and docker experience
- build systems and other dev tools
That covers most of it. We don’t expect every candidate to know everything, we just want to get an idea of the breadth and depth of their knowledge.
Love it. So much to look into. Appreciate your time.
Unless AI dramatically improves from where LLMs are today (in ways that it so far hasn’t), as a worker, I’m looking forward to the drastic shortage of experienced senior devs in a few years time.
On the flipside, I’m discouraging people from entering CS. The passionate devs will ignore me anyway, and those that’ll listen won’t stand a chance against the hordes of professional BS “devs” that’ll master AI and talk much prettier than them.
Don’t get into CS unless you’re passionate about the craft. If you’re passionate, you’ll succeed in pretty much regardless of the field.
All I hear is “I’m bad at mentoring”
There is only so much mentoring can do though. You can have the best math prof. You still need to put in the exercise to solve your differential equations to get good at it.
You get out of education what you put into it. You won’t be an artist from the best art school if you do the bare minimum to pass. You can end up as a legend of the industry coming from a noname school.
And some sort of “no one wants to work any more”.
I know young brilliant people, maybe they have to be paid correctly?
Poisoning AI with backdoored code is surely a real risk now? I can see this getting quite nasty.
They never could
Exactly, the jr dev that could write anything useful is a rare gem. Boot camps cranking out jr dev by the dozens every couple of months didn’t help the issue. Talent needs cultivation, and since every tech company has been cutting back lately, they stopped cultivating and started sniping talent from each other. Not hard given the amount of layoffs lately. So now we have jr devs either unable to find a place to refine them, or getting hired by people who just want to save money and don’t know that you need a senior or two to wrangle them. Then chat gpt comes along and gives the illusion of sr dev advice, telling them how to write the wrong thing better, no one to teach them which tool is the right one for the job.
Our industry is in kind of a fucked state and will be for a while. Get good at cleaning up the messes that will be left behind and that will keep you fed for the next decade.
Not that this is very unique to the field, junior anything usually needs at least 6 months to get to a productive level.
Kind of wish we went with more tradesmen-like titles. Apprentice, journeyman, master. Master software developer sounds like we have honed our craft. Junior/senior just seems like a length of time.
It generally is a length of time. Your title depends on the years on the job.
that s the point of being junior. Then problems show up and they are forcing them to learn to solve them
Has anyone else clicked the chat.com url in the article …
As someone who has interviewed candidates for developer jobs for over a decade: this sounds like “in my day everything was better”.
Yes, there are plenty of candidates who can’t explain the piece of code they copied from Copilot. But guess what? A few years ago there were plenty of candidates who couldn’t explain the code they copied from StackOverflow. And before that, there were those who failed at the basic programming test we gave them.
We don’t hire those people. We hire the ones who use the tools at their disposal and also show they understand what they’re doing. The tools change, the requirements do not.
I think that LLMs just made it easier for people who want to know but not learn to know. Reading all those posts all over the internet required you to understand what you pasted together if you wanted it to work (not always but the barr was higher). With ChatGPT, you can just throw errors at it until you have the code you want.
While the requirements never changed, the tools sure did and they made it a lot easier to not understand.
Have you actually found that to be the case in anything complex though? I find it just forgets parts to generate something. Stuck in an infuriating loop of fucking up.
It took us around 2 hours to run our coding questions through chatgpt and see what it gives. And it gives complete shit for most of them. One or two questions we had to replace.
If a company cannot invest even a day to go through their hiring process and AI proof it, then they have a shitty hiring process. And with a shitty hiring process, you get shitty devs.
And then you get people like OP, blaming the generation while if anything its them and their company to blame… for falling behind. Got to keep up folks. Our field moves fast.
My rule of thumb: Use ChatGPT for questions whos answer I already know.
Otherwise it hallucinates and tries hard in convincing me of a wrong answer.
I find ChatGPT to sometimes be excellent at giving me a direction, if not outright solving the problem, when I paste errors I’m to lazy to look search. I say sometimes because othertimes it is just dead wrong.
All code I ask ChatGPT to write is usually along the lines for “I have these values that I need to verify, write code that verifies that nothing is empty and saves an error message for each that is” and then I work with the code it gives me from there. I never take it at face value.
Have you actually found that to be the case in anything complex though?
I think that using LLMs to create complex code is the wrong use of the tool. They are better at providing structure to work from rather than writing the code itself (unless it is something simple as above) in my opinion.
If a company cannot invest even a day to go through their hiring process and AI proof it, then they have a shitty hiring process. And with a shitty hiring process, you get shitty devs.
I agree with you on that.
But how do you find those people solely based on a short interview, where they can use AI tools to perform better if the interview is not held in person?
And mind you the SO was better because you needed to read a lot of answers there and try to understand what would work in your particular case. Learn how to ask smartly. Do your homework and explain the question properly so as not to get gaslit, etc. this is all now gone.
Pretty easy to come up with problems that chatGPT is useless at. You can test it pretty easily. Throw enough constraints at it and the transformer starts to loose attention and forget vital parts.
With a bit of effort you can make problems where chatGPT will actuallt give a misleading answer and candidates have to think critically.
Just like in the past it was pretty easy to come up with problems which werent easily found on SO.
Same landscape. If you put in the time and the effort to have a solid recruitment process, you get solid devs. If you have a lazy and shitty process, you get shitty devs.
Evil me: Ask questions to which there is no solution but ChatGPT will happily give incorrect solutions to and will run itself in circles trying to answer correctly as you feed it error messages.
That’s simple. They use an LLM to find the right people for the job /s
Recently my friend was trying to get me to apply for a junior dev position. “I don’t have the right skills,” I said. “The biggest project I ever coded was a calculator for my Java final, in college, a decade and a half ago.”
It did not occur to me that showing up without the skills and using a LLM to half ass it was an option!
No wonder open source software becomes more efficient than proprietary one.
deleted by creator
I could have been a junior dev that could code. I learned to do it before ChatGPT. I just never got the job.
Im in uni learning to code right now but since I’m a boomer i only spin up oligarch bots every once in a while to check for an issue that I would have to ask the teacher. It’s far more important for me to understand fundies than it is to get a working program. But that is only because ive gotten good at many other skills and realize that fundies are fundamental for a reason.
Stack Overflow and Google were once the “AI” of the previous generation. “These kids can’t code, they just copy what others have done”
Yeah, and copy-pasting SO answers with no thought is just as bad.
And when copy-pasting didn’t work, those who dared to rise above and understand it, became better. Same with AI, those of the new generation who see through the slop will learn. It’s the same as it has always been. Software engineering is more accessible than ever, say what you will about the current landscape of software engineering but that fact remains undeniable.
I’m glad that AI is making it easier to enter into new areas of knowledge. I just hope it won’t be used as a crutch too far into people’s journeys.
Software engineering is more accessible than ever
This is key here. Having it more accessible, we see more people who do not want to learn but still trying to code. But we also see more people who wants to learn and create solutions.
I’m glad that AI is making it easier to enter into new areas of knowledge. I just hope it won’t be used as a crutch too far into people’s journeys.
Well said. Some of the most talented devs I know use Stack Overflow. It depends on how you use it.
All the devs I know use SO…
True.
As someone who can’t code (not a developer) but occasionally needs to dip my toes in it. I’ve learned quite a bit from using chatgpt and then picking apart whatever it shat out to figure out why it’s not working. It’s still better than me starting from scratch on whatever it is I’m working on because usually I don’t even know where to begin.