Zabawa z prawem Conway a Łukasz Januszek Żółw
O mnie Aktywny programista: ~8 lat Procesy, struktury organizacji : ~1 rok Mechaniki gier (hobbystycznie): ~20 lat Future Processing
Agenda Problem potencjalnej duplikacji kodu Prawo Conway a Kilka struktur Kształtowanie struktury Podsumowanie
Skąd w ogóle ta prelekcja? bo miałem potencjalną duplikację kodu, której nie umiałem rozwiązać
Skąd w ogóle ta prelekcja? bo miałem potencjalną duplikację kodu, której nie umiałem rozwiązać
Czemu to jest problem? A, wsadźmy to sobie do folderu Struktura porządkuje i steruje Struktura zawiera sposób rozumowania o problemie
Duplikacja kodu, duplikacja intencji x = x + 1 Dodajmy nowy produkt do koszyka w sklepie Struktura definiuje ścieżki komunikacyjne Co do czego należy Co z czym się komunikuje Scoping (zakresowanie)
Duplikacja kodu, duplikacja intencji Problem struktury nie pasującej do potrzeb
Czemu to jest problem? Kiedyś ta aplikacja wyglądała tak:
Czemu to jest problem? I to tutaj zaczęło się mieszać i powstawał pająk:
Więc zgodnie z modelowaniem do domeny
Nowy model mentalny DomModel + DomServices => DomModel
I to miało działać dużo lepiej
Czas płynął, system hierarchiczny się rozrastał
a ta jedna linijka pokazuje problem. Gdzie powinna być ta linijka? Aktualna struktura jest nieadekwatna Symptom, nie jedna linijka
Prawo Conway a Melvin Conway, 1968 Any organization that designs a system (defined more broadly here than just information systems) will inevitably produce a design whose structure is a copy of the organization's communication structure.
Prawo Conway a po ludzku Istnieje silny związek między strukturą systemu a strukturą komunikacji grupy, jaka go zaprojektowała. Jeśli nie istnieje ścieżka komunikacji, struktura systemu też jej nie będzie zawierać. Pracujemy w firmach hierarchicznych. Tworzymy kod, który jest hierarchiczny.
Prawo Conway a graficznie Przypadek typowy
Prawo Conway a graficznie Przypadek poszerzony
Prawo Conway a ciekawostki Im więcej osób rzuci się na projektowanie problemu tym więcej sieci komunikacyjnych powstaje Trzy fazy rozpadu: System jest duży Dodajmy więcej ludzi Uruchamia się homomorfizm
Prawo Conway a ciekawostki Jeśli 5 inżynierów odpowiada za napisanie 5 modułów do monolitu i nikt nie odpowiada za integrację (nie rozmawiają ze sobą)
Prawo Conway a ciekawostki a jeśli nie ma monolitu? Smutek i żałość
Prawo Conway a ciekawostki jednak jak się komuś da odpowiedzialność dotyczy też refaktoryzacji ;-)
Klasyczne struktury organizacyjne Struktura promienista Najbardziej typowa Decydent wykonawcy Zwykle punkt startowy firmy
Klasyczne struktury organizacyjne Struktura promienista Typowa dla małych programów Szybka w implementacji Fatalnie się skaluje Kiepska równoległość pracy
Klasyczne struktury organizacyjne Struktura funkcjonalna + zawodowstwo, fachowość + redukcja kosztu (efekt skali) - nie pilnuje się całości - utrudnia adaptację - brak szerokich pracowników - nieporozumienia między działami
Klasyczne struktury organizacyjne Struktura funkcjonalna
Klasyczne struktury organizacyjne Struktura funkcjonalna
Klasyczne struktury organizacyjne Struktura funkcjonalna (kod) + skupienie na serwisach + silna separacja czynności - nie pilnuje się całości - utrudnia adaptację - brak miejsca na szerokie klasy - duplikacja DomModel?
Klasyczne struktury organizacyjne Struktura dywizjonalna + szybka adaptacja do zmian + szybsze decyzje + specjalizacja i szerokość + efekt skali - podwojenie zatrudnienia - rywalizacja dywizji - zwiększenie ogólnych kosztów
Klasyczne struktury organizacyjne Struktura dywizjonalna (modułowa)
Klasyczne struktury organizacyjne Struktura dywizjonalna (modułowa)
Klasyczne struktury organizacyjne Struktura dywizjonalna (modułowa) + szybka adaptacja do zmian + zmiany lokalizowane w modułach + ogólne => Centrala, unikalne => DomModel + efekt skali - możliwość nieświadomej duplikacji - możliwość niespójności - zwiększenie ogólnych kosztów
Klasyczne struktury organizacyjne Struktura macierzowa + struktura projektów + adaptacja + alokacja zasobów - wielość rozkazywania - kto jest odpowiedzialny? - interwencja arbitrażowa
Klasyczne struktury organizacyjne Struktura macierzowa
Klasyczne struktury organizacyjne Struktura tensorowa Struktura fraktalna Struktura ogniw łączonych
Kształtowanie struktury organizacyjnej Rozpiętość kierownicza Ile manager ma ludzi pod sobą? Na ilu rzeczach musi się znać? Zasada 3-5. a klasa?
Kształtowanie struktury organizacyjnej Kto ma prawo komunikacji? Czy pracownik z Centralą? Czy kierownik z Centralą? A nasze klasy?
Kształtowanie struktury organizacyjnej Zasada grupowania funkcji Rodzaj funkcji (metody, fazy procesu, rodzaj narzędzi) Przedmiot (rodzaj tworzywa, rodzaj odbiorców) Miejsce (wdrożenie?) Rozpiętość kierowania
Kształtowanie struktury organizacyjnej Wytyczne do wyboru typu organizacji Rysunek 1.8: Hanna Fołtyn (bibliografia)
Podsumowując Folder to nie tylko folder Istnieje korelacja między strukturą komunikacyjną a strukturą systemu (kodu) Sposób złożenia zespołu wpływa na wynikowe rozwiązanie może niech sam się dostosuje do potrzeb? Nowy świat rozwiązań? Nowe książki do czytania?
Dziękuję wszystkim za uwagę http://www.melconway.com/home/committees_paper.html Struktura organizacyjna Adam Nalepka Klasyczne i nowoczesne struktury organizacji Hanna Fołtyn Sprawne zarządzanie organizacją Witold Kieżun