Taking time to have fun coding with stuff like this is a bit underrated, in my opinion. When I worked at Fog Creek, I once redirected joelonsoftware.com to my computer (but only when viewed from inside the office), where I had carefully added a new entry, entirely in Joel’s voice, about how the company had not been successful as-was, and how FogBugz was, effectively immediately, completely open-sourced—with download link. To do that required working with sysadmins to alter DNS, learning how routing works, figuring out how to set up IIS properly on my computer, hacking CityDesk, and more—all skills I wouldn’t have picked up for awhile otherwise, and all in the name of a joke. Doing stuff for fun can be a great motivator.
At my work, there is a tendency for people to joke about some “absurd” idea to solve some crazy problem we have. Every time, I kind of wonder if that idea really is absurd. There is always pushback saying it’s not really an efficient use of our time but often the underlying issue is a tremendous waste of time for us. We are just thinking so incredibly short term, especially with agile development pipelines, that we never really spend the day or two to flush out an arbitrary moonshot. These are the dinky little tasks that I find the most interesting because it’s trying to solve hard problems or at least clarify the problem space but it seems to be too high of a risk for wasted time money and effort for my team.
Not quite that, but I have done what amounts to Enterprise FizzBuzz in this capacity to learn stuff, and it does indeed sometimes end up demonstrating some crazy idea actually does work in practice. For example, Miniredis (which you should not use in 2017 under any circumstances whatsoever) began as a joke about how we could totally use Redis on Windows back in 2009; we just needed to write our own version from scratch. Which I then did…and which was such a short and tight code base that we actually did use it, shipping it to several thousand customers.