Wpis ten ten dzieli się na dwie części. Jeśli interesuje cię tylko techniczne mięsko to możesz drugą część ostentacyjnie olać. Ale osobiście jednak polecam ją przeczytać gdyż może to spowodować wybitnie wnikliwą zadumę u czytelnika (lub zdenerwowanie jeśli nie znajdzie tam nic ciekawego - ale to i tak lepsze od oglądania tańca z gwiazdami - dop. redakcji)
Analiza gotowca do sortowania naprawdę dużych plików
Test
-Dosgi.requiredJavaVersion=1.5 -XX:MaxPermSize=256m -Xms40m -Xmx512m
Wyniki testu
Rozmiar pliku | Czas sortowania |
---|---|
50k | 374 ms |
500k | 1181 ms |
Rozmiar pliku | Czas sortowania |
---|---|
50k | 2815 ms |
500k | 24233 ms |
Zrzut z visualVm
ogólna ocena
Część druga - Syndrom "tego tutaj jeszcze nie wynaleziono"
Syndrom doczekał się swojego wpisu w wikipedii : http://en.wikipedia.org/wiki/Not_invented_here. W IT objawia się ona pisaniem, pisaniem i pisaniem od nowa rzeczy, które dawno już ktoś zaimplementował. Ile osób zamiast użycia gotowej biblioteki zaimplementowałoby sortowanie plików własnoręcznie? I znowu coś co na dzień dzisiejszy wydaje się być bez sensu znajdzie uzasadnienie w warunkach do których jesteśmy tak naprawdę przystosowani...
Powrót na sawannę
Powyżej widzimy uproszczony koncepcyjny diagram gromady liniejących małp biegających po sawannie od 100tys do kilku milionów lat temu (od nich się właśnie wywodzimy). Członek gromady oznacza osobnika będącego w gromadzie a nie członka kogoś z gromady. Przeżycie każdego osobnika było w dużym stopniu zależne od grupy i pozycji jaką w niej zajmuje. Na zajmowaną pozycję i co za tym idzie - ilość dostępnych dla danej jednostki zasobów - wpływ miały : siła, koalicje oraz potencjalna wartość dostarczana gromadzie. W tym momencie interesuje nas to ostatnie.
Załóżmy, że gromada liczy 50 osób. Mamy w niej dwóch homo sapiens, którzy są podobnego wzrostu, podobnych osiągów ale jeden z nich posiadł umiejętność odróżniania grzybów trujących od jadalnych lub tez w sprytny sposób umie zwędzić miód z ula - kto będzie miał wyższą pozycję w gromadzie (zakładając, że żaden nie ma pleców u starszyzny)? Niby oczywiste, że ten który posiadł specyficzną umiejętność ALE aby tak się stało dwa warunki muszą być spełnione. Gromada z jakiegoś powodu musi potrzebować tej specyficznej umiejętności oraz gromada musi wiedzieć, że dany osobnik ma ową specyficzną umiejętność
Powrót do biura
Zakładając, że owe wzorce zostały ewolucyjnie wyryte w nas przez setki tysięcy lat zastanówmy się jak mogą się one objawiać :
- Gromada potrzebuje rozwiązania problemu
- Umiem rozwiązać dany problem
- Ale, ale istnieje ogólnodostępne tanie rozwiązanie tego problemu.
- Mam teraz dwa wyjścia - albo samemu zaimplementować rozwiązanie i zostać bohaterem (strata szansy gromady/zysk osobisty) czy też zostać kolesiem, który tylko zadzwonił po kolesia, który zna się na grzybkach (zysk gromady/strata szansy jednostki)
Można płakać, że profesjonalista w naszym zawodzie to powinien zawsze dla gromady i ten tego i w ogóle ale przypomnę a) nie jesteśmy istotami racjonalnymi, b) nie da się tak po prostu uciąć milionów lat ewolucji.Pozostaje mi jedynie dać wskazówkę dla osób w jakikolwiek sposób generujących warunki pracy - trzeba zrobić tak aby ów "osobnik" czuł się na tyle dowartościowany sukcesami grupy aby nie potrzebował szukać kompensacji w indywidualnych sukcesach. Trochę swiatła na ostatnie zdanie może rzuci dowcip :
- słuchaj, pracuje dużo, zostawaj po godzinach, wykazuj inicjatywę i bierz na siebie coraz więcej obowiązków ... to za rok będę miał lepsze
jak to Twoj szef przeczyta to chyba podwyzki nie bedzie. no chyba ze to Ty jestes samcem alfa w gromadzie:-)
OdpowiedzUsuńMotyla noga faktycznie. Myślisz że zdążę usunąć ten post zanim go przeczyta? Choroba, znowu będę musiał kołpaki na giełdzie sprzedawać żeby jakieś prezenty rodzinie kupić na święta :(
OdpowiedzUsuńPS. A tak na poważnie to życzę mądrzejszych szefów ;)
A w rzeczywistości często jest tak: ty wiesz jak grzybki trujące od jadalnych odróżnić, ale inna małpa krzyczy głośniej lub ma większą maczugę i prowadzi towarzystwo w maliny.
OdpowiedzUsuńZ analogiami jest tak, że są dobre do czasu. Niestety, w rzeczywistości często nie ma tak dobrze, że ta małpa się otruje i zdechnie, a reszta pójdzie dalej.
To nie była analogia tylko bardzo bardzo uproszczona geneza powstania w nas pewnych instynktów, które ewoluowały przez setki tysięcy lat;)
OdpowiedzUsuńNatomiast gdyby podejść do tego jak do analogii dnia obecnego to faktycznie w dzisiejszych czasach działa to troszkę inaczej.
pzdr
Tak naprawdę zauważyłem, że praca w IT często nie polega na napisaniu całego rozwiązania od początku, ale na posiadaniu wiedzy jak zintegrować istniejące komponenty w taki sposób aby stworzyć rozwiązanie, z którego klient będzie zadowolony.
OdpowiedzUsuńW sumie też nie jest tak, że istniejące rozwiązanie jest zawsze lepsze od tego, które sami napiszemy od podstaw. Dla każdego problemu warto wykonać analizę, które podejście jest bardziej optymalne.
Bardzo dobrą filozofią jest filozofia Linuksa, robić jedną rzecz, ale za to niezwykle dobrze (Powershell też daje radę). Dzięki temu z prostych narzędzi można łatwo zbudować bardzo zaawansowany skrypt, który potrafi robić cuda.
Dobór odpowiedniego narzędzia to podstawa, ale niestety często jest to sprawa bardzo indywidualna (zależna m.in. od kompetencji i doświadczenia).
PS. bardzo fajny blog, naprawdę miło się go czyta.