I’m Michael Foord and I’m a Python trainer and contractor. I specialise in teaching Python and the end-to-end automated testing of systems. My passion is for simplicity and clarity in code, efficient lightweight processes and for well designed systems. As a Python core developer I wrote parts of unittest and created the mock library which became unittest.mock.
Recent customers include:
- The BBC (training)
- Gigaclear Ltd (team lead, backend API development)
- Panoramic Feedback (full stack web application developer)
- OnSemi (training)
- JBI International (training)
- UKAEA (contract work on BLUEPRINT software for designing fusion reactors)
A fun excerpt from my most popular course, Advanced Python:
My favourite article, on software development and testing best practises:
Training
Most of my training is now delivered remotely, via Zoom or Teams, but I’m available for onsite training.
My most popular courses are:
I also teach:
- Object Oriented Theory with Python (2 or 3 days)
- Test automation with pytest or unittest (1 or 2 days)
- Testing principles and practise
- Mocking and patching
- Selenium or Playwright for browser automation
- httpx or requests for API clients
- Learning SQL
- Bespoke courses
Several one hour sessions, seven so far, on a range of Python topics from generators to the concurrency to testing with pytest are available on YouTube. :
My favourite presentation from PyLondinium 2019: The Python Object Model
Contact me
Past Work
Highlights of the last few years.
- 2024 Teaching Object Oriented Theory with Python for the BBC
- 2024 Scrummaster certification with Agile Alliance
- 2023-current Team lead, building backend API servers for Gigaclear Ltd
- 2022-23 Delivering training courses to over 200 engineers for OnSemi, an automotive semiconductor manufacturer. Level 1 and level 2 Python (custom courses).
- 2018-current Training with JBI Training, Advanced Python, Practical Python, Webscraping, etc
- 2022 Teaching Text mining and SQL and databases for Cambridge Spark
- 2021-23 Full stack developer for Panoramic Feedback, a Python web application (including implementing 2FA with Twilio)
- 2021 Six months contract work with the United Kingdom Atomic Energy Authority working on software for the design of fusion reactors, turning a Phd project into an engineering project
- 2020 Delivering a Natural Language Processing AI project and training for GlobalMedia
- 2020 Teaching Advanced Python Mastery for Bloomberg, four courses delivered in London and Frankfurt
- 2018 Working with Gurock on building an end-to-end automated test system, including web functional testing with Selenium, API testing, a pytest plugin and full API client
-
2011 - 2018
Python teaching and training, from 2011-2018 on behalf of David Beazley for customers like HP and HP enterprise in the UK and Ireland.
-
2017 - 2018 Principle Test Automation Engineer for Red Hat Ansible
Principal Test Automation Engineer in the Ansible QA (Quality Assurance) team for Ansible. Working on the automated verification, both tests and infrastructure, of Ansible Tower. Ansible Tower is enterprise web app automation software using the devops tool Ansible.
The tests, and test system, were written in Python using py.test and various different cloud backends.
-
2014 - 2017 Go Developer for Canonical
Working on the Juju devops tool, written in the Go programming language and using MongoDB. Working with cloud providers including MAAS, Amazon, Azure and Google. Two years spent on the networking team.
-
2010 - 2014 Django Developer for Canonical
Web application and web service development, as part of the online services team. Primarily working on two Django projects, the Ubuntu Payment Service and the Ubuntu Single Sign On Service.
-
2009 - 2010 Silverlight and Django Web Application Developer for COMsulting
Developing line-of-business web applications using Django and IronPython in the browser with Silverlight.
-
2006 - 2009 Senior Software Engineer for Resolver Systems
A small team developing a desktop application for the financial services industry. We develop for .NET using IronPython, Windows Forms and C#.
To see my professional endorsements and more details of my career history, see my LinkedIn Profile.
Talks
A selection of some of the talks and interviews I’ve given on Python and software engineering across my career.
- UK Health Security Agency Software Development Practise Conf 2024
- PyCon UK 2023, Metaclasses in 5 Minutes Lightning Talk
- PyCon MEA 2022 How Python Took Over the World
- Test and Code Podcast Episode 145: For Those About to Mock
- PyCon Belarus 2020 How Python Took Over the World
- PyLondinium 2019 The Python Object Model
- Interview on Podcast.__init__ on testing, Mock and the Python community (2018)
- The Role of Abstractions: Lightning Talk PyCon US 2018
- Best Practises for Software Development and Testing (2017)
- PyCon UK Panel 2015
- To the Clouds: EuroPython 2015
- Automated Deployments with Juju: PyCon UK 2014
- Python and Pythons: PyCon NZ 2013
- Testing with Mock: PyCon US 2011
- A Little Bit of Python Podcast (2010-11)
- New and Improved unittest 2: PyCon US 2010
- Michael Foord on IronPython: Hanselminutes 2009
- IronPython in Action (2009, book)
- Michael Foord on IronPython: TechEd 2007
Testimonials
Truly a professional. Knowledgeable, prepared to answer any question from theory and/or experience. Funny, intuitive and very helpful in any technical way.
The course was very well planned out. Michael was a great teacher!
The course was great, lots of exercises to apply what you were learning. Very good course.
Deep technical background and hands-on experience could give good answers on all questions raised.
One of best trainings that I ever attended.
Technologies
Python, Advanced Python, C#, Go, Linux, docker, postgresql, SQL, MongoDB, git, unitttest, pytest, TDD, Django, SQLAlchemy, CI, Jenkins/Travis, devops, AWS, Scrum, Selenium, Flask, OOP, REST, APIs, async, threads, multiprocessing, OWASP, security.