I used to do a lot of searching the Internet for a solution to a problem I ran into while coding and then I ended up having a bunch of web-links to fixes I didn't write. I got annoyed with myself about this.
Instead of searching the Internet I started really get to know the API and libraries of the languages I used and I got good books on the topics of software I develop. I slowly moved away from searching the Internet for a solution to using the books and delved into the language API. I now feel I've a deeper knowledge of the languages I work with and the techniques used to solve problems in my field.
Now when time is against me and I need a quick answer to a problem I search the Internet for an existing answer.
I work with and live near people who share the same point of view as you and to some degree I get it but I mostly don't agree with it. Here's why and I'm am absolutely not saying this is you!!! I'm just generalizing the type of people I interact with that share your angst. The person who typically fears losing their job (I have been around) has bought into a life-style that they chose and was typically based on their highest earning potential and expect to always be earning this good money. Now their under pressure to keep their well-paid jobs and life-style choices but why oh why did they have to go for the most expense life-style for their earning potential!? I guess human nature. You lose your job have a lower income so what's the worst? Readjust your life-style! I like the parent comment can think of far, far worse life events, far worse than the effect of having a lower income!!!
Does a lack of interest in solving (mechanical) puzzles imply you're a weak programmer?
I really don't think so: I think it all comes down to how you think - intuition versus logic. And I think people don't fall neatly into either category - it's a spectrum. Too much emphasis is placed in interviews on solving mechnicaly problems and less on problems that can be solved more suitably by itutition: design, feature improvements, re-factoring and some people (including me) I've found have to internalise the problem and can't just simply solve a problem as qucikly as those who are very mechanically minded.
And besides technically ability is part of being a professional(!) programmer working with others. The following should also carry significant weight: an ability to work with others, take criticism, lead others, be resourceful, get stuff done on time, write clean and readable code (not just solve the problem technically) and so on are from my(!!) experience not given enough weight!
Starting out in a new field (gym in this case) with unrealistic expectations (unrealistic training plan) and trying to meet these unrealistic expectations can quickly deject ones efforts. The issue is with setting unrealistic goals, and NOT asking for advice / direction from experts (gym trainers in this case) early on. It's the same problem faced the world round for anyone starting out in a new field with unrealistic expectations and lacking patients.
Yes, going to the gym with no set plan and allowing this plan to evolve will encourage you to go more often if you are the type of person who sets unrealistic goals and gets dejected by not meeting them. But this, I think is NOT the best way to go about achieving your goals, it's a slower path, asking advice from experts will shorten your path.
And taking Arnold Schwarzenegger as a role model is not a fair motivator for ones efforts. Trying to emulate the efforts of someone who's already long into their career without knowing all the "tricks of the trade" namely anabolic steroids is unfair to you. For me a better role model would be someone who's just a bit ahead of me who's already taken on advice from experts!
Do C/C++ compilers use staged (on-line and off-line) specialisation (removing control-flow dependant on run-time constants)? I suppose specialisation is more suited for languages executing with a virtual machine, like Java.
Instead of searching the Internet I started really get to know the API and libraries of the languages I used and I got good books on the topics of software I develop. I slowly moved away from searching the Internet for a solution to using the books and delved into the language API. I now feel I've a deeper knowledge of the languages I work with and the techniques used to solve problems in my field.
Now when time is against me and I need a quick answer to a problem I search the Internet for an existing answer.