Faster feature delivery and happier developers

There’s always more to learn in the world of Python, an ever-growing number of tools and techniques—but there’s only so much time in the workday. While your team is focusing on shipping the features that matter to your business, it’s easy for their technical skills to fall behind.

Out-of-date tools, stale techniques, and missing skills can kill your velocity. And if they feel their skills are becoming obsolete, your software developers might move on to greener pastures elsewhere.

In contrast, investing in new skills and best practices can speed up your feature delivery—and keep your team happy and engaged.

My training classes build on 20 years’ experience working with Python.

  • I’ve taught classes at Cisco offices in England and Norway, and to software engineers from VMware and Rackspace.
  • I’ve also given talks at multiple Python conferences over the years—see below for a partial list.

Interested in upgrading your teams’ skills? Get in touch.

Conference talks

Podcast appearances

Course topics

Production-ready Docker packaging

Bad packaging can result in security and production problems, not to mention wasted time: waiting for slow builds, debugging the build system, and debugging issues caused by non-reproducible builds.

To help you avoid these problems, I can teach your team how to build production-ready Docker images for Python applications, based on my extensive guide. Potential topics include:

  • How Docker packaging works (image format, Dockerfile, caching).
  • Choosing a base image and tagging.
  • Security (root, capabilities, build secrets, impact of caching).
  • Multi-stage builds (smaller images, the problem of slow builds).
  • Reproducible Python builds: motivation and tools.
  • Preparing for problems (faulthandler, manhole, psutil, and other tools).

Interested in upgrading your teams’ skills? Get in touch.

Performance optimization

Slow software is expensive—whether it’s high server costs, or batch processes that take too long. Teach your team the tools and techniques they need to figure out why their Python code is slow—from profilers to logging.

Interested in upgrading your teams’ skills? Get in touch.

Software engineering for scientists and data scientists

Scientists and data scientists need to write software, but don’t always have the same software engineering background that software developers do. Based on my experience helping biologists with scientific computing, I can fill in these gaps in ways that are relevant to scientists’ particular uses of software.

Interested in upgrading your teams’ skills? Get in touch.


Testing doesn’t just mean unit testing: everything from manual testing to code review has its place. I can help your team with the basics, or collaboratively figure out a strategy that meets your particular situation and goals.

Interested in upgrading your teams’ skills? Get in touch.