MateuszNaKodach / DomainDrivers.pl

1 stars 0 forks source link

Zadanie 1: Modularyzacja #2

Open MateuszNaKodach opened 4 months ago

MateuszNaKodach commented 4 months ago
  1. Czy ta firma chce ten produkt dla siebie, czy chce go sprzedawać np. w formie subskrypcyjnej? Jaki jest sposób zarabiania na tym produkcie? Jeśli to projekt wewnętrzny, to w jaki sposób dowiemy się, czy wprowadzenie go w życie przyniosło założone skutki (i jakie to skutki)? Jaki rząd wielkości ilości projektów spodziewamy się po pół roku od startu produkcyjnego, a jaki po 3 latach? Ile średnio etapów/podetapów można spodziewać się na projekt? Ilu jest tych PMów?

Świetne pytanie, kluczowe. Będziemy wynajmować soft w formie SaaS innym firmom i używać u siebie (to na początek). Sukces projektu polega na tym, że szybciej wykryjemuy skomplikowany haromonogram, który może się nie udać w połączeniu z innymi projektami i lepiej zarządzimy decyzją czy wystartować projekt mimo tego czy nie Lepiej podejmujemy decyzje jak rozkładać zasoby miedzy projektami i jak to wpływa na całość przedsiębiorstwa. Szybciej ubijamy projekty płacać karę. Odważniej dokupujemy zasoby, wynajmujemy je, albo przenosimy z innych projektów, bo automaty liczą nam, że to ma sens.

po 3 latach setki tysięcy projektów (ale setki tylko per jedno przedsiębiorswo) do 200 etapów. PMów = dowolnie

  1. Czy PMi na dzień dzisiejszy robią w organizacji takie projekty korzystając z innych narzędzi? Jeśli tak, to czy system powinien pozwolić na wprowadzenie projektów, które są w trakcie? Jeśli nie powinien pozwolić, to w jaki sposób system dowie się o tym, że pracownicy, maszyny lub pomieszczenia są już zarezerwowane dla projektów obsługiwanych poza systemem?

Tak, ze "zdrowego rozsądku", z excela i ze skilli negocjacyjnych i gierek dworskich, żeby innemu PMowi pod***bać zasoby 😉 Możemy dodawać projekty "w trakcie"

  1. Czy może zdarzyć się, że etap projektu będzie mógł rozpocząć się po zakończeniu więcej niż jednego innego? Jak działają etapy i podetapy w takiej sytuacji? Czy należy sztucznie ustawić sekwencyjnie etapy/podetapy, które mogłyby być realizowane równolegle, tak aby dla każdego etapu/podetapu prawdą było że czeka na co najwyżej jeden inny etap/podetap? W tym wariancie rozwiązanie techniczne wpłynie (negatywnie) na czasy kończenia projektów.

Oczywiście. 10 etapów może powodować, że 11 będzie mógł być odpalony. Można ustawić sztucznie, ale to jest karkolomne i działa tylko dla małych priojektów. Dla dużych, PM popełniają błąd i po połowie projektu wychodzi, że ciężko będzie to spiąć

  1. Czy status “not_started” dotyczy jakiegoś innego rodzaju rzeczy w innych częściach organizacji, np. w dziale controllingu i stąd jest potrzeba, aby dokładnie tym statusem oznaczać projekty przed rozpoczęciem? Czy może “not_started” to informacja dla nas, że moment dodania projektu do systemu to niekoniecznie moment rozpoczęcia prac i że PMi powinni wprowadzać projekty do systemu z wyprzedzeniem?

To po prostu projekt w fazie planowania, gdzise badamy sensownośc startu. Sporo rzeczy dzieje się tu poza systemem, a my staramy się w naszym systemie zbadać harmonogram


