Podsumowanie problemu:

Krótko mówiąc, odziedziczyłem kod i zespół programistów, których nie mogę zastąpić, a użycie God Objects jest dużym problemem. Idąc dalej, chcę, żebyśmy zmienili czynniki, ale otrzymuję od nich odpychanie ze strony zespołów, które chcą robić wszystko z God Objects „ponieważ jest to łatwiejsze”, a to oznacza, że nie pozwolono mi na ponowne uwzględnienie. Odsunąłem się, powołując się na moje wieloletnie doświadczenie w programowaniu, że jestem nowym szefem, który został zatrudniony, aby wiedzieć o tych rzeczach itp., Podobnie jak przedstawiciel handlowy zewnętrznych firm zewnętrznych, a to jest teraz na poziomie kierowniczym i na moim spotkaniu jest jutro i chcę wejść z dużą ilością amunicji technicznej, aby promować najlepsze praktyki, ponieważ uważam, że na dłuższą metę będzie tańsze (i osobiście czuję, że o to martwi się strona trzecia) dla firmy.

Mój problem dotyczy poziomu technicznego, wiem, że jest dobry, długoterminowy, ale mam problem z bardzo krótkim i sześciomiesięcznym okresem, i chociaż jest to coś, co „wiem”, nie mogę tego udowodnić odniesienia i cytowane zasoby spoza jednej osoby (Robert C. Martin, aka wujek Bob), ponieważ o to mnie proszą, ponieważ powiedziano mi, że posiadanie danych od jednej osoby i tylko jednej osoby (Robert C Martin) nie jest wystarczająco dobry argument.

Pytanie:

Co to jest Zasoby, które mogę cytować bezpośrednio (tytuł, rok publikacji, numer strony, cytat) przez znanych ekspertów w tej dziedzinie, którzy wyraźnie mówią, że użycie obiektów / klas / systemów „Boga” jest złe (lub dobre, ponieważ szukamy najbardziej poprawne technicznie rozwiązanie)?

Badania, które już przeprowadziłem:

  1. Mam tutaj wiele książek i przeszukałem ich indeksy pod kątem użycia słów „obiekt boga” i „klasa boga”. Odkryłem, że prawie nigdy nie jest używany, a na przykład kopia książki GoF, którą mam, nigdy jej nie używa (przynajmniej według indeksu, który mam przed sobą), ale znalazłem ją w dwóch książkach poniżej, ale chcę więcej Mogę użyć.
  2. Sprawdziłem stronę Wikipedii dla „God Object” i obecnie jest to skrót z małą liczbą odnośników, więc chociaż osobiście zgadzam się z tym, że mówi, że nie ma wiele rzeczy, których mógłbym użyć w środowisku, w którym osobiste doświadczenia nie są uważane za ważne. Cytowana książka jest również uważana za zbyt starą, aby była ważna przez ludzi, z którymi debatuję nad tymi kwestiami technicznymi jako argument robią to, że „kiedyś uważano to za złe, ale nikt nie mógł tego udowodnić, a teraz nowoczesne oprogramowanie mówi, że„ boskie ”obiekty są dobre w użyciu. Osobiście uważam, że to stwierdzenie jest błędne, ale chcę udowodnić prawdę , cokolwiek to jest.
  3. W artykule Roberta C Martina „Agile Principles, Patterns and Practices in C #” (ISBN: 0-13-185725-8, twarda okładka) whe na stronie 266 stwierdza: „Wszyscy wiedzą, że klasy boga to zły pomysł. Nie chcemy koncentrować całej inteligencji systemu w jednym obiekcie lub pojedynczej funkcji. Jednym z celów OOD jest podział i dystrybucja zachowania na wiele klas i wiele funkcji. – A potem mówi, że czasami i tak lepiej jest czasami używać God Classes (przytaczając jako przykład mikrokontrolery).
  4. W książce Roberta C Martina Clean Code: A Handbook of Agile Software Craftsmanship „strona 136 (i tylko ta strona) mówi o„ klasie Boga ”i podaje ją jako doskonały przykład naruszenia zasady„ klasy powinny być małe ”, której używa do promowania zasady pojedynczej odpowiedzialności”, zaczynając na stronie 138 .

