A couple of years ago, I was chatting with some colleagues about training courses. Tim, my then boss, asked whether the company was responsible for training us, or whether it was up to us (n.b. it wasn't the company). Around the same time, I read Eric Sink's career calculus article, which was quite inspirational for me. The gist of the article was that improving one's career is best done by continually learning.
I've been mulling this over recently, and coming up with ideas for improving myself as a developer, and as an employee.
The first step in getting better at something is to want to get better at something. For argument's sake, let's assume that you want to get better at being a developer.
In general, learning can be passive or active. Passive learning includes reading, listening and watching, and active includes imitating, experimenting and practising. Both are important. Spend time reading articles on developer websites, developer blogs, listening to podcasts, and watching channel 9 videos are all ways of passive learning.
There are two kinds of books for developers; one kind is for specific languages or topics, such as an ASP.NET guide or Perl reference; the other kind is books about good programming practice, such as Code Complete, or Coder to Developer. Most book-reading developers I've come across favour the first kind, but the second kind are arguably more use in the long-term.
Obviously it's important to know about the subjects you work with often. It's also important to read about subjects that aren't directly related to what you're doing at work at present. Everyone reads about what they're doing at present (unless they're an expert at it already), so although you're getting better by simply doing your job, so is everyone else. If, for example, you've heard of regular expressions, but don't know what they are, then when you come across a problem easily solved with regular expressions, you won't think to use them. If, however, when you heard about them, you thought "Ooh, I wonder what they are", and spent 15 minutes reading up on them, then you may consider using them to solve a problem quickly. Hoorah.
It's true that many of the unrelated things you read about may never be useful. That isn't a valid argument to avoid it; you'll never really know which things will be useful or not.
Keeping a list of things to research is a good idea. Phil Winstanley has one here, for example.
As for active learning, writing experimental applications can be really useful for understanding something more fully. You don't have to finish them. The application is just for learning. It might be slightly useful to you in something else, for example, using regular expressions for URL rewriting on your website. Of course, your tinkerings might end up being really useful as a proper application, in which case you can sell it as shareware, or put it online with gradients and rounded corners and wait for Yahoo to buy you out.
Hanging out with clever people is rewarding. It's really hard not to learn something by going to conferences, user groups, training courses, unconferences and geek dinners. When you're there, speak to as many people as you can. If you're shy, here's what to do.
- Introduce yourself
- Say "What do you do?"
- Listen to the answer
- Ask a question based on the previous answer
- Repeat the previous two steps
Try and stay in touch with people that you meet, if at all possible. Not only do you get to learn stuff, you get to build up a set of contacts that might be useful next time you need a job, a place to stay, help with a hard subject, or goodness knows what else.
If you have half an idea for a great new website, then try it. Have a go, and see what happens. If it's useful for you, then it might be useful to someone else. Keep trying things out, and add little things often.
If there's something that might not be possible, tackle that first. If it is possible, you know you've cracked the hard thing first. If it's impossible, it's best to know early on, before you've wasted time on the registration screens.
Explaining something to someone else makes one think about things more, and you get feedback which you can learn from. Start blogging about the things you're learning. Release your successful experimental projects as open source. Look for opportunities to speak at user groups or events.
Be helpful. If the guy in marketing is having problems with his spreadsheet, have a look at it for him. Write quick and dirty applications to help people save time or administration effort. If you work in a big company, introduce yourself to people (ask questions, listen to answers etc.)
Admit when you're wrong, and fix the problems you cause. It's fine to make a mistake, as long as you make it only once, and respond responsibly.
Be inquisitive. Find out why something works the way it does, why a procedure was introduced, or why the bizarre spreadsheet has to be used. You may become more tolerant of a bad situation if you know the reasons, or you may be able to offer a better solution.
You can't change your personality, but you can change your character. Find people with characteristics that you admire, and copy them.
To do all (or some of) this needs time. You'll probably have to stop doing something else less important. One example of something less important is watching television. Have a think about every TV program you've watched over the last week, and decide on one or two that you can live without, and don't watch them again. Do you really need to watch Eastenders? What's so important about the sad little lives of fictional characters, compared with the excitement of your life?
You might decide that getting drunk three times a week, although fun, isn't totally necessary, and you could skip one night in favour of getting better.
If you're young, single and childless, you'll probably have more time than me, and you might even have time to get bored. If you're bored, read up on something interesting.
Use some of your lunch break. Read or listen to stuff on your commute.
Some of these I've been doing for a while; some I've got to work on. This is as much a prod to myself as it is advice to you, but I hope I've got you thinking a little.
[Tags: learning career training]