How to Make Great Software Training Videos
Volunteers of America recently asked us to create training videos for the (awesome) CMS we built for them. We could have steered them toward the Spielbergarian talents — and budgets —of Zach Robbins, Viget's budding video auteur, but that would have been overkill. After all, the videos are for only a small group of internal people, and they're a supplement to other extensive training and support resources.
I knew the CMS best, so I got drafted. (Just call me Senor Spielbergo.) I made six videos, ranging in length from two to 10 minutes, in less than 30 hours.
Behold one of the final videos. Please enjoy my mellifluous, Morgan Freeman-esque voice.
Here's my guide to making great — or rather, perfectly and appropriately adequate — software training videos without fancy equipment, high-end editing apps, or unnecessary Waterworld budgets.
What I Used
- Microphone: Apple earbuds. Cost: $0 (already owned them).
- Screen recording software: Quicktime. Cost: $0 (came with Macbook).
- Cursor-focus app: Mousepose. Cost: $10.
- Text expander app: TextExpander. Cost: $35.
- Audio recording app: Audacity. Cost: Free.
- Video editing app: iMovie. Cost: $15 (but you probably already have it if you use a Mac).
- Computer: MacBook Pro. Cost: Let's say $0, since it's my work computer.
- Film Festivals Entered: Springfield. (Lost to Man Getting Hit by Football, natch.)
How I Did It
For each of the six videos, I started by clicking through that part of the CMS — not yet recording — and figuring out what I wanted to cover.
Then I wrote a draft script to narrate the on-screen action and read the script a few times aloud, timing myself and adjusting as needed.
Next, using Audacity I recorded a scratch audio track narrating the script, trying to approximate the pace and pauses of the on-screen actions I'd soon be recording. This scratch-audio step was crucial: if I had tried to record myself simultaneously reading the script and clicking through the site, it would have been all choppy because I'd have had to look back and forth between the script and the screen.
I exported the Audacity scratch track file as an mp4. Then, while playing the scratch track as an audio guide, I ran through the actual on-screen steps a bunch of times until I felt confident I could do them smoothly while recording. For example, I tried to practice optimal cursor paths to avoid accidentally opening an unrelated dropdown that would distract from the video's content.
Once I was comfortable, I started a Quicktime screen recording, pressed play on the scratch audio track, and tried to go through the on-screen steps as smoothly as possible. I tried to do a single take for the shorter videos, Cuaron-style, but had to break up the longer videos into multiple screen recordings.
I exported the Quicktime screen recording(s) and then opened, side by side: the final screen recording, Audacity, and the final script. I pressed play on the screen recording and, glancing between the on-screen action and the script, I recorded the final audio track.
Theeen, I created a new ... movie? event? project? ... in iMovie (literally still do not understand iMovie's confusing nomenclature) and dragged in the final exported Quicktime screen recording(s) and the final exported audio track(s). I made cleanup tweaks as needed, e.g. trimming the first and last couple seconds of video where the cursor moves on or off screen (because Quicktime was still recording when I moved the cursor out of the browser to stop recording). I sometimes had to shift the audio track(s) to better align with the screen recordings, and added a few fade-to-black transition effects for the multi-take videos.
I exported the whole thing — sorry, clicked the "Share" button (because why should iMovie use standard naming and UX conventions, right?) — and uploaded to YouTube.
Now Here's the Tricky Part
Overall things were pretty smooth; I came in under budget despite some ballooning video lengths. But there was definitely a lot of trial and error. Here are some pain points to be aware of.
The trickiest piece was dealing with phrasing and/or timing mismatches between the script, the scratch audio, and the actual on-screen behavior.
Sentences in the script often sounded stilted when read aloud, so I frequently had to adjust and/or improvise wording. Sometimes after running through the on-screen steps I realized I had left a key sequence out of the script.
Audio timing was the toughest thing to figure out. I tried to leave appropriate pauses in the scratch audio track to allow for things like entering field data, waiting for an image to upload, or scrolling to the bottom of a form to reach the Submit button. But my estimated pauses were frequently wrong, so when I was actually doing the screen recording my actions got out of sync with the scratch audio track. In a lot of cases I ended up having to re-record the scratch audio track.
The best way to mitigate this is to break scratch audio and screen recording into smaller chunks. That way if something's off, you don't have to re-record many minutes of audio or video.
There were two challenges related to content. First, I wanted to use representative content as I showed how to create items in the CMS, but I didn't want to force people to sit there watching me type text into a field.
To address this, I used the awesome TextExpander app: I created a "snippet" for each field's data that I was going to enter in the video. When filling out a form for the screen recording, I only needed to type the first word of the snippet and TextExpander instantly turned that into the full text for that field:
The second challenge was to show a populated site. For example, I wanted to accurately represent the public site navigation, and make sure there were existing items when selecting associations in a CMS field.
To address this, I went through each script and identified what content I needed to create beforehand. If a video script had me selecting an associated article, I made sure to create those articles first so they would be available to select.
Cursor Focus and Mouse Click Timing
Mousepose is a great, inexpensive way to focus on a portion of the screen and to denote mouse clicks:
But smoothly incorporating the screen focus and mouse clicks into the walkthroughs took a lot of coordination.
There's a keyboard shortcut to toggle the screen focus on/off, and a second keyboard shortcut to toggle the mouse click UI on/off. So in addition to making sure my overall screen movements were smooth and didn't introduce distractions, I had to make sure I was turning the focus and click UI on and off at the right times and in the right places.