How to Run Corporate Python Training Effectively | Mito

How to Run Corporate Python Training Effectively

Ready to write Python code 4x faster?

Python is the go-to language for data science. While Excel is currently the most used tool for data work, Python is quickly replacing it, and there’s a rush to help existing analysts and business users of Excel learn Python.

At Mito, we’ve helped run Python trainings at bulge bracket banks and at tiny startups — and we’ve learned a lot along the way. The most effective Python trainings can be an order of magnitude more effective than the least effective ones — and this guide will help you fall among the former.

Running an effective enterprise-grade Python training is not just copying a Python Coursera course from online. It requires empathizing with the users you're training, and doing your very best to help them use Python on their real business problems.

13 Steps to Teach Python to Your Team

Building a Python User Base

The first question for your training: who are you training on Python? If you’ve got a mandate from leadership to train all new analysts on Python, this will be pretty easy to answer. If not, you’re going to have to figure this out yourself – and we've seen lots of different ways to build a relevant user base.

Recruiting Interested Parties

In almost any organization, there are folks interested in learning Python if the opportunity is provided to them. If you're the one setting up a Python training, then you probably know at least some of these people in your company.

The key observation here is that users who self-select into learning Python are on-balance more motivated than users that are forced to learn Python. There’s a balance here, because there can be huge benefits to training entire teams / orgs on Python as they can build a lot of shared infrastructure. On the other hand, self-motivated users are more likely to have pressing problems they are looking to solve with Python, more likely to use Python outside of the training, and more likely to use Python in practice to solve real business problems. For your first training, self-selected Python users are a great way to test your material on the most forgiving/supportive users.

Building an understanding of these users, their use cases, and what they are looking to do with Python will become very useful later as you begin building an effective Python syllabus.

Marketing Python Internally

To increase the number of potential Python users, some Python marketing can go a long way. Is there a particularly visible, important, or impactful automation that you know about in your organization? If so, a one-page case study that highlights:

  1. The process before Python was used
  2. How Python enabled automating the process
  3. The ROI of automating the process: errors reduced, time saved, and more

The language we’ve found most effective usually has to do with enablement, time-saved, and capacity increase – check out some case studies we've used to market Python here and here and here.

An Effective Python Syllabus

Every single Python training that we’ve encountered in the wild usually starts with some variation of: here’s how to add numbers; here’s what a string is; here’s how dictionaries work.

While this sort of education makes sense in the generic case for a new Python student, introducing Python to your teammates in this manner is not the most effective approach. For one, the problems that you often find in existing Python curriculums look like: how to reverse a string, how to calculate prime numbers, etc. Business users are much more likely to need to solve problems, not abstract riddles.

The standard Python course is designed for a large variety of students – making them inherently broad. This results in low retention and activation rates. Running a training in house (rather than just giving folks a link to Coursera) allows you to run a 10x more effective training – take advantage of this!

Lead with realistic workflows

Solving this is simple: focus your training around a core set of simplified-but-realistic workflows. To create these workflows:

  1. Before the training, have a quick chat with the users in the Python user group you've created.
  2. Ask these users what datasets they often access, and what workflows they are hoping to automate using Python.

Often, users in an organization will access a set of common datasets, and perform workflows that share some structure between them.

By basing you training exercises on these datasets and workflows (albeit in a simplified manner), you'll be able to skip the entire part of the training called "motivating these workflows." Users will understand the data that you're working with, why you're working with it, and get excited about their own use cases.

Although it might be easy for you to see the connection between finding prime numbers and performing a data recon (duh, they both use loops), new Python users struggle to make this connection. Don't make things even harder for your users.

Training on relevant datasets and workflows is the single most impactful change you can make to your Python training syllabus. We've seen days of Python training wasted on irrelevant and un-motivating workflows.

Run your Python training from Jupyter Notebooks

Since all good trainings are built around actually having users implement Python code themselves on practice problems, users need a place to write Python code We’ve see trainings take place in .py files, in shared editors, and in Jupyter Notebooks. We've observed what many other Python instructors in academia have as well: Jupyter Notebooks are the most effective place to run a Python training.

