I think about 5% of all developers out there nowadays are actually good developers. IME, most would have no idea what to do if you took away stackoverflow or their abstractions that make their day manageable.
A part of the problem might be that a lot I've met aren't at all interested in development, it's a job and they like the pay. They also just see it as a stepping stone to management.
When I do ask people at work how something actually works they rarely know. I get told just use 'x' it hides all that stuff away for you!
When I bring up basic concepts around coding, and therefore issues in their code, I get blank stares.
I mean, i've seen me having to explain to a C# dev with a few years experience why something like the following didn't work:
string s = "foobar";
s.Substring(1, 2);
Console.WriteLine(s);
He didn't know strings were immutable, didn't know how to understand the documentation for Substring and had never heard of immutability.Similarly, I've had to explain why something like the following prints 5 and not 6:
void Main()
{
int x = 5;
Foo(x);
Console.WriteLine(x);
}
void Foo(int x) => x++;
A developer this time who had no idea about reference types & value types.I don't know how we fix this though. As the people hiring and doing the interviews often don't know what they are doing either. So the blind hires the blind.