No dobra, to wynika z tego (na czym system ma zarabać), że to co jest mocą tego produktu jest nie do końca opisane (ale patrząc na pozostałe opisy - może to i lepiej - naprawdę oddaliście ducha opisów biznesowych z pomieszanymi poziomami, szerokim i średnio trafionym opisem tego co proste i nieważne i brakiem opisu tego co ważne i trudne - szacuneczek). Pojawiają się jakieś punkty reputacji dla projektów, ale jeszcze nie wiadomo co to znaczy, wygląda na to że my nie tyle digitalizujemy proces biznesowy który ma obecnie miejsce, tylko mamy w parze z biznesem postawić nowy (ten do oceny opłacalności różnych rzeczych - w jego miejsce mamy teraz radosną twórczość PMów). Inna sprawa jest taka, że to musi być dostrajalne - tutaj jeśli wyliczanie tej reputacji/opłacalności będzie działać źle/nietransparentnie to ludzie po prostu przestaną z tego korzystać, przeniosą się na excele i będą mieli rację (skoro zmianę zasobów odklikuje człowiek, start odklikuje człowiek, system wypluwa jedynie rekomendacje - to czy schedulerem raz na tydzień to się jeszcze okaże ;)) Jeszcze nie wiem jak się czuję z alokacjami - wygląda na to że, mimo że jakiś zasób jest zablokowany, to dla większego dobra i tak jest dostępny (przynajmniej ręcznie, automatycznie chyba nie), no chyba że pan Kazio wyjechał w Bieszczady i wrzucił telefon do jeziora. Nie martwiłabym się za bardzo, gdybym myślała że ten system będzie pracował w warunkach nadmiaru zasobów, no ale w tym jego sens, bo gdyby zasobów był nadmiar i to byłoby ok, to wówczas odpowiedź na pytanie "w jaki sposób zarabiamy na tym produkcie" by brzmiała np. ułatwiamy pracę PMom co powoduje mniejszą rotację i możliwość prowadzenia przez każdego PMa większej liczby projektów jednocześnie. Chociaż... opóźnienia, ubijać projekty ze względu na opóźnienia można nawet w warunkach nadmiaru zasobów. Ogólnie to brzmi jak misja na Marsa. Jedyne co tu jest proste to integracja z systemem HR o ile mamy zamiar respektować prawo pracy xD Z łatwiejszych rzeczy - chyba się nie ostaną się te podetapy, może będą etapy ale będą mogły oczekiwać na wiele innych i blokować wiele innych jeszcze nie jest pewne czy tylko etapów czy czegoś jeszcze, wyjdzie w praniu, pewnie trzeba będzie walidować wobec circular reference, jakoś zaprezentować i mam nadzieję że niewiele więcej tam będzie. Może skoro to ma być SaaS w którymś momencie spoko by było podjąć temat wydzielenia części zasobów do wspólnej giełdy i sprzedawania w tego w ten sposób - "weź nasze narzędzie do planowania zintegrowane z giełdą zasobów - kogo nie masz u siebie to wynajmiesz prosto z aplikacji", ale nie wiem jeszcze, za wcześnie na takie propozycje. Na tym się zatrzymam i spróbuję coś podzielić, choć normalnie bym powiedziała że to za wcześnie i poprosiła analityków i PO o zebranie tych wymagań lepiej. Ja sama nie wiem o co i w jaki sposób dalej pytać na tym etapie - i się cieszę że po tym kursie będę umiała!

MateuszNaKodach commented 4 months ago
  1. W jaki sposób system ma wyliczać harmonogram? Czy powinien brać pod uwagę dostępność zasobów w konkretnych oknach czasowych licząc od zadanej daty startowej i ustawiać realizację etapu na moment najbliższej dostępności zasobów, czy zakładać że zasoby uda się “załatwić” do czasu gdy będą potrzebne w etapie i jako przewidywaną datę końca projektu podawać taką która wynika z sumy czasów realizacji etapów i podetapów?

.. w różny sposób 😉 czasem optymalizujemy się pod jeden konkretny etap (bo musi się wykonać w styczniu, bo jest zaćmienie słońća), czasem pod elektryka Kazika, bo on jest kluczowy. Czasem pod sewkencje etapów i datę startu i końca (bo wtedy musimy to zrobić).

Czasem chcę mieć pewność, że będę mieć zasoby przed startem, a czasem zakładam, że zdobędę i dokupię 🙂

  1. Czy deadline powodujący kary umowne to zawsze data prognozowanego zakończenia etapu/projektu wpisana przez PMa podczas definiowania projektu?

Tak

  1. Czy na pewno urządzenia powinny być blokowane przez cały czas trwania projektu, a nie przez czas w którym są używane w etapie? Dlaczego tak jest?

Może być i tak i tak. Wynnika to z zachłanności PMa