Problem polega na tym, że wszystkie moje odniesienia i cytaty pochodzą od tej samej osoby (Robert C. Martin) i pochodzę od tej samej osoby / źródła. Powiedziano mi, że ponieważ jest tylko jednym poglądem, moje pragnienie, aby nie używać „klas Boga” jest nieważne i nie jest akceptowane jako standardowa najlepsza praktyka w branży oprogramowania. Czy to prawda? Czy robię coś źle z technicznego punktu widzenia, próbując trzymać się nauk wujka Boba?

Obiekty Boga oraz programowanie i projektowanie obiektowe:

Im więcej o tym myślę, tym bardziej myślę, że jest to coś więcej, czego uczysz się podczas studiowania OOP i nigdy nie jest to wyraźnie przywoływane; Jego domniemane jest dobre projekt to moje myślenie (zapraszam do poprawiania mnie, jak chcę się dowiedzieć), problem polega na tym, że „wiem” to, ale nie wszyscy wiedzą, więc w tym przypadku nie jest to uważany za ważny argument, ponieważ skutecznie dzwonię jest to prawda uniwersalna, podczas gdy w rzeczywistości większość ludzi nie zna jej statystyki, ponieważ statystycznie większość ludzi nie jest programistami.

Wniosek:

Nie wiem, czego szukać aby uzyskać najlepsze dodatkowe wyniki do zacytowania, ponieważ przedstawiają twierdzenia techniczne, a ja chcę poznać prawdę i być w stanie udowodnić ją cytowaniami jak prawdziwy inżynier / naukowiec, nawet jeśli jestem uprzedzony do obiektów boga z powodu moich osobistych doświadczenie z kodem, który ich użył. Każda pomoc lub cytaty będą bardzo mile widziane.

Komentarze

  • Poproś ich o udokumentowanie obiektów Boga jako dobrej praktyki.
  • Uciec! Nie ' nie chcesz tam pracować.
  • Określ, czy rozumiesz ” Boski Obiekt i jego związek z Twoim pytaniem. Spędzasz 4 akapity, mówiąc, że God Class nie jest ' t standardowym terminem w literaturze. Więc dlaczego go używasz? Jeśli korzystasz ze standardowych terminów branżowych i potrafisz pokazać, jak te koncepcje odnoszą się do twojego obecnego projektu, możesz przekonać niektórych do swojego punktu widzenia. Używanie wymyślonych słów na spotkaniu biznesowym tylko podważy twoją argumentację. Istnieją standardy branżowe – nie jesteś ' pierwszą osobą, która kiedykolwiek widziała koszmar wszystko-jest-globalne lub jedno-przedmiotowe, ani cokolwiek, co próbujesz opisać.
  • ' ponownie brakuje terminu ” antipattern „. Wyszukiwanie w Google ” god object antipattern ” zwraca ton stron z powodów, dla których ' jest zły.
  • Nie powinieneś ' atakować obiektu boga, ale stwarzanych przez niego problemów. Na przykład: mamy bardzo ścisłe powiązanie między wszystkim, a zmiana w A wymaga również zmian w B, C i D. Aby temu zapobiec, ' zamierzamy wyodrębnić klasy. Albo: chcemy, aby kod znajdował się w środowisku testowym i możemy ' zrobić to, co zrobimy? Staraj się też unikać terminu ” Bóg „, ludzie, którzy nie są otwarci, pomyślą, że ' ponowne używanie hiperboli.

Odpowiedź

Każda zmiana praktyki jest uzasadniona poprzez zidentyfikowanie punktów bólu stworzony przez istniejący projekt. W szczególności należy określić, co jest trudniejsze niż powinno być ze względu na istniejący projekt, co jest kruche, co się teraz psuje, jakich zachowań nie można wdrożyć w prosty sposób jako bezpośredni (lub nawet nieco pośredni) wynik aktualna implementacja lub, w niektórych przypadkach, jak spada wydajność, ile czasu potrzeba, aby przyspieszyć pracę nowego członka zespołu itp.

Po drugie, działający kod ma przewagę nad wszelkimi argumentami dotyczącymi teorii lub dobrego projektu . Dotyczy to niestety nawet złego kodu. Będziesz więc musiał zapewnić lepszą alternatywę, co oznacza, że jako orędownik lepszych wzorców i praktyk będziesz musiał dokonać refaktoryzacji, aby wydobyć lepszy projekt. Znajdź wąską płaszczyznę w stylu znacznika-pocisku w istniejącym projekcie i zaimplementuj rozwiązanie, które być może w przypadku iteracji utrzyma działanie implementacji obiektu boskiego, ale odracza rzeczywistą implementację do nowego projektu. Następnie napisz kod, który wykorzysta ten nowy projekt i pokaż, co zyskujesz dzięki tej zmianie, niezależnie od tego, czy chodzi o wydajność, łatwość konserwacji, funkcje, poprawki błędów lub warunków wyścigu, czy też zmniejszenie obciążenia poznawczego programisty.

