I've just recently organized a workshop to popularize the Kotlin programming language. I like Kotlin a lot, but I cannot say I mastered it entirely, so this was quite a challenge for me. I like to push my boundaries a bit further every now and then and since presenting in front of group of people is not something that I do every day. I consider this to be the best proof that individual truly understands the topic. And also, knowing something does not necessarily mean one will be good at explaining it.
So as this blog mainly serves as a vault for my acquired knowledge I've created a lessons learned list to avoid mistakes and on the other hand reuse patterns that were successful.
Stop trying to put too much scope into single session. This is a quite tricky point, since it is hard to estimate the difficulty in the eyes of a unopinionated viewer. The best would be to create a target user profile and estimate a time range in which he would be able to solve it.
Also, more is less, so it's always good to create simple exercise with optional tasks for those that are smarter.
Prepare the environment and project in a way that only minimal effort is required for its setup at the workshop. This means have either github repository that can be just cloned and used or the whole VM (if it is too difficult to set it on your computer).
Define preconditions for the workshop precisely. If participants need their own notebook then clarify which tools they should install beforehand.
Define target audience precisely.
Gather feedback in a non-intrusive way. No-one likes feedback forms, so either start a discussion or chat during the coffee break.
Limit the group of people to a reasonable amount. For one presenter 15 people is a lot, but 8-10 is optimal.
Be friendly and relaxed. It should be 'fun', if possible :)
Use social media to promote the event. If there are any developer groups try to spread the event information around.
Prepare the workshop in a way that users that cannot participate can work on the assignments on their own. For example write a github-pages documentation.
If you are reading this and have something to add, do not hesitate to leave a comment.