Informacje o szkoleniu

Główna korzyść: usprawnienie wykorzystania Pythona w Twojej firmie, dzięki czemu developerzy pracują szybciej i tworzą lepszy kod, tzn. taki, który będzie łatwiej, szybciej i taniej utrzymać w przyszłości.

Czas trwania: 5 dni po 7 godzin zegarowych brutto (tzn. razem z przerwami) + indywidualne konsultacje po każdym dniu
Forma szkolenia: warsztatowa (70% ćwiczenia / 30% wykład)
Logistyka: w siedzibie klienta lub innym wyznaczonym przez niego miejscu, w Polsce lub za granicą w obrębie Europy
Zapisy: szkolenie zamknięte – indywidualne zamówienie i dopasowanie dla grupy
Wielkość grupy: max 10 uczestników
Język szkolenia: język polski lub angielski lub oba naraz w ramach jednego zlecenia
Grupa docelowa: developerzy Pythona, team leaderzy, architekci, analitycy, DevOpsi, R&D, testerzy
Wymagania dla uczestników: znajomość Pythona na poziomie podstawowym

Szkolenie dedykowane jest osobom pracującym już w Pythonie. Klienci bardzo często decydują się na to szkolenie po zobaczeniu efektów szkolenia Wprowadzenie do Pythona 3.

Plan szkolenia

I. Advanced Tooling

  1. Multiple Python Installations
  2. Common Caveats with Python Installation on Windows (i.e. Python not on %PATH%)
  3. IDEs (Integrated Development Environments)
  4. Overview of Most Important IDEs (PyCharm, Visual Studio Code with Python Plugin and Jupyter Notebook)
  5. Using Visual Studio Code: Program Layout, Installing Python Plugin, Accessing Terminal, Changing Default Terminal, Turning On Auto-Save etc.
  6. IPython
  7. Jupyter Notebook: Installation, Use Cases, Auto-Completion, Displaying Inline Documentation, Restarting Underlying IPython Session, Integration with Matplotlib, Support for Different Kernels, nbextensions, Table of Contents, Exporting Notebooks to HTML and Python Code etc.
  8. Version Pinning
  9. pip Package Manager and PyPi Repository
  10. Isolated Python Installations with virtualenv
  11. Anaconda Distribution
  12. conda Package Manager and Anaconda Repository
  13. Isolated Python Environments with conda
  14. Anaconda vs „Pure” Python Installation
  15. conda vs pip
  16. Python Releases
  17. Python 2 vs Python 3
  18. Main Differences between Python 2 and 3
  19. Porting Python 2 to 3
  20. Python Documentation
  21. PEP8 for Formatting Rules

II. Functions

  1. Positional and Named Arguments
  2. Returning Multiple Values
  3. Default Values
  4. Default Value Trap
  5. Lambdas
  6. Sorting by Key
  7. Global and Local Scope
  8. Global Keyword
  9. *args in Function Signature, Function Call and Other Places
  10. **kwargs in Function Signature, Function Call and Other Places
  11. Positional Only Arguments
  12. Function Annotations
  13. Introduction to Static Typing with mypy
  14. Nonlocal Scope and nonlocal Keyword
  15. callable Function
  16. Introduction to Nested Functions and Closures

III. Decorators

  1. Decorator Syntax, Definition and Usage
  2. Simple Decorators for Registering Functions
  3. Nested Functions
  4. Closures
  5. Non-parametrised Decorators Delegating to the Decorated Function
  6. Class-based Implementation of the Above
  7. Proper Argument Passing
  8. Parametrised Decorators with Three Nested Functions
  9. Class-based Implementation of the Above
  10. Decorating Methods
  11. Decorating Classes
  12. Template Method Design Pattern as one of the Use Cases
  13. Decorator Use Cases

IV. Intermediate Object Oriented Programming

