XP: Code Review i dobre praktyki inżynieryjne
LICZBA DNI: 2 (16h)
KOD KURSU: XP/CR
O szkoleniu
DLA KOGO?
Inżynierowie oprogramowania
Inżynierowie jakości
Team-leaderzy
Architekci
WYMAGANIA
Dobra znajomość programowania w dowolnym języku programowania
Znajomość paradygmatu obiektowego
Umiejętność korzystania z systemu kontroli wersji Git
Znajomość konceptu pisania testów automatycznych
ZALETY
Dostrzeganie problemów w kodzie
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
Program
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 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
- 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 i SonarLint
- Wyciąganie wniosków z analizy statycznej
- Quality Gates
- Mierzenie pokrycia testami
- Testy mutacyjne
