I was recently asked to be a guest speaker talking to a Makerspaces class about teaching and supporting programming in the makerspace context. After writing up my notes and presenting, I realized that I have learned a lot in my three years with the Champaign-Urbana Python User Group (Py-CU). This blog post contains my general framework for making recommendations to and supporting beginners who come to our Python meetup. Each space and group has a unique vibe, so I don’t expect this to be a universal framework.
Py-CU offers a weekly hack/project work time, open to all members of the community and all skill levels. Designed to be a simple work time for people, we get a diverse crowd of regular, semi-regular, and one-off attendees of all skill levels. These include absolute beginners, students and faculty from UIUC, professional developers, and everything in between.
Before I start digging into the recommendations, I want to break down some of the important characteristics often found in our attendees. Again, this doesn’t describe everyone, but most of our attendees would identify with at least one of these factors.
Py-CU is a subgroup of Makerspace Urbana, which (as makerspaces are wont to do) is located in an awkward space, in an awkward building, in an awkward part of town. Thus, the people who successfully do the research and make the trek down are there for a reason. People don’t usually show up at a user group because all their needs are met and they are completely satisfied with their use of that product. This is, in fact, why user groups generally exist. There’s a hidden word in “user group”, which should really unpack to “user support group.” Never forget this.
So, people show up at Py-CU because something has gone wrong in their use or learning experience with Python. Sometimes this means they:
- can’t find the right resource or information
- can’t determine which resource is right for them
- can’t get that resource to work or otherwise make sense of it
- have questions they can’t get answered or don’t understand the answers they’ve received (insert the Stack Overflow stink eye)
- are doing this outside of their job and/or coursework and want a dedicated time and place to learn
- just want to be around other people while they get stuff done
Each of these things are needs that user groups and makerspaces can and should satisfy at some level. Some groups are focused more on talks and networking, but our group is focused more on getting work done and providing a community experience around this work. This keeps the pressure off the organizers to track down speakers and deal with event planning, which means that our organizational efforts are dedicated to the attendee experience and providing support. The (we) organizers can also get our own work done during these hours, which makes our weekly time commitment much more sustainable.
Now that we’ve set the stage, we can talk about supporting newcomers who need help. I’m going to particularly focus on someone who shows up to a group, declares themselves to be new to Python (or whichever language/platform/etc. you are there for), and requests assistance.
I am a librarian and social scientist by training, so I approach these interactions as if it were a patron coming up to a reference desk. I need to offer support, empathy, and guidance. Most of all: I am the voice of the community they are visiting. This is even more so with programming: to some beginners I am not just the voice of the Python community, I am the voice of the entire programming community.
There is no one true learning resource out there, as there is no one true programming style or purpose in life. This means you need to track down the right resource for that person’s need (https://en.wikipedia.org/wiki/Five_laws_of_library_science). Here are the core questions I need them to answer at some level:
- What is your educational background?
- Don’t name any specific domain. Leave this open ended such that the answer cannot be “no.”
- What programming have you done before? And it’s ok if not!
- Be sure to keep your tone supportive for those who may need to say that they’ve never programmed before. Asking this in a non-binary way will avoid some, but not all, of people’s misclassification of their experience level. More discussion on this later.
- What do you want to do with programming? or Why do you want to learn that topic?
- Again, tone. Keep it positive and welcoming.
These questions are the framework for a conversation with this person, so ask clarifying questions and provide encouragement along the way is also important. Before we start going into which resources to recommend, etc., here are some things to keep in mind as you’re having this conversation:
- Do not presume any level of math education, interest, or comfort.
- Do not presume complete inexperience for someone who says that they are a beginner. Some people will discount courses they took in high school or even college as being valueless, when that experience will totally change the resource I send them to. I see this mostly occurring with women, and even some describe themselves as beginners when they’ve taken several programming classes.
- Understand that there’s a difference between being a beginner to Python and a beginner to programming. Try to tease out which they are when they just say “beginner.”
- Be explicit about welcoming beginners of all kinds. If you think you’ve added that phrasing in enough places, you can find more. You will need to constantly repeat yourself, encourage, and be as noisy as possible about welcoming beginners. Even with that, be prepared to field direct communication asking if it’s okay for them to come. No matter how many times you have it on your website, there are levels of imposter syndrome that make the personal permission the only one that sticks.
When it comes to recommending resources, much of my perspective is influenced by my perspective that programming, at its core, is an information problem. So I’m super obsessed about finding people the right learning material. Learners of programming generally need materials for instructional narrative to explain concepts, practice to tinker with those concepts, reference to look up concepts/tools, and a safe place/person to as questions.
In my final piece of advice, here are some general guidelines to consider when giving people advice or making recommendations:
- “Just the read the docs” is never the right answer for a programming beginner.
- Recommend no more than 3 – 5 resources, and hopefully some of them will hit on all the requirements listed above. Avoid brain dumping every book you’ve ever seen about Python on them. Pick out a few for them to investigate. Remember that they’ve sought out experts for their expert advice, not human google search for “python”.
- Remind them that it is okay to do some window shopping of materials, and that it is okay to reject a book after a few chapters if they aren’t feeling it.
- Keep your IDE and command line wars at home. Get them set up with a development environment that is right for them.
- Finally, once you’ve given them links and answered their questions, remember to stop talking and give them time to read and explore the resources you recommended. Leave them alone in this process (do not make small talk), and invite them to let you know when they’d like more help. Don’t sit and stare at them practicing or provide unrequested commentary.
This post isn’t meant to fully unpack the selection of resources with an information request, but hopefully can serve as a place to start formalizing your own thoughts on welcoming beginners. Remember: your community/group will have different needs, so you’ll need to change some of this to fit their needs.