Have you ever thought of streaming your own development process? This post covers almost every facet of the streaming process to give you more than enough food for thought.
As for me, I've streamed more than five thousand hours of my own development on Twitch since 2015. I've had plenty of time to think about what works well and what doesn't.
Like most things, streaming has its ups and downs. This section will only consider the advantages.
Here's what I think are the pros (in order of decreasing importance):
This is the biggest reason that I started streaming back in 2015. I had just quit my job, and I was worried that I'd fall into a pattern of playing games and checking social media all day. When you have a live audience, it's much easier to avoid those traps.
In addition, most successul streamers stick to a schedule, which means that you'll form a routine around streaming. For years, I woke up at 7:40, showered, ate breakfast, and prepared for the stream. I wouldn't procrastinate or delay since people were waiting for me to start.
In short: your audience will become your friends and/or co-workers. This has a hidden benefit though: you won't go insane.
Streaming your work almost always implies that you're working from home. If you've never worked remotely before, then you may never have experienced what it's like to be alone for extended periods of time. It's not good. I once had a remote job where I was the only developer, and a series of bad habits led to my work time creeping into my personal time. That, combined with the lack of social contact, twisted my psyche. I've managed to avoid that insanity thanks to streaming.
One other thing regarding the community: don't be afraid or nervous about showing your code for quality reasons (you have other reasons to be worried about like leaks/security, but we'll discuss that later). For example, you may feel like you're not a "smart enough" developer or that your code isn't up to snuff. Strike those thoughts from your mind immediately and permanently. Anyone who judges you for your code quality isn't someone you want in your stream.
I think that the community as a whole is more than helpful. Make sure you're not misconstruing constructive criticism for judgment, and also be sure to set your boundaries. I've had to say to multiple people that I don't appreciate their comments for various reasons, and they'll usually improve after a warning.
By showing your development process to the world, you'll get feedback every step of the way. This manifests in many different ways:
All of these cases are examples of course-corrections before you've spent weeks or months in a vacuum. Keep in mind that you'll need to be amenable to feedback in order for people to break through to you.
Some people hate the term "influencer" for what it represents, but as an English word, it's just someone who influences. By putting yourself in front of an audience, people seem to immediately assume that you know more than you do. I remember doing my first piano-playing stream and being asked which digital keyboard I'd recommend even though I'd only owned maybe two in my entire life.
This impact can be nice for a couple of reasons. For one, you can use it to market products (e.g. affiliate marketing to earn more money). The nicer reason is that it gives you insight into what you're doing well beyond what your co-workers or boss might notice. For example, I've been told that I have good organizational and note-taking skills. Knowing that others value such skills would allow me to share it with future teams or even students.
Likewise, you may discover that a skill you have is uncommon. Maybe you can explain difficult concepts clearly or come up with algorithms quickly. Knowing your strengths lets you play to them!
You never know quite what you're going to get when you start streaming. Will someone else drop by with a huge audience? Will you make a breakthrough and get to celebrate with your viewers? Will you just have a relaxed development day where people are riffing on each other's jokes?
It's nice to spend moments like that with others. It also makes the occasional absurdities of development easier to bear.
I've purposely listed this last. Developers, at least in the US, make great salaries. The money that you earn while streaming will likely come nowhere near your salary, but it's still something! If you've already got a comfortable job, then you can at least feel less guilty when you treat yourself to your favorite restaurant or buy a new gadget.
Before we look at the cons, I want you to consider that many of them vary based on the size of your audience:
Again, here's a list in order of decreasing importance:
Developing is hard enough on its own, but once you add people's random thoughts into the mix, you'll find yourself context-switching constantly. Imagine this comic ratcheted up by
X is the size of your audience. You will lose track and forget things. And yet interactivity is the nature of the platform! If you're not going to interact with people while streaming, then it stands to reason that you could have just recorded yourself programming offline.
There are some mitigations for this:
Whether it's personal (like your address) or technical (like passwords), given enough time, you're going to leak something. Here are just a few unexpected ways in which I leaked data:
-v), then it has a very verbose flag (
-vvvv) that prints everything to the console, including the passwords that you're using. I didn't even realize it was doing that for weeks.
I'm introverted, and it can take a lot of energy to stream. You have to be "on" the whole time, handle issues with grace, and change contexts like a champion. That's all on top of your normal development, which is already a mentally draining process.
This is similar to leaks except that you're intentionally displaying your code to the world. Doing so leads to three issues:
In practice, these shouldn't have a major impact unless people have a reason to go after you, so don't make yourself a target.
I've seen many people start out streaming saying things like "if I get 1-2 viewers, I'll be happy!" or "I'm just streaming for fun." That's probably true at first. However, we naturally like seeing progress, yet we also adapt to our current level of success, so when we hit a plateau, it's easy to start feeling dejected.
The biggest mitigation here is to answer why you want to stream before you even start, then try not to lose sight of those reasons. For me, it was just to stay accountable, and even though I was meeting that goal, I still felt the desire to keep growing my audience.
That brings us to the mitigation which actually did help me: hide your view count from yourself. There's no real reason to have it showing in the first place since you should always act like you have a captive audience even if no one's there.
Ah, the flip side of the community coin. Trolls generally seek to ruin your day in order to draw attention to themselves. They'll say mean things, spam your chat, or try to get you to say something bannable on-air. The silver lining in this cloud is that for every troll you get, you'll find a hundred nice people.
Before doing anything else, you should envision what success looks like for you as a streamer; why do you want to do it? Your reasons are personal, but there's one that I'll specifically argue against: making it big. It's not that you shouldn't try to grow your audience or make money, but streaming development isn't a get-rich-quick scheme. In my experience, it's been a make-less-than-minimum-wage scheme even though I'm usually toward the top of the category.
Granted, I could have made more money if I'd pushed for subscribers, but it doesn't change my point: I think it's always good to set reasonable expectations and sporadically reevaluate. Go to the category you'll be streaming in and see what the numbers are like. At the time of writing this post, there are 158 Science & Technology streams on Twitch. 132 of them have fewer than 10 viewers. 121 of those have ≤5. It's likely that you'll end up in that bucket at first (and it could potentially last for a while).
Finally, be ready to conclude that streaming isn't meeting your goals. Streaming has its own overhead associated with it: setting up overlays and scenes, researching gear, rewatching your videos, etc. Streaming development adds to that overhead, e.g. the productivity hit that I mentioned. Thus, if it's not actually helping you, then that's fine! It's not like you're throwing in the towel; it was just a tool that didn't meet your needs.
There are guides online for setting up your software and hardware, so I won't cover specific steps here.
The bare minimum that you need is streaming software, e.g. OBS, which I use. For hardware, given that development work is relatively drab to watch, I advise using both a microphone and a camera. With a microphone, you can think aloud to fill some of the dead space, and the camera will add some personality.
In my opinion, the only other hardware to consider getting at first is another monitor if you don't already have two; it's nice to put OBS, chat, and any private windows on it so that you don't distract from the development process while viewing those.
Don't consider investing in an expensive setup until you know that you enjoy streaming. Over the years, I've upgraded lots of my gear. The best piece of advice I have around that is to upgrade the weakest link. For me, it was my webcam; I went from a Logitech C310 to a C922x and felt like it was a huge leap in quality.
Whatever you end up with, make sure to test it out by watching your own videos. How do you sound with no typing or with music? Are you physically obscuring your code with your webcam's output? Is it hard to hear you when you turn your head?
I actually don't think there's a choice here; you have to go where the audience is, which is Twitch (as opposed to Mixer, YouTube, etc.). There's a non-obvious reason why I wanted to mention this: depending on how far you progress with a streaming platform, you may eventually end up signing an exclusivity contract. I signed one when I became a Twitch partner, and it now prevents me from streaming on other services.
For now, this isn't important. In the future though, other streaming services may become more appealing for developers.
There are a few primary reasons to watch someone's development stream:
Here are some general tips on how to make your stream more enjoyable for viewers:
I wouldn't worry about which part of the development process you're streaming. There's always going to be someone out there who wants to watch! I've streamed myself documenting, designing, testing, refactoring, etc.
As I've touched on, growth isn't necessarily a good thing depending on your goals. If you only want to be held accountable, then having ten active viewers is better than having ten thousand.
There's a site called SullyGnome that tracks Twitch statistics. You can check out your favorite streamer there or even an entire category's stats.
Growth can come from several sources:
Once a viewer is in your stream, it's your job to captivate them so that they want to come back. Let's say you split your time on-stream so that you're developing for about 80% of the time and interacting with chat for the other 20%. In a 5-hour stream, that would mean that you're spending an hour interacting. When you have a small audience, that hour goes a long way. You can make a real, personal connection with each individual chatter.
As you start to get tens or hundreds of viewers, you'll only be able to say "hi" to each person and maybe remember some basic, broad details about them. This tension between interaction and productivity is core to growth as a development streamer. After all, the biggest difference between a live stream and a prerecorded video is interactivity!
You'll have to discover techniques to maximize your interaction time:
One technique that I use is to have commands for frequently asked questions, that way I'm not answering "which keyboard do you use" twenty times per day. However, when a new viewer asks that question, they don't know that it's already been asked repeatedly in the last few minutes, so they may be put-off by not getting a personal answer. This is the give and take of streaming, and you'll have to test different strategies to strike a nice balance.
Sometimes, a conversation is destined to go nowhere. You'll have to spot patterns in these so that you don't spend too much time on them. The patterns that I've noticed repeatedly are:
By shifting some of the onus onto your community, you'll free yourself up for the work that doesn't scale. Encourage them to welcome new viewers and answer their questions. Elect moderators to help out with this.
Here are some random tips that didn't fit anywhere else:
(I know this is a short section for now; I'll likely add links to specific blog posts that I have planned for the future, e.g. making overlays in OBS)
Streaming is just a tool. If you want it to work for you, then you'll need to know your audience and capitalize on your own strengths. You should expect very slow growth unless you're already e-famous, but remember that growth isn't everything! Twitch is and likely always will be a platform primarily associated with playing games.
My own goals with Twitch have changed drastically since I started 5 years ago, so rather than link my stream again, here's something that will help us both: my Development Efficiency course! Astound your new audience with your impressive efficiency. ⚡Check out the course!