See also post on “beat us” to understand why I feel less competent with cpp.
Nowadays I feel more competent developing in linux than windows.
If you look hard you realize this is relative to team competence. If my team member were familiar with linux but struggling in windows, then I would feel very differently!
Same thing could happen between java and Quartz —
in a java team, my Quartz know-how may be quite visible and hard to match.
Perhaps the defining examples is Perl. In so many teams no one knows more about perl than me. When perl was important to the team, I felt very competent and strong, and almost effortless. In GS, there were several perl old-hands, but I still felt on-par. Key reason – not many people specialize in perl, and also none of the OO stuff was important in those projects.
I gradually grew my competence in java. My theoretical knowledge grew fast, but competence is not really about IV questions. More about GTD know-how where instrumentation (including tool-chain) /knowledge/ is probably #1.
Big lesson — get a job to learn portable skills. You don’t want to do years of python programming but only in some proprietary framework.