Preparing an Online Dev Workshop
For the past year, I’ve been the facilitator for the Workshop Wednesdays initiative at the Developerish Community. We’ve had close to a dozen software-development-related workshops online and I have learnt a lot, having both presented and facilitated. During the pandemic, our workshops have been a great way for members of our community to share their knowledge and experiences. For me, presenting workshops has also been great for digging deeper into what I already know or thought I understood since explaining something verbally can be a lot harder than reflexively doing it. Preparing a workshop takes a fair amount of work and time, from finding where to start, preparing your topic, code, slides then actually presenting it. So here is a cheat sheet:
1. Finding ideas
Finding the right topic for your workshop can be the biggest reason for procrastinating doing one. Often times, however, the ideas are all around you. One great source of ideas is from your day to day work. What interesting library or framework are you using? What’s an interesting infrastructural problem you’ve resolved recently? Maybe it's meta, how did you improve how you’re measuring and estimating levels of effort for work? How did you improve your code review or hiring processes? In other cases it could be more soft-skill oriented or personal – how did you grow your impact in your team last year? How did you make a transition from software development to product management? What has managing teams taught you?
The list is endless and as long as you’re learning, reflecting and growing, there will always be something you can teach others. Make sure to write down all the ideas that come to mind over time, research them and read what others have written about the topic, saving bookmarks while you’re at it; they’ll come in handy. If a given topic has been exhaustively explored by others, you may still have a differentiating experience with it so avoid binning such ideas prematurely.
When it comes to choosing from your list of ideas, you can weigh each against the impact compared to the level of effort required to prepare it. If it’s your first workshop choose a low-effort idea to make it easier for you to build momentum for higher effort ideas in the future.
2. Define your audience and your goals for them
What’s their experience level? Are they beginners, intermediate or advanced? Do they need some preliminary knowledge to make sense of your presentation? Identifying the goals for your audience is important in helping you better define who they are and better refine your content for them.
For example you may be conducting a workshop on multiplication (the mathematical operation). Some of your goals might be that by the end of the workshop the audience:
- Will be able to multiply single digit numbers
- Will be able to multiply more than 2 numbers together.
- Will be able to multiply negative numbers
- Will be able to multiply fractions
Identifying goals and cases, you will uncover that perhaps your audience is better off memorising the multiplication table or that they may not understand fractions and negative numbers or that you may need to explain the order of operations or that you may need to explain multiplication in terms of addition and so on. You will find that each goal can be expounded upon even deeper but your audience’s experience level will determine how deep you need or want to go e.g. you can cover multiplication of proper fractions but mixed fractions may be out of scope.
This process of breaking down goals for the audience will feed into the next step of creating an outline.
3. Create an outline
Here's a generic structure for an outline:
- Introduce yourself
- Introduce your topic and what you’ll be covering
- 1st main idea
- Theoretical explanation
- Exemplification from the real world
- Illustration/exercise (diagram, flowchart, code sample/challenge, analogy, anecdote)
- Optional supporting idea and/or practical step
- Explanation and illustration
2nd main idea
Summary of learned skills
- Q&A (question-and-answer)
When starting, it’s important that the audience has an understanding of your level of expertise, background and motivations for the workshop like whether you’re representing your company or will be pushing certain products during your presentation. So begin by introducing yourself then introduce your topic; what you’ll be teaching your audience and your goals for them.
From there, you can begin digging into the substance of your workshop . A good framework for helping others understand complex concepts is the SEE-I method where you take the audience from the theoretical elaboration of the concept then a real world example then an illustration or exercise. Since it’s a workshop and your goal is to impart skills on your audience, err in favour of practical hands-on illustrations that your audience could do or see you do or pose questions to them to keep them on their toes. Of course, the SEE-I method's steps are not set in stone and in some cases where the explanations are too complex or irrelevant for your audience you will be able to do without some of the explicatory steps.
At the end of your presentation, summarise what the audience has learnt and be ready to field their questions.
Here’s a more concrete example outline for a talk titled “Version Control with Git” an intro for beginners (feel free to skim over once you grok the idea):
- Introduction - 3 min
- Who is Jane Doe?
- Objectives for today
- What is git? - 10 min
- Git is distributed version control. What is version control? What makes it distributed?
- Why do developers use git?
- Visual diagram demonstrating problem of 3 people adding lines to copies of the same file and how they need to reconcile changes when bringing it back together.
- Let’s install git
- Run command to install git
- How does git work? - 20 min
- Initializing the repository
git initand describe what the command does; places .git folder in current directory.
- Adding a new file to the repo
git addcommand and describe what staging and the staging environment are. Illustrate using
- Committing staged changes
git commitand illustrate using
git logto show the created commit
- Initializing the repository
- Git branches - 15 min
- What is a branch?
- How are branches used?
- Visual diagram demonstrating tree with 2 branches containing the same set of commits and how their histories diverge upon changes to one of them.
- Let’s create a branch
git branchcommand to show all existing and currently checked out branches. Explain branch naming conventions.
git branchto create new branch following naming conventions. Run
git checkoutto switch branches and ask audience which command can be ran to prove the branch actually changed.
Syncing to remote repositories - 7 min
… (other content)
- Summary - 1 min
- Q&A - 10 min
When writing out your outline, it is imperative that you allocate some time guesstimates for each section based on the total time you’ll have allocated for your session. It'll help you stay on schedule and trim the fat where the time is exceeded. The estimates won’t be very accurate in this initial draft but they’ll help you figure out what’s important and quantify the density of each concept. Editing is king and you should iteratively refine your outline, furnishing it with some margin notes where necessary.
4. Prepare the outline's content
An outline is like a skeleton that needs to be filled up with actual content so prepare the proofs of concept, code samples, questions for the audience and exercises that you’ll be going through in your session.
A slide deck is a really convenient way to pace yourself and deliver your content's key conceptual points. It’s also important that your slides are accessible, in terms of legibility, contrast and font-size. For that, you can find free slide templates on slidesgo.com that are also visually consistent and captivating.
Your diagrams and links to code samples or repositories will go on your slides. You can use free tools like Github Gists for smaller code samples or a Github repo for larger projects and diagrams.net (formerly draw.io) for making diagrams.
After the session it would be valuable to share the slide deck for the audience to revisit. If your presentation software has a speaker notes feature make sure the notes are intelligible for other people! Here is a list of other anti-patterns to look out for when making slides.
By this point, your workshop will have a reasonable semblance of completion but it’s not done yet. It’s time to rehearse the presentation. You can do this on your own but you’ll have better feedback by having at least one other person you trust listen to it. During rehearsal, avoid long stops to correct issues you find but instead take short notes that you can revisit later. Take note of how the presentation flows; whether certain subtopics need to be reordered, things that sound ambiguous or slides that throw you off and feel incongruent with the idea you want to deliver.
In addition, practice the audio-visual tools. You don’t want to be fumbling for the "share screen" button on Zoom during presentation. A neat lifehack with Google Slides is the presenter view where you can view your speaker notes on one window and the actual slides on a different window and any transitions you make on the speaker window will change the current slide on the slides window that you’ll have shared with the audience.
Having finished rehearsal, you'll have a better idea of the time-boxes you estimated for each section and resize them accordingly. You will also have caught grammatical errors, smoothened out the flow of your presentation and ultimately have a finished product!
With the right preparation, conducting an online workshop can be less nerve-wracking. It’s a really important skill for developers to have since our industry is founded upon and grown by the free dissemination of information and ideas – amongst other open-source principles. I wrote this because I believe everyone's ideas are valid and valuable so by refining our presentation skills we increase our capacity for impact. All the best with your workshop and let us know how it goes in the comments!