Często wyzwaniem jest znalezienie wystarczająco małej powierzchni do ataku w słabo zaprojektowanych systemach, dostarczenie początkowej wartości może zająć więcej czasu, a początkowa wypłata może nie być tak imponująca do wszystkich, ale możesz też popracować nad znalezieniem zwolenników nowego podejścia, jeśli połączysz je z członkami zespołu, którzy są przynajmniej trochę sympatyczni.

Lamentowanie nad Boskim Obiektem działa tylko wtedy, gdy „głosisz chór. Jest to narzędzie do nazywania problemu i działa tylko w celu rozwiązania go, gdy masz wrażliwą publiczność, która jest starsza i wystarczająco zmotywowana, aby coś z tym zrobić. Naprawienie obiektu Boga wygrywa spór.

Ponieważ Twoim głównym zmartwieniem wydaje się być poparcie dla kierownictwa, myślę, że najlepiej będzie, jeśli chcesz argumentować, że zastąpienie tego kodu musi być celem strategicznym i powiązać je z celami biznesowymi, za które jesteś odpowiedzialny. Myślę, że Ty możesz argumentować, że możesz zapewnić pewne wskazówki techniczne, pracując najpierw nad skokiem technicznym nad tym, co Twoim zdaniem należy zrobić, aby go zastąpić, najlepiej angażując zasoby jednej lub dwóch osób technicznych, które mają zastrzeżenia do obecnego projektu.

Myślę, że znalazłeś wystarczające zasoby, aby uzasadnić swój argument; osoby uczestniczące w takich spotkaniach będą zwracały uwagę tylko na podsumowanie twoich badań i przestaną słuchać, gdy wymienisz dwa lub trzy potwierdzające źródła.Na początku powinieneś skupić się na tym, aby przekonać się do rozwiązania problemu, który widzisz, niekoniecznie udowadniając, że ktoś inny się myli lub masz rację. To problem społeczny, a nie logiczny.

W roli lidera technologicznego musisz powiązać każdą ze swoich inicjatyw z celami biznesowymi, więc najważniejszą rzeczą przy przedstawianiu swojej argumentacji kierownictwu jest to, co praca wystarczy dla tych celów. Ponieważ jesteś również uważany za „nowego faceta”, nie możesz po prostu oczekiwać, że ludzie porzucą swoją pracę lub szybko ustawią się w kolejce; musisz zbudować zaufanie, udowadniając, że możesz to osiągnąć. Na dłuższą metę, pełniąc rolę lidera, musisz także nauczyć się koncentrować się na wynikach, ale niekoniecznie być przywiązanym do ich specyfiki. Jesteś teraz po to, aby zapewnić strategiczne kierownictwo, usunąć taktyczne przeszkody z postępów swojego zespołu i zaoferować swojemu zespołowi opiekę mentora, a nie wygrywać bitwy o wiarygodność z członkami własnego zespołu.

Podjęcie odgórnej decyzji będzie Rzadko bądź wiarygodny, chyba że masz jakąś skórkę w grze; jeśli jesteś w podobnej sytuacji od nowa, powinieneś skupić się bardziej na budowaniu konsensusu w swojej organizacji niż na eskalowaniu, gdy poczujesz, że sytuacja wymknęła się spod kontroli.

Ale biorąc pod uwagę to, gdzie teraz jesteś, powiedziałbym, że najlepiej jest argumentować, że twoje podejście przyniesie wymierne i długoterminowe korzyści w oparciu o twoje doświadczenie i że jest zgodne z pracą znanych praktyków, takich jak wujek Bob i spółka, i że chciałbyś poświęcić kilka dni / tygodni, dając przykład na wąską refaktoryzację najwyższego punktu za grosze, aby zademonstrować, jak powinien wyglądać Twój pogląd na dobry projekt. Jednak niezależnie od tego, jaki jest Twój przypadek, musisz dostosować się do konkretnych celów biznesowych wykraczających poza Twoje osobiste preferencje.

