posted on 12/01/07 at 12:21:21 pm by Joel Ross
In the past few months, the idea of how a developer continues their education has been on my mind a lot. There's been a variety of reasons for that, but the underlying theme seems to be how you keep your skill set sharp.
The first place this came up was interviewing. Not me interviewing any place else, but I have been participating in interviews at NuSoft recently. While I feel it's important to know what experience someone has and what they can do now, it's more important to me to know that they can adapt to the ever changing technological landscape. If I was interviewing in 1999, I'd be asking people how well they knew ASP and VB 6. If that person didn't have the skills (or desire) to evolve, they wouldn't have a job right now.
Interviewing is interesting because you typically don't have any kind of background on the interviewee other than what they've provided you. It's easy to say what you think the interviewer wants to hear, and it's up to the interviewer to discern what is actually the truth. But it's difficult to fake how you learn.
With my role in NuSoft, I've had the opportunity to ask people how they learn best. In my discussions, we came up with a few ways that you (at least theoretically) can learn:
- Books (or blogs, magazines, white papers, etc.)
- Hands on
- Training classes
I didn't have a huge sampling, but it was universally accepted that books and hands on learning were the best, and books were good for situations where you only had a small amount of time (an hour here, an hour there). I was a bit surprised that training classes were basically seen as useless except for those that teach obscure technologies - because most of what a training class teaches is available online now. Most of the feedback I got in interviews was also around those three techniques, with hands on being the most common response.
For me, I learn best when I am doing something. For example, I've read a lot about AJAX and it's many applications and sat through a few sessions at Mix 07, but it never "clicked" until I started using it and working through the intricacies. Same thing with building server controls. I learned more about server controls than I ever wanted to know when I built the Tourney Bracket Control.
Which brings me to the next step in growing. I know how I learn. But am I doing enough of it? Right now, the answer is a resounding no. I haven't had a chance to do something new in a while. My projects at work are the same types of things I have been doing for a couple of years, and my non-work time is spent with The Family, writing for RossCode.com, or working on Tourney Logic's suite of sites. Tourney Logic was originally founded as a learning experience, with financial benefits as a hope, and early on it was definitely a learning experience, both from a technical and business standpoint, but now, it's actually running smoothly and the most popular asset (Tourneytopia) is a big web application that just needs a few new features each year to keep it running - and while the features are cool from a consumer standpoint, they aren't really pushing the envelope technologically! So where does that leave me? I spend all of my time doing what I'm already proficient at and not necessarily what I think I should be doing to adapt to the next technology wave.
That's not to say I haven't been developing at all - I have been doing presentations a little bit, and I mainly do that for selfish reasons - I'm not comfortable up there, and by putting myself in those situations, I am now much more comfortable than I ever was before. I have three kids, and I'm constantly learning new ways to help them develop. I'm training myself to get even less sleep than I had been getting (I'm down to an average of 5-5 1/2 hours now). Not sure if that last one is good or bad!
So how do you get back into the groove of pushing yourself? I usually do it with a "pet" project - but I don't have the time for that right now. So I'm left with less invasive methods. I'm considering doing what Scott Hanselman has been doing - reading other people's source code. But again, that takes time. I think my only choice at this point is going to be to wait until I have a little more time. Right now, The Boy is up until 10 or 11, and since The Wife is too tired at night (usually sleeping on the couch), I end up spending time with him until he's ready to relax. I'm not saying that's a bad thing, but not much learning going on there. That doesn't leave me with much of my own time. That'll soon change, as he starts to sleep more and more.
Anyway, after a long rant, how do you learn new technologies and keep your skills sharp?