Thoughts on the "why" and "how" for live coding #scicode
For the last two or so weeks, me and Chris Madan have been coding live on our Twitch channels. I wrote a little about how this came to fruition; we created a weekly (and more publicly promoted) show and there have been some great ups and critical downs!
I initially had a pretty long post about "why". Reading it back, I can summarize why stream coding live in a few different ways:
It's fun. Some things just can be fun without a point. Video games are like that. It's just harmless fun most of the time. In this case, there's a larger point than simply "harmless fun" -- the codes being written are usually things that have some use beyond just demonstrating we can code things in Python or MATLAB. But I can find it fun too, not just self-serving. And viewers also seem to find it entertaining as well as informative, and that makes me believe in the value of live coding.
It helps move projects along that may have been sort of stagnant. Most people I know who code have projects laying around that they have been meaning to get to. Coding live can give an all-important social nudge for someone to finish a project. This isn't a novel concept -- on Twitter, some people like to use the #madwriting hashtag to rally together some social accountability for writing in a Pomodoro-like writing session. For some people, it works.
It's important for me to demonstrate "the process". I think a lot of coding hesitation from prospective coders is due to a "where do I start?" and also a "everyone is already so good". This is a reason that a lot of people don't like going to the gym. They don't really know how to work out and they think they are being judged by others around them because they maybe don't lift as much weight or all these other comparisons to others who are also at the gym (weight, looks, whatever). So the process of beginning code or being a novice at coding is important to me because it breaks down that idea that all people who can talk about code are also 100% knowledgeable about the realm of coding and all things code. That's just not true and showing how to solve problems live or how I think through things helps -- whether it's just helping myself out or if others watching are also finding what I do as helpful.
It's interesting to try out new social media. I'm a fan of trying out new things. For awhile, I enjoyed sharing snippets of science via Snapchat -- and I still do it occasionally. Streaming live code is not so far removed from sharing my daily science life with people around me (via Twitter or in real life or through different chats). If I can reach a new friend through a new medium, then I think it's worth a shot.
I like trying to build audiences. You could also say "communities". The social component is something that fascinates me. This isn't my first attempt at building an audience -- nor would it be my first failure (or success) in building an audience. My own personal enjoyment in watching people come together under a banner is rewarding to me because I feel like I helped foster connections that may not have been there before, or gave rise to opportunities that may not have been as available through any other means. It's cool to help people find each other.
Obviously this is more elaborate than "press the 'stream now' button". By how, I'm more talking about different ways to achieve these whys. The current co-host format works well, but it isn't the only possible way to stream code. My current concept of these streams are split between the educational coding side and the entertainment commentary side.
One idea I had was to rotate in different coding hosts while I give commentary. This would keep content fresh but the "personality" aspect consistent (at least from me as a host).
Another idea would be flipped -- I would be coding and I'd have different people (most likely vastly more experienced in code) come in and help me out. This is a bit more exploitative though (because it'd basically be me getting free one-on-one help) but it would be less of a barrier for people who are good, knowledgable coders but don't want to live stream the coding process on their own. Using me as a vehicle would let them flex their knowledge live without having the pressure to be 100% correct (since it's not necessarily their project).
Keeping the current format (static co-hosts, rotation of who codes and who is commentary) is also viable and something that is proven to work. I'm having fun and it seems like our viewership numbers from week 1 to week 2 have increased. So we're doing something right.
There's a few alternatives to these big three. One alternative is 100% live coding all the time. Nothing is stopping me from streaming anytime I open MATLAB or Python. There is even a live coding website like Twitch where people stream live 24/7. So this isn't too far-fetched, and it also isn't an issue of attracting viewers either (a few nights ago at around 3 or 4am, me and Chris did a short stream and had people watching). But an issue here is that without any specific plans or schedule, people would just have to pop in and out of my streams before anything "good" happens (e.g. a few nights ago I started coding at 10pm but had errors to debug; that's why I didn't stream live until 3am, once I had a fix on all the big, boring bugs). Another alternative is to increase the scope of live coding to live science. The majority of my work is on the computer -- not just coding, but analysis and writing as well. Why not just stream everything? Wouldn't that be even more about "showing the process"? Again, a few boring issues here -- who wants to really see me write out different statements and proof read and comment on articles? But on the other hand, this would open the door to more things -- I like using LaTeX to write manuscripts but that isn't necessarily something I'd live stream in our live coding sessions.
The most likely solution is actually the most bleak of the outlooks: never live coding again. I have set this "season" of coding to be 4 shows-worth (once every Monday through October). I have my own personal goals about how these streams play out, and if my expectations aren't satisfied to some degree then I'm not so sure I'll be motivated to live code again.
But I do know that up to this point, live coding is something to be explored more and from the handful of people who are sticking their heads in to watch -- you're making me think it's worth pursuing. All positives up to this point, hope the next coming weeks are also as positive. After that, I'll take some time to think about what the next move will be.