The real value of side projects

I’m a programmer.

I love learning new programming languages and inventing new programming languages. I like designing meta-frameworks that I could use to build frameworks. It’s so intellectually rewarding to reimplement existing functionality in new ways — to try to eek out a little more performance, or see if a different approach will result in more elegantly structured code. I play with expressing algorithms in the most concise way possible. I implement crypto algorithms and network protocols from scratch. I could spend hours or days tweaking or creating the perfect build system for a project. I really want to use bloom filters for something some day.

It’s so much fun. I love being a programmer.

None of that is particularly useful, most of the time. I learn a lot, which can be useful, but it’s rarely creating value or solving real problems. That’s why I do it on my own time.

At work I focus on building products that will excite my users, not myself. I try to avoid impressing my co-workers with my cleverness. I strive to write code that I would want to read. I hope the people I work with do the same. That’s why I hope they spend some of their own time playing with code.