How to Teach Programming (and Other Things)

Please comment on the plan for the next edition.

Building Community


  • Learners can make an informed decision about whether to create something new, or join an existing effort.
  • Learners can judge whether a meeting is well organized and well run or not.
  • Learners can outline a three-step plan for recruiting, retaining, and retiring volunteers and other organization participants.
  • Learners can explain the difference between a service board and a governance board, and judge which kind an organization has.

Many well-intentioned people want the world to be a better place, but don’t actually want anything important to change. A lot of grassroots efforts to teach programming fall into this category: they want to teach children and adults how to program so that they can get good jobs, rather than empower them to change the system that has shut them (and people like them) out of those jobs in the past.

If you are going to build a community, the first and most important thing you have to decide is what you want: to help people succeed in the world we have, or to give them a way to make a better one. If you choose the latter, you have to accept that one person can only do so much. Just as we learn best together, we teach best when we are teaching with other people, and the best way to achieve that is to build a community.

Learn, Then Do

The first step in building a community is to decide if you really need to, or whether you would be more effective joining an existing organization. Thousands of groups are already teaching people tech skills, from the 4-H Club and literacy programs to get-into-coding non-profits like Black Girls Code. Joining an existing group will give you a head start on teaching, an immediate set of colleagues, and a chance to learn more about how to run things. The only thing it won’t give you is the ego gratification and control that comes from being a founder.

Whether you join an existing group or set up one of your own, you owe it to yourself and everyone who’s going to work with you to find out what’s been done before. People have been writing about grassroots organizing for decades; [Alinsky1989] is probably the best-known work on the subject, while [Brown2007] and [Midwest2010] are practical manuals rooted in decades of practice. If you want to read more deeply, [Adams1975] is a history of the Highlander Folk School, whose approach has been emulated by many successful groups, while [Spalding2014] is a guide to teaching adults written by someone with deep personal roots in organizing.

Meetings, Meetings, Meetings

Knowing how to run a meeting efficiently is the core skills of community organizers. (Knowing how to take part in someone else’s meeting is just as important, but gets far less attention–as a colleague once said, everyone offers leadership training, nobody offers followership training.) The most important rules for making meetings efficient are not secret, but are rarely followed:

  1. Decide if there actually needs to be a meeting. If the only purpose is to share information, have everyone send a brief email instead.

  2. Choose a chair. A meeting without a chair is going to work just about as well as an orchestra without a conductor.

  3. Write down the agenda, with timings. List the items that are to be discussed and estimate the time allowed for each. Your first estimates with any new group will be wildly optimistic, so revise them upward for subsequent meetings.

  4. No technology. Insist that everyone put their phones, tablets, and laptops into politeness mode (i.e., closes them).

  5. Record minutes. Someone other than the chair should take point-form notes about the most important pieces of information that were shared, and about every decision that was made or every task that was assigned to someone.

  6. Make sure the chair doesn’t speak more than anyone else. The chair is there to make sure that the meeting keeps moving, not to do most of the talking.

  7. Require politeness. No one gets to interrupt anyone, no one gets to ramble, and if someone goes off topic, it’s the chair’s job to say, “Let’s discuss that elsewhere.”

  8. End early. If your meeting is scheduled for 10:00-11:00, you should aim to end at 10:55 to give people time to get where they need to go next.

[Brown2007] and [Brookfield2016] have lots of good advice on running meetings, and if you want to “learn, then do”, an hour of training on chairing meetings is the most effective place to start.

Sticky Notes and Interruption Bingo

Some people are so used to the sound of their own voice that they will insist on talking half the time no matter how many other people are in the room. One way to combat this is to give everyone three sticky notes at the start of the meeting. Every time they speak, they have to take down one sticky note. When they’re out of notes, they aren’t allowed to speak until everyone has used at least one, at which point everyone gets all of their sticky notes back. This ensures that nobody talks more than three times as often as the quietest person in the meeting, and completely changes the dynamics of most groups: people who have given up trying to be heard because they always get trampled suddenly have space to contribute, and the overly-frequent speakers quickly realize just how unfair they have been.

Another useful technique is called interruption bingo. Draw a grid, and label the rows and columns with the participants’ names. Each time someone interrupts someone else, add a tally mark to the appropriate cell. Halfway through the meeting, take a moment to look at the results. In most cases, you will see that one or two people are doing all of the interrupting, often without being aware of it. After that, saying, “All right, I’m adding another tally to the bingo card,” is often enough to get them to throttle back.

Dealing With Disruptors

The National Oceanic and Atmospheric Administraiton (NOAA) has published a short, amusing, and above all useful guide to dealing with disruptive behaviors. It categorizes those behaviors under labels like “talkative”, “indecisive”, and “shy”, and outlines strategies for handling each.

