Question is, what do you do with the juniors who never get it? Those for whom mistakes/inefficiency aren’t just “mistakes” but are their normal mode of operation? I’ve had juniors who I did this “well, I’d be lazy and just use a library/script” routine on, and they essentially ignored me and went straight back to what they were doing. Either they were afraid of admitting they’d gotten it ‘wrong’ and were unwilling to abandon that method they’d personally thought of, or they genuinely didn’t even agree that they were struggling in the first place - in some weird way they must have ENJOYED struggling and thought it meant they were learning or solving something hard.
> in some weird way they must have ENJOYED struggling and thought it meant they were learning or solving something hard
I'm not sure why you're incredulous about this? If you're struggling to write your own JSON parser, you are learning something new by doing something hard. Maybe you're not learning a lot (if you're just brute-forcing it), but you're still learning. Being in flow means you aren't learning, it isn't deliberate practice.
If somebody was wasting a lot of time rewriting a library instead of using it, it might be time to have a discussion on learning vs delivering value. I think 20%-30% is the sweet spot of learning vs producing.
I think enjoying the struggle will lead you wrong more often than not. I normally find that if I’m really struggling, it doesn’t mean I’m learning, it means I’m missing some information and I need to seek guidance. I’ve always learned more from looking at a successful existing implementation than trying to brute force my own solution (though it’s fun/useful to have a pop at something on your own first, of chorse). Sure, you need some tenacity and concentration, but I don’t understand people who will happily and repeatedly bash their head against a wall for hours without ever checking whether there’s a way around the wall!
> what do you do with the juniors who never get it?
It's kinda weird, because I only get the juniors that are on the fast track for promotion. I'm just supposed to fill in any holes on their knowledge sets for React, NodeJS, and some of the legacy applications in house and pass them along. They'll usually only spend like 3-4 months with me. Someone who isn't learning gets sent back to the general junior developer pool for a bit longer.
> Question is, whad to you do with the juniors who never get it?
How about nothing? Just because their approach isn't the one you would take doesn't necessarily make it wrong. You've clearly offered your help, but if they don't want it, that's their decision. Some people have a hard time learning from others' mistakes and need to make their own.
Does their code produce the incorrect results or are they unable to complete their tasks in the alloted time? You (or management) can push them reasonably on that; otherwise, embrace the idea that they can still be effective without doing everything your way. You might even be able to learn something from them.