Silly side projects — FunFunFunction #4
Today, I want us to explore the idea of separating the concepts work and play, and how you can become more productive and improve faster by doing silly experiments.
Lately, I’ve intentionally been trying to do a lot more silly experiments. I didn’t always do this, and I want to talk about what this strategy comes from.
When I started programming, it was purely because it was something that I wanted to do. I can’t exactly put into words what was driving me, but it definitely came from inside me somehow. Nobody told me to go program, I just did. It was some kind of inner fire.
Over time, I got good at programming, and it turned out that other people wanted programming done and were willing to pay me money for it. Nice! The problem was that once I started doing programming because other people wanted me to, the inner fire that got me programming in the first place just disappeared. The exact same programming that I used to do for fun when coming home, now felt like a horrible homework.
I didn’t know it back then, but I now know that there is a term in Psychology for this: The Overjustification Effect, where adding an external incentive to a previously unrewarded activity, will shift the motivation from inner to outer, undermining the pre-existing inner motivation.
To stay motivated, I started to do extracurricular work. I started doing things that were not asked of me, that I did because *I* felt it was a good idea. It could be extra features, refactorings, new processes, new patterns, using new tools, building new tools, learning shortcuts, installing editor plugins, tweaking the build system and so on.
It was good for my motivation and growth — my inner fire returned, and I was learning and growing because of the things I was trying out. But my output suffered. In some rare cases, these things were appriceated by my employers, but mostly it just made me less focused on shipping what the people that were paying me actually needed. I was a plumber that instead of replacing a leaking pipe went and replaced the entire plumbing of the house and painted it in rainbow colors. The end user didn’t get any happier, and I spent a lot of time on something that should just have taken a fraction of the time.
What I’ve started doing lately is to define and separate the concepts of work and play programming. Work programming is programming that I do because there is an external incentive, normally money, but it can also be just plain guilt — that is often how I get these episodes out on sunday night, because I know lots of you expect one to come out. Play programming, on the other hand, is programming that I do even though there is no external incentive at all, it’s just because I consider it worthwhile.
I try to keep play programming completely out of work projects. The opposite is also true, I try to keep work programming out of play projects, because I’ve had a lot of problems keeping play from becoming work — these videos are actually a great example of how something that started as play and then turned into work, because there was a big demand for it.
That is why I’ve started to do intentionally silly projects — projects that have no business value, no market. That way, they don’t risk sliding into work mode.
This allows me to switch between the mode of being a professional, where I’m focused on shipping the product that the customer wants, and the mad scientist mode where I do stuff that I want to do, in order to stay motivated, grow and have fun.
That it! Make sure you keep play out of your progressional work, but make sure that you do play a lot, and make sure that your play is silly so that your play doesn’t accidentally turn into work.
You have watched an episode of funfunfunction, a weekly show where we try to become more confident and excited about programming by exploring old wisdom, wild ideas and having fun.
If you’re a new, please introduce yourself in a comment below and tell us all what kind of programmer you are, and how you would like to improve.
Speaking of improving, don’t miss out on the next epsiode — follow me on Twitter @mpjme.
Until next monday, stay curious.