Three Steps

  • Me in 2012: I’m not going to worry about retaining volunteers until I have a few.
  • My Dad: If you don’t think about how you’re going to keep them, you probably won’t get any.

Everyone who gets involved with your organization, including you, goes through three phases: recruitment, retention, and retirement (from the organization). You don’t need to worry about this cycle when you’re just getting started, but it is worth thinking about as soon as you have more than a couple of non-founders involved.

The first step is recruiting volunteers. Your marketing should help you with this by making your organization findable, and by making its mission and its value to volunteers clear to people who might want to get involved. Share stories that exemplify the kind of help you want as well as stories about the people you’re helping, and make it clear that there are many ways to get involved. (We discuss this in more detail in the next section.)

Your best source of new recruits is your own classes: “see one, do one, teach one” has worked well for volunteer organizations for as long as there have been volunteer organizations. Make sure that every class or other encounter ends with two sentences explaining how people can help, and that help is welcome. People who come to you this way will know what you do, and will have recent experience of being on the receiving end of what you offer that they can draw on, which helps your organization avoid collective expert blind spot.

Start Small

As Ben Franklin observed, a person who has performed a favor for someone is more likely to do another favor for that person than they would be if they had received a favor from that person. Asking people to do something small for you is therefore a good step toward getting them to do something larger. One natural way to do this when teaching is to ask people to submit fixes for your lesson materials for typos or unclear wording, or to suggest new exercises or examples. If your materials are written in a maintainable way, this gives them a chance to practice some useful skills, and gives you an opportunity to start a conversation that might lead to a new recruit.

Recruiting doesn’t end when someone first shows up: if you don’t follow through, people will come out once or twice, then decide that what you’re doing isn’t for them and disappear. Two things you can do to get newcomers over this initial hump are:

  1. Have them take part in group activities before they do anything on their own, both so that they get a sense of how your organization does things, and so that they build social ties that will keep them involved.

  2. Give newcomers a mentor, and make sure the mentors actually do some proactive mentoring. The most important things a mentor can do are make introductions and explain the unwritten rules, so make it clear to mentors that these are their primary responsibilities, and they are to report back to you every few weeks to tell you what they’ve done.

The second part of the volunteer lifecycle is retention, which is a large enough topic to deserve its own section. The third and final part is retirement. Sooner or later, everyone moves on (including you). When this happens:

  1. Ask people to be explicit about their departure.

  2. Make sure they don’t feel embarrassed or ashamed about leaving.

  3. Give them an opportunity to pass on their knowledge. For example, you can ask them to mentor someone for a few weeks as their last contribution, or to be interviewed by someone who’s staying with the organization to collect any stories that are worth re-telling.

  4. Make sure they hand over the keys. It’s awkward to discover six months after someone has left that they’re the only person who knows how to book a playing field for the annual softball game.

  5. Follow up 2-3 months after they leave to see if they have any further thoughts about what worked and what didn’t while they were with you, or any advice to offer that they either didn’t think to give or were uncomfortable giving on their way out the door.

  6. Thank them, both when they leave and the next time your group gets together.


The community organizer Saul Alinksy said, “If your people aren’t having a ball doing it, there is something very wrong.” Community members shouldn’t expect to enjoy every moment of their work with your organization, but if they don’t enjoy any of it, they won’t stay.

Enjoyment doesn’t necessarily mean having an annual party: people may enjoy cooking, coaching, or just working quietly beside others. There are several things every organization should do to ensure that people are getting something they value out of their work:

  1. Ask people what they want rather than guessing. Just as you are not your learners, you are probably different from other members of your organization. Ask people what they want to do, what they’re comfortable doing (which may not be the same thing), what constraints there are on their time, and so on.

  2. Provide many ways to contribute. The more ways there are for people to help, the more people will be able to help. Someone who doesn’t like standing in front of an audience may be able to maintain your organization’s website or handle its accounts; someone who doesn’t know how to do anything else may be able to proof-read lessons, and so on. The more kinds of tasks you do yourself, the fewer opportunities there are for others to get involved.

  3. Recognize contributions. Everyone likes to be appreciated, so communities should acknowledge their members’ contributions both publicly and privately.

  4. Make space. Micromanaging or trying to control everything centrally means people won’t feel they have the autonomy to act, which will probably cause them to drift away. In particular, if you’re too engaged or too quick on the reply button, people have less opportunity to grow as members and to create horizontal collaborations. The community can continue to be “hub and spoke”, focused around one or two individuals, rather than a highly-connected network in which others feel comfortable participating.

