Live-Coding to Learn, Share and Encourage
"Start Streaming." Two simple words. They seemed so innocent. How could I know that a small button with those words would bring such a large change to my life?
Who in the world would want to watch someone write code? Good question. But nearly two years ago I found myself watching Jeffrey Fritz wearing a pirate hat, playing sound bytes from "Dude, Where's My Car," and yes, writing C# on Twitch. The community he had built was welcoming and supportive and his approach of pair-programming with viewers while injecting humor really resonated with me.
At the time, I had been developing with C# for nearly 20 years, and had been leading a team of developers for 10 of those, but had never taken the time to attend a meet-up or conference. This was my first step into a developer community outside of my workplace and I was hooked.
I quickly became active in several technology Twitch streams and was sold on this medium for teaching and supporting developers. While I had supported and taught teams within my organization, I saw live-coding as a platform to positively impact even more people.
So finally, one afternoon in February, I pressed that small button with those now infamous words; "Start Streaming."
Lights! Camera! A-ha!
I'm thankful that Twitch doesn't retain streams indefinitely. Those first streams were rough; hours of talking to myself or a handful of silent viewers. Fortunately, many of the friends I had made in other streams joined me and were fully supportive.
I spent those first few months doing what I knew: C# & Angular. I was working on client projects that I thought people would find interesting. I would stream for three to five hours and then watch the replay to see what I could do better.
Then it dawned on me; I was starting each stream from a place of knowledge that viewers might not have. I had spent 20 years writing C# so there were things that I instinctively knew about the language, the tooling, or available libraries. While that knowledge helped me build solutions for my clients, it could alienate people new to software development; as I was expecting viewers to come in with that same (or a close) level of understanding.
Let's Learn Together
During this time I was watching Brian Clark (aka Clarkio). He has a blurb that he goes through whenever someone follows his channel, but it always ends with "sit back, relax and let's learn together." I've heard it said so often that it's permanently imprinted in my brain; so it's no surprise that it was the first thing I thought of when thinking of how to solve my problem.
Based on that simple phrase, I decided to completely change the goal of my streams. I would no longer work on client projects and rarely use C# or Angular. Instead, I would spend each session doing something I didn't know how to do so we could literally "learn together."
This shift made a tremendous difference. Viewers would teach me and vice-versa. Suddenly a new viewer could contribute and be apart of the project on their first visit and as an added bonus, I was learning new technologies.
Made For This
Within weeks, messages started coming in from viewers enjoying the change. As one viewer put it: "makes something that would normally be dumbfounding look approachable." These messages completely altered my outlook. I began to realize that while I loved building software, it had never brought the sense of fulfillment that I found in helping others learn and succeed.
Those messages, coupled with encouragement from others, caused me to realize that I was in the wrong line of work; so I started working towards a change to developer advocacy. After several months of resume building, giving talks at various meet-ups and conferences and help from friends, in October I became a Developer Advocate at Vonage. I'd love to tell you more about that, but this post isn't about DevRel. I will say I've never been happier with my work.
Viewers. Friends. Family.
One consequence I didn't foresee was relationships. One of the best examples of this came just before Christmas when a viewer arrived to say "Hi all, I can't stay and watch. Wife and I are at the hospital and just had a baby. His name is Oscar."
Reflecting on the stream later I realized that so many of these viewers had sneakily become my friends. We weren't only talking about code, but about life. We were encouraging one another. When a stream didn't go live, I missed hanging out with my friends. When someone misses a few streams, I start wondering if they're okay. I admit this has been one of the best outcomes of the stream and I really do enjoy working with each one of them.
So Should I Stream My Code?
Nearly every week I hear "I've been thinking of streaming my code, but I don't have X." My response is always the same; if you have a microphone, you can stream. Yes, ideally you'll have a webcam, but not all streamers show themselves and it's not required. Green screens, sound effects, etc., while nice, are not required. All you need is some type of streaming software (OBS or StreamLabs OBS), a microphone, and a willingness to share what you're developing/learning with others.
Like blogging or presenting talks, streaming is simply another method to teach, help or encourage others. Any time you have the opportunity to do one of those things you should.
Of course, I should provide a warning. In the span of streaming for a year I have changed careers, gained a plethora of great friends and learned so much more than I have taught. You may be amazed by how your life is impacted by sowing into others. If you feel you can handle that, then it may be your turn to press that little button with those two innocent words; "Start Streaming."