A novice anew
I’ve just realised that when I was learning about computers there were two separate things happening at the same time: the first, that I was learning to program in the abstract; and the second, that I was learning to program for UNIX. Programming in general is universally applicable - I can translate those skills to any programming environment without blinking - but the concrete UNIX skills it turns out don’t generalize at all.
At work today I've been forced to learn about COM programming and Microsoft Outlook scripting. I know nothing about either topic, so I feel like I'm about 14 again, ordering "Teach yourself [whatever] in 24 hours" books from Amazon[1] and learning a whole new bunch of facts. I've been cruising on the general-programming experience I have for the last several years - all of which is technique-based, not fact-based - and I've not stepped outside the UNIX domain for long enough that I had forgotten that there was a fact-based component to programming at all! It had faded into background awareness completely. "If you can't learn it by reading the manpages, it's not worth learning" presupposes an awful lot of knowledge about UNIX in general...
I feel like the abstract-programming skills I have have been refined ever since I was about 11 or 12, and that I will continue to hone those skills for the rest of my life. The fact-based programming skills, on the other hand, programming for a concrete system like UNIX or Microsoft applications, will likely need to be completely changed every 5 or 10 years.
This is great! I feel like I can look at programming with fresh eyes for a while. I can retain my sense of mastery of the abstract principles of programming, and enjoy the experience of being a novice exploring a new domain of knowledge at the same time.
[1] I really did almost order a teach-yourself-outlook-in-24-hours book - in the end I didn't, but instead bought a book by the same author...