How I design workshops

Some things I think about while designing workshops for maximum learning

I have been working in software development education for just over half a decade with quite a lot of success. I've learned a lot about what it takes to make good learning interventions and experiences.

I've recently been designing a bunch of workshops for my new company, Prelude.

I'm aiming for the gold standard with these things - the goal is to give the workshop participants a damn fine learning experience, to leave them with skills, and to plant good seeds so they can continue to learn, grow and build after the workshop.

The other goal is to iterate and hone my own skills as an educator. This is a craft in itself and worth taking quite seriously.

And the biggest goal of all is to allow the good that I am doing to leak out and help more people. So I want to share what I am learning and thinking about education itself as I go.

Without further delay, here are a few different things I keep in mind while designing workshops:

First, what is a workshop?

For the purpose of this article, a workshop is a learning experience that has a short duration. Currently my longest one is 2 days.

It's an interactive experience where learners get hands on, expert support by teachers who know the tech AND how to teach and coach effectively.

It's practical and hands-on. The participants should be actively engaged in the learning experience, not passively watching or reading.

There is also course content that the participants work through.

Don't oversell

Don't promise anyone quick "mastery". There are many sharky courses and bootcamps out there that over-promise and under-deliver. So much so that the work "bootcamp" feels like a dirty word to me.

Be real with the participants! Always start from a point of honesty. Be as clear as you can be about what you are offering.

When selling courses, it will be important to pick your battles - giving people a massive information dump up front that tells them all the things might chase some folks off.

Look after your integrity instead of mimicking the market.

Starting point

The first thing to think about when designing a workshop is: who are the end users. Who are the participants.

Generally, there will be some prerequisite skills that people will need to have going in. This will be different for different courses. Some things will have no prerequisites, or only expect some level of computer literacy, some will require some programming skills.

If you are selling courses then it's important to realise that the participants will interpret your list of prerequisites in different ways. The people who show up will be all over the place in terms of both hard and "soft" skills.

Your course structure and materials should cater for that. So should the educators on the ground, running the workshop.

Think mastery-based-learning thoughts

Anyone who has been following me for a while knows that I love mastery based learning (MBL). It's so friggin' cool.

MBL typically relies on some form of assessment. The idea is that a person should focus on learning one skill, or completing one task, and then move onto the next one when they are provably ready.

Assessment is a rats nest. It's hard to get right in long courses. In short courses and workshops with paying customers it a whole other kind of tricky.

That said, MBL is worth pursuing. Again, the people in the workshop will come in with different skills. They will also have different end-goals and aptitudes. So cater for that by allowing people to move at their own pace.

There are a few mechanisms in play here:

  • give the learners all the content up front and let them know they can move at their own pace
  • find a way to monitor progress. Explicitly check up on people when they seem to be moving slowly. Monitoring is critical in self-paced learning!
  • encourage learners to self-assess: if they feel unsure about a concept, encourage them to dig into it and ask for help. Prompt them with useful questions to help them think through the concepts
  • try to get the learners to think through the content from different directions so that they are more likely to spot their own difficulties

Don't rush and don't over-optimise

If a person is moving slowly because they are taking time to understand a thing: Encourage them to take the time they need! Don't push them to finish. It's not a race.

The goal is not to complete the content, the goal is to learn!

If someone is struggling with critical foundational skills, then don't optimise for ticking boxes and looking good.

That said, there will be learners who have not yet realised the importance of certain skills. Some learners will try to rush no matter what you do. Do not hold on too tightly, do not be too forceful. Try to get them to see why things are important, try to make them hungry for the knowledge. Don't force feed and over-optimise.

Sometimes foot-guns are the best teachers. Giving learners space to take shortcuts, make mistakes and rush can be really good for them sometimes. Not in the short term but in the long term. Mistakes are great teachers. If you are there by their side making sure they always do the exact correct thing whether they want to or not will rob them of deeper lessons.

In my opinion good teachers are not simply focused on teaching the main subject, but rather on helping people become the types of people who can learn that subject. This means keeping an eye on deeper skills, and giving people a bit of space to screw up.

But I digress.

Don't force people to move faster than they are ready to. The goal is not to make everyone finish ticking the boxes. The goal is to empower people with skills and a trajectory.

And don't force feed people information.

Start together

When running the actual workshop, start off with a big session with everyone in it.

This should introduce everyone to the main concepts being covered and major goals, why the concepts are worth learning about, the education staff, and the workshop mechanisms.

This will do a few good things:

  • overview of concepts and major goals: This will help get people started on the right foot, but will also help with spaced repetition and structure building (more on that later)
  • get people excited about the concepts and their wider applications and impact (it helps to teach skills you believe in, get other people to believe in them too)
  • set the vibe: This is especially important for remote, self-paced events. There will not be a lot of touchpoints, make them count!
  • introduction to the educators: The teachers/facilitators should be introduced. It should be made clear that they have the skills to do the work. They should also come across as approachable and happy to help
  • explain course mechanisms: If you are using Discord, give them a tour. If your course materials are in a funny place, show them around. Make sure everyone knows what to do next. Most people are used to standard classroom style learning. Tell them how you will be different so that they don't get a fright
  • make sure everyone is set up for the next step. Eg: if you are using Discord, make sure they are all on the server
  • answer questions: leave lots of space for questions

Make sure you record this session, there will be people who miss it, for lots of reasons.

Syncing up and checking in

Schedule a few more group meetings. If you have a 2 day workshop then you should have at least one towards the end of the first day, and at least one in the second day. Two is better.

These are great for:

  • keeping the participants feeling connected to the larger group and motivated
  • doing a vibe-check
  • getting feedback: actually ask for feedback. Write down action points and, as far as possible, implement changes immediately. Show the students you are listening and don't assume you are perfect