Another way to make participation rewarding is to provide training. Organizations require committees, meetings, budgets, grant proposals, and dispute resolution; most people are never taught how to do any of this, any more than they are taught how to teach, but training people to do these things helps your organization run more smoothly, and the opportunity to gain transferable skills is a powerful reason for people to get and stay involved. If you are going to do this, don’t try to provide the training yourself (unless it’s what you specialize in). Many civic and community groups have programs of this kind, and you can probably make a deal with one of them.

Other groups may be useful in other ways as well, and you may be useful to them–if not immediately, then tomorrow or next year. You should therefore set aside an hour or two every month to find allies and maintain your relationships with them. One way to do this is to ask them for advice: how do they think you ought to raise awareness of what you’re doing? Where have they found space to run classes? What needs do they think aren’t being met, and would you be able to meet them (either on your own, or in partnership with them)? Any group that has been around for a few years will have useful advice; they will also be flattered to be asked, and will know who you are the next time you call.

Government Matters

Have you ever spoken to someone from the public relations office at your local college or school board, or in your city councilor’s office? If not, what are you waiting for?

Soup, Then Hymns

Manifestos are fun to write, but most people join a volunteer community to help and be helped rather than to argue over the wording of a grand vision statement. (Most people who prefer the latter are only interested in arguing…) To be effective you should therefore focus on things that are immediately useful, e.g., on what people can create that will be used by other community members right away. Once your organization shows that it can actually achieve things–even small things–people will be more confident that it’s worth thinking about bigger issues.

One important special case of making things rewarding is to pay people. Volunteers can do a lot, but eventually tasks like system administration and accounting need full-time paid staff. This is often a difficult transition for grassroots organizations, but is outside the scope of this book.


As Jo Freeman pointed out in her influential essay “The Tyranny of Structurelessness”, every organization has a power structure: the only question is whether it’s formal and accountable, or informal and unaccountable. Make yours one of the first kind: write and publish the rules governing everything from who’s allowed to use the name and logo to who gets to decide whether people are allowed to charge money to teach with whatever materials your group has worked up.

Organizations can govern themselves in many different ways, and a full discussion of the options is outside the scope of this book. The most important thing to keep in mind is that countries and corporations are only two of many governance models, and that a commons is often a better model for volunteer teaching organizations. A commons is “something managed jointly by a community according to rules they themselves have evolved and adopted”; as [Bollier2014] emphasizes, all three parts of that definition are essential: a commons isn’t just a shared pasture, but also includes the community that shares it and the rules they use to do so.

Most resources, throughout most of human history, have been commons: it is only in the last few hundred years that impersonal markets have pushed them to the margins. In order to do so, free-market advocates have had to convince us we’re something we’re not (dispassionate calculators of individual advantage) and erase or devalue local knowledge and custom. Both have had tragic consequences for us individually and communally, and now for our whole planet.

Since society has difficulty recognizing commons organizations, and since most of the people you will want to recruit don’t have experience with them, you will probably wind up having some sort of board, a director, and other staff. Broadly speaking, your organization can have either a service board, whose members also take on other roles in the organization, or a governance board whose primary responsibility is to hire, monitor, and if need be fire the director. Board members can be elected by the community or appointed; in either case, it’s important to prioritize competence over passion (the latter being more important for the rank and file), and to try to recruit for particular skills such as accounting, marketing, and so on.

Don’t worry about drafting a constitution when you first get started: it will only result in endless wrangling about what we’re going to do rather than formalization of what you’re already doing. When the time does come to formalize your rules, though, make your organization a democracy: sooner or later (usually sooner), every appointed board turns into a mutual agreement society and loses sight of what the community it’s meant to serve actually needs. Giving the community power is messy, but is the only way invented so far to ensure that an organization continues to meet people’s actual needs.

Final Thoughts

As [Pigni2016] discusses, burnout is a chronic risk in any community activity. If you don’t take care of yourself, you won’t be able to take care of your community.

Every organization eventually needs fresh ideas and fresh leadership. When that time comes, train your successors and then move on. They will undoubtedly do things you wouldn’t have, but the same is true of every generation. Few things in life are as satisfying as watching something you helped build take on a life of its own. Celebrate that–you won’t have any trouble finding something else to keep you busy.


Several of these exercises are taken from [Brown2007], which is an exceptionally useful book on building community organizations.

Who Are You? (20 minutes)

Read NOAA’s descriptions of disruptive behaviors.

  1. Which of them best describes you?
  2. Do you think the strategies described for handling people like you are effective?
  3. Are other strategies equally or more effective?

People You May Meet (30 minutes)