Komentarze

  • Dobra uwaga, problem społeczny. Pewnie dlatego jest tyle źle napisanego kodu i źle zaprojektowanych aplikacji.
  • +1 za powiązanie go z ' językiem biznesowym ' jako taki; postaraj się, aby był jak najbardziej odpowiedni dla odbiorców. Jeśli ' rozmawiasz z kierownictwem, zrób porozmawiaj o tym, w jaki sposób standard kodu ma bezpośredni związek z konserwacją i wydajnością, i omów, jak to się wiąże z ogólnymi finansami projektu, długoterminową stabilnością itd. Brzmi jak Ty zostałeś zatrudniony ze względu na Twoją wiedzę; pamiętaj o tym. (Po prostu nie ' nie zostań menedżerem palantem, który myśli zawsze wie najlepiej – ale w tym przypadku ' w 100% dobrze.)
  • +1 dla ” działającego kodu przebija wszelkie argumenty dotyczące teorii lub dobrego projektu. ” Coś, o czym często zapominamy w naszych zadaniach dla doskonałego kodu.
  • Świetna odpowiedź, dużo mądrości dla aspirujących liderów zespołu.

Odpowiedź

Po pierwsze, musisz pokazać, że każda mierzalna organizacja musi przyjąć najlepsze praktyki branżowe. Mówiąc, że „to po prostu działa dla nas!” nie można go zmierzyć ani w czasie, ani w zasobach, ponieważ jest po prostu nieprzewidywalny. Inżynieria oprogramowania jest nauką w takim samym stopniu, jak inne dziedziny nauki, a koncepcje te zostały zbadane, zbadane, przetestowane i udokumentowane.

  1. the God Object jest anty-wzorcem , który stwierdza, że

    W inżynierii oprogramowania anty-wzorzec (lub anty-wzór) to wzorzec używany w operacjach społecznych lub biznesowych lub inżynierii oprogramowania, który może być powszechnie stosowany, ale w praktyce jest nieskuteczny i / lub przynosi efekt przeciwny do zamierzonego.

  2. Na konferencji Google IO w 2009 r. ten temat został częściowo wyjaśniony, gdy MVP wzór został wyjaśniony. Może nie mieć znaczenia dla Obiektu Boga, ale może dać ci trochę amunicji.

  3. Ponadto użycie tego anty-wzorca narusza zasada pojedynczej odpowiedzialności w projektach zorientowanych obiektowo, która mówi, że:

    każda klasa powinna mieć jedną odpowiedzialność, a ta odpowiedzialność powinna być całkowicie zamknięte w klasie. Wszystkie jej usługi powinny ściśle odpowiadać temu obowiązkowi.

  4. Blog Decaying Code również mówi o tym i jego rozwiązaniu.

  5. Nie możemy mówić o zasadzie pojedynczej odpowiedzialności bez mówienia o obiekcie sprzężenie .

    […] sprzężenie lub zależność to stopień, w jakim każdy moduł programu opiera się na każdym jeden z pozostałych modułów.

    Tam, gdzie posiadanie ściśle połączonego systemu może powodować assembly of modules [to] require more effort and/or time [to maintain] due to the increased inter-module dependency. Wyższy poziom zgrupowania obiektów oznacza mniejszą spójność oraz nawzajem. Obiekty Boga są dobrym przykładem ścisłego powiązania, ponieważ wiedzą więcej niż powinni, dlatego obciążają je odpowiedzialnością, co znacznie ogranicza możliwość ponownego wykorzystania kodu.

  6. Podczas projektowania złożonej aplikacji prostota musi przyjść na myśl. Duże problemy należy rozłożyć na mniejsze, które są łatwiejsze do zarządzania, testowania i dokumentowania. Jest to szczególnie prawdziwe w paradygmacie zorientowanym obiektowo.

    Za pomocą tego argumentu robimy pętlę z powrotem do argumentu anty-wzorcowego, ale ten paradygmat dotyczy wzorców, reprezentacji obiektów w świecie rzeczywistym i, ostatecznie, danych hermetyzacja.

  7. Po części masz rację, mówiąc, że te „dobre praktyki” są bardziej powszechne w klasach. Jednak mam doświadczenie w nauczaniu na studiach (i na niektórych uniwersytetach) i widziałem, jak te zasady są nauczane tylko na uniwersytetach, zwłaszcza na wydziałach inżynierskich. Co jest smutne. Ale jak każda dobra praktyka, ci, którzy starają się doskonalić, zwykle uczą się podstawowych wzorców projektowych i ostatecznie rozumieją, jak przedzierać się między sprzężeniem a spójnością.

    Zwykle uczę studentów, że może się to wydawać wymagające większego wysiłku w celu przyjęcia dobrych standardów programowania, ale zawsze opłaca się na dłuższą metę. Dobrym przykładem może być poproszenie programisty o napisanie funkcji sortującej. Programista ma dwie możliwości; 1) napisz funkcję szybkiego sortowania bąbelkowego (mniej niż 5 minut), która nie będzie trwała wraz ze wzrostem listy elementów lub 2) napisz bardziej złożony (inaczej zoptymalizowany) algorytm sortowania (szybkie sortowanie itp.), Który będzie lepiej skalowany z większymi listami.

