Czas płynie, a z nim przybywa ciekawych i czasem zatrważających doświadczeń z pracy w branży IT. Historie tu przedstawione miały miejsce w rzeczywistości. Opis poniższych przypadków nie ma na celu postawienia kogokolwiek w złym świetle, a zostały one spisane ku przestrodze i uciesze czytelnika.
Very big data
Koniec XX wieku. Powstaje firma, która bardzo szybko zdobywa popularność konkurencyjną ofertą na rynku dostępu cyfrowego do usług rozrywkowych. Informatyzacja przebiega szybko i sprawnie własnymi siłami przedsiębiorstwa. Nie wydaje się, by konieczne były do zastosowania jakieś „wyrafinowane” metody i rozwiązania techniczne. Licencje są drogie, więc ktoś poddaje pomysł, by oprzeć i zapisywać dane ze wszystkich dziedzin działalności firmy w ramach jednej bazy danych, tak będzie przecież łatwiej, bo odpada tyle problemów:
- utrzymanie spójności danych,
- utrudnienia w dostępie do danych,
- prosta replikacja na środowiska testowe,
- ułatwione zarządzanie silnikiem bazy.
Mija dziesięć lat, w radiu rozbrzmiewa piosenka „teraz tutaj jest klepisko, ale będzie San Francisco” braci Golców. Kto by pomyślał, że tu rzeczywiście będzie San Francisco?
Baza pęka w szwach, kilka terabajtów na przestarzałym, słabowydajnym silniku, gdyż mało kto robił upgrade na tak dużych instancjach. W firmie pojawiły się dziesiątki innych systemów z dedykowanymi bazami danych. Niestety systemów opartych o bazowego molocha łatwo wymienić się nie da.
Think big before it is too late.
Zakładnicy
Wielka firma doradcza wdraża system CRM u operatora telekomunikacyjnego, to dawne stare czasy nikt się na tym systemie w Polsce nie zna, a przynajmniej mało kto zna się od strony programowania, więc wszyscy się uczą i robią jak potrafią.
Przy takim stanie rzeczy zatrudnienie do prac studentów w ramach umowy-zlecenia nie dziwi nikogo. Student fajna sprawa, młody, pracowity, nie dostrzega nadmiaru problemów, a bierze łopatę i pyta gdzie kopać, a jak wykopie to przyjdzie i zapyta, czy aby jeszcze czegoś nie wykopać, a jak mu się łopata łamie, to też problemu nie widzi.
W systemie daje się programować zarówno obiektowo jak i proceduralnie. Programownie obiektowe ma sporo zalet, niestety w ramach środowiska programistycznego w owym systemie, programowanie obiektowe jest jak wycieczka na Marsa w jedną stronę, a to głównie przez brak możliwości nawigowania po kodzie i brak kolorowania składni (takie zamierzchłe czasy).
Są studenci i studenci, większość idzie z prądem, ale są też tacy, co idą pod prąd. Nie było zakazu, co by nie pisać obiektowo, więc był jeden co pisał i pisał dobrze. To naprawdę robiło wrażenie, ale nikt inny programowania obiektowego nie ogarniał.
Szybko okazało się, że tylko autor był w stanie zmieniać i rozwijać kod modułu, którego był autorem i może to przez przypadek… ale mógł zacząć kierownictwu dyktować warunki i być kimś prawie niezastąpionym.
Ten mechanizm nazywam solution locking – brak zastępstwa, czy standardów programowania sprawiły, że student wziął w szach doświadczonych managerów.
Adresik poproszę
Włączam okno przeglądarki i… nie wiem co wpisać. Chciałem zalogować się na środowisko testowe do bieżącego wydania systemu. W sumie, może to już demencja starcza, a może powinienem był dodać ten adres do ulubionych. http://192.168.3…. ale jak to dokładnie było, nie pamiętam. Spróbuję wyszukać adres w naszej firmowej wikipedii, ale jaki był adres wikipedii? Ten jako sobie przypomniałem, wpisuję ochoczo. Loguję się na własne konto i wyszukuję listę serwerów testowych. „A baza?” – myślę sobie, baza jest w innym miejscu opisana, a może nie jest… Pech chciał, że poszły aktualizacje i musiałem zrobić restart komputera, wszystkie otwarte okienka poleciały.
Tym sposobem minęło mi pierwsze 30 min w pracy. Mi i pewnie jeszcze jakiejś 1/3 pracowników z kilkuset osobowej załogi, co w prostym rachunku przekłada się na kilka dniówek, które można byłoby poświęcić na coś przynoszącego wymierną korzyść. Prawdopodobnie wystarczyłby jeden specjalista od DNS-u i zamiast wklepywać http://192.168.3…. można by podać http://crm-test1/ co wydaje się bardziej ludzkie. Jednak dla informatyka, zapamiętanie kilkudziesięcu adresów po cztery oktety, to przecież pestka.
Im więcej, tym lepiej
Pewna firma zapragnęła profesjonalnie zarządzać procesem wdrażania zmian na środowisko produkcyjne. Został więc zakupiony System Renomowanej Firmy, który to system Rewolucjonizuje Proces Zarządzania Usługami, jest zarazem Konfigurowalny, jak i Rozszerzalny, zawiera Wszystko Czego Potrzebujesz i przychodzi w pudełku oblepionym nalepkami „ITIL ready”.
System został wdrożony i skonfigurowany. Sposób wdrożenia to temat na oddzielną historię – ale ostatecznie udało się. System pilnował żeby każda zmiana wdrażana na środowisko produkcyjne była odpowiednio opisana, była połączona z odpowiednimi elementami Bazy Danych Konfiguracji i zebrała wszystkie zbędne i niezbędne aprobaty. Było pięknie.
Pewnego razu pewien młody deweloper postanowił przenieść pewną zmianę na środowisko produkcyjne. Zmiana miała to do siebie, że musiała być zainstalowana w nocy. Deweloper otworzył więc System Renomowanej Firmy, odnalazł tam formatkę służącą do wpisywania zmian, pracowicie wypełnił pięćdziesiąt dziewięć pól opisujących swoją zmianę, nacisnął „Save” i z poczuciem dobrze spełnionego obowiązku udał się do domu.
Następnego dnia rano nasz deweloper, ponieważ był sumienny i dokładny, postanowił sprawdzić czy zmiana została prawidłowo zainstalowana. Otworzył więc System, wyszukał tam swoją zmianę i sprawdził jej status. W miejscu statusu wpisane było „Pending”. Deweloper najpierw się zmartwił, ale zaraz potem pomyślał, że może ten status jest jednak wprowadzony w innymi miejscu. Otworzył więc okienko, które pokazuje stan akceptacji zmiany wprowadzony przez osoby, które musiały ją zatwierdzić. Znalazł tam całe grono osób, które akceptowały tę zmianę – a także całe grono statusów. Przy niektórych osobach wyświetlał się zielony status „Approved”. Przy jednej – czerwony status „Rejected”. A przy jeszcze innej – zupełnie niezrozumiały status „Closed”.
„A może jeszcze inaczej – pomyślał deweloper – przecież z moją zmianą skojarzone jest zadanie. Sprawdzę status tego zadania, czy jest ono wykonane”. I tak też zrobił, dowiadując się, że zadanie jest w statusie „Staged”.
W obawie przed odkryciem kolejnych statusów deweloper ujął słuchawkę i zadzwonił do administratora z pytaniem, czy jego zmiana w końcu została wdrożona, czy też została odrzucona…
Morał – nawet najlepszy system będzie nam bardziej przeszkadzał niż pomagał, jeżeli nie zadbamy o to, żeby informacje w nim były czytelne i aktualne…
W tym odcinku to już koniec, może Ty również dopiszesz swoją własną historię.