There are a few reasons for this, but in general it is because one of the major use cases that notebooks are designed for is education! With a notebook, you can:

  1. Fluidly interweave plain-text explanation, images with instructions, and Python code cells that users can fill in. These different cell types makes for a pleasant (and effective) Python learning experience for all involved.
  2. Run individual code cells and see the outputs directly, making it much easier to understand pieces of the current program.

Together, this makes Jupyter Notebooks the optimal place for running an introductory Python training.

Rely on useful plugins

On top of being able to include text, images and code in one place, there are a variety of Jupyter Notebook plugins that can help facilitate trainings. We've explored many and built a few of our own.

First, Mito. We developed Mito to help new users get started with Python with the skills they have. Mito presents an Excel-like interface to new Python users, and generates code for every edit they make.

From a training perspective, the main benefit of Mito is: users can start working on relevant data and relevant workflows immediately. You can install Mito with a simple pip install mitosheet – and skip over the weeks of Python basics in your training.

Don't people need to learn Python basics? Isn't that the goal of Python training? Actually, no. Success in training is encouraging folks to continue learning Python post-training – and the best way to do that is to motivate them by helping them start solving their real business problems as soon as possible.

Other relevant plugins include the JupyterLab Git extension, which makes it easier for new programmers to get use to version control.

Train users in project management

A common misconception about Python training is that its only goal is to teach users how to actually write Python code. In practice, writing Python code is just half of creating a useful Python automation!

Most realistic workflows require more than just writing Python code – they also require managing the writing of the Python code! We've seen many users who are proficient Python programmers delay-or-fail to automate something with Python because they don't know how to break projects into manageable chunks.

We've written extensively about how to manage a Python automation, and in practice we often start our trainings by talking to users about:

  1. What workflows are appropriate to consider automating with Python
  2. How to break workflows down into reasonable chunks
  3. How to continue making progress when running into roadblocks

Knowing how to manage a project is the difference between getting half way through building a Python script and giving up because you get confused vs methodically building a useful script that becomes a useful automation.

Running the training

You've got users excited to learn Python. You've got a Python syllabus you're excited to teach. Now, you've got to actually run a training!

Run trainings in person

Zoom is great for a lot, but teaching someone a programming language for the first time isn't one of those things.

Because learning Python requires a lot of little specific details, it can be really challenging for new users to learn over Zoom. The primary issue is that you, the instructor, can't easily walk around and see users struggling – which makes it much harder to get them unstuck. Users are often much more hesitant to speak up over Zoom.

Overall, we've found that the most effective trainings are in person, and the least effective trainings are over Zoom. Sometimes, you're forced to compromise on this one, and that's ok too.

Ensure database and infrastructure access

If users can’t access their Jupyer notebooks, or they can't log into the database, then they aren't going to be able to write much Python.

Nothing takes the wind out of users sales like spending the first day of training debugging infrastructure access. As such, spend the week before your training making sure that all users have the correct permissions to access the infrastructure – and actually ask them to test it before hand. This will result in a much smoother training.

Help users avoid common errors

In practice, the first few days of Python are spent fighting the 10 most common errors like:

  1. Invalid syntax from a single equals sign
  2. Forgetting to indent a block of code
  3. Mixing up parens and square brackets

These few errors eat up upwards of 80% of the debugging time that beginning Python users spend writing Python code – so if you can help them avoid these issues, you can make the starting experience for them much more pleasant and keep the wind behind them.

Mito gives users an interface they are familiar with, and makes it easy to avoid these basic syntax errors in favor of real productivity on realistic workflows.

Bring enough trainers to answer questions live

Trainers need to be there to answer questions – the more users you have, the more questions you will have. A rule of thumb is that one trainer can handle about 10 users, 15 at most.

We've found that making sure there are enough trainers ensures that users get their questions answered in a timely manner, making sure that they aren't stuck on any one problem for too long. This reduces their frustration, and makes the training run smoothly. Having a pleasant/fun/interesting first interaction with Python is important for activation.

