What I find is more common though is working with very sub-par developers who have no interest in advancing their skills.
What I find is more common though is working with very sub-par developers who have no interest in advancing their skills.
One is learning "uber-programming" and the other learning excellent software engineering. The uber-programmer is using super-sophisticated algorithms and crazy efficient stuff with syntax or just crazy stuff. The excellent software engineer is working to make the complicated stuff look as simple as possible and be maintainable by the least sophisticated programmer possible.
The great thing is that in any given project, you can probably find an opportunity to improve your skill in one of these two categories.
When I've worked with subpar developers, it gave me a chance to do the uber-stuff they couldn't/wouldn't do. But writing code that solved problems "in a way even Bob can understand" is actually an interesting challenge even if it's different than database tuning or whatever.
being a good programmer includes not creating useless abstractions, so what you're actually saying is "when i last worked with poor programmers they weren't very good". and, in response to that: well, duh.
I'm lucky to be in a situation where I'm surrounded by smarter programmers. I'm learning tons and the effects have been very noticeable. Some "better" programmers can be hard to deal with but if you have patience and a willingness to learn you will benefit greatly.
Instead I feel like I'm a regular person caught in the middle of a case study on the Dunning-Kruger effect.