katelx
2018-02-16 16:59

chyba kazdego programiste co jakis czas nachodzi ochota na napisanie czegos od zera, albo przynajmniej po swojemu. chodzi mi o problemy ktore sa juz dobrze poznane i rozwiazane, a patterny (czy nawet gotowce) sa dostepne po paru kliknieciach, a mimo to wolimy poswiecic tygodnie zycia na rozwiazywanie ich po swojemu z przeswiadczeniem ze bedzie to lepsze, albo ze przynajmniej bedziemy sie przy tym dobrze bawic i czegos sie nauczymy.

zdarza mi sie spedzac 10x wiecej czasu na zadaniu bo nie chce po prostu dokladac ifa, choc wiem ze team bylby z tym ok a refactoring moze okazac sie bledogenny, innym razem spedzam tydzien na tuningowaniu swojej implementacji selectorow choc wiem ze netty by w zupelnosci wystarczyl.
staram sie jednak nie przesadzac :) natomiast ostatnio zetknelam sie z prawdziwym przypadkiem koderskiej sraczki i zastanawia mnie szczerze jaka byla motywacja osoby (swoja droga doswiadczonego kodera i "bardziej senior" kolegi) ktora wy...produkowala takiego potwora.

zadanie wydawaloby sie proste, nalezy porownac performance algorytmow wewnatrz firmy vs performance rynku, tzn zebrac dane z tego co sie wydarzylo na kilkunastu gieldach + to co wyslalismy my, wrzucic to do bazy i dac znac analitykom zeby sobie z tego wyciagali wnioski.

logicznym byloby:
1) podpiac sie pod jakiekolwiek proxy miedzy algorytmami a gielda, wyciagnac z przesylanych komunikatow potrzebne dane i wrzucic to do bazy

ale po co gdy zamiast tego mozna (oczywiscie nie posilkujac sie zadnymi zewnetrznymi libkami jak amatorzy):
1) zawalic kod algorytmow logowaniem, bez jakiegos szczegolnego porzadku/regul/formatu
2) napisac w javie serwis parsujacy logi i wrzucajacy interesujace linijki do nowego skompresowanego pliku. serwis taki rzecz jasna musi dzialac na tym samym boxie co algosy, co daje kilkadziesiat nowych procesow zawracajacych glowe swoim statusem
3) napisac w javie serwis ftp ktory pozwala na sciagniecie sparsowanych logow, oczywiscie jak wyzej - deployment na kazdy box
4) napisac w javie superobiektowy (mala klasa na kazda metode ;)) generator db schema i dml na podstawie logow i ladujacy to do nowo powstalej bazy mysql
5) napisac w scali serwis webowy do analizy performance oferujacy 0.01% funkcjonalnosci obecnie uzywanego przez analitykow systemu, nie udostepniac go poza dev bo brakuje zintegrowanej z korpo autentykacji/autoryzacji
6) napisac w javie serwis webowy do sciagania dumpu tabel z mysql za dany dzien i dac do niego dostep jednemu z analitykow.

wspomniany w punkcie 6 analityk codziennie rano sciaga dane za poprzedni dzien, laduje to do swojej bazy przy uzyciu jakiegos komercyjnego narzedzia etl ktore dostosowuje dane do wymaganego formatu.
tzn juz nie sciaga bo cos sie psuje miedzy punktem 3 a 4 i nikt nie wie co. oryginalny autor zmienil team a jego "dzielo" nie figuruje w budzecie, naprawdopodobniej ktos bedzie mial sie okazje popisac swoim rozwiazaniem za pare miesiecy jak bedzie trzeba zrobic raport z performance ;)

z innej beczki, w ramach wykorzystania zeszlorocznego budzetu i tego ze kiedys zajmowalam sie implementacja algo dla mutual market access (dla zainteresowanych https://www.hkex.com.hk/Mutual-Market/Stock-Connect?sc_lang=en) zostalam dolaczona jako 'ekspert techniczny' do wizyty u jednego z naszych chinskich klientow.
w ciagu jednego dnia bylam na szczycie drugiego i czwartego co do wysokosci budynkow na swiecie (https://en.wikipedia.org/wiki/Shanghai_Tower i https://en.wikipedia.org/wiki/Ping_An_Finance_Centre), musze sie zglosic do ksiegi guinessa ;)
w sieci jest sporo filmikow z szanghajskiego budynku, za to nowy wiezowiec w shenzhen nie jest jeszcze chyba oficjalnie otwarty dla zwiedzajacych, podejrzewam ze gdy sie to stanie to sporo ludzi oszaleje na punkcie szklanych podlog przy krawedzi, ciekawe kiedy ktos postanowi sprawdzic wytrzymalosc ;))
mam straszny lek wysokosci ale odwazylam sie na podejscie z mysla ze (nawet w chinach) wiezowce nie sa budowane przez software engineerow wiec nie ma sie czego bac (ale tym "100kg" z niebieskiej plakietki juz nie zaufalam)

rubaszny_karp

