Informacje o szkoleniu

Główna korzyść: Rozwiązanie problemu utrzymania kodu (wolne wprowadzanie nowych zmian, dużo nowych błędów przy każdej zmianie). Dzięki temu szkoleniu Twoi ludzie zaczną testować lub będą robić to jeszcze lepiej. To w dłuższym czasie przekłada się na możliwość szybszego wprowadzania zmian w kodzie i mniejszą liczbę bugów. To bardzo często przesądza o powodzeniu projektu. Umiejętności nabyte w czasie szkolenia można łatwo przenieść na inne języki programowania.

Czas trwania: 3 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, team leaderzy, architekci, analitycy, DevOpsi, R&D, testerzy
Wymagania dla uczestników: podstawowa umiejętność programowania. Nie jest wymagana wcześniejsza znajomość Pythona (chociaż będzie bardzo pomocna) ani testowania.

Plan szkolenia

I. SOLID Principles

We start from a discussion on SOLID principles that makes code easier to read and maintain. This part is supplemented with exercises showing how to apply (and how not to do this) SOLID in Python. This will be helpful in the second step of each iteration in TDD (as well as BDD), that is writing production code.

II. Code Refactoring

The third step of each iteration in both TDD and BDD is refactoring, that is making code easier to read and maintain without changing its functionality.

In this part, we cover all building blocks (or actions) of refactoring. We introduce the concept of code bad smells that help you find opportunities for correct refactoring and avoid „endless refactoring back and forth”.

III. Builtin Testing Frameworks

First step of each iteration in TDD is writing a test.
We start from a discussion if and why writing tests is beneficial. Contrary to intuition, less bugs is only one of the advantages of covering code with tests.

We usually use a framework that makes writing tests easier. We show how to use the most popular testing framework – unittest.

We also introduce very agile doctest library which help you test, and at the same time, document small utility functions without all the burden and long-winded unittest.

IV. Test Driven Development

After short theoretical introduction to TDD, we solve Katas – programming challenges like RecentlyUsedList or BowlingGame. Katas are simple exercises that let you focus on the TDD methodology rather than fighting with language, IDE or business logic.

We start from a live coding – the instructor shows how you can solve a Kata using TDD. Participants ask questions and discuss with the instructor and other participants. Later on, we move to another Kata. This time participants do the exercise in pairs (pair programming).

V. Test Isolation and Mocking

Test isolation and mocking is covered during second day of the training. We introduce great unittest.mock builtin library (or mock backport if you work on Python 2). It helps you isolate your tests from system calls, filesystem, databases, external APIs or any other resources. We study the most common cases.

Mocking is also an essential part of outside-in development which is covered during the last day.

VI. Testing Web Applications

Testing Web Application let you focus on one of common cases when you need to test a web application written using a framework. For simplicity, this framework is Flask unless you work in Django, in which case we focus on Django’s own challenges.

A number of tools are discussed, Selenium and builtin Flask client being two of them. However, we introduce and focus on WebTest which is other client and is much faster than Selenium.

VII. Overview of Other Testing Approaches and Code Coverage

At the end of the second day, the instructor introduces other testing approaches. We discuss property-based testing (with hypothesis-python library) and mutation testing (with MutPy). We also introduce a concept of code coverage and show how to configure it.

VIII. Outside-in Development

Most of the time, programmers develop their code inside-out. They start from the simplest functions and tools (inner or lower modules), maybe even they test them, and built outer (or higher) modules upon them. For example, they first implement backend, and then frontend. This is dictated by the fact that the outer modules depend on the lower ones, for example frontend depends on backend. Therefore, you cannot test outer ones without inner ones.

However, this results in bad interfaces, because outer modules are written to match inner modules instead of required behavior. Outside-in development forces you to first implement higher modules, test them mocking the lower modules, and then focus on the inner modules. This results in better interfaces between modules.

IX. Plain-Text Stories in Gherkin

We introduce a special domain specific-language based on English natural language that helps you write acceptance tests understandable for non-programmers. If you have ever heard about Cucumber, you’ll be astonished that there is a very similar framework in Python called behave.

X. nose2.tools.such DSL

We introduce another style of BDD – executable specification written with nose2.tools.such plugin, a DSL in Python.

We also introduce nose2 tool to run unit tests and show how you configure it and enable nose2.tools.such plugin.

XI. Behaviour Driven Development

Behave Driven Development is an extension of TDD. After a short theoretical introduction, we show on a case study how you can use behave and nose2.tools.such with BDD. We also show how professional edition of PyCharm supports BDD and behave framework.

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ń.