We live in interesting times. As development gets distributed across the globe, you learn there are lots of people capable of doing your job. You need to keep learning to stay marketable. Otherwise, you'll become a dinosaur, stuck in the same job, until one day, you'll no longer be needed or your job will be outsourced to some cheaper resource.
So what do you do about it? Your current employer has an interest in keeping you where you are. They'll only train you in the areas they need, when they need to. You need to look out for #1. Nobody else will.
Here's a list of ways to keep you learning. Many of these can be found on the internet for free:
- Read books, magazines, blogs, and web sites. If you want to go deeper into a subject, consider joining the mailing list or newsgroup.
- If you really want to get deeper into a subject, get hands on - write some code.
- Always try to work with somebody better than you, a mentor. You never want to be the top guy. If you can't find anybody, consider moving on.
- Use virtual mentors. Find authors and developers on the web whom you really like and read everything they write. Subscribe to their blogs.
- Get to know the frameworks and libraries you use. Knowing how something works makes you know how to use it better. If they're open source, you're really in luck. Use the debugger to step through the code to see what's going on under the hood. You'll get to see code written and reviewed by some really smart people.
- Whenever you make a mistake, fix a bug, or run into a problem, try to really understand what happened. It's likely that somebody else ran into the same problem and posted it somewhere on the web. Google is really useful here.
- A really good way to learn something is to teach or speak about it. When people are going to listen to you and ask you questions, you'll be highly motivated to learn. Try a lunch-n-learn at work, user group, or local conference.
- Join or start a study group (a la the patterns community) or a local user group for a language you are interested in.
- Go to conferences. Many of the talks are online for free.
- Long commute? Listen to podcasts.
- Ever run a static analysis tool over the code base or look at the warnings in your IDE? Understand what they're reporting.
- Follow the advice of The Pragmatic Programmer and learn a new language every year. At least learn a new technology or tool. Branching out gives you new ideas you can use in your current technology stack.
- Not everything you learn has to be about technology. Learn the domain you're working in so you can better understand the requirements and help solve the business problem. Learning how to be more productive - how to work better - is another good option.
- Go back to school.
It would be nice to have the capability that Neo had in The Matrix, and simply download the information we needed into our brains. But we don't, so it will take a time commitment. You don't have to spend every waking hour learning. A little time, say each week, is better than nothing. There is (or should be) a life outside of work.
Technology changes fast. Don't get left behind.