8.Kto przenosi zasoby między projektami, jeśli tak wynika z opłacalności? Czy system ma to robić/proponować? Jeśli tak, to z czego wyliczać opłacalność? Oprócz spodziewanych zysków należy wziąć pod uwagę ryzyko? Czy zyski mogą być wyrażane inaczej niż pieniężnie, kiedy projekt np. jest strategiczny i jest podwaliną pod kolejne projekty choć sam w sobie nie ma wysokiego zwrotu? Czy system mógłby od tego abstrahować?

Dyro. Opłacalnośc najczęściej mierzona jest piniondzem. Ale masz racje, za wyjątkiem sytuacji gdy liczona piniondzem nie jest. Czasem opłaca mi się zakończyć projekt, który mało zarabia ze względów wizerunkowych. System powinien to wziąć pod uwagę (sam definiuje ile projekty mają punkty reputacji) Tak, mogę przypisać dowolną osobę. Kolejka - też potrzeba. System monitoruje braki projektowe, raz w tygodniu - i reaguje - notyfikacją, autotmatycznym zamiennikiem, przeniesieniem z innego projektu, etc

  1. Czy system powinien pozwalać na rezerwowanie pracownika bez odpowiednich umiejętności, jeśli PM ma zamiar przeprocesować doszkolenie tego pracownika przed rozpoczęciem etapu? Jeśli nie, to czy system ma w jakiś sposób obsługiwać kolejkę projektów oczekujących na dany zasób? Skąd osoby zarządzające zasobami będą wiedzieć, których brakuje i dobrze by było załatwić ich więcej lub że innych jest za dużo i generują koszty? Czy potrzeba aby system zajął się tą perspektywą w ramach bazy materiałów, urządzeń i pracowników, czy będzie to obsłużone za pomocą innych narzędzi?

Tak, mogę przypisać dowolną osobę. Kolejka - też potrzeba. System monitoruje braki projektowe, raz w tygodniu - i reaguje - notyfikacją, autotmatycznym zamiennikiem, przeniesieniem z innego projektu, etc

MateuszNaKodach commented 4 months ago
  1. Czy jeśli system wykryje, że z powodu opóźnień etapu jego podetapy też będą opóźnione, to powinien automatycznie zmienić daty alokacji zasobów? W jaki sposób takie opóźnienia będą sygnalizowane do systemu?

    tak i nie. Zależy jak sobie to skonfiguruje PM

    1. W razie niedoboru zasobów jakiegoś typu (więcej niż jeden projekt konkuruje o dany zasób na ten sam czas) w jaki sposób system powinien przyznać taki zasób? Kto pierwszy ten lepszy, czy wyliczać to na podstawie opłacalności? Czy pierwszeństwo np. mają projekty bliżej ukończenia, lub o niższym ryzyku aby uniknąć “rozgrzebania” wielu projektów, a może zostawić to w formie propozycji do rozpatrzenia osobom, których pracę będzie można zautomatyzować już po starcie kiedy zobaczymy jak to jest w praniu? To jest istotna część pracy systemu?

    Strategie są różne, można wywłaszczyć zasób (dyro działu to robi) jeśli przeniesienie do innego projektu ma sens. Główna strategia to kto pierwszy ten lepszy

MateuszNaKodach commented 4 months ago

Rezerwowanie zasobu/wizyty

image

@sgnsajgon U nas w Znanym mamy dokumenty w Elasticsearch'u w indeksie dedykowanym availability, gdzie każdy dokument jest mocno "zgranulowany" tworząc kombinatoryczną permutację wszystkich opisujących dostępność w czasie wymiarów.

Na indeksacji zbieramy tyle dokumentów ile jest największych niepodzielnych przedziałów czasu dostępności (opisanych ID lekarza, placówki, adresu oraz zbiorami IDków usług medycznych, chorób, obsługiwanych ubezpieczeń, itp. jako, że one wszystkie mogą wpływać na czas trwania usługi lub wymagany czas poprzedzający wizytę w gabinecie).