We skip easier topics if the group is advanced enough.

  1. __str__ vs __repr__
  2. __str__ Method vs str() Function
  3. Classes Imitating Functions with __call__ Special Method
  4. Encapsulation – Interface vs Implementation
  5. Protected Attributes
  6. Private Attributes
  7. Read-Only @property
  8. Read-and-Write @property
  9. Introducing Encapsulation to an Existing Class without Breaking the Interface with @property
  10. Variable Annotations
  11. Dataclasses: Usage, Default Values, Default Values Trap, Default Value Factory, Fields Customisation, __post_init__
  12. Introduction to Single Inheritance
  13. Attribute Lookup Mechanism
  14. Code Reusage with Inheritance
  15. Method Overloading
  16. super()

V. Advanced Object Oriented Programming

  1. Special Methods Recap
  2. object Class
  3. defaultdict Data Structure
  4. Inheriting from Builtin Classes, i.e. Data Structures
  5. @classmethod
  6. Alternative Constructors with @classmethod
  7. @staticmethod
  8. Descriptors
  9. Bound vs Unbound Method
  10. Slots
  11. Including __dict__ in Slots
  12. Abstract Base Classes
  13. Multiple Inheritance: Fundamentals, MRO (Method Resolution Order), Diamond Problem, super() Behaviour
  14. Mixin Classes
  15. Metaclasses: type Metaclass, Writing Your Own Function-based and Class-based Metaclasses, Use Cases, Simpler Approaches

VI. Iterators

  1. Iteration Protocol
  2. Iterable vs Iterator
  3. Class-based Implementation of One-Time Iterable
  4. Class-based Implementation of Reusable Iterable

VII. Generators

  1. Generators and yield Instruction
  2. Iteration over Generators
  3. Generators vs Iterators
  4. Generator-based Implementation of One-Time Iterable
  5. Generator-based Implementation of Reusable Iterable
  6. Passing Data to a Generator
  7. Introduction to Coroutines

VIII. Advanced Code Organisation

  1. Modules
  2. Three Import Styles
  3. Renaming in Imports
  4. Import vs Execution and __name__ Variable
  5. Module Search Order
  6. sys.path List
  7. PYTHONPATH Environment Variable
  8. Packages
  9. Packages Initialisation
  10. __init__ Files
  11. Relative Imports

IX. Packaging and Publishing Python Code

  1. requirements.txt
  2. setup.py
  3. PyPI
  4. Wheel Format
  5. Packaging Python Projects with setuptools and Generating Distribution Archives
  6. Semantic Versioning
  7. twine for Automating Publishing Python Packages

X. Testing with pytest

  1. What Testing is for?
  2. Overview of Available Frameworks (unittest vs pytest vs doctest)
  3. pytest Fundamentals
  4. Launching Tests
  5. Fail Fast Mode (-x Switch)
  6. Printing Local Variables (-l Switch)
  7. Quiet Output (-q Switch)
  8. Testing both Happy and Sad Paths
  9. Testing Edge and Corner Cases
  10. Fixtures
  11. Unique Temporary Directory for Test Run
  12. Fixtures Scopes – Sharing Fixture Instances between Tests
  13. Fixture Dependencies
  14. Fixture Finalisation
  15. Grouping Tests into Classes
  16. Skipping Tests

XI. Parallel Programming

  1. threading Module
  2. Creating, Starting and Joining Threads
  3. Producent and Consument Pattern
  4. Communication via Queues
  5. Daemon Threads
  6. Proper Threads Starting and Joining
  7. concurrent.futures Module
  8. pool.map
  9. pool.submit
  10. Global Interpreter Lock
  11. Parallelisation of IO Operations vs Computations
  12. ThreadPoolExecutor vs ProcessPoolExecutor
  13. Measuring Time Execution
  14. Debugging Multithreaded Programs in PyCharm

XII. Regular Expressions (optional)

  1. Idea of Regular Expressions
  2. Limitations
  3. re Module
  4. re.search() vs re.match()
  5. re.findall()
  6. Pattern Compilation
  7. Making Long Patterns more Readable with re.VERBOSE
  8. Extracting Data with Unnamed Groups and Named Groups
  9. Matching to the Beginning and End of String (^ and $)
  10. Optional Elements (?), One-or-More Repetition (*) and Zero-One-or-More Repetition (*)
  11. Advanced Repetition with {}, {n,}, {,n} and {n,m} Syntax
  12. Alternative with [] and (a|b) Syntaxes
  13. Character Groups with [a-z]
  14. Negation with [^]
  15. Character Classes: \d, \D, \s, \S etc.
  16. Escaping
  17. Syntax Cheat Sheet
  18. Processing Files with Regular Expressions

