Training
We are happy to share our software development knowledge and expertise during comprehensive, tailor-made training sessions and workshops.
We take our training work very seriously. All content we produce is proprietary, well researched, full of examples, "lessons learned", best practices, references and recommended follow-up material.
In our trainings, we aim for pragmatism, with some light-hearted, personal touch. Everything we talk about, we're well-versed in and can answer the toughest of questions coming from our audiences.
We have delivered training sessions and workshops with the following themes:
- Modern Python Crash Course
- High-performance computing
- Rust basics
- SRE, DevOps and Automated Monitoring
Training Courses
Our training courses are all customized and tailor-made.
We therefore don't have a standard price list; please reach out to us with your training needs for a quote.
We usually run the courses over 1.5 hour sessions, with a small 5-minute break in the middle.
Outside of regular course material, we offer optional extras:
- Extra sessions devoted to working with your codebase/stack specifically
- "Office hours" during which the instructor can answer any and all questions from the trainees
- Post-course team augmentation to bootstrap and supervise projects
We present sample courses below.
Course: Modern Python Crash Course
Elevate your team's skills with our flagship Python course.
The ultimate distillation of years of hard-won lessons learned, proven best practices, Python idioms, and expert techniques.
Tailored for developers with prior programming experience (Python or any language), it skips the basics to deliver accelerated, real-world proficiency. We've poured our deepest Python expertise into this single, transformative course — your fast track to coding like a pro.
Usual Course Outline
(This this the usual course outline — we are happy to tweak it to your needs).
This course is usually delivered in 9 modules, each module accompanied by a 1.5 hour video session. The sessions can be recorded for internal-only use. Additionally, a slide deck in form of Jupyter Notebooks is delivered. The slides are code-heavy, and all the code is runnable, for self-paced learning. Each session concludes with references and recommended 3rd party follow-up material.
It can be shortened to 4 sessions (to selectively skip more advanced material and the two-session workshop in the middle).
Module 1: Organizing Python code
- How to use the slides
- Structuring Python projects
- Import system and its pitfalls
Module 2: Data modelling, classes
- Python object model
- Class inheritance,
super - Dataclasses and related libraries
Module 3: Testing Python
- pytest basics and best practices
- Mocks
- Testing numerics (floating point pitfalls, pandas, NumPy)
Module 4: Error handling and logging
- Best practices for error handling
- Structuring errors, context managers
- Logging best practices
Module 5: Two-session workshop (1st session)
The two-session workshop is designed to engage the audience with a hands-on real-world issue solving walkthrough.
- Task-oriented workshop within target business domain
- Introduction to take-home exercise
Module 6: Two-session workshop (2nd session)
- Review of the the take-home exercise
- Additional recommendations and individual help
Module 7: Asyncio
- Basic abstractions
- Error handling
- Synchronization and cleaning up
- Bridging sync-async
- Testing asyncio
Module 8: Decorators and (basics of) metaclasses
- Writing a decorator from scratch
- Decorator usages
- Common standard library decorators
- Basics of metaclasses and when to use them
Module 9: Modern Python tooling
- Basic Python tooling for projects at scale: formatting, linting, type checking, testing, Python project management etc.
- Profiling and debugging Python
- A reasonable Python CI pipeline
- Python environment management
- Tips on Python in Docker
- Course wrap-up: recommended libraries and follow-up learning material