Informacje dotyczące wszystkich szkoleń
Jeśli jeszcze tego nie zrobiłeś, przeczytaj ogólne informacje o wszystkich moich szkoleniach w zakładce Szkolenia. Zawierają one wspólne rzeczy, takie jak podstawowe idee i główne pojęcia, których używam we wszystkich moich szkoleniach. Na każdym szkoleniu prezentuję inne rzeczy, ale wszystkie mają wpływ na tworzenie oprogramowania wysokiej jakości.
Cele szkolenia
Celem warsztatu jest zdobycie umiejętności pracy nad długiem technicznym poprzez zmiany architektury kodu z długoterminowego punktu widzenia. Uczestniczą posiądą zdolność dostosowania architektury kodu na bardziej czytelną i rozszerzalną poprzez stosowanie wzorców projektowych.
Uczestnicy uzyskają nie tylko nowe umiejętności techniczne, ale zobaczą jaki ważny wpływ na jakość ma organizacja pracy w zespole i firmie. To z kolei pozwoli na poszukiwanie usprawnień w procesie tworzenia oprogramowania które umożliwią organizacyjną poprawę jakości kodu.
wide-patterns
Uczestnicy szkolenia będą mogli doświadczyć jak wzorce projektowe mogą uprościć nasz kod, ale i także jak mogą go skomplikować jeszcze bardziej poprzez ich nieumiejętne użycie. To, że zastosowanie danego wzorca projektowego rozwiązuje obecne problemy, nie znaczy że rozwiąże także kolejne. Często może się to stać w przypadku nowych wymagań, kiedy obecna architektura stanie się utrudnieniem – szczególnie przy podejściu metodą kopiuj-wklej bez dalszych zmian.
Więcej o szkoleniu - być może za długo 🙂
Wzorce znajdziemy wszędzie wokół nas. Symbolizują coś powszechnego i użytecznego. Coś co się sprawdziło jako znane podejście do rozwiązania pewnej grupy problemów poprzez swoją skuteczność oraz reużywalność.
W 2015 roku Ralph Johnson (jeden z czterech autorów pierwszej książki o wzorcach projektowych) podczas swojego wystąpienia “21 lat wzorców projektowych” powiedział “mogliśmy wykonać naszą pracę lepiej, ale myślę, że wykonaliśmy ją całkiem dobrze”.
computer-tidiness
Zwykle jednak wzorce nie są widoczne jako potrzebne w naszym kodzie od samego początku. Zapewne to dobrze bo same wzorce także wprowadzają dodatkowy poziom złożoności. Ale kiedy naszego kodu jest coraz więcej i coraz trudniej go zrozumieć, to zaczynamy myśleć w kategoriach “gdyby tylko w tym miejscu został użyty wzorzec strategii, fabryki, stanu zamiast sieci if-else lub switch…”.
I wtedy właśnie z pomocą przychodzą nam techniki refaktoryzacji kodu – aby zamiast pisać coś od nowa wykonać kilka zmian krok po kroku w kierunku potrzebnego wzorca. Użycie wzorców uprasza nasz kod dopiero od pewnego stopnia skomplikowania. Kiedy wzorce zostaną zastosowane zbyt wcześnie to same spowodują dodatkowe problemy. Stąd temat refaktoryzacji do wzorców projektowych jest bardzo ważny aby umieć je zastosować w odpowiednim momencie, kiedy jest to potrzebne.
Szkolenie to jest zaplanowane jako kontynuacja warsztatu “Efektywnej Refaktoryzacji”. Wynika to z konieczności wstępnego oczyszczenia kodu (brakujące testy, mniejsze metody i klasy) aby móc zauważyć wyłaniające się – z gąszczu kodu zastanego – wzorce projektowe.
Plan szkolenia
Główne zagadnienia
  • praktyka refaktoryzacji do wzorców projektowych
  • powiązanie wpływu procesu tworzenia oprogramowania na jakość kodu
Dzień 1
Myśl przewodnia : Pięć dysfunkcji zespołu utrudniających także refaktoryzację
Refaktoryzacje zakończone implementacją poniższych wzorców
  • Interpreter
  • Chain of Responsibility
  • Composite
  • Factory Method
  • Abstract Factory
  • State
Dzień 2
Myśl przewodnia : 6 Źródeł wpływu które ułatwiają bądź utrudniają refaktoryzację
Refaktoryzacje zakończone implementacją poniższych wzorców
  • Fluent Builder
  • Proxy
  • Template
  • Bridge
  • Command
  • Adapter
Długość szkolenia
Szkolenie jest bardzo intensywne i na podstawie doświadczeń (tj. przeprowadzenia go wiele razy) proponowane podejście do 2 dni po 6-7 godzin. Na życzenie szkolenie może także zająć 1 dzień (bardzo intensywny) ale ze znacznie ograniczonym zakresem.
Docelowi odbiorcy
Poziom: początkujący lub średnio zaawansowany, aczkolwiek starsi programiści także wielokrotnie twierdzili że dowiedzieli się wielu nowych rzeczy którymi mogli się następnie podzielić w zespole.