XIII. Using and Creating REST APIs (optional)

  1. Recap of JSON, JSON Data Types, Loading and Dumping JSON in Python
  2. Using Postman for Accessing Web APIs
  3. YAML Format
  4. Loading and Dumping YAML Format
  5. JSON Schema
  6. Validation with jsonschema
  7. Loading JSON to Your Own Classes with dataclasses-jsonschema
  8. Flask Web Application Structure
  9. Starting and Stopping Flask Development Server
  10. flask_restful Library

XIV. Miscellaneous (optional)

  1. Persistence with Pickle
  2. Working with Files and Directories
  3. Launching and Controlling Subprocesses in a Blocking Way
  4. Launching and Controlling Subprocesses in a non-blocking Way
  5. Reading and Writing CSV Files with builtin csv Module
  6. Reading and Writing CSV and Excel Files with pandas

Korzyści dla zamawiającego

Jako zamawiający szkolenie otrzymasz:

  1. Analizę potrzeb i pomoc w doborze szkolenia w postaci rozmowy telefonicznej ze sponsorem szkolenia, HRem, team leadem lub/i uczestnikami szkolenia. Dodatkowo, analiza potrzeb uczestników na samym początku szkolenia pozwala na jeszcze lepsze wykorzystanie czasu.
  2. Możliwość i pomoc w dostosowaniu szkolenia pod Twoje potrzeby.
  3. Gwarancję poprowadzenia szkolenia przez doświadczonego trenera – wszystkie szkolenia prowadzę osobiście, nie wysyłam praktykantów.
  4. Ewaluację szkolenia przez uczestników w postaci elektronicznej ankiety pod koniec ostatniego dnia szkolenia. Wyniki są przesyłane zainteresowanym osobom (najczęściej sponsor + HR).
  5. Raport z wnioskami ze szkolenia i rekomendacjami oraz wynikami ewaluacji szkolenia w formie telefonicznej lub/i mailowej dla sponsora szkolenia i innych zainteresowanych osób.
  6. Prostą i przewidywalną politykę cenową – stawki dniowe za szkolenia nie zależą od tematyki, liczby uczestników, czasu trwania szkolenia ani kosztów transportu i noclegu trenera, a w obrębie Polski także od miejsca szkolenia. Stawki są all-inclusive, tzn. wliczają wszystkie koszty (transport i nocleg trenera) poza ewentualnym wynajmem sali szkoleniowej. Wystawiam faktury VAT. Raz zaproponowana stawka obowiązuje do końca roku kalendarzowego, co ułatwia planowanie, bo wiesz na czym stoisz.
  7. Prostą komunikację – masz do mnie bezpośredni dostęp telefoniczny i mailowy i wiesz, że jestem osobą kontaktową od wszystkiego. Nie dzwonisz do nietechnicznego koordynatora szkoleń, który nie może odpowiedzieć na Twoje techniczne pytania i który dopiero umówi Cię na rozmowę z trenerem. Nie musisz zastanawiać się z kim skontaktować się z firmy szkoleniowej? Z koordynatorem? Z trenerem? Z asystentką? U mnie nie ma asystentów – wszystkim zajmuję się sam. Dzięki temu masz tylko jedną osobę kontaktową, która odpowie na wszystkie Twoje pytania.
  8. Prosty proces zakupowy – wystarczy jeden telefon lub mail, abyś otrzymał(a) ofertę i aby zarezerwować dla Ciebie termin. Terminy są na wyłączność, nie praktykuję overbookingu. Następnie wysłanie Purchase Order potwierdza zamówienie.
  9. Sympatycznego partnera biznesowego – generalnie traktuję klientów jak przyjaciół, co widać nawet na tej stronie. Nie buduję sztucznych barier, nie udaję wielkiej korpo-firmy szkoleniowej, piszę w pierwszej osobie.