Komentarze

  • Języki programowania zorientowanego obiektowo często wymagają, aby w przypadku, gdy odpowiedzialne są dwa niezależne zespoły źródłowe w przypadku różnych aspektów zachowania obiektu ' należy utworzyć niezależne instancje obiektu, aby hermetyzować te zachowania. Niestety, mimo że w wielu przypadkach najbardziej logiczne podziały funkcjonalności między zespołami kodu nie ' nie pokrywają się z najbardziej logicznym podziałem funkcjonalności między instancjami obiektów, ja ' nie widziałem zbyt wiele dyskusji na temat rozróżnienia tych dwóch rodzajów podziału.
  • Uważam, że to trochę nie na temat tego pytania. ' nie mówimy tutaj o anty-wzorcu Boskiego Obiektu, ale o sprzężeniu i spójności kodu, który jest obszernym i bardzo subiektywnym tematem.

Odpowiedź

Och, zaczynam niszczyć kolejne stare pytanie, ale zgadnę, że nie wygrałeś tej kłótni i oto dlaczego.

To brzmi jak problem kulturowy

Jesteś ich menadżera, ale nie możesz ich zastąpić i musisz udać się do swoich menedżerów, aby skłonić ich do zrobienia tego, co uważasz, że powinni robić, co w tym przypadku zakładam, że przynajmniej zniweczy to, gdy obiekty boga poruszają się do przodu. Brzmi to dla mnie jak klasyczny przykład kodu odzwierciedlającego kulturę, w której się narodził. Innymi słowy, przedmiotem boga jest sposób działania tej firmy. Chcesz wprowadzić jakąkolwiek znaczącą zmianę? Zawsze udajesz się po nią w to samo miejsce ostatecznie, ponieważ wszystkie decyzje najwyraźniej muszą być zatwierdzone na górze.

Byłem str rywalizując z wieloma nieudanymi próbami czyszczenia starego kodu i zmian w polityce kodu. Jestem teraz zdania, że nie można walczyć z kulturą, która umożliwiła kod w pierwszej kolejności, kiedy ta kultura jest nadal mocno zakorzeniona lub przynajmniej kultura walki jest bardzo ciężki podjazd pod górę, że jest mało prawdopodobne, aby ktokolwiek kiedykolwiek zapłacił mi wystarczająco dużo lub dał mi wystarczającą moc, aby poczuć, że było to wartościowe przedsięwzięcie, które prawdopodobnie kiedykolwiek odniesie sukces.

Zanim będzie można zmienić, muszą być zmotywowani do zmiany i niestety, jako programiści, którzy mają dość cholernego czytania od czasu do czasu Stack, trudno nam zrozumieć, że nie każdy jest motywowany tym samym. W moich doświadczeniach wygrałem wiele racjonalnych argumentów, ale pod koniec dnia firma cierpi z powodu intelektualnie leniwych programistów.

Być może obawy biznesowe zostały zmotywowane do myślenia tylko o jutrze, a nie w przyszłym tygodniu lub za pięć lat (szczególnie frustrujący scenariusz, kiedy jesteś „dzieckiem imigrantów z kraju, który zbudował w Arktyce magazyn nasion na wypadek apokalipsy). Może „boją się zmian”.Może zbytnio cenią sobie staż pracy do tego stopnia, że łańcuch dowodzenia jest bez znaczenia, nawet jeśli muszą zatrudniać z zewnątrz, aby sprowadzić kierownika zespołu programistów lub menedżera, ponieważ uznają, że nikt z ich zespołu przez całe życie nie rozwinął się wystarczająco w swoim czasie tam (lub dlatego, że ci dożywotni nie chcą ryzyka związanego z odpowiedzialnością). Albo, i widziałem to, być może jest to bardzo realne i przygnębiające zjawisko, w którym przeciętność walczy o siebie, ponieważ głęboko wie, że może. konkurować z jakością, a kiedy jest wystarczająco dużo głupstw, aby je obejść, niemożliwe jest ustalenie, kogo winić, gdy wszystko regularnie się rozpada.

