Szkolenie: XP: Code Review i dobre praktyki inżynieryjne
Szkolenie w sposób przekrojowy omawia ideę Extreme programming (XP) a w głównej mierze koncentruje się na procesie Code Review oraz dobrych praktykach inżynieryjnych. Szkolenie jest agnostyczne w stosunku do języka programowania, tzn. że mogą w nim uczestniczyć osoby programujące zarówno w Javie, Pythonie, PHP jak i w C/C++ oraz GO i Rust.
Czas trwania szkolenia:2 dni (16h)
Kod kursu:XP/CR
XP: Code Review i dobre praktyki inżynieryjne
Cele szkolenia
Skuteczna komunikacja problemów z kodem w zespole
Analiza kodu źródłowego i skupianie się na najważniejszych problemach
Interakcja z systemem Code Review
Automatyzacja wspierająca Code Review
Dla kogo?
Inżynierowie oprogramowania
Inżynierowie jakości
Team-leaderzy
Architekci
Zalety
Dostrzeganie problemów w kodzie
Praktyka przed teorią - wszystkie szkolenia technologiczne prowadzone są w formie warsztatowej. Konieczna teoria jest wyjaśniana na przykładzie praktycznych zadań
Konkretne umiejętności - w ramach każdego szkolenia rozwijamy praktyczne umiejętności związane z daną technologią i tematyką
Nauka z praktykami - wszyscy trenerzy na co dzień pracują w projektach, gwarantuje to dostęp do eksperckiej wiedzy i praktycznego know-how
Wymagania
Dobra znajomość programowania w dowolnym języku programowania
Znajomość paradygmatu obiektowego
Umiejętność korzystania z systemu kontroli wersji Git
Praktyczna wiedza z zakresu tworzenia testów automatycznych
W cenie otrzymasz:
Materiały szkoleniowe
Certyfikat ukończenia szkolenia
W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki
Program szkolenia
Praktyki developerskie a praktyki projektowe
Praktyki projektowe (Scrum, Kanban, XP, Lean)
Praktyki developerskie (TDD, S.O.L.I.D., CI/CD, Code Review/Pull Request, DevOps)
Feature i bugfix branch
Git, Github Flow i Git Flow
Strategia budowania branchy
Statyczna analiza kodu Pull Requestów
Strategie repozytoriów: Fork, Central Repo, Army model
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
Refactoring legacy systemów
Budowanie bazy wiedzy jako wynik Code Review
Code Review jako element Collective Code Ownership
FAQ
Kto powinien być zaangażowany w Code Review?
Ile czasu poświęcić na Code Review?
Czy Code Review jest potrzebne przy TDD?
Jak wielkość elementów w backlog wpływa na Code Review?
Jak uniknąć wąskiego gardła w postaci Code Review?
Czy zawsze należy robić Code Review?
Czy można zautomatyzować proces Code Review?
Na co warto zwrócić uwagę w Code Review?
Jakiej wielkości zmiany poddawać Code Review?
Jak komunikować problem z kodem?
Jak blokować scalenie kodu, który zawiera błędy?
Jak robić Code Review na żyjącym branchu?
Notyfikacje i jak pozostać na bieżąco ze zmianami?
Jak unikać silosów kompetencyjnych za pomocą Code Review?
Code Review
Systemy do Code Review, ich wady i zalety
Unified diff vs side-by-side
Komentarze i taski
Pair programming vs Code Review
Pull Request vs Merge Request
Dobre praktyki Code Review
Rozwiązywanie konfliktów w systemie kontroli wersji
Składnia Markdown i reStructuredText
Podstawy optymalizacji i wydajności systemów
Złożoność obliczeniowa
Z łożoność pamięciowa
Złożoność cyklometryczna
Złożoność kogitywna
Dług techniczny
Automatyzacja Code Review
Włączenie procesu CI/CD do Code Review
Statyczna analiza kodu źródłowego
Pipeline as a Code
Quality Gates
Triggerowanie statusów w Jira
Strategie scalania zmian (merge, rebase, squash+merge, squash+rebase)
Jakość kodu
SonarQube, SonarCloud i SonarLint
Wyciąganie wniosków z analizy statycznej
Quality Gates
Mierzenie pokrycia testami
Testy mutacyjne