I've now hosted a few workshops-- around graphics, C++, and microcontroller programming! I love making beginner-friendly, hands-on workshops-- people can go to one to get a chance to get their hands dirty, get advice from experts working in the field, and see if they might like a subject without committing to a full course.
They're also just another great way to bring a community together. I will never host a workshop that is just comprised of my friends or people I know in the industry. It's a fun way to bring people from all kinds of disciplines together and get to know lots of people in the greater community.
Of course, this is just how I do things. There are lots of ways to host a successful workshop, and I'd be curious to learn about what's worked for others!
Organize a group of workshop leaders, and have several mentors too!
In a workshop, having one-on-one mentorship is invaluable. I try to organize a group of workshop leaders-- people who are really on the same page in terms of the material-- as well as ask experts to raise their hands at the beginning of the workshop, so that they can float around the room and be available to ask questions. Being easily visible is important-- you might want to think about having special tshirts, badges, or hats in case people forget who the mentors are.
I typically put together the workshop materials with the workshop leaders-- we usually have a shared Google doc and presentation we add to in the days before the workshop, and meet about an hour before it begins to touch base. Doing it in a group makes the planning go a lot easier and the time commitment much smaller, too!
Technology & event promotion
I use Google Docs for the presentation, and Eventbrite for the event invitations/e-mailing attendees. Meetup.com is a great site for regular events.
For promotion, I use Twitter (I might be a weird case, but a lot of people show up just from a Twitter posting), but I also reach out to lots of local organizations I know-- schools, coding academies, nonprofits that help disadvantaged people. You can also use Facebook or other social networks, but I like these methods because they invite people in who aren't necessarily in my immediate network. I always limit the signups, usually 30 people, but try to stay somewhat flexible if I can. If I feel like the event is too unbalanced (not enough beginners, people of other disciplines, people from various communities) I'll focus more on reaching out to a variety of community organizations for help with spreading the word.
I can usually get event spaces for free by reaching out to local meetup groups, companies, schools, and organizations and asking if I can use a room. I highly recommend doing this instead of paying for a room-- you get a free space plus get to know the community! Win/win!
I try to find a room with a projector setup and tables that groups can sit around. I love seeing people make friends by happening to sit at the same table! It also works well for lots of other reasons.
Start with a presentation
I've followed the same format for almost every workshop I've hosted, and it's worked out well.
I start with a 15 minute presentation. The purpose of the presentation is to:
- Tell people how to initially set up for the workshop (link to download code, etc)
- Inspire people, talk about why the subject is awesome
- Talk about why I personally care about the subject
- Talk about how it's like to have a job doing this work
- Cover what we'll be doing at the workshop, set expectations
- Provide resources so that they can dive in deeper if they want after the workshop (I always e-mail the link to everyone)
The first slide of the presentation is always how to set up for the workshop, so people can do that while I talk-- you don't want people waiting for something to download or fiddling with setup when they can do that in the background of the presentation!
I also am always sure to share the slides, so they can refer back to it when they get home and don't have to copy all the links about how to learn more.
Picking the right examples
I also always like to set people up with ready-made examples, or at the least one example that is really easy to set up. It is amazing how much of a confidence boost it can give people to start with something that already works.
I also try to provide an example that can be tweaked in simple ways to produce interesting results. There are always people who feel really scared of the subject or have a harder time following, and sometimes spending the workshop tweaking values to understand the code is all they need to get a huge confidence boost. Confidence is a huge part of learning well.
And then of course, I always provide ideas for people who are more advanced. My workshops are aimed at beginners, but professionals always show up. And in fact, they provide a good source of inspiration to beginners! It's always fun to show people a more advanced project to give them an eye into what is possible with some experience.
I always provide a worksheet-- either printed out or easily accessible online-- so that people can work at their own pace and always have detailed instructions in front of them so they can potentially get through simple issues themselves.
I usually try to put the following in the worksheet:
- Description of how the ready-made example works
- How to tweak simple values in that example to produce interesting results
- Detailed explanation of a different simple example they can try
- Ideas for more advanced projects
Walking around the room
This is really important to do right, and part of why having lots of mentors and people who know the subject helps.
I start out with a few mentors identified at the beginning of the course who won't be doing any of the examples-- their job is just to help people.
We float around and help people out, trying to not spend too much time with any one person.
If there's a common confusion or a concept that can help everyone, we will sometimes announce it to everyone or write those notes on a whiteboard everyone can see (without embarrassing the person who asked for help).
As time goes on, I identify more advanced students and start connecting them with others they can help. They can go back to work on their project afterward or keep helping more people. People tend to do this themselves naturally, too. It provides such a great sense of community and an overall good feel to the workshops-- we're not talking down to people, we're trying to lift people up and show them everyone is valuable here.
I also always make sure that whenever someone is doing something particularly cool to share it with everyone (if they're comfortable with that). This inspires everyone else, and can make someone's whole night. :)
There are also sometimes issues-- usually it's someone feeling very scared or stressed about getting their project to work. I try to identify whenever someone doesn't feel comfortable and go to them immediately to try to help.
The workshops usually last around 2 hours. I never want it to go too long, because I want someone who has an otherwise really busy life to be able to attend. I try to keep it on a weekday evening for the same reason.
So, that's pretty much it! Here are the slides/worksheets from a few of the workshops I've hosted in the past (if there is a worksheet involved, the link will be in the slides):
Graphics Programming Workshop: http://www.slideshare.net/StephanieHurlburt/graphics-programming-workshop
Microcontroller Workshop: https://docs.google.com/presentation/d/1PEZR1g8zk3-53uzxlI_X9c-WB_FNyviZTq2SSoN5eDE/edit#slide=id.p