Per batch ID adresów robimy aktualizację indeksu w cronie (cyklicznie) usuwając wszystko dla podanych adres ID (za wyjątkiem tych, które wymagają utworzenia / update'u). Zbieramy też reakcje na eventy zmieniające dostępność - wszystko buforujemy w Redisie w cyklach 5 minutowych per address ID, żeby deduplikować konieczność zmiany dla tych samych adresów.

Na Elasticsearch mamy ustawione force na query, żeby zawsze nadpisywał w razie konfliktu. Zważywszy max okienko 10 minut w eventual consistency tego rozwiązania - mamy zawsze przynajmniej 10 minutowe dane w indeksie zebrane w dokument z IDkami z bazy i przedziałami czasu aktualnymi w tym zakresie.

Niemniej mamy też różne ciekawe edge case'y które nam ryją mózgi ostatnio 😂 @Jakub Pilimon masz gdzieś ten benchmark? Ktoś go ma / można to zobaczyć? 🤔 Byłoby bardzo ciekawe przeanalizować takie zestawienie

MateuszNaKodach commented 4 months ago

Hej, nie chcę spoilować na główym, bo o tym jest cały moduł 9, gdzie od zera ten problem wałkujemy.

Natomiast hinty: 1) ile danych (pesymisytcznie) system wyjmie z bazy, żeby podjąć deyzję o tym czy mogę mieć elektryka (często rezerwowanego) Kazika na czwartek na 10-11?

2) Jakie komendy się wzajemnie blokują w agregacie, a biznesowo niekonicznie? Co powoduje, żę coś co mogłoby się biznesowo zadziać równolegle, zadziać się nie może przez nasze techniczne rozwiązanie

MateuszNaKodach commented 4 months ago

image

MateuszNaKodach commented 4 months ago

image image

Czasem vertical slices jest rozumiane jako posiekanie procesu biznesowego na cząstki jak tasakiem od lewej do prawej i stworzenie z tego modułów. A to w złożonych systemach może być droga do porażki. Ta technika nie ma nic wspólnego (oprócz nazwy) z konkretną architekturą

MateuszNaKodach commented 4 months ago

Wrzucam mój strumień świadomości i przekmin 😄 . Wyszedłem od pytań po co właściwie jest ta aplikacja i czemu ma tak wyglądać i odpowiedzi były powiedziane wprost od eksperta dziedzinowego - żeby wiedzieć - obliczyć, które projekty mają większą szanse powodzenia, a które mniejsze. Powodzenie projektu zależy defacto od tego ile biznes zarobi lub wyprodukuje coś o wymiernej wartości - pieniądze, i od tego, czy będzie zrealizowany w zadanym w czasie (czas to pieniądz). Ryzyko (nie) powodzenia zależy od wielkości projektu (ilość etapów) struktury etapów (jak są połączone i jak wpływają na siebie) ilości przypisanych zasobów. Zmienne zasoby i etapy są niestabilne - najczęściej będą zmieniane, dlatego trzeba zamknąć je w blackboxach i odpytywać trywialnymi pytaniami typu: "czy moge przypisac"? Najczęściej pojawiającym się u mnie słowiem był "wpływ" czegoś na coś, ale wychodzi mi, że to bedzie bardziej event krązacy po systemie, jak wolny elektron, z informacja miedzy modulami. Zmiana zasobu - będzie w najwyższej warstwie, bo od niej zaczyna się logiczna podróż po regułach programu, wyrażona w efekcie - wyświetlniem infomacji w GUI lub zapisem do bazki.

MateuszNaKodach commented 4 months ago

image

MateuszNaKodach commented 4 months ago

Gotowe rozwiazanie: image

MateuszNaKodach commented 4 months ago

tu chodzi o to, że czasami rozwiązania nie znamy i musimy je wymyślić. Więc w kursie są podane różne triki które mogą w tym pomóc. Nie gwarantują powodzenia. Im kto więcej ma doświadczenia z różnych projektów/książek tym ma lepiej, to oczywiste. Wiadomo też, że nowicjusz będzie miał pod górkę. Ale podpowiedzi są które książki czytać, żeby mieć mniej pod górkę. I ogólnie w kursie trochę próbują usystematyzować nieformalne podejście do rozwiązywania problemów - co nie znaczy, że w kursie będzie pełny opis takiego systemu szukania rozwiązań.

MateuszNaKodach commented 4 months ago

*Często w proces modelowania wkarcza niespodziewany błysk intuicji A ktoś z boku ma wrażenie wyjmowania królika z kapelusza Ta do końca niewyjaśniona zagadka intuicji Jest najpewniej nieuświadomioną wiedzą Wiedzą pochodzącą z doświaczenia Trzeba przyznać, że intuicja sprzyja tym, którzy Mieli okazję eksponować się na różne przypadki Rozwiązanie wtedy jest zaskakującym skojarzeniem dwóch tak odległych dziedzin, Że logiczny tok myślenia ich nie łączy