Warsztat ekspercki to coś więcej niż szkolenie. To praca w kontekście konkretnych problemów.
Tytuł: | Codzienna Refaktoryzacja Kodu Legacy |
Kod: | ref-patterns |
Kategoria: | Refaktoryzacja kodu legacy |
Forma: | 20% wykłady, 80% ćwiczenia |
Czas trwania: | 3 dni |
Odbiorcy: | developerzy |
Zapisy: |
Indywidualne zamówienie i dopasowanie dla grupy. |
Logistyka: |
W siedzibie klienta lub w innym dowolnym miejscu. |
Efektywna refaktoryzacja to refaktoryzacja skuteczna.
Taka która przynosi widoczne efekty dla samopoczucia programistów kiedy widzą jej rezultaty jako bardziej czytelny i zrozumiały kod. A to z kolei pozwoli im nadal rozwijać swój projekt, ponieważ będą potrafić na bieżąco zadbać o równowagę pomiędzy wartością biznesową dla klienta a jakością techniczną.
Skuteczność refaktoryzacji zależy od wielu obszarów naszej pracy. Wbrew pozorom same umiejętności techniczne programistów nie wystarczą chociaż są niezbędne. Aby refaktoryzacja miała swoje stałe miejsce, potrzeba wprowadzić ją do naszej świadomości, wprowadzić jako nawyk do zespołów oraz jako jawną część procesu tworzenia oprogramowania. Wówczas nigdy nie będzie mogła być pomijana.
W tym celu oprócz umiejętności technicznych trzeba rozwinąć także inne obszary otaczające świat programistów. Wśród nich najważniejsze to zadbanie o swoją efektywność osobistą i efektywność pracy zespołu poprzez zbudowanie świadomości jak rezultaty pracy są zależne od funkcjonowania całego zespołu.
Wprowadzanie wszystkich usprawnień zaczyna się od świadomości tego jak organizacja pracy zostaje odzwierciedlona w jakości kodu który dostarcza zespół. W rezultacie będziemy mogli mieć pozytywny wpływ na jakość kodu poprzez zmiany od strony organizacyjnej które umożliwią ciągła refaktoryzację.
Powyższe inspiracje zostaną przedstawione na podstawie takich koncepcji jak “7 Nawyków Skutecznego Działania” Stephena Coveya, “5 Dysfunkcji Pracy Zespołowej’ Patricka Lencioni czy też 6 źródeł wpływu wypracowanych z laboratoriach VitalSmarts w Utah.
To praktyczno-teoretyczne szkolenie pokazuje jak podejść do refaktoryzacji w najmniejszych możliwych krokach, robiąc z niej naszą codzienną praktykę, w której codziennie będziemy wzrastać. Poprzez małe kroki, które staną się naszym nawykiem będziemy wykonywać coraz bardziej skomplikowane refaktoryzacje, aż zaczniemy odkrywać wzorce projektowe.
Wzorce projektowe to coś powszechnego. Warto więc z nich skorzystać skoro już są pewne bo sprawdzone. Najprawdopodobniej dostarczą nam oczekiwanych rezultatów polegających na otrzymaniu kodu który jest zrozumiały ale przede wszystkim łatwiej go będzie można rozwijać o kolejne elementy.
Szkolenie oparte jest na koncepcji piramidy refaktoryzacji. Umożliwia ona rozpoczęcie od najprostszych refaktoryzacji a następnie stopniowe przechodzenie do tych bardziej złożonych.
Szkolenie koncentruje się głównie na pracy z kodem źródłowym z wykorzystaniem wbudowanych zautomatyzowanych refaktoryzacji w narzędziach takich jak IntelliJ lub ewentualnie Eclipse (prze mniejszym zakresie szkolenia). Kod źródłowy napisany jest w Javie. Trener wykonuje wszystkie przekształcenia refaktoryzacyjne na żywo, po czym uczestnicy mogą doświadczyć tego samego poprzez pracę z tym samym kodem na własnym laptopie. Pozostałe 25% czasu poświęcone jest na prezentacje i dyskusje o możliwościach wprowadzenia refaktoryzacji jako codziennego nawyku do pracy zespołu.
Szkolenie to nie jest szkoleniem z architektury. Różne zespoły mogą mieć różne preferencje dotyczące rozwiązań architektonicznych. Celem szkolenia jest nauczenie jak łatwo i szybko można zmieniać architekturę kodu z jednego podejścia do innego.
Poznaj ekspertów, którzy mogą poprowadzić Twój Warsztat.
Idea renesansowej pracowni - Bottegi zakłada nieustanną pracę jej członków i dzielenie się jej wynikami.
Artykuł poświęcony technikom odwracania kontroli w ujęciu: problem, idea, motywacja, zastosowanie, technika, kiedy nie stosować.
Autor Bottega: |
|
Powiązane szkolenia dedykowane: |
Modularyzacja systemu - analiza granic i projektowanie API Architektura aplikacji i systemów - Wzorce architektoniczne dla projektantów Projektowanie systemów modularnych, rozproszonych i Event Driven: podejście praktyczne |
Powiązane usługi: |
Audyty architektury |
Artykuł przedstawiający metodę doboru zaślepek (Mock/Stub) dla testów jednostkowych na podstawie paradygmatu CQS.
Autor Bottega: |
|
Powiązane szkolenia dedykowane: |
Modularyzacja systemu - analiza granic i projektowanie API Architektura aplikacji i systemów - Wzorce architektoniczne dla projektantów Projektowanie systemów modularnych, rozproszonych i Event Driven: podejście praktyczne |
Powiązane usługi: |
Audyty architektury |
W jaki sposób dokumentować architekturę systemu? Z jednej strony tak, aby zawrzeć wszystkie potrzebne informacje, z drugiej zaś, aby nie przeładować dokumentacji szczegółami, które czynią ją bezużyteczną.
Autor Bottega: |
|
Powiązane szkolenia dedykowane: |
Modularyzacja systemu - analiza granic i projektowanie API Architektura aplikacji i systemów - Wzorce architektoniczne dla projektantów Projektowanie systemów modularnych, rozproszonych i Event Driven: podejście praktyczne |
Powiązane usługi: |
Audyty architektury |
Artykuł przedstawia meta-model, którym możemy posiłkować się w zmaganiach ze złożoną logiką biznesową. Meta-model będzie praktyczną realizacją drugiej zasady SOLID: Open/closed principle, która pozwala tworzyć rozwiązania otwarte na rozbudowę (rozbudowa to nie to samo co zmiana).
Autor Bottega: |
|
Powiązane szkolenia dedykowane: |
Modularyzacja systemu - analiza granic i projektowanie API Architektura aplikacji i systemów - Wzorce architektoniczne dla projektantów Projektowanie systemów modularnych, rozproszonych i Event Driven: podejście praktyczne |
Powiązane usługi: |
Audyty architektury |
Stosując mapery relacyjno-obiektowe, zwykle nie zastanawiamy się nad problemami związanymi z niespójnością danych wynikającą ze stosowania Lazy Loadingu, granicą spójności obiektów podczas zapisu kaskadowego oraz pułapkami naiwnego blokowania optymistycznego.
Autor Bottega: |
|
Powiązane szkolenia dedykowane: |
Modularyzacja systemu - analiza granic i projektowanie API Architektura aplikacji i systemów - Wzorce architektoniczne dla projektantów Projektowanie systemów modularnych, rozproszonych i Event Driven: podejście praktyczne |
Powiązane usługi: |
Audyty architektury |
Artykuł przedstawia koncepcję Wzorców analitycznych – adresujących rozwiązania na poziomie analizy systemowej. Ilustracją na przykładów jest kilka wybranych, w tym najbardziej popularnym z nich: Party – będą one również alternatywą dla typowych naiwnych książkowych modeli struktur organizacyjnych.
Autor Bottega: |
|
Powiązane szkolenia dedykowane: |
Modularyzacja systemu - analiza granic i projektowanie API Architektura aplikacji i systemów - Wzorce architektoniczne dla projektantów Projektowanie systemów modularnych, rozproszonych i Event Driven: podejście praktyczne Microservices - podejście kompleksowe oparte o DDD i Cloud Domain Driven Design - zaawansowane techniki modelowania i archetypy (część 3) |
Powiązane szkolenia otwarte: |
|
Powiązane usługi: |
Audyty architektury Audyty architektury Wdrażanie Machine Learning |
Wiele czasu i energii spędzamy na dyskusjach o wyższości jednego paradygmatu programowania nad innym, o wyższości jednego języka programowania nad innym. W niniejszym artykule chcę przekonać czytelników do tego, aby obok siebie, równorzędnie stosować zarówno paradygmat obiektowy, jak i funkcyjny oraz nie zapominać o proceduralnym.
Autor Bottega: |
|
Powiązane szkolenia dedykowane: |
Modularyzacja systemu - analiza granic i projektowanie API Architektura aplikacji i systemów - Wzorce architektoniczne dla projektantów Projektowanie systemów modularnych, rozproszonych i Event Driven: podejście praktyczne |
Powiązane usługi: |
Audyty architektury |
Do czego może przydać mi się propagacja transakcji inna niż REQUIRED? Jak zachowa się wówczas EnityManager i cache pierwszego poziomu? Jak uniknąć zakleszczeń? Dlaczego moje transakcje tylko-do-odczytu nie są tylko do odczytu? Kiedy oddać sterowanie transakcjami klientom zamiast obsługiwać je aspektowo? Jakie anomalie w spójności danych mi zagrażają?
Autor Bottega: |
|
Powiązane szkolenia dedykowane: |
Modularyzacja systemu - analiza granic i projektowanie API Architektura aplikacji i systemów - Wzorce architektoniczne dla projektantów Projektowanie systemów modularnych, rozproszonych i Event Driven: podejście praktyczne |
Powiązane usługi: |
Audyty architektury |
Artykuł poświęcony technikom utrzymywania testów w długiej perspektywie czasu.
Techniki, które profesjonalny programista powinien mieć w swojej „skrzynce z narzędziami”, czyli m.in. Test Data Builder i Assert Object.
Prezentacja Łukasza Szydło na temat architektury wspierającej Continuous Delivery. Materiały z konferencji 4Developers 2014
Autor Bottega: |
|
Powiązane szkolenia dedykowane: |
Jenkins - Continuous Delivery pipelines Terraform i Infrastruktura jako Kod (IaC) - szkolenie kompleksowe Grafana, Prometheus, Loki kompleksowe szkolenie: wizualizacja danych, alarmowanie, administracja |
Powiązane szkolenia otwarte: |
Problemy i ich rozwiązania w zakresie: Lazy Loading, Optimistic Locking, generowanie ID, poziomy izolacji transakcji.
Techniki zwiększania czytelności kodu.
Autor Bottega: |
|
Powiązane szkolenia dedykowane: |
Microservices - podejście kompleksowe oparte o DDD i Cloud Domain Driven Design - zaawansowane techniki modelowania i archetypy (część 3) Archetypy modeli biznesowych z wykorzystaniem Event Stormingu Implementacja Domain Driven Design - wzorce architektoniczne (część 2) |
Powiązane szkolenia otwarte: |
|
Powiązane usługi: |
Audyty architektury Wdrażanie Machine Learning |
W 1970 roku John Conway publikował koncept prostego automatu komórkowego, Game of Life. Dziś, po 37 latach, tych kilka regułek rządzących rozwojem świata komórek jest idealnym przykładem do nauki programowania obiektowego, funkcyjnego, wzorców, testowania oprogramowania, pair programmingu… Dla nas Game of Life stanie się także punktem wyjścia do metod analizy domeny klienta, rozgryzania jej niuansów i niedopowiedzeń ze strony biznesu, czy wreszcie definiowania i ochrony logiki biznesowej tak, aby teoretycznie niewielkie zmiany wymagań nie zrujnowały całkowicie implementacji… W końcu Game of Developer Life to coś więcej niż tylko stosowanie w praktyce znanych frameworków i narzędzi.
Autor Bottega: |
|
Powiązane szkolenia dedykowane: |
PHP revisited - odświeżenie spojrzenia na programowanie w PHP Projektowanie i implementacja wysokowydajnych aplikacji w języku PHP |
Powiązane usługi: |
Audyty architektury |
W mojej prezentacji (wraz z chwilą live-codingu) przedstawię na czym polega efektywna refaktoryzacja. Jest ona połączeniem dwóch rzeczy : umiejętności technicznych oraz psychologicznych. Refaktoring służy osiągnięciu równowagi pomiędzy produkcją (klienci otrzymują działający software) a zdolnością produkcyjną (programiści mogą go dalej rozwijać). Efektywność zależy natomiast od tego w jaki sposób chcemy o tą równowagę zadbać.
Podczas tej prezentacji chciałbym się podzielić moimi obserwacjami, doświadczeniem i wnioskami odnośnie wielu rzeczy które w mojej opinii są bezpośrednio powiązane z jakością kodu z którym pracujemy i który tworzymy. Należą do nich to w jaki sposób ludzie współpracują nad dostarczeniem wartości biznesowej, jak członkowie zespołu pomagają sobie nawzajem aby razem wzrastać w swoich umiejętnościach a także w jaki sposób zespół jest zarządzany. Opowiem także o sesjach "inspektoryzacji" kodu (nowo słowo tak tak...), na czym one polegają, jak powstały, jak ewaluowały i jak znalazły stałe miejsce w pracy mojego zespołu.
O piramidzie testów już wszyscy słyszeliśmy… a piramida refaktoryzacji to jej bliźniak. Za pomocą piramidy testów ustanawiamy poprzez pokrycie testami zakres funkcjonalności / kodu którego strukturę będziemy zmieniać (moduły, pakiety, klasy). Następnie mając taki zakres korzystamy z jego lustrzanego odbicia na piramidzie refaktoryzacji, mając wiedzę jak wiele zmian refaktoryzacyjnych możemy wprowadzić startując od jej podstawy i wspinając się na jej najwyższy poziom który jest pokryty testami.