Good intentions aren't quite enough
I'd like to tell you about a frustration. This frustration is something I have experienced myself, but it's not at all unique.
First, I want to give some backstory for those of you who don't know me.
I've been working in software dev education for 5+ years and I'm in the beginning phases of building out my own training organisation named Prelude. You can read about it here.
The part of that story that is relevant here is that one aspect of the mission I am on is to generate excess goodness that I can share with people who need it. There are 3 main ways I'm doing this:
-
If I need to do a dry-run of a course then I'll run it for free for folks who wouldn't usually be able to afford training. This helps me polish up some rough edges. It is still a very high quality learning experience because that's what I do, so it adds a lot of value to folks that take part.
-
Spare seats in paid workshops are donated to people who need them and can't afford them. I do keep the workshops pretty small intentionally so that everyone can get support, but making them too small is wasteful ( and kinda boring for me). Once I'm a bit more established I'd like to be more consistent on this front, I'd like to get to a point where I can consistently give away 10 or 20% of the training I do.
-
Donations: to date I've earmarked about 10% of my sales income as donations to different things I care about - these are primarily communities that have a broad impact.
The frustration
The big challenge with giving away free training is that people often just don't show up.
Paying customers show up, they lean in, they get their money's worth. They keep me on my toes and are an absolute pleasure to work with.
But giving away freebies is often a complete waste of time.
Here are a few frustrating things that happened to me recently:
Dry run
I ran a free 2 day workshop, this was a test drive of my most popular workshop. It covers modern frontend dev with Django, HTMX, AlpineJS, TailwindCSS and Playwright. It's a damn fine workshop if I do say so myself.
I wanted to run a dry run because I wanted to test out some new remote teaching and support mechanisms.
So I gathered a bunch of people to take part. I reached out to a few different communities, mostly open source and conference folks from Africa, and a couple of teachers.
I told folks that there would be very limited spaces in the dry run and that if they were taking a seat it would mean someone else would not be able to attend.
I also said that all I wanted in return would be honest feedback.
I dedicated a full weekend of my time, plus a lot of prep work to the workshop.
Only half the people showed up at all. And only half of those bothered to give me feedback (which takes like 5 minutes).
It's very easy to get upset about that kind of thing.
I was pretty sad about it until it clicked that the people who did show up made it all worth it. It was still pretty wasteful though.
Another recent experience: Giving away free tickets to polished events
More recently, I ran a paid workshop that was polished and awesome. I gave away 2 free tickets because I had some spare capacity and really wanted to open some doors.
Before I gave the tickets away, I asked a the recipients a series of questions:
- Are you aware that this is a full-weekend event?
- Are you aware of the times? Check it against your own time zone
- Are you aware that there are very limited free tickets. The fact that you have one means that someone else is not getting a free ticket
Both the ticket recipients took the time and care to answer these questions the right way. They understood. They made it clear that they would be there and lean in.
Then they did not show up.
Well, one showed up just briefly. He popped in at the end to ask for more free stuff. Lol.
Discouraged much?
It's easy to be discouraged by this kind of thing. It's easy to be angry. It's easy to lose confidence.
The problem with this is that it is normal. Being upset about it is as useless as getting upset with the weather.
And, looking at the people who did show up, and the experiences they had, and the feedback they gave me, it was still worthwhile. A few people leant in and were very grateful for the experience.
Debugging...
Ok, so what is going wrong?
The problem is not the quality of the training. I'm going to copy-paste some direct quotes from people who gave me feedback here so you can see what they are saying.
Some of these quotes came from folks who participated in the free dry run:
Sheena's 2-day workshop on Django, htmx, Alpine.js and Tailwind crammed my head full of useful knowledge at a rate I could have never managed alone. Each section of her tutorial was carefully crafted to build upon the last, keeping me within the zone of proximal development throughout. My brain kind of hurts now, but in a good way!
What I particularly like about this particular stack is that every aspect of it feels lightweight and integrates nicely with Django, rather than being shoehorned in. As a Python developer I don't want to write most of my logic in JavaScript, if only to avoid constant context switching. HTMX and Alpine.js are just what I needed - light and unintrusive.
Sheena herself is good-humoured and a great teacher, always there whenever I got stuck on a problem and needed some help. I highly recommend her and would happily buy future courses that she offers - Erik Lonnroth
I was very impressed with how Sheena has structured this workshop. I found that the level of complexity ramps up incrementally without making significant untraversable jumps. This kept me consistently engaged and appropriately challenged by expecting me to repeatedly make use of the skills learnt in the previous sections within the latter sections, providing opportunity for practise in every section rather than wrote learning something, using it once, and then moving on to the next item. Being completey green to any full stack or any web development frameworks, I feel like I started the game with a 1DMG dagger in my inventory, but at the end I was swinging a 1000DMG broadsword. - Gareth Freese
I recently attended an incredible Django-HTMX workshop, The session was both engaging and hands-on, offering a perfect blend of theory and practical application. Sheena did a fantastic job breaking down concepts into manageable steps, making HTMX feel accessible and powerful for real-world projects. I walked away with new skills and she also help me to recognize a few bad habits that I didn’t know I had picked up on my coding journey. Seeds were planted and I am very excited to use what I have learned. Thanks so much Sheena - Keanya Phelps
My favorite part was definitely being with a group of people of different skill levels learning something new. I don't chat with many developers (my fault) so it was nice to get to talk shop with others. The tutorial was easy to follow and I loved the exercises to challenge myself. The self pacing was very useful to take the stress off of completing it as quickly as possible in order to start on my project; this kept me motivated to play around more with tailwind and htmx and struggle through the side quests. - Anon
I really liked the self-paced nature (everyone at their own pace), while still maintaining a feeling of community via the regular (optional) Check-Ins and ability to chat and help each other out on Discord.
Also just knowing that, if needed, someone is there to help and support makes a big psychological difference. So the workshop provided a powerful and clearly defined container for learning and growth. - Anon
It goes on like that. So people are liking it. It is adding value.
Also, when I ask people if they are keen on taking part in more training, and if they intend to keep using the skills they say yes.
So quality is not the problem.
Is it a marketing problem?
Maybe folks are not showing up because they don't know what they are getting into. Maybe they don't expect much or don't know who I am and what I'm about. Maybe they just don't know what they are throwing away.
Maybe the answer, or part of it, is to find ways for people to feel more confident about quality of the experience. So... maybe I should lean in on marketing and make my website look better (that is certainly on the todo list, but maybe it should be higher on the list)
But... they did sign up. And arguably they know as much about what I do as many of my paying customers. So marketing probably isn't it.
Skin in the game
The paying customers showed up.
But I don't want to ask some oor African students to pay me money. "Payment" can come in different forms, it's not only about money. If you make it hard to get into a course, if you create an application process that requires effort and make it actually hard, then folks that get in tend to stick around. This is something that was made very salient to me in my previous work of building education systems, before I started Prelude.
But asking people to pay when they can't might not be the answer, and asking people to make a lot of effort up front would mean I would need to make a lot of effort as well.
But there are other ways to get skin in the game. One big one is leveraging relationships.
The plan: Relationships and community
The fact is that education is a messy place and a lot of the people who actually need support are the people that education systems have let down the most. Asking a person to trust some new system and dedicate their time to a thing they don't yet have a reason to trust and have no relationship with is unlikely to yield stellar results.
But it is still possible to lean on trust and relationships.
So here is the plan:
Instead of giving free training to individuals, my plan is to target small, close-knit coding clubs and communities. People who already show up and support each other, and who hold each other accountable.
I would "adopt" a club and pour a lot of free training into that one place. It would be on the club leadership and members to hold each other accountable and help distribute the free training to the people who would benefit the most.
If things go well then the club as a whole gets more free training and support.
And if things go badly, then I could move on and adopt a different club instead. This last point does feel harsh in a way, but trying to help people who aren't showing up really isn't useful.
I would not in any way expect perfection, 100% attendance is unrealistic. There will always be drop-off - life has it's surprises and complications. There will be a degree of waste, it's like tax.
But by finding the people who are dedicated to building empowering communities, and who have already managed to find some success and then adding fuel to their fires, I think I can make much more efficient use of the extra goodness I generate.
So.. who am I adopting?
I am in very early chats with a few Python-related code clubs around Africa. Nothing to announce yet on that front. For now it's an idea and a conversation. I'll announce something pretty soon I think.
I am also open to suggestions if there is a club or community you know of who could be a good fit.
Note: I am currently teaching adults, not kids. And I'm not teaching people from scratch. I'm looking to take people who already have some skills, and then give them a boost. There are many reasons for this and I do plan to expand in future.
Want to help?
If you want to help me on this mission there are a few things you can do:
- Buy some training. Or recommend my training to a friend :) It's seriously good stuff. Get tickets here
- Tell me what training you are interested in. If enough people want a thing and I can do it, then I'll do it
- Request a group booking for your organisation or team. I believe the stuff I am teaching is really worth knowing. I did a little webinar on why HTMX makes good business sense recently. Check it out if you are interested.
You can also donate to our scholarship fund
A bit about the training currently on offer
There are 3 workshops planned for January and early Feb.
These are all:
- small group workshops (so everyone can get support)
- super hands-on and practical
- built with love
- with expert support (Me!)
Getting Git
This is for beginners. A lot of people struggle with Git in the beginning. It's intimidating and weird. This is a gentle and thorough explanation of all the most important parts, and includes an intro to Github
Django core fundamentals
This is for people who are new to web dev with Python. Django has a bit of a steep learning curve in the beginning. There are a lot of books about it and some really nice introductory tutorials. This aims to expose people to all the major mechanisms in a way that gets people to reason about what all the different moving parts are for, and in a way that lays good foundations for future work
Modern frontend development with Python, HTMX, Tailwind, Playwright and AlpineJS
This one is the most fun. But it is a bit tough for people who are new to Django or web dev in Python. I'd call it an intermediate course. Participants learn to build a modern CRUD application, and then get started building their own projects.
Do you want to support this work?
If you find this useful, there are many ways to support the work I do:
- Join some of my technical training
- Ask me about tech education consulting and teacher training
- Donate to the Guild of Educators
- Share this article with someone who would find it useful