5. Tworzenie i optymalizacja wydajności systemów

  1. Teoretyczne podstawy

    • Złożoność obliczeniowa

    • Złożoność pamięciowa

    • Złożoność cyklometryczna

    • Dług techniczny

  2. Praktyka

    • Spaghetti code

    • Zależności w kodzie i między modułami

    • S.O.L.I.D.

    • TDD: test first vs test last development

    • Czym w praktyce jest dług techniczny

    • Ekosystem narzędziowy

  3. Micro-benchmarking

    • Problematyka

    • Najczęstsze błędy

    • Normalizacja wyników

    • Porównywanie wyników

    • Wyciąganie wniosków

  4. Refactoring legacy systemów

    • Jak rozpocząć refactoring?

    • Strategie refactoringu

    • Czy testy są konieczne?

  5. Jakość kodu

    • SonarQube i SonarLint

    • Wyciąganie wniosków z analizy statycznej

    • Quality Gates

    • Mierzenie pokrycia testami

    • Testy mutacyjne

  6. Microservices

    • Co to są mikrousługi?

    • Idea stojąca za mikrousługami

    • Czy mikrousługi są dobre dla mojego projektu?

    • Service Discovery i Service Registry

    • Heart Beat

    • Distributed Logging i Log Spooling

    • API Gateway

    • Najczęstsze błędy

  7. Wdrożenia

    • Strategie wdrożeń

    • Unikanie downtime

    • Wersjonowanie API

    • Kompatybilność API