dlaczego np chcesz pisać jakieś ftp w javie skoro możesz encryptowane pliki wrzucić na s3, szybciej ? łatwiej ? analityk bierze open sourcowego toola, decryptuje i bang jest ! "generator db schema i dml na podstawie logow i ladujacy to do nowo powstalej bazy mysql" - czemu nie nosql ? łatwiej, szybciej, piękniej ? " 1) zawalic kod algorytmow logowaniem, bez jakiegos szczegolnego porzadku/regul/formatu" - umiem robić syf w software ! zatrudnij mnie !

student pro

Ping An Finance Centre - to tam trafiają wszystkie zagubione pingi

WeiXiao

to te szankhaj tower już stoi? ostatnio jak tam byliśmy z Janushem Liu Xiang kraść narzędzia i złom POMAGAĆ W BUDOWANIU CHIŃSKIEJ POTĘGI, to... https://www.youtube.com/watch?v=gLDYtH1RH-U

katelx

@rubaszny_karp o nosql nastepnym razem napisze ;) co do zatrudnienia to na priv pls :D

cerrato

"chyba kazdego programiste co jakis czas nachodzi ochota na napisanie czegos od zera" - nawet nie wiesz, jak się cieszę, że to napisałaś. Zawsze myślałem, że jestem jakimś dinozaurem / dziwakiem, ale widzę, że to jednak jest powszechna przypadłość ;)

jarekr000000

spedzac 10x wiecej czasu na zadaniu bo nie chce po prostu dokladac ifa to najbardziej praktyczne podejście do refaktoringu. I tak musisz zrozumieć kod, i tak już jest niebezpiecznie.... i tak ten kawałek będzie dodatkowo potem testowany. Najlepszy moment na większe zmiany.

katelx

@cerrato tak po zastanowieniu to nie wiem czy to taka powszechna przypadlosc, ale dla wygody ustalmy ze chec pisania czegos od zera dotyczy tylko wybitnych jednostek ;)) @jarekr000000: ja to wiem, ty to wiesz ale sproboj przekonac kogos kto placi za twoj czas poswiecony na zmiany + ewentualne porefactorowe bugi ;) @Plissken tak

jarekr000000

@katelx płaci tyle ile powiem, ze kosztuje, a w szacunkach uwzględniam refaktor i bugi. Jak patrzę na różne 8-mio tysięczniki to one zwykle powstają przez to, że latami ludzie dostawiali tam po jednym ifie. Jak mam dostawić ifa do jakiejś masakry spagetti to w zasadzie refaktor, dopisanie testów itp, to nawet najbezpieczniejsza droga. Jak nie rozumiem kodu na tyle dobrze, żeby zrobić bezpieczny refaktoring - to prawdopodobnie różnież ten if nie jest bezpieczny.

piotrpo

Macrosoft (taka PL firma od oprogramowania dla firm, że niby dalej miękkie, ale już nie małe), koniec poprzedniego tysiąclecia. "Napiszmy własny RDBMS".

zerogravity

A tak naprawdę cały post był napisany po to żeby @katelx pochwaliła się jak wyglądają jej nowe buty w połączeniu z czarnymi rajstopami :D ( btw. ładne )

Plissken

Szkoda że cała się nie pokazała... albo chociaż stópki ;)

katelx

@jarekr000000: jak jestes niezaleznym ekspertem "ratujacym" projekt to jasne, gorzej gdy "tech lead" projektu stwierdza "dodaj tam ifa i bedzie" ;) @zerogravity zawsze chcialam byc blogerka modowa ale nigdy nic z tego nie wyszlo... to moze chociaz mikroblogerka ;)

bus45

Dla samej nogi wartoby odwiedzić Honk kong ;)

Plissken

daj mi nogę daj mi nogę daj mi nogę, bo bez nogi bo bez nogi żyć nie mogę ;D

several

@katelx: może gość tak długo siedział w jakimś maintanance, że potrzeba programistycznego wyżycia się była już nie do zniesienia? BTW nieźle musiałaś się wygiąć, żeby zrobić sobie zdjęcie buta ;)

somekind

@piotrpo: a do czego konkretnie pijesz? W tamtych czasach wszystkie duże firmy tworzyły swoje RDBMSy, kilka lat później zaczęły powstawać otwartoźródłowe.

piotrpo

@somekind: Napisałem - Macrosoft, firma wtedy duża jak na PL, postanowiła z nieznanych nikomu powodów, o ile pamiętam przełom wieków - w każdym razie było już MySQL, czy jakieś tam Sybase ASA za parę złotych. Z tego co kojarzę, to po paru latach rozwoju wciąż nie byli w stanie zrobić porządnie i wydajnie joina, ale klienci płacili od godziny wdrożenia, więc "biznesowo" mogło się nawet opłacać :) Wiem, że "wielcy" robili własne RDBMSy ale Macrosoft to jednak nie Microsoft (który w sumie tez własnego produktu od zera nie pisał), ani nawet nie SAP.

somekind

Ok, mea culpa. Nie doczytałem pierwszego Twojego wpisu. :) Ale w sumie śmieszna ciekawostka.