Over at my earlier post "Retired, Apparently", André Pena comments:
I would be truly interested in reading about how you think your cognitive abilities changed over time and how you managed to stay relevant in the job industry. I think 'What will happen to my career as I grow older' is a something most developers worry about.
There are lots of articles and posts about keeping up.
What I'll do here is write about what I personally have done.
Here goes:
Video, Audio, Disco (Latin for "I see, I hear, I learn")
"You can observe a lot by just watching." -- Yogi Berra
Among authors (fiction, poetry, essays), it's said that you should read 100 works for each that you try to write.
In the dev world, almost none of us read enough code.
- I read code in blogs, in books, and in GitHub projects.
- When I Google for know-how, I seek out example code, in addition to specs and ideas.
- I watch others code (and ask questions). I always always learn something.
Review Key Books Periodically
By review, I don't mean re-read. I mean that I page through, looking for things that before were not important for me (or at least did not seem so), but now may have become important.
Waiting at the car service place and leafing through the Ruby Cookbook I learned about the amazing Ruby gem contracts.
My faves:
- Pragmatic Programmer.
- Code Complete.
- Ruby Cookbook (your language may vary).
Learn New Skills at Work
(The point being to learn on the boss's dime.)
- When I was a mathematics teacher, I learned Fortran and developed a mathematics test generator.
- When I was a documentor (which was waaay before modern tools), I developed utilities to:
- Create tables of contents and indexes.
- Scan key code files for changes.
- When I was a documentor, I learned C and M4, to develop a markup processor.
- When I was a manual tester, I learned Perl, to develop automated testing.
- When I was a C# automation developer, I learned Ruby and Watir, to test web applications.
Volunteer for New Responsibilities
When I was a runtime libraries maintainer, I volunteered to take over development of a nascent library of vector-concurrent numerical functions, all written in i860 assembler. It's impossible to say how much I learned in the next couple of years.
Scribo (Latin for "I write")
I put code and text onto the Web.
I've contributed in my (now dormant) blog, to GitHub, to RubyGems, to Reddit, and of course to DEV. In doing so:
- I've learned new things: markdown, Ruby gems.
- I've had valuable feedback from others.
Embrace Trends, But Not Fads
"Be not the first by whom the new are tried, Nor yet the last to lay the old aside." -- Alexander Pope
It isn't easy to know the difference between a trend and a fad, but it's important.
Hint: If at a conference they're touting something you've never heard of, be wary.
For me:
- I was far too late in beginning to use IDEs.
- I spent too much time exploring keyword-driven testing, which was not suitable for the complex apps I was testing.
- I got to OOP in pretty good time.