Making the case for building something useless
Yesterday I answered some questions in an "Ask Me Anything" thread at work. One particular question was both challenging to answer, and got to the heart of how I think about side projects:
You've spent a ton of time on your Winamp project but outside of a lot of press, it didn't have a lot of impact in terms of people using it. How do you feel about that and would you do something different in the future?
This is a really good question, and one I've spent a lot of time thinking about. I gave a talk at a JS meetup in SF entitled "Build Something Stupid", and despite a non-trivial number of abandoned blog posts on the topic, have never published anything, so I was grateful to be forced to commit to a response. Here it is:
It's fun
In the same way that gardening or model trains are perfectly valid hobbies, it's good to remember that even thought software has the potential to provide value to people, you are under no obligation to optimize for that in your free time. Providing value is important and hopefully your work provides you the tools to maximize for that, but when I get home, I appreciate being free from that requirement. I enjoy being able to follow the path that looks most interesting, or seems the most fertile for learning, without having to weigh the trade-off of what that means for my "customers".
It has provided me value personally
When I started Webamp, my JavaScript experience was limited to hacking JQuery plugins together without really understanding anything that I was doing. Webamp was fun enough that I looked forward to coming home each night to working on it. In the process I taught myself "vanilla JavaScript", and eventually when that didn't scale, React, Redux, and other tools. My experience gave me the confidence to drive a migration toward these technologies at work, which ended up being good for my career there.
Many of the problems which this project forced me to solve were not problems I ever would have come across in my day job but were valuable in my day job once I learned them.
Exposure has a value all its own
The exposure this project has received has enabled me to connect with people that I never could have otherwise. Nullsoft's founders, former Winamp developers, notable Winamp skinners, people at the forefront of the Web Audio API and many others. Theses are all people from whom I have learned a great deal, and I wouldn't have had the opportunity to connect with otherwise.
Webamp's exposure was also directly responsible for my current job. A recruiter noticed it on GitHub and in my interview loop, multiple people had heard of it. This gave me an opportunity to talk about something that I was passionate about, and had put a lot of thought into.
I dunno
I'm sure there are potential projects which could have had all of these advantages: fun, educational, popular, and provided real value too, but identifying such a project is not easy, especially when you are relatively inexperienced. In fact, I feel like I caught lightning in a bottle finding a project that had 4/5.
Maybe with the insights and connections I've gained from this project and others my next project will be more focused on providing real value, but I'm not making any promises.