As an organizer, part of your job is sometimes to help people find a way to contribute despite themselves. In small groups, pick three of the people below and discuss how you would help them become a better contributor to your organization.

  • Anna knows more about every subject than everyone else put together–at least, she thinks she does. No matter what you say, she’ll correct you; no matter what you know, she knows better.

  • Catherine has so little confidence in her own ability that she won’t make any decision, no matter how small, until she has checked with someone else.

  • Frank believes that knowledge is power, and enjoys knowing things that other people don’t. He can make things work, but when asked how he did it, he’ll grin and say, “Oh, I’m sure you can figure it out.”

  • Hediyeh is quiet. She never speaks up in meetings, even when she knows that what other people are saying is wrong. She might contribute to the mailing list, but she’s very sensitive to criticism, and will always back down rather than defending her point of view.

  • Kenny has discovered that most people would rather shoulder his share of the work than complain about him, and he takes advantage of it at every turn. The frustrating thing is that he’s so damn plausible when someone finally does confront him. “There have been mistakes on all sides,” he says, or, “Well, I think you’re nit-picking.”

  • Melissa means well, but somehow something always comes up, and her tasks are never finished until the last possible moment. Of course, that means that everyone who is depending on her can’t do their work until after the last possible moment…

  • Raj is rude. “It’s just the way I talk,” he says, “If you can’t hack it, maybe you should find another team.” His favorite phrase is, “That’s stupid,” and he uses obscenity as casually as minor characters in Tarantino films.

Values (45 minutes)

Answer the following questions on your own, and then compare your answers to those given by other members of your group.

  1. What are the values your organization expresses?
  2. Are these the values you want the organization to express?
  3. If not, what values would you like it to express?
  4. What are the specific behaviors that demonstrate those values?
  5. What are some key behaviors that would demonstrate the values you would like for your group?
  6. What are the behaviors that would demonstrate the opposite of those values?
  7. What are some key behaviors that would demonstrate the opposite of the values you want to have?

Meeting Procedures (30 minutes)

Answer the following questions on your own, and then compare your answers to those given by other members of your group.

  1. How are your meetings run?
  2. Is this how you want your meetings to be run?
  3. Are the rules for running meetings explicit or just assumed?
  4. Are these the rules you want?
  5. Who is eligible to vote/make decisions?
  6. Is this who you want to be vested with decision-making authority?
  7. Do you use majority rule, make decisions by consensus, or use some other method?
  8. Is this the way you want to make decisions?
  9. How do people in a meeting know when a decision has been made?
  10. How do people who weren’t at a meeting know what decisions were made?
  11. Is this working for your group?

Size (20 minutes)

Answer the following questions on your own, and then compare your answers to those given by other members of your group.

  1. How big is your group?
  2. Is this the size you want for your organization?
  3. If not, what size would you like it to be?
  4. Do you have any limits on the size of membership?
  5. Would you benefit from setting such a limit?

Staffing (30 minutes)

Answer the following questions on your own, and then compare your answers to those given by other members of your group.

  1. Do you have paid staff in your organization?
  2. Or is it all-volunteer?
  3. Should you have paid staff?
  4. Do you want/need more or less staff?
  5. What do you call the staff (e.g., organizer, director, coordinator, etc.)?
  6. What do the staff members do?
  7. Are these the primary roles and functions that you want the staff to be filling?
  8. Who supervises your staff?
  9. Is this the supervision process and responsibility chain that you want for your group?
  10. What is your staff paid?
  11. Is this the right salary to get the needed work done and to fit within your resource constraints?
  12. What benefits does your group provide to its staff (health, dental, pension, short and long-term disability, vacation, comp time, etc.)?
  13. Are these the benefits that you want to give?

Collaborations (30 minutes)

Answer the following questions on your own, and then compare your answers to those given by other members of your group.

  1. Do you have any agreements or relationships with other groups?
  2. Do you want to have relationships with any other groups?
  3. How would having (or not having) collaborations help you to achieve your goals?
  4. What are your key collaborative relationships?
  5. Are these the right collaborators for achieving your goals?
  6. With what groups or entities would you like your organization to have agreements or relationships?

Money (30 minutes)

Answer the following questions on your own, and then compare your answers to those given by other members of your group.

  1. Who pays for what?
  2. Is this who you want to be paying?
  3. Where do you get your money?
  4. Is this how you want to get your money?
  5. If not, do you have any plans to get it another way?
  6. If so, what are they?
  7. Who is following up to make sure that happens?
  8. How much money do you have?
  9. How much do you need?
  10. What do you spend most of your money on?
  11. Is this how you want to spend your money?

Becoming a Member (45 minutes)

Answer the following questions on your own, and then compare your answers to those given by other members of your group.

  1. How does someone join?
  2. Does this process work for your organization?
  3. What are the membership criteria?
  4. Are these the membership criteria you want?
  5. Are people required to agree to any rules of behavior upon joining?
  6. Are these the rules for behavior you want?
  7. Are there membership dues?