I've noticed this as well, a sense of false modesty. I know for myself I'm not as good as I want to be, but I'm also better than most of my peers. That's kind of the key thing: I may not know what the right answer is, but I do know that so-and-so just gave a wrong one. Too many programmers espouse their crapness to be able to claim someone else's crapness and shoot down arguments against their ideas.
At a certain point, you have to stop thinking about what your skill level is and start just doing. Spolsky used the term Architecture Astronaut, which I definitely was going in to my first job out of college. Now, I rarely think about architecture up front, I think about requirements and the fastest path to them, with the post step of eliminating repetition. This ties into YAGNI and 7 Habits and OODA and all kinds of different decision making strategies that it just feels right through and through. Architecture seems to fall out from that and makes up for a lot of my own failings for design.
Point being: we're all at certain level X, and our relative level compared to other people isn't important, it's what we do with our personal level to develop and deploy projects. I've seen pure procedural code written in object oriented languages that got the project done and got it done well. I've seen object oriented systems with perfectly defined abstraction hierarchies fall over on itself. Don't get me wrong, I'm not arguing against OOP with those examples, just saying "Code Elegance" be damned, you can't argue with "Shipped".
At a certain point, you have to stop thinking about what your skill level is and start just doing. Spolsky used the term Architecture Astronaut, which I definitely was going in to my first job out of college. Now, I rarely think about architecture up front, I think about requirements and the fastest path to them, with the post step of eliminating repetition. This ties into YAGNI and 7 Habits and OODA and all kinds of different decision making strategies that it just feels right through and through. Architecture seems to fall out from that and makes up for a lot of my own failings for design.
Point being: we're all at certain level X, and our relative level compared to other people isn't important, it's what we do with our personal level to develop and deploy projects. I've seen pure procedural code written in object oriented languages that got the project done and got it done well. I've seen object oriented systems with perfectly defined abstraction hierarchies fall over on itself. Don't get me wrong, I'm not arguing against OOP with those examples, just saying "Code Elegance" be damned, you can't argue with "Shipped".
Where was I going with this? I forget... oh well.