Jak walczyć z problemami, które są ostatecznie zakorzenione w strachu lub zepsute wskaźniki sukcesu? Powiem ci to, potrzeba o wiele więcej niż nawet zaangażowany zespół programistów zajmujących się jakością, a miałeś o wiele mniej z dźwięku, jaki był w czasie, gdy publikowano ten Q.

W niemożliwym przypadku, że nie jest to trudny do rozwiązania problem kulturowy …

Teraz ludzie na szczycie są bardzo otwarci na zmiany i naprawdę są gotowi zaufać Ci, że to zrobisz, tak naprawdę musisz tylko przerywać wszystkie swoje argumenty pieniędzmi i straconą szansą.

Za każdym razem, gdy przeszkolenie kogoś zajmuje więcej czasu nowość w tej absurdalnej bazie kodów, za każdym razem, gdy modyfikacja lub dodanie nowej funkcji zajmuje więcej czasu, za każdym razem, gdy ujawnienie punktów końcowych w innym systemie firmy, z którą chcesz współpracować, staje się zbyt trudne, kosztuje to dużo pieniędzy. szalone pieniądze. Co najważniejsze, pozostawia otwarte okno dla mniejszego, bardziej zwinnego konkurenta, który może wkroczyć, i stawia Cię w pozycji, w której wszystko, co możesz zrobić, to zareagować na niego zbyt wolno wly i ostatecznie wyrwie ci to wszystko.

Po prostu uświadom sobie, że szczególnie uparta i głupia kultura utrzyma status quo za wszelką cenę, nawet jeśli rzeczywisty fizyczny dach firmy płonie tego.

Komentarze

  • Niedługo potem opuściłem firmę. próbowali zatrudnić mnie na pełny etat i zmusić mnie do przeniesienia się do Nowego Jorku z Seattle w celu przyjęcia oferty; Zasadniczo powiedziałem im ” Nie ma mowy, ' nie zamierzam przeprowadzać się do Nowego Jorku, gdy zespół, którym będę zarządzał, będzie w Bellevue, WA ” iw tym momencie przeszedłem przez ulicę i dostałem pracę w MSFT, aż znalazłem coś lepszego.
  • @honestduane Tak, ten zestaw oczekiwań sam mówi wiele. Dobrze dla Ciebie w GTFO.

Odpowiedź

Możesz przytoczyć niektóre z najbardziej podstawowych zasad OOP, takich jak luźne sprzężenie i wysoka kohezja. „Obiekt Boga” brzmi tak, jakby łączył niepowiązane ze sobą klasy i miał niską spójność.

Odpowiedź

Zawsze możesz zapytać samego wujka Boba .

Rzecz w tym, że jest to tak oczywiste dla ludzi z jakimkolwiek wyczuciem, że kiedy zostanie już przeliterowane, wielu autorów nie musi do niego odnosić się ponownie. Wystarczy, że jedno źródło.

Inne terminy, od których warto zacząć, szukając źródeł, to:

  • SOLIDNY
  • Prawo Demeter
  • Wielka Kula Błota

Wszystkie te wyrażają powiązane koncepcje, które mogą dostarczyć realnych źródeł odniesienia, nawet jeśli tak naprawdę ich nie nazywają.

Ostatecznie chociaż „jesteś szefem”. Powodem jest to, że tak mówisz i chociaż aby być uważanym za dobrego menedżera, naprawdę powinieneś być przygotowany na uzasadnianie swoich decyzji. Zrobiłeś to i jeśli nadal jest opór, właściwy sposób działania to dla Twojego zespołu postępowanie zgodnie z zaleceniami.

