Technologie i stagnacja

Come back

Stagnacja – to dobre słowo na początek tego wpisu. Chwilka kiedy był ostatni?
Niestety sporo się ostatnio działo w moim życiu i musiałem nieco ogarnąć swój porządek dnia. Dodam tylko iż winowajcą jest ten wredny uniwersytet oraz pewna niewiasta – choć i tak nie czuję się usprawiedliwiony :(

Ale porozmawiajmy o technologii. 
Technologią nazywam tu język programowania, framework, różnego rodzaju narzędzia jak docker czy wirtualna maszyna. Czyli wszystko czego na co dzień używamy.

Jako że jesteśmy w temacie stagnacji chciałbym powiedzieć o niej w kontekście mentalności programistów z którą się zetknąłem podczas tworzenia różnego rodzaju produktów. Oraz dlaczego jest dobra! Zła oczywiście też. Wszystko jest mocno subiektywne. Potraktować to można jak felieton.

"Mental smell" programistów

Mental smell

Skoro mamy “zapachy kodu” to czemu by nie powąchać programistów ;) 

  • Praktykant – sam nim byłem i nie ma w tym nic złego, ale chciałem o tym wspomnieć bo to dość ciekawe. W jakiej technologii najlepiej czułby się praktykant? Jeśli jego doświadczenie dotyczy tylko uczelni, to zapewne ta która jest na studiach – w moim przypadku JAVA. “Proszę Pana bo ja chcę do javy”. Świata poza tym nie widziałem, a Visual Studio to nawet mi się kiedyś w domu nie chciało zainstalować. 
    Są tacy którym wszystko jedno, byle odbębnić, nie zależy im i idą tam gdzie nadarzy się okazja – co jest wg. mnie dość ciekawą opcją bo o ile nie zdołają nakarmić się wystarczająco wiedzą i wciągną się w temat to mają szansę zdobyć przydatne umiejętności.
  • Junior – już coś umie, trzymajmy się tej JAVY. Ale jest to jeszcze moment w którym pracodawca mógłby powiedzieć “No java jest ok, ale my robimy w Ruby, może zgodzisz się pójść w tym kierunku?”. No i tutaj zależnie od decyzji – chcemy się specjalizować, czy zgodzimy się otworzyć na coś nowego? Może Java po godzinach skoro ją tak uwielbiam?
Zakładam że na samym początku kariery nikt nie wybrzydza i prędzej idzie tam gdzie poniesie go wiatr, chyba że jest wyjątkowo uparty. W każdym razie nic tu jeszcze nie przesądzono. Można rzeźbić jak w kupce mokrej gliny.
  • I am PROgrammer – to uczucie. Jestem programistą. Świata nie widziałem poza tym jednym projektem w którym jestem od kilku lat. Ale jestem kozakiem w tym co robię. Jest jakiś problem? Rozwiązuję go w 5 minut. Nic bardziej mylnego. Powiedzmy że trafiam do innego zespołu, do innej firmy. Dupa blada. Jednak skupmy się na wyborach. Co wybiera taki programista? Chętnie używa nowych narzędzi ? Dostosowuje się czy wciska na siłę rozwiązania które zna?
  • Programuję i to lubię – taka osoba poznała już pewne wzorce, technologie. Stosuje je, jednak nie stroni przed innymi. Prawdopodobnie chce się wyspecjalizować, bo płaci się za specjalistów, jednak kiedy nadarza się okazja – chwyta ją. 
  • Programuję bo płacą – zrobi co mu każą, choć pewnie też będzie obstawał przy tym co potrafi najlepiej. Norma.

To naturalne, że ludzie czują się najbardziej komfortowo kiedy znają dogłębnie temat. PROgrammer o którym mowa myślę że prędzej wciśnie coś co zna, ale da się przekonać do innego frameworku. Myślę że niewielu do całkowicie nowego języka. Mimo wszystko jest spora szansa że osoba o której mowa jest już fanatykiem… Rozwija się, w obrębie wybranego języka, ale świata poza nim nie widzi. Każdy inny jest Be, ewentualnie fuj.
Programista który lubi programowanie być może wyspecjalizuje się wolniej, ale pozostaje otwarty. Dostrzega wady i zalety oraz ma frajdę z poznawania tych rzeczy.

  • Typowy koks – typek wymiata, do firmy przyjęli go czyszcząc przy tym buty. Wie że jest dobry. No cóż – jest. Za to wszyscy inni to debile. To on robi najlepiej. Praktyk. Decyduje, a inne propozycje zazwyczaj są opatrzone ironicznym uśmiechem. Wcześniej był PROgrammerem, więc zna tylko jedną słuszną technologię, która nadaje się do wszystkiego najlepiej.
  • Mędrzec – ewolucja programisty który lubi programować. Nie ma takiej wąskiej specjalizacji, więc może nie całują go po rękach. Ale zna całe spektrum. Jak dobrze pójdzie to pozna i nowe. Doradzi, pomoże – spróbuje, zaryzykuje.

Myślę że wyraźnie widać co faworyzuję w tym zestawieniu, a co mi nie odpowiada. Co by nie było każdy ma prawo do takiego postępowania jakie uzna za słuszne. Nie oszukujmy się, programowanie może być życiową pasją, jednak jest cholernie nudnym zajęciem – przynajmniej większość czasu. Programista który pracuje bo daje mu to pieniążka jest ok, choć pewnie wkurzy pasjonata bo mu tak nie zależy. Natomiast ci co poczuli wiatr we włosach i są najmądrzejsi – niech zespół to ogarnie lub zaakceptuje.

  • Programista nowinek – żągluje frameworkami, technologiami. Robi to bez sensu, bo chce użyć tego czy tamtego. Usłyszał na konferencji że bazy danych są niepotrzebne, można trzymać wszystko w pamięci. Zrobił to – pewnie nie tam gdzie trzeba, po prostu chciał spróbować.
  • Stary programista – REST? Przecież CORBA działa bez zarzutu. Stare sprawdzone rozwiązania są najlepsze. Te nowinki co dopiero wyszły z bety, jakieś 5 lat temu. Nie – nie ufam temu czemuś. Robimy ten nowy projekt w wersji javy której uczyłem się na studiach.
  • YOLO – no ten typ to po prostu na nic nie uważa. Kod tragiczny, byle by działał. Plik konfiguracyjny? Pff – hardkodujemy to w kodzie! Copy pasta ze stacka i takie różne. Użyje 6 frameworków do tego samego, zrobi spaghetti – you only live once.

Każdy z tych programistów kieruje się innymi wartościami. Ma inne przekonania i różny poziom wiedzy. Nie uważam aby zespół YOLO programistów stworzył coś sensownego, jednak gdyby wrzucić pomiędzy 3 z nich  – mędrca oraz PROgrammera, gdyby zadziała się komunikacja i stworzył się TEAM – nic nie stoi na przeszkodzie! Wystarczy że zaczną kierować się wsólnymi wartościami.

Ciężko kierować się zdrowym rozsądkiem kiedy brakuje wiedzy. Doświadczeni programiści mogą już nie sledzić tak nowinek i zwyczajnie pozostają przy tym co znają. Jeden człowiek który jara się tematem może im tą wiedzę dostarczyć. Na seniorach ciąży obowiązek nie wpadania w stagnację i próbowaniu nowych rzeczy, w miejscach w których można sobie pozwolić na ryzyko lub w sposób który można łatwo “odkręcić”. Czasami po prostu należy zaryzykować.

Nie mówię że trzeba się stać programistą nowinek, po prostu trzeba pozostać otwartym na nowe propozycje. Jeśli pojawia się jakiś trend – czemu by tego nie wykorzystać skoro rozwiązuje gro problemów z którymi się borykamy?

Wybór

Wyobraźmy sobie firmę. Firmę która korzysta z różnych technologii. 

Ma kilka teamów programistycznych na backendzie. 2x Java, 2x C#, 3xPHP.
Trzy grupki ludzi, z różnymi umiejętnościami. Każdy będzie ciągnąć w swoją stronę. Moje jest mojsze niż twojsze!
Zakładając nawet że oficjalnie się świetnie dogadują i rozumieją to pod nosem z kolegami się śmieją – ech ci dotnetowcy, metody z wielkiej litery.

Pojawia się projekt A. Dostał go team Java, lecz po jakimś czasie inny projekt B który utrzymują wymaga szczególnej uwagi. Nie będą mieli przez najbliższy rok możliwości rozwoju produktu A. Dostaje go team PHP. Ma już większość funkcjonalności, MVP zostało już z grubsza zrobione, wystarczy poprawić kilka bugów, dodać kilka prostych endpointów, zintegrować się z jakimś serwisem.

Team PHP niespecjalnie zna jave, uważa że PHP jest najlepsze na świecie. Wiecie co zrobią?

Przepiszą

Kilka miesięcy pracy teamu Java poszło na marne. Nikt nie był otwarty, nikt nie chciał zainstalować javy, zwanej też w tamtych kręgach wirusem. Pytanie czy to dobrze?
Z jednej strony, skoro zostali zatrudnieni jako programiści PHP to czemu mieli by zacząć pisać w Javie? Nie taka była umowa!
Z drugiej… To jeden projekt, większość skończona – dlaczego nie? Bo są zamknięci.

Gdybym miał coś napisać w PHP,  jest to jeden z tych przypadków który wolałbym oddelegować byleby się tego nie tykać i jest w tym trochę mojej hipokryzji. Jednak w takich okolicznościach dodałbym ficzera, no nie umrę na zawał – chyba…

Podziały

Piszę o tym wszystkim żeby pokazać jak wielkie podziały może tworzyć framework którego używamy. Jeśli chodzi o mentalność programistów – jest jeszcze wiele rodzajów i chyba niewiele jest tych negatywnych, wiele wynika z braku doświadczenia które można przecież zdobyć. Każdego można by jakoś zabawnie zaszufladkować. 
Chcę przez to powiedzieć że podział na programistów be i programistów cacy jest nieodpowiedni. Przykład teamów który przytoczyłem pokazał podział ze względu na technologię, pewnego rodzaju technologiczną stagnację, która znacząco zwielokrotniła koszty wytwarzania. Gdyby tylko ktoś miał chęć poznać coś nowego – problem by nie istniał. A firma ma nóż na gardle – nie zwolni przecież programistów PHP, kto będzie rozwijać ich produkty? Przecież nie Javovcy, a nowi wyznawcy PHP będą mieli podobne podejście – więc trzeba przepisać.

Można pójść o krok dalej. Nie ma dobrych i złych technologii – są tylko te źle użyte, albo po prostu stare. Tylko czy stare są złe? Zależy. Sam kiedyś mówiłem że “Java to jest sto lat za C#, Java jest archaiczna itd.” – przyłączyłem się do głupiej wojny pomiędzy dwiema technologiami – głupie to. Nie ma nic złego w specjalizacji, ale nie ma też nic dobrego w trzymaniu się wybranej ścieżki kurczowo i nieodwoalnie.

Apeluję – pozostańmy otwarci, uczmy się dalej, do emerytury. Będzie ciekawiej, oraz wierzę że lepiej. Poza tym czasami o wiele taniej.

stay open
zostań otwarty
Close Menu