I’ve been programming for a while. With the exceptions of the occasional vacation and a year in college when I didn’t have a computer, I’ve written some code almost every day since 1993. I started with QBasic on a hand-me-down PC, then picked up a BASIC dialect for Wildcat! BBSs. After that I learned Pascal and C. I got on the Internet in 1995 and wrote my first web application not long after.
In college I studied computer science, and programming became my profession. Eventually I learned enough about it to solve many common problems without much thought. There are only so many ways to parse HTTP 1, for example, and I’d venture to say I’ve tried most of them.
There was always the possibility that I would become bored with programming. I’ve witnessed this happen to other professionals. They get tired of keeping up with the latest technologies, and seeing wheels reinvented by the next generation.
The situation is exacerbated by the fact that as you progress in your career, employers want you to focus on applying skills you already have. They expect your productivity to be proportional to how much they pay you. That’s understandable, but has the effect of leaving you less time for learning on the job.
I’ve found that working on personal projects in my spare time helps me continue to learn and grow as a professional. I have the space to experiment, fumble my way through, make mistakes. I learn new technologies and new ways of approaching problems. I study subjects that are adjacent to my work as a programmer, like marketing or requirements elicitation, in order to get a better grasp on the big picture.
Another benefit is that there are often opportunities to share new knowledge with junior colleagues and students. I’ve found myself teaching something on Monday that I learned on Sunday afternoon. Docendo discimus: “by teaching, we learn”.
Personal projects are slow going, of course. I don’t have nearly as much disposable time as I used to. And there are many other things I want to learn and do with that time besides coding. I try to find synergy between my interests. For example, my passions for history and the humanities have led to developing software for museums and archives. Some of the best work I’ve ever done is work I wasn’t paid for, but did for the love of it.