Bring doughnuts

Trainees like doughnuts. Bring them. It will bring you a lot of goodwill, and you can put the sugar rush to good use.

Not this sort of Python and doughnut combination...

Have users make a plan for specific automations

At the end of trainings, it is tempting to release users into the world with your blessing. And you should! But before you do, you should also help them plan next steps, as this plan will increase follow through!

More specifically:

  1. Ask them to pick automation targets. What important business problems are they looking to solve?
  2. Help them think about how to break the problem down. What's a good first step they can begin to attempt?
  3. What is a good checkin date for this first piece of the project? Can they checkin with you, or with a teammate who has interest in the project as well?

Even the most motivated folks benefit from continued motivation and accountability. They're busy - it's why they care about increasing the efficiency with Python in the first place.

Post Training

Offer a Python training and certification

Users love when their training results in some concrete takeaways. Offering some certification, even if it's an internal certification, can be a huge plus to Python beginners and help them realize the progress they've made over the course of their training.

This Python certification, even just for course completion, has a few other benefits. It can be a useful marketing tool for your Python training program, as coworkers can share their course completion publicly. Moreover, certifications for later classes can motivate users to continue their Python education.

Overall, a post-training certificate has a large bang-for-buck in making users feel like they got something concrete out of the training, and encourages them to continue their Python activation.

Provide continued Python support

It's a common misconception that users who've been through an initial Python training are now able to use Python independently. In practice, we've observed <10% of beginners activate after their first Python training. There's more work required to get these users to fully realize the benefits of Python and utilize it on real workflows!

A key piece of this work is making sure that there is continued support for these users as they begin to write Python scripts on their own. This support can take a variety of flavors, but the gold-standard is giving users an avenue to ask questions to experienced Python users who are knowledgable about the organizations infrastructure. We've seen this take a couple of forms:

  1. Python Help Desk: Create a dedicated channel, such as a Slack or Teams channel, where participants can ask questions, share tips, and get help with Python-related issues. This can be staffed by more experienced members of your team or volunteers who enjoy helping others.
  2. Regular Python Office Hours: Set up weekly or bi-weekly sessions where team members can bring their Python questions or project challenges to discuss with more experienced Python users. This encourages continuous learning and problem-solving in a supportive environment.
  3. Build Internal Python Resources: create resources for common use cases, data sources, and more and distribute them to internal Python users. When users encounter a problem, add the solution to the documentation - so future users don't get stuck there.

Continued Python support is crucial for maintaining the momentum generated during your initial training sessions. This support ensures that your teammates can apply what they've learned to real-world problems, continue growing their skills, and stay motivated. Here's a detailed expansion of this section:

Offer advanced Python classes

Ok, users have finished the intro class, used your support, and automated some of their work. What's next?

You should start building your advanced Python course syllabus! Users who have successfully automated their first workflow in Python very often have large gaps in their Python knowledge, including but not limited to:

  1. Using version control to minimize process risk
  2. Writing effective documentation to reduce key person risk
  3. Writing tests to ensure code correctness going forward
  4. Packaging and sharing Python code with the organization

A Python 201 class can take these burgeoning Python users and make them much more effective teammates in the long term. After all, the lessons listed above all come directly from software development.

All of the lessons above on running an effective intro Python class apply here as well, of course!

Want help running a Professional Python training?

These lessons come from our experience helping run Python trainings at organizations ranging from bulge bracket banks to tiny startups.

We've used our experience to create a comprehensive, customizable Python training program that will help you activate your teammates on Python. This program includes:

  1. Starter notebooks for structuring your training, deploying the above best practices.
  2. Marketing materials for growing your internal Python audience, for pitching Python to leadership, and more.
  3. The Mito spreadsheet - a Jupyter Notebook extension that speeds up beginner Python programmers by 4x.
  4. Support System - we'll help you setup and run a Python Help Desk, continued training programs, and more.

If you're interested in seeing an outline of our starter notebooks to jumpstart your curriculum, reach out!

Ready to write Python code 4x faster?