3. XP: dobre praktyki inżynieryjne
3.1. 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)
3.2. 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
3.3. Refactoring
Spaghetti code
Zależności w kodzie i między modułami
S.O.L.I.D.
TDD: test first vs test last development
Refactoring legacy systemów
3.4. Praktyka
Czym w praktyce jest dług techniczny
Ekosystem narzędziowy
Budowanie bazy wiedzy jako wynik Code Review
Code Review jako element Collective Code Ownership
3.5. 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?
3.6. 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
3.7. Podstawy optymalizacji i wydajności systemów
Złożoność obliczeniowa
Złożoność pamięciowa
Złożoność cyklometryczna
Dług techniczny
3.8. 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 Jirze
Strategie mergowania (merge, rebase, squash+merge, squash+rebase)
3.9. Jakość kodu
SonarQube i SonarLint
Wyciąganie wniosków z analizy statycznej
Quality Gates
Mierzenie pokrycia testami
Testy mutacyjne