Komentarze

  • ” Jeśli nadal występuje opór, właściwym sposobem działania jest wykonanie przez zespół tak, jak ' ponownie ” Może właściwym sposobem działania jest rezygnacja, a nie osłabianie zespołu ..?
  • Menedżer ' s decyzja została odpowiednio uzasadniona, a jeśli zespół nie ' się zgadza, to problem leży po stronie zespołu. Operator został zatrudniony ze względu na swoją wiedzę i nie pozwolono mu korzystać z niej dla korzyści firmy, ponieważ koledzy wygrali ', aby zachowywać się rozsądnie, nie ' t do przyjęcia. Niech ' obróci twoje twierdzenie na głowie – dlaczego nie ' t odporni członkowie zespołu rezygnują, jeśli ich pogląd na pracę jest niezgodny z że z biznesem?
  • Słuszna uwaga. To zależy od tego, jak chcesz prowadzić zespół. Ale z mojego doświadczenia wynika, że zmuszanie ludzi do robienia rzeczy wbrew ich woli prowadzi tylko do nieszczęścia. Wolałbym widzieć God Objects w całym kodzie niż żałosny zespół programistów. Może odpowiedzią jest wysłanie ich na szkolenie. Każdy kocha szkolenia. Win-win.
  • Główny programista / menedżer / ktokolwiek powinien bezwzględnie podjąć wszelkie rozsądne środki, aby zapewnić, że zespół utrzymuje ze sobą dobre stosunki robocze. Jeśli dodatkowe szkolenie jest pomocne, zdecydowanie rozważ je jako opcję – ale wydaje się, że jest to przypadek świadomej ignorancji i mówienia komuś, że musi zostać przeszkolony, aby zrozumiał twój pomysł, kiedy to, co myślą, ' już się nie zgadzam, zamiast nie rozumieć, może przynieść odwrotny skutek. Trudno mi sobie wyobrazić sposoby radzenia sobie z ludźmi, którzy nie ' nie chcą się uczyć.

Odpowiedź

Jak udowodnić lub obalić obiekty „boga” są nieprawidłowe?

Nie możesz.

Tego rodzaju przypuszczenia nie można poddać dowodowi matematycznemu, a dowód matematyczny jest jedynym rozsądnym dowodem.

Nawet jeśli spróbujesz zastąpić emotywne słowo „źle” z wymiernymi miarami skutków używania obiektów boskich, przekonasz się, że:

  1. dostępne miary są prymitywne,
  2. istnieje niewiele wiarygodnych badań, w których te miary zostały określone ilościowo w przypadku kodu tworzonego przez profesjonalnych programistów.
  3. istnieje niewiele wiarygodnych badań, w których konstrukcje językowe lub wzorce (anty) projektowe byłyby powiązane z tymi środkami.

I że ignoruje kwestię decydowania, kiedy dany obiekt jest obiektem „boga”.

W najlepszym przypadku tego rodzaju badania mogą wykazać jedynie korelację empiryczną. To nie jest prawdziwy dowód.


To, co faktycznie robisz, to debatowanie na temat zalet i wad „boga” obiektów w celu zmiany opinii innych ludzi. … a potem praktyka twojej organizacji.

Nie używaj słów takich jak „dowód” lub osoby, z którymi debatujesz, mogą śmiać się ci w twarz.

Odpowiedź

Możesz chcieć zobaczyć guru tygodnia nr 84 . Chodzi o obiekty bogów (monolity) i ich zły stan.

Wyodrębnij:

(Major) Wyodrębnia potencjalnie niezależna funkcjonalność wewnątrz klasy […] (Minor) Może zniechęcać do rozszerzania klasy o nowe funkcje […]

Odpowiedz

Nie jestem pewien, czy Twój zespół jest naprawdę zainteresowany akademickimi dowodami, że „obiekty Boga są złe”.

Z psychologicznego punktu widzenia twoje podejście do refaktoryzacji może zostać źle zrozumiane jako atak na kompetencje zespołu a la: „zespół wykonał złą robotę”, chociaż program działa zgodnie z oczekiwaniami.

To, co naprawdę chcesz zrobić, to poradzić sobie z negatywnymi skutkami ubocznymi „kodu spagetti” i „obiektów Boga”: ogromne koszty dodawania nowych funkcji z powodu rosnącej liczby błędów powodowanych przez efekty uboczne.

Bycie bardzo konkretne i zadawanie pytań zamiast udzielania odpowiedzi może być bardziej pomocne:

manager > Why did implement the new tax-calculation schema took more than 4 weeks team > because {reason a} manager > And why was {reason a}? team > because {reason b} manager > And why was {reason b}? ... team > because {reason z} manager > what could we do to avoid {reason z} ? team > refactor code 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *