Forever Junior: The Skills AI Can't Develop for You(tech.criteo.com) |
Forever Junior: The Skills AI Can't Develop for You(tech.criteo.com) |
We had to scrape the boards and then analyze messages to see if we could identify the identity of the people running the schemes.
This was 2002 and I wasn't aware that the LWP::Simple existed in Perl (aka the requests library in Python).
I ended up using basic TCP socket libraries to connect to port 80 and do http requests. It was, to put it mildly, a major pain in the ass.
That being said, I learned a TON about how http, tcp, html, etc all work together. 20+ years later, I still use some of that knowledge when analyzing network protocols at work.
I mention this b/c nothing is stopping people from doing similar projects now. e.g. Linux from scratch [0] is one great example of learning fundamentals even though we now have 1 click "launch me a Linux VPS" options.
Joel Spolsky make this point too. Even if you are using Java, it's still helpful to understand how CPUs interact with cache because the highest performance comes from optimizing the whole stack.
Maybe because I experienced all those struggles I'm confident to delegate a relevant portion of my work to some LLM, being able to validate the results, knowing what to ask and detect easily when something was bad implemented or where I gave ambiguous instructions.
The catch is that I'm starting to do things where I haven't experienced those struggles in prior times, for example, web app development for my data work. I don't feel confident that I'm doing a good work, I'm just vibing, don't know the implications of some decisions. It doesn't makes me feel comfortable shipping things I don't really understand, but also is nice to be able to do things that previously required years of studying and practice.
We are on strange times.
The great part about LLMs is that you can chat with them about the design, ask them to compare it best practices, come up with a different approach etc.
> We are on strange times.
Agreed!
For example, I'm currently writing my own graph layout library because I'm not happy with Dagre and ELK.
When your day consists of lots of meetings with humans who have technically vague requirements, nobody ever meets you halfway. Your primary job becomes bridging those knowledge gaps mostly by yourself. You have to buckle down and make independent decisions that neither the stakeholders, nor the LLMs, can help you with. You get paid because the organization trusts you with lots of information that only lives inside people's heads.
In that situation, the LLMs are only really useful for familiarizing yourself with the existing code. They are completely irrelevant to writing code. You'll have entire two-week sprints to make very precise changes to only about a dozen lines of code, but the coding is not even 10% of what you're paid to do with that time.
In my opinion, this is what senior software engineering always was. Everyone raving about LLMs are basically code monkeys working in sweatshops.
There is a byline with a fairly google-able name (reasonably uncommon), and it appears to represent a real person who was formerly an intern at Criteo. English may not be their first language, I guess.
But yes — I think it is a little unfortunate in the context.
I don't know how to solve these. I tried Java internal tech talks (internal to my company) but most devs just weren't interested. I try ad-hoc with sessions with devs but very rarely I feel a bite.
The pipeline is collapsing. In 5 years, who will be the next senior devs? I have so few candidates to look at, and no new ones at all.
If your site doesn't load basic UI elements because they're designated as ads, you're not doing it right.
uBlock Origin has prevented the following page from loading:
https://tech.criteo.com/blog/human-skills-ai-cant-develop-junior-engineers/
This happened because of the following filter:
||criteo.com^
Umm, okay? The entire domain is blacklisted?https://archive.ph/Z6ucP and https://web.archive.org/web/20261007080049/https://tech.crit... have it (archive.ph has it in light mode, web.archive has it in dark mode with no images loaded and some odd page portions).
It’s like calling yourself a mechanic because you brought your car to a shop and paid for a mechanic to do an oil change.
Except that perhaps, deep down, all those people who thought software engineering should be a chartered profession were right.
So I'm not sure what I've learnt from it!
AI has gotten to the point where there really is no telling.
On one side, as an engineer, Did you really expected to delegate thinking to a Large Language Model? On the other side, How human of the author to believe the illusion that fluency means knowledge, can't fault him for that.
On one side, so you discover that the development of your personal skills cannot be distilled to a set of instructions to an LLM? How much more of you are you willing to capitulate? On the other hand, I think is brave to write the article confessing his growth.
There is a generation that has been trained using the current teaching methods where education in it self is a product as opposed the gym where the brain develop muscles. The muscles end up been develop at work. This is not about "seniority", this is about the character to develop yourself, to welcome the challenge. Which I guess good for him, he has it.
Reading these kind of things for me is weird.
(btw. I don't like the term AI because there is no I in AI, but that is a different talk, or maybe that self awareness is what makes it so confusing)
I found all the breaks grating.
We have a culture that I’ve pushed to always understand what the model is doing, even if you have to go back after the response action is done and walk through it step by step.
I encourage everyone to use AI to the extent that they feel comfortable and can do their jobs but I feel it’s necessary to always be able to do what the LLM has done if you don’t have access to it
Somewhere a while back (maybe it was in a Ruby CVE) I heard the phrase of "beneath and before" relating to the layer you're working in.
You need to know what goes on beneath the layer you are working on. If you're writing Java with Spring, you should understand how the annotations work and are wired in and how Spring does its magic. If you've got methods that call a database layer, you should understand the beneath of how the database is structured.
The before part is understanding what is calling the code you are writing. What is it providing you? How is the data structured? Or if you're responsible for that, how should the data be structured so that it is easier and more reasonable for both the code you're writing and the calling code.
However, that curiosity about the other parts is largely gone. I've seen this in 2026... but I also saw it in 2010 and to some extent even before that (though in the naughties I was at a tech company and surrounded by people who were genuinely interested and proficient at their craft).
Today, I'm working with people who seem to have had their meat-ware understanding frozen at Java 7 and unable or unwilling to progress... and they've been frozen at that for the past decade.
I'm not blaming AI for that - it's been a problem since the before times. The pipeline has been collapsing for a decade with the forever junior. AI has made the forever junior more "productive" and may have accelerated the problem. I lay this firmly at the feet of the people who haven't any action to better themselves and try to learn more of the beneath and before.
I think the reality is that schools need to stop pretending like they're producing good students just because they're doing the classwork, nobody wants to hire incompetent people.
I think the reason Anthropic thinks programming will be dead in "6 months" or whatever random nonsense they spout is because you might not need intimate knowledge, but they forget how over expensive all their tech is, by the time they can produce an always perfect software developer, will anyone be able to afford it?
Heck they can't stop people from jailbreaking the models, or from having it commit felonies.
what could possibly make you think that?
really? a scheme so that people will go: "oh I'm so curious about this technical blog, better unblock the entire domain on unblock!"
and that's their scheme for evading adblockers?
what?
Your custom library probably won't fall to a library-specific attack unless you were actively aiming for interoperability. However your custom library almost certainly has many vulnerabilities that you haven't heard of yet. Just a few weeks ago I saw a custom library (PHP) with SQL injection vulnerabilities, I couldn't believe it. I suggested to the client that if he still resists having another professional audit it, at least let some frontier LLM have a look. Yes, I recommended this guy to vibe code his security-sensitive code because "professional developers" today still miss the basics.
Amen. Nowadays it is borderline malpractice to not use a coding agent for checking the security of your code.
Need a few math operations? pull those in, instead of an entire math lib, for example.
I've always liked writing my own libraries and minimal frameworks for PHP, which seems to be a very unpopular opinion, but it almost entirely removes churn from your stack, which is nice for tools that may stick around for years or decades. I also never switched off jquery, preferring simple techs. I'm almost definitely operating at a smaller scale than most web developers here, though.
In spite of my above-stated preference, I used Django for my most-recent project, and don't regret that decision a bit.