Make it personal

Try to get the learners to think of a project they want to build with the skills they are learning in the workshop. Try to get them thinking about this as early as possible. Ideally, get them to talk to each other about it.

There is a danger that some learners will go into a bit of a scope-creepy tailspin at this point. I've seen some very strange things happen here, especially with newer developers who are not yet sure what is possible.

I do recommend getting people to think of personal projects as early as possible, but remember to check in with people and guide them. Be a coach, focus their efforts on something that is actually possible and that is in line with what is being covered.

There are a few big reasons to do this:

  • It keeps people motivated and engaged
  • It gives people a seed of something to work towards after the workshop is finished. Planting seeds is what we do!
  • It also helps with a thing called "structure building". We'll talk about that soon

Focus on empowering the learners

When creating the content the goal should be to set the learners up so that they can move forward without needing constant hand-holding and support.

Do not spoon-feed them every little thing. They should be learning. But focus on planting the right seeds and leading them in the right directions so that they can discover knowledge.

As the content progresses, slowly step back and make things more difficult. Give them challenges to solve.

I do not recommend giving people too many challenges up front - let them make progress and win at things, give them a sense of progress and the start of a mental framework, then slowly make things more realistic and difficult.

It's possible that some folks will fly through the earlier content easily, but it also means that you wont be leaving anyone too far behind and hopeless.

A golden path with rabbit holes

I recency created a mini course on Django, HTMX and a few other technologies that play nicely together. The people coming in were expected to know about things like HTML attributes and virtual environments but, of course, many did not. I expected people to arrive with missing prerequisites.

It's important to be able to cater for that kind of thing.

Don't try to build the perfect course that explores all the different rabbit holes and lays all the perfect foundations. More advanced learners will get put off, and the content itself will become way too long and hard to maintain.

Keep the main thing the main thing!

But also, encourage the learners to explore rabbit holes as they happen upon them.

Tell learners that if they come across anything at all that they are not understanding, they should take the time to understand it. Encourage the pursuit of mastery of the foundational concepts.

If a learner doesn't finish the whole workshop because they ended up focusing on critical foundational skills, that is completely fine! Support the growth of deep knowledge, do not push people to keep up. Do not pursue shallow knowledge for the sake of perceived progress.

If a learner is struggling with foundational concepts and you notice (or even better, they ask for assistance) then this is valuable information that will come in handy in the next iteration of the course. And it is an opportunity for you to be especially valuable for the learner.

If you suspect that people are likely to struggle with some foundational skill, or be over confident in that skill, then work it into the content in a light way. Remember, not everyone will need you to support them on these things. And, ideally, you should be setting learners up to help themselves.

Things you can do is:

  • re-state the importance of different things
  • ask leading questions
  • link to good external resources that cover those things

Spaced repetition and recall

All educators should know about the importance of these things, so I wont go into the details here but I encourage you to read about them. I have a few recommended books and resources you can refer to.

When building a course or workshop, it's important to revisit concepts. Ideally in a way that forces the learner to think back and remember earlier things.

I achieve this in a few ways:

  • give people a solid overview in the introductory session
  • get people to apply the concepts in different ways at different times. Don't just show them a thing once and pat yourself on the back

Structure building

Structure building is a process in which people mentally organize information. It is the building of mental frameworks. It's important to promote this.

Again, please take a look at my recommended books and resources if you want a better picture of what this means! It's really important for teachers.

So, how do we promote structure building: Get the learners to look at the same concept from different directions, and try to get them to think of practical applications up front.

  • Introduce the learners to the main things you are teaching
  • Get the learners to think of a personal project up front, this should get them to think about what they say in the intro
  • As the learners go through the workshop content, encourage them to think about how different concepts might be applied to their personal project. This will also keep them motivated and engaged
  • Then get them to build their own cool thing, recalling and applying their earlier understanding

Side quests

There will be some learners who are especially curious and motivated. And there will be some concepts that are worth knowing about but are not critical enough to be included in the main flow of the content.

From time to time it is worth including extra challenges into the work. Add side quests that introduce new helpful techniques and technologies, and push people's skills just a little bit further.

Write clearly

This is fairly obvious, but very very important. There are some great books on how to write well. You can see some that I've found useful here

Illusions of competence, cargo culting and other pitfalls

There are many pitfalls worth avoiding. There are a lot of traps newer developers fall into that you, as a teacher, should be aware of.

Learn about illusions of competence. Learn where it comes from. Then don't make recommendations that encourage it.

Learn avout cargo-culting. Don't tell people to do things because "it's important" or "it's good practice". Always have real reasons for the advice you give.

That means you will need to think very critically about the recommendations you make and where they come from.

End goal

When selling online learning, many people promise things like "mastery", but don't seem to have much of a grasp of what it takes to achieve mastery.

What I aim for in the workshops and courses I develop is:

Empowered and inspired learners with firm foundational skills, who are willing and able to continue learning, growing and pursuing their goals.

This isn't about putting some empty words on a CV or a LinkedIn profile. This is about genuine skill and capability.

Again, I refer you to an earlier article about planting seeds. The goal is to start people on a healthy, constructive trajectory.

Want to learn from me?

I'm running some technical workshops over at Prelude. These are damn fine learning experiences, crafted with care!

I'm also offering training and consulting services for organisations that teach. Please get in touch if that is you! My goal is to empower those who empower others.

❤️ Thanks!

Do you want to support this work?

If you find this useful, there are many ways to support the work I do:

Stay up to date

Subscribe to my newsletter. This will be a monthly digest of my latest articles and some other news and goodies.