Elliott Hauser is CEO of Trinket, a startup focused on creating open sourced teaching materials. He is also a Python instructor at UNC Chapel Hill.

Well-developed tools for teaching are crucial to the spread of open source software and programming languages. Stacks like those used by the Young Coders Tutorial and Mozilla Software Carpentry are having national and international impact by enabling more people to teach more often.

The spread of tech depends on teaching

Software won’t replace teachers. But teachers need great software for teaching. The success and growth of technical communities are largely dependent on the availability of teaching stacks appropriate to teaching their technologies. Resources like try git or interactivepython.org not only help students on their own but also equip instructors to teach these topics without also having to discover the best tools for doing so. In that way, they play the same function as open source Web stacks: getting us up and running quickly with time-tested and community-backed tools. Thank goodness I don’t need to write a database just to write a website; I can use open source software instead. As an instructor teaching others to code websites, what’s the equivalent tool set? That’s what I mean by Teaching Stack: a collection of open tools that help individual instructors teach technology at scale.

Elements of a great teaching stack

Here are some of the major components of a teaching stack for a hands-on technology course:

You can see the key components: Where the instructor got the materials, how the students will access them, and what development environment each will use. All too often, one or more of the components of an instructor’s teaching stack amounts to “Whatever I was able to throw together myself”. A homegrown curriculum, student development environment, and course website can be extremely confusing for students. They’re also an extraordinary amount of work for instructors, which means fewer courses are taught.

Based on my experiences teaching and observing workshops around the country, here are my three simple recommendations for Teaching Stack design:

Provide open access to your materials. This will let students revisit them after class. It also makes it possible to build relationships and collaborate with other instructors teaching the same thing. Use the same coding setup as your students. Great for you if you’re a Vim ninja; if the course isn’t about Vim, it’s probably better to get everyone using Sublime Text or another editor with a visual interface. Even if you are using command line editors, use a vanilla configuration of something like nano instead of your custom setup. It will help avoid confusion. Use materials that at least one other person has used or seen. Collaborate on or reuse materials! It’s good for the teaching community and it will be good for your students. As instructors, sharing materials with others before class gets us out of our heads and can help us realize insidious assumptions we make about background knowledge.

Below I’ll describe two teaching stacks that take these approaches and are working well at scale: the Python Young Coders Tutorial and Mozilla Software Carpentry. My message to instructors is once you’ve got a teaching stack that works, follow these projects’ example and make it easy for others to replicate and contribute to!

The stack analogy: web stacks and teaching stacks

Before we dive into teaching stacks, I’d like to briefly explain where the concept came from: the Web Stack.

At my day job, trinket.io, our web stack looks like this:

Some of these names might be familiar to you, but their categories are more important. They are major components that any Web application must have:

Thanks to open source software, almost no one writes their own software for each of these levels. We certainly didn’t. By choosing to use the open source projects listed above, we were able to get to the real work of making our application using tools built for the job instead of spending our time making tools ourselves.

Most teaching stacks are much less developed in comparison. Even though many instructors need the same tools to be successful, they still spend time creating these tools themselves when preparing to teach. The analogy isn’t perfect, of course, but I think it’s instructive.

My two examples of teaching stacks are very different but both demonstrate how great teaching stacks can have a direct and measurable impact on teaching at scale. The first is for teaching kids and the second is for teaching PhD scientists how to incorporate sophisticated tools into their workflows.

Teaching kids: Young Coder’s tutorial

The Python Young Coders Tutorial teaches kids the basics of programming by making games on a Raspberry Pi. Katie Cunningham and Barbara Shaurette gave a great talk about how to put on a Young Coders Tutorial at PyCon 2014 in Montreal. Katie’s written before on this blog about how to hold a Young Coders Tutorial in your area, and her talk with Barbara went into even more detail about the practicalities of holding an event.

The ‘Stack’ they use looks something like this:

Katie and Barbara have done an excellent job sharing their resources and equipping others to repeat their successes. In fact, they’ve inspired others like Brian Painter to run their own coding camps. A programmer by profession, Brian was able to mix elements of Craig Richardson’s resources for teaching Programming with Minecraft into his workshops for kids at the IronYard in South Carolina. Brian’s been able to get his own teaching stack up and running much more quickly thanks to Katie, Barbara, and Craig sharing what’s worked for them. Similar events are now being held for entire schools.

Well-developed teaching stacks aren’t just for teaching kids. Our next group is teaching scientists how to incorporate good software practices into their research and has one of the most well-documented teaching stacks in the world.

Teaching scientists: software carpentry’s stack

Mozilla Software Carpentry is an exceptional organization pushing the limits of open education. Their mission is to help scientists “spend less time wrestling with software and more time doing useful research”, and they’ve helped thousands since their founding in 1998. They cover the command line, Python, R, and version control. Software Carpentry’s Teaching Stack looks like this:

Over the years it’s evolved into a robust and relatively convenient way to get new scientists up and running with pro tools, complete with the best setup instructions of any workshop I’ve seen. From my experiences assisting some of their workshops and conversations with instructors, I can tell you that the experience of a SWC workshop has changed markedly since they’ve codified these instructions. Before, some instructors would go so far as to install virtual Linux machines for Windows users rather than deal with installation and compatibility problems. With their teaching stack and excellent troubleshooting Wiki page, Software Carpentry lets its students and teachers more quickly move on from installation and configuration to their real goal: teaching scientists software tools.

It’s important to zoom out and note that Software Carpentry is enabled by a much larger surrounding community. Two large communities, Python and scientific research, combine to support the project’s deeply collaborative approach to teaching. With groups like the Python Software Foundation supporting innovative teaching, events like the annual PyCon Education Summit, and support for the new Mozilla Science Lab Software Carpentry has grown to hundreds of instructors teaching thousands of students each year.

Zooming out: teaching tech takes a community

We need to define and cultivate teaching ‘stacks’, analogous to the web stacks we use every day. These stacks should be suited to different purposes and related back to different student needs. Already, successful workshops like Railsgirls, GirlDevelopIt, and Github’s Training Workshops are leading the way by making and using innovative open materials. Companies and groups that place an emphasis on teaching and learning are positioning themselves for strong growth in the future.

The takeaway: teaching stacks drive growth

Here’s the real question: Does your company or open source community have a well-maintained teaching stack so others can spread the word? If so, it’s likely to be a large component of your growth over the next few years. If not, see who else you can find who has the same teaching needs as you do and work together to build the stack that works for your subject matter and your students.

What teaching stacks have you seen that are working?

This year at OSCON we’re partnering with Devoxx4Kids to host an entire day of workshops for school aged children interested in learning more about computer programming. Workshops will include Java, Python, Scratch, Minecraft Modding, Arduino, and more.