Klienci, po zobaczeniu efektów tego szkolenia, bardzo często decydują się na inne szkolenia, także dedykowane szkolenia, przygotowywane specjalnie dla nich.

Korzyści dla uczestników

Dodatkowo, w ramach szkolenia uczestnicy otrzymają:

  1. Siedem godzin zegarowych szkolenia każdego dnia brutto, tzn. w tym przerwy.
  2. Konsultacje i doradztwo dla uczestników po każdym dniu szkoleniowym. Nie rozwiązujemy indywidualnych problemów w trakcie szkolenia, skoro rozwiązaniem zainteresowana jest tylko ta jedna osoba. Nie mówimy, że robimy 8 godzin szkolenia, tylko po to aby potem w trakcie szkolenia przeprowadzać indywidualne konsultacje.
  3. Wsparcie poszkoleniowe dla uczestników i sponsora szkolenia, mailowe i telefoniczne.
  4. Instrukcję przygotowania laptopów dla uczestników i, w razie potrzeby, wsparcie telefoniczne, mailowe i Skypowe (chociaż jeszcze nigdy nie było takiej potrzeby). Dzięki temu oszczędzamy czas na początku szkolenia i ruszamy od razu z nauką.
  5. Materiały szkoleniowe zawierające fragmenty kodu, komentarze, ćwiczenia i ich wzorcowe rozwiązania. Materiały są w formie pojedynczej strony internetowej, dzięki czemu uczestnikom jest bardzo łatwo wyszukać interesujący ich fragment. Materiały są dostępne także po szkoleniu. Uczestnicy mogą je także pobrać, aby mieć do nich dostęp offline. Forma materiałów pozwala na dostosowywanie materiałów na bieżąco do potrzeb uczestników, w przeciwieństwie do materiałów drukowanych, które nie pozwalają na np. dodanie komentarzy zasugerowanych przez uczestników.
  6. Środowisko gotowe do wykorzystania po szkoleniu. Nie używamy wirtualnych maszyn, instalujemy wszystko na laptopach uczestników.

Opinie o trenerze

Trzeba szanować czas innych ludzi, dlatego poniżej znajdziesz wybrane referencje tylko w języku angielskim.

Very inspiring training. I really appreciate the way Chris managed to walk us through the complex world of machine learning using Python. Good course materials updated real time. Highly recommend.

Krzysztof Gębal
Finance Director at DNB Bank Polska S.A.

Well prepared training and reasonably passed knowledge, thanks to which we develop better services.

Arkadiusz Baraniecki
Infrastructure Team Manager at allegro.pl

Chris recently taught a four day class on Machine Learning with Python four our team. The class was very good with the right balance of theory and practice. I cannot think of a better way to give a four day class about such an extensive topic.

Nicolas Leveroni
Head of Krakow Product Control Analytics at HSBC

Więcej referencji znajdziesz tutaj.

FAQ

Kto prowadzi szkolenia?

Szkolenia prowadzę zawsze osobiście – nigdy nie dostaniesz ode mnie praktykanta. Moje doświadczenie sięga 2011 roku. Możesz przeczytać więcej o mnie tutaj.

Dlaczego miał(a)bym zamówić szkolenie, skoro moi ludzie mogą nauczyć się sami z kursów Udemy etc.?

Szkolenia są po prostu szybsze. W ciągu 5 dni szkolenia uczestnicy uczą się tyle, co podczas ok. 15 dni samodzielnej pracy z kursem online. Wynika to z:

  • customizacji szkolenia,
  • dostosowania tempa do poziomu uczestników,
  • udzielania uczestnikom podpowiedzi i feedbacku podczas ćwiczeń,
  • możliwości zadawania pytań i rozwiewania wątpliwości na bieżąco w trakcie szkolenia.

Możesz wybrać kurs online, tylko ile będzie Cię kosztować wyjęcie ludzi na te dodatkowe 10 dni?

Dlaczego mam zaufać Tobie, a nie renomowanej firmie szkoleniowej?

Wszystkie szkolenia prowadzę osobiście, dlatego nie ryzykujesz, że dostaniesz praktykanta.

Jak wygląda proces zakupu?

Wystarczy jeden telefon lub mail, abyś otrzymał(a) ofertę i aby zarezerwować dla Ciebie termin. Terminy są na wyłączność, nie praktykuję overbookingu. Następnie wysłanie Purchase Order potwierdza zamówienie. To jest wystarczające minimum.

Dodatkowo, często umawiamy rozmowę z team leaderem lub architektem, aby ustalić cel i szczegółowy zakres szkolenia.

Proszę pamiętać jeszcze o poinformowaniu o szkoleniu uczestników oraz zagwarantowaniu sali szkoleniowej zgodnie z poniższymi wytycznymi.

Jakie są wymagania dotyczące sali szkoleniowej?

Szkolenia na ogół odbywają się w siedzibie klienta, w udostępnionej przez niego sali lub innym wyznaczonym przez niego miejscu.

  1. Sprawy projektor z kablem zasilającym, wejściem i kablem HDMI lub VGA.
  2. Internet (wystarczy WiFi) dla każdego uczestnika, a także dla mnie jako trenera. To jest istotne, bo materiały szkoleniowe aktualizujemy na bieżąco w trakcie szkolenia.
  3. Wystarczająca ilość miejsca dla wszystkich uczestników + miejsce dla mnie jako trenera. W przypadku małych biurek proszę mnie policzyć jak dwie osoby.
  4. Flipchart lub whiteboard (jeśli nie ma, to proszę o informację).

Jakie są moje obowiązki jako zamawiającego szkolenie?

  1. Zorganizowanie sali szkoleniowej.
  2. Zebranie grupy uczestników i poinformowanie ich o szkoleniu.

Nie musisz martwić się organizacją ani opłaceniem transportu i noclegu trenera – to jest na mojej głowie.

Mam grupę więcej niż 10 osób, jak je przeszkolimy?

Taka sytuacja jest bardzo korzystna, bo możemy podzielić uczestników na dwie lub więcej grup według poziomu zaawansowania. Selekcję możesz przeprowadzić we własnym zakresie lub zlecić to mnie – wtedy wysyłamy uczestnikom krótką ankietę elektroniczną, aby zbadać ich poziom zaawansowania. Na podstawie jej wyników przyporządkuję uczestników do odpowiednich grup.

Czy istnieje możliwość zrealizowania szkolenia zdalnie, tzn. online?

Jak najbardziej, jeśli tylko uczestnicy mogą korzystać na swoich laptopach z zoom.us (nie wymaga instalacji). Uczestnicy będą potrzebowali miejsca, w którym będą mogli się skupić, dlatego najczęściej są zgromadzeni w jednej sali szkoleniowej, tak jak podczas zwykłego szkolenia.

Jakie są korzyści z prowadzenia szkoleń zdalnie/online?

  • Uczestnicy posiadający rodziny docenią brak konieczności podróży do innego miasta.
  • Mniejsze zmęczenie trenera podróżą przekłada się na jeszcze wyższą efektywność szkolenia.

Czy szkolenie może zostać scustomizowane i przystosowane stricte pod naszą grupę?

Tak, jak najbardziej. Analizę potrzeb przeprowadzamy np. telefonicznie.

Czy istnieje możliwość przygotowania dedykowanego, szytego na miarę szkolenia?

Tak, jak najbardziej. Takie szkolenie może być mixem kilku szkoleń, może zostać uzupełnione o nowe moduły albo przygotowane zupełnie od zera. Więcej informacji znajdziesz tutaj.

Mam dodatkowe pytania lub/i wątpliwości, komu mogę je zadać?

Proszę skontaktuj się ze mną mailowo lub telefonicznie. Adres email i numer telefonu znajdziesz na dole strony. Na wszystkie maile i telefony odpowiadam osobiście, nie delegujemy zadań do asystentki ani koordynatora szkoleń.