"Prawdziwy programista" w pogoni za nowościami

27

Nasz zawód jest absolutnie pasjonujący. Oferuje ogromną różnorodność, wystarczy się tylko odrobinę postarać. Ja nadal jestem programistą (no dobra, według niektórych już nie jestem :) ), choć w tym roku napisałem baaaardzo mało kodu. “Typy” dev-różnorodności są przynajmniej dwa. Najbardziej oczywisty to: nowe technologie.

Akcja: BLOGvember! Post nr 2.
W listopadzie w każdy roboczy poranek na devstyle.pl znajdziesz nowy, świeżutki tekst. W sam raz do porannej kawy na dobry początek dnia.
Miłej lektury i do przeczytania jutro! :)

Pamiętam czasy, gdy w 2008r. rodził się .NET 3.5. LINQ, var, lambdy, extension methods… Prawdziwa rewolucja! Jakież to było wspaniałe. Tyle nowych możliwości! I co? Przychodzę do roboty z płonącym z wrażenia licem, i od razu kubeł zimnej wody: ty chyba śnisz, LINQ to użyjesz u nas najwcześniej za 2 lata. WHAT???

Zmieniłem pracę. Poszedłem do firmy, która używała LINQ2SQL jeszcze gdy była to beta. Bleeding edge, nie baliśmy się tam niczego. Działało… średnio. Firmy już nie ma na rynku. Hmm…

Rozwój: 4 fun & profit

Z upływem lat zmieniają się priorytety, zmienia się postrzeganie technologii. Zmienia się wreszcie pojęcie wartości czasu.

W ubiegłym roku pisałem o idei Pet Projects, wcześniej o Dniu Pracy Własnej. Jedno i drugie rozwiązanie ma służyć “ostrzeniu programistycznej piły“, czyli zdobywaniu nowych umiejętności. Podnoszeniu swoich kwalifikacji. Zbieraniu doświadczeń.

Uwielbiasz dżawaskrypty? Co tydzień masz rewolucję, jea! Programujesz obiektowo? To na pewno warto zerknąć w stronę programowania funkcyjnego. A do tego: co to jest R i dlaczego tak głośno ostatnio o “big data”, jak ugryźć ten temat?

Poszerzanie horyzontów jest potrzebne, to oliwa naszych programistycznych trybów. Bawiąc: uczy. Prawie jak: łakocie i witaminy.

Więc na co czekać… lecimy z tym na produkcję?

Hold your horses

Tutaj pojawia się problem. Jeden zapaleniec zapali drugiego zapaleńca i wrzucą w projekt coś, co nie do końca działa. Jakąś bibliotekę w fazie beta, jakiś produkcik dopiero-co wypuszczony. Jazda, MOC!!!

Można się tym jarać, oczywiście. Sam bym się jarał. Kiedyś. Dawno temu. Teraz: chyba bym łby tym zapaleńcom pourywał.

Poszerzanie horyzontów jest fajne, dopóki można je rozpatrywać w kategoriach zabawy. Bez zobowiązań. W momencie pojawienia się autentycznego ryzyka: to już przestaje być zabawą, a zaczyna być podejmowaniem odpowiedzialnych decyzji.

Co się stanie, jeśli grupka rozwijająca projekt nagle przestanie go rozwijać? Albo sprzeda i trzeba będzie za jego używanie słono płacić?

A co się stanie, jeśli jeden i drugi zapaleniec, w ferworze technicznych dyskusji, wjadą furą w drzewo? Albo przeskoczą do innej firmy, która pozwala wrzucać na produkcję nie tylko bety, ale i alfy? Kto utrzyma projekt?

To są realne problemy. Bardzo przyjemnie jest ich nie zauważać. Jednak ignorancja nie sprawia, że problemy znikają. Wręcz przeciwnie: mogą się boleśnie ujawnić w najmniej odpowiednim momencie.

Królik doświadczalny

Ryzyko ryzykiem, ale to nie jedyny wymiar problemów w “pogoni za nowym”. Jest jeszcze… czas.

Kto dotnetowiec ten pewnie chociaż mniej więcej orientuje się, co Microsoft robi z nowym dzieckiem: dotnetcore. Nie tknąłem tego kijem nawet, nie zainstalowałem. I wcale mnie tam nie ciągnie. Nie zamierzam marnować życia na takie rzeczy. Wystarczyło mi zobaczyć kilka prezentacji Gutka i innych osób na ten temat. Zmiany co tydzień, BETA2 zachowująca się jak niestabilna ALFA. Kompletny chaos i brak poszanowania dla ludzi inwestujących czas w tę grę w kotka i myszkę.

Przestało mnie to BAWIĆ. Wolę POBAWIĆ się z Córeczką. Bo w pewnym momencie jest to decyzja do podjęcia właśnie na tym poziomie: będę królikiem doświadczalnym dla nieodpowiedzialnych twórców oprogramowania, czy tatą dla swojej Córeczki? Obu ról nie jestem już w stanie obsadzić.

Na jednej z niedawnych konferencji (nie pamiętam której, trochę tego było), ktoś grzmiał ze sceny: TO jest właśnie nasz zawód! TO nasza powinność! TO nasza odpowiedzialność!

Sorry, ja podziękuję. Z mojej perspektywy to fucha darmowego testera. Za stary na to jestem.

Olać to?

Więc: co? Rdzewieć, zagrzybieć, olać, dusić się ciągle w tym samym sosie? Właśnie nie, ale… z głową. Z umiarem. Gnanie po falach kolejnych niewypałów niczym Bohun po stepie na pewno może dać radość. Nie jest jednak darmowe. Ani bezpieczne.

Warto trzymać rękę na pulsie. Orientować się, jakie są trendy, co się ogólnie dzieje dookoła. Ale czy inwestować czas w każdą nowinkę tylko dlatego, że “chcę mieć ostrą piłę”? Polemizowałbym. Prędzej: siwe włosy.

I wiesz co? Jeśli jesteś taką głodną alf i bet dziewoją bądź napalonym na nowości junakiem: tak trzymaj. Jednak gdy spotkasz się z odmiennym podejściem to niekoniecznie myśl: “Ale dziad! Utracił dev-ikrę! Na emeryturę go!”. Sam tak kiedyś myślałem, a teraz próżno szukać u mnie tej ikry. Tej iskierki radości, gdy wszystko się wywala, a ja muszę znaleźć przyczynę. Zbawić świat. Zbyt wiele nocy nad tym spędziłem.

Ikrą płaci się za doświadczenie. System naczyń połączonych. I chyba tylko dzięki temu nasza tech-cywilizacja jeszcze jako-tako funkcjonuje.

Share.

About Author

Programista, trener, prelegent, pasjonat, blogger. Autor podcasta programistycznego: DevTalk.pl. Jeden z liderów Białostockiej Grupy .NET i współorganizator konferencji Programistok. Od 2008 Microsoft MVP w kategorii .NET. Więcej informacji znajdziesz na stronie O autorze. Napisz do mnie ze strony Kontakt. Dodatkowo: Twitter, Facebook, YouTube.

27 Comments

  1. Co fakt, to fakt, w 2005 postanowiłem poznać coś nowego, wybrałem C#, nawet zlecenie złapałem (tak dla motywacji przy nauki), by wykonać jakąś aplikację w tym języku. No i od tamtej pory był to jedyny projekt w tym języku jaki zrobiłem. Choć z drugiej strony będąc na rozmowie o nową pracę, fakt,że cokolwiek robiłem w C# policzono mi za plus, mimo, iz zdawano sobie sprawę, że temten C# i obecny to 2 różne języki, ale jednak :)

  2. Trudno się nie zgodzić z tym, że ciągła pogoń za nowościami prędzej lub później musi skończyć się katastrofą. A jednak… ten syreni śpiew nowych technologii, nowych rozwiązań jest czasami nie do zagłuszenia. I chyba to dobrze, bo trochę takiego szaleństwa zawsze jest potrzebne. Ale tylko trochę, bo jednak umiar jest i tutaj wskazany.
    Dlatego jak najbardziej popieram Twoje konkluzje, mimo że wydają mi się nieco zbyt kategoryczne.

    A tak na marginesie, muszę wtrącić uwagę bo mój wewnętrzny “grammar nazi” zaczyna wyć. “Ignorancja” to brak wiedzy na w jakiejś dziedzinie, a nie przymykanie na coś oka. Sorry, NMSP.

    • FEAGORN,
      Czasem syreni śpiew, a czasem po prostu przyzwyczajenie. Szaleństwo na pewno jest potrzebne, ale ćwiczenia warto wykonywać na poligonie :).
      Odnośnie ignorancji: dokładnie o to chodzi, o nieznajomość przedstawionych przeze mnie problemów, a nie przymykanie na nie oka.

  3. Pingback: dotnetomaniak.pl

  4. Też wcześniej nie rozumiałem dlaczego duże firmy często są “zacofane” i nawet nie rozważają przejścia na nowe technologie.
    Fajny wpis.

    • MICHAŁ,
      Ano właśnie, a czasami wystarczy zastanowić się “co ta nowa technologia da?”. Często: nic. Fajnie ten temat został poruszony na panelu dyskusyjnym podczas .NET Developer Days w kontekście dotnetcore, polecam obejrzeć gdy video będzie online.

      • No nie do końca tak jest: jak to powiadają wszytko zależy. Przesiadka do dotnetcore ma sens tylko jak potrzebujesz uruchamiać aplikacje na innych platformach niż Windows. Ale np przesiadka z technologi do których nie ma już dobrych narzędzi ma duży sens. Nie mylmy zmiany technologi z pogonią za nowinkami – są to dwa różne problemy.

        • Dokładnie to mówiono ze sceny o dotnetcore: ludzie się na rzucają, chociaż i tak zostają na IISie. A potem płaczą że nie działa. Z głową trzeba.

          Nie mówię też oczywiście żeby niczego nigdy nie modernizować, no gdzie! Właśnie jak piszesz: trzeba rozróżnić kiedy robimy coś “w pogoni”, a kiedy z realnej potrzeby.

  5. OMG! % pisze to co ja zawsze powtarzałem … nie sztuką jest nadziergać każdy projekt w najnowszym frejmowrku – tylko pytanie kto to potem utrzyma :).

    I to poniekąd jest też odpowiedź na pytania w stylu “ale czemu ku.. oni używają tego Sharepoint/WebSphere/Tomcat/InnyBadziew?”. Ano właśnie też dlatego, że może i kiepskie ale jak odejdzie jeden dev to mu tam nagle dev kariera wyskoczy w inne rejony, to znajdzie się inny, który będzie w stanie to przejąć.

    • Tomek,
      Jak rozpoczynaliśmy współpracę to powoli zaczynałem już to rozumieć. Co nie oznacza, że teraz z radością bym się w Sharepoincie zagrzebał :).

  6. Jak ten tekst ma się do Twojego wystąpienia na temat mikroserwisów, gdzie mówiłeś, że to takie fajne podejście, bo każdy moduł może być w nowej technologii i daje to możliwość zabawy programistom i potestowanie nowych frameworków?

    Co do ASP core, to niestesty zgadzam się w 100% Sami w to poszliśmy, z myślą, że nie zmigrujemy nigdy do nowszej wersji. Jednakże to co było rok temu siłą Core’a teraz jest be i MS odchodzi od tego. Wkurzające. Bardzo.

    • Marek,
      Bo to MOŻE BYĆ fajne i bardzo przydatne O ile robione świadomie, z akceptacją wszelkiego ryzyka. Dodatkowo: co innego zrobić komponent w stablinej technologii, choć nowej dla danego zespołu, a co innego jechać na alfach.
      Podczas wystąpienia nt. mikroserwisów zawsze starałem się wspomnieć, że trzeba Z GŁOWĄ. Fakt, że MOŻNA, nie oznacza, że TRZEBA. Ale na pewno jest to opcja, i to jedna z ciekawszych. Pozostaje pytanie: jak bardzo ten koncept da się pociągnąć bez narażania projektu na porażkę.

      A z MS, przejściem na open source, dotnetcore… To chyba temat na osobny tekst, ale moim zdaniem za bardzo się z tym wszystkim pospieszyli, nie do końca umiejąc w takim środowisku pracować.

  7. A ja się tak trochę nie zgodzę z wami. Trochę doświadczenia już mam (10+) i spotkałem się z takimi projektami które zaczynały się końcem zeszłego tysiąclecia (początkiem lat dziewięćdziesiątych ) i pracowały w oparciu o bazy Oracle. Jako że w tedy nie było wielu rzeczy w bazach( nie była prawie że niczego) które są teraz to miały zaimplementowana w logice aplikacji (np klucze obce) – i co z tego że aplikacja działa na Oracle 11 skoro działała jak na Oracle 8. Co do utrzymania to też tak bywa że w końcu ludzie się wykruszają i potem jest problem bo nikt nie wie co i jak – nawet jest problem ze zbudowaniem projektu bo nie wiadomo jakiej wersji użyć.
    Tak więc ja jestem za stopniowym sukcesywnym odświeżaniem aplikacji, łącznie ze zmianą technologi. Aplikacje które działają bardzo długo nie ruszane potem są trudne do ruszenia – bo gdzie się nie ruszy to się sypie. I jestem też przeciwny “poratowaniu” aplikacji – czyli przenoszeniu aplikacji prawie że 1 do 1 do nowej (innej) technologi. Takie coś to przypomina pudrowanie guw.. a praca z czymś takim przypomina pływanie w szambie – ale ciężko utrzymać się na powierzchni.
    Z czym się zgodzę to z tym że używanie bety w projekcie jest jazdą gołą dupą po nie heblowanej desce. Tak z doświadczenia to mi się wydaje, że dopiero jak wyjdzie pierwsza paczka poprawek do oficjalnej wersji to warto zaczynać się w to bawić komercyjnie – co nie przeszkadza żeby wcześniej zrobić jakiś “reaserch”.

    • Tomek,
      Pewnie, research jak najbardziej (jeśli ktoś ma do tego zdrowie). Odświeżanie: oczywiście! Jednak i to może się różnie skończyć, trzeba być świadomym że nawet tak głupia sprawa jak podbicie wersji jakiejś zależności może słono kosztować. Rozumiem więc osoby stosujące zasadę: “jak działa to nie ruszaj”.
      W jednym projekcie chcieliśmy przejść na nowsze MVC. A bo co będziemy w starym siedzieć. Po 3 dniach (sic!!!) walki okazało się, że będzie to skutkowało również podbiciem wersji NServiceBus, co już wiązało się z kosztami liczonymi w dziesiątkach tysięcy dolarów.

  8. Amen! Święte słowa, chociaż mnie się jeszcze czasami, w przypływie zbytniego entuzjazmu, zdarza zagalopować. Usprawiedliwiam to zwykle tęsknotą za młodością, nieprzebranymi ilościami wolnego czasu i chęcią chociaż małego nadrobienia tego, na co mogą sobie po nocach pozwolić młodsi koledzy po fachu. Kondycja też już nie ta, więc na szczęście galopowanie szybko się kończy i po cichutku wracam na swoje sprawdzone, stabilne poletko :)
    Tak troszkę poważniej natomiast to poruszyłeś zagadnienie, które od pewnego wieku mnie wydaje się jednym ze smutniejszych aspektów życia programisty (oraz prawie dowolnego innego technicznego cżłowieka pracującego w IT) – technologia odjeżdza i pasjonatom często pozostaje tylko ze smutkiem odprowadzić ją wzrokiem. Co prawda jeśli się sprawdzi to być może uda się ją dogonić, ale to już nie to samo, nie ma tego dreszczyku emocji z bycia pionierem.
    Jakimś rozwiązaniem (wymagającym jednak wykrojenia odrobiny czasu poza pracą zarobkową) jest wygenerowanie sobie na boku takiego hobbystycznego, prywatnego projekciku, w który można rzucać wszystkim co nam się akurat podoba bez szczególnych obaw.
    A żeby nie być takim jednostronnym tetrykiem, to ja tam trochę doceniam tych, którzy mimo wszystko jadą na dzikim ośle robiąc za darmowych testerów bo oni jednak też mają konkretny wkład w pchanie wózka technologii naprzód. Skąd byśmy się inaczej dowiadywali, że coś się nie nadaje? ;)

    • Wojtek,
      Oczywiście też doceniam, którzy jadą po bandzie. Sam przez długi czas tak robiłem, a potem nadal chciałem robić (ale już nie mogłem). Teraz nie chcę, ale chętnie patrzę na zmagania innych. DonKiszoty :)

  9. Ja chyba też już się starzeję, bo podejście do nowinek mam coraz bardziej sceptyczne;) Ile w ciągu mojej kariery pojawiało się Frameworków, API, języków i innych cudów, które miały zmienić świat, zrewolucjonizować programowanie itd. Większość z nich teraz pewnie gnije w piwnicach gdzie je tworzono, nic o nich nie słychać;)
    To zdanie Maćku jest genialne: “Co się stanie, jeśli grupka rozwijająca projekt nagle przestanie go rozwijać? Albo sprzeda i trzeba będzie za jego używanie słono płacić?”. No właśnie, co? Ja w firmie nie mogę sobie pozwolić na użycie czegoś, co zniknie za pół roku, a już szczególnie nie mogę na tym budować całej aplikacji, bo najpierw wyleci aplikacja a ja razem z nią, chyba że wcześniej klienci mnie rozszarpią;)
    Swego czasu pewien dev-senior (wiekowo i pod względem doświadczenia) przy okazji rozmowy o kolejnym super frameworku powiedział ze skwaszoną miną: “to wszystko już było… żadna rewolucja… 20 lat temu korzystaliśmy z tego, tylko zwało się to inaczej, ale idea była ta sama”. Wtedy się na niego oburzyłem, dziś już przyznaję mu rację;)

      • A tam od razu “dziadem”;) Powiedziałbym, że się starzejemy, ale lepszym słowem będzie “dojrzewamy”;) W życiu rodzinnym wszystko wygląda analogicznie- kiedyś wiele decyzji, zakazów i nakazów moich rodziców było delikatnie mówiąc dziwnych. Dziś kiedy sam mam dzieci widzę, że to miało sens. I chyba tak samo jest w IT, po okresie buntu, zachłyśnięcia się nowinkami i pogoni za wszystkim co ma wyższy numer wersji przychodzi czas przyznania racji dziadkom;)

  10. Dzięki, tego oczekiwałem, sam mam małą córeczkę i trochę się już pogubiłem w tym wyścigu szczurów… Nie nadążam ;) Dobrze, że toto nie takie niezwykłe :)

  11. Tak jak normalnie w dobrym tonie jest kreować się na fana wszelkich nowinek i szeroko komentować po internetach nadejście każdej alfy i zapowiedzi, tak teraz wszyscy przyznają że tak naprawdę to nie jest potrzebne i żal im na to życia:-)

    • Klaudia,
      Podsumowałaś że hej :). Prawdą jest, że dobrze jest się tak kreować. Sam przez długi czas miałem taki wizerunek nawet gdy już nie było to aktualne (bo kiedyś było). Teraz… piszę jak jest. Stety czy niestety to ciężko powiedzieć. Może kiedyś znowu się zmieni?

  12. Uff, myślałam, że jestem ostatnim dinozaurem, który jeszcze nie podnieca się Corem i Angularem 2.

  13. Polecam Angulara2,
    Migracja wersja RC4 na RC6 trwała 3 dni.
    Wersja stabilna, wcale nie jest stabilna.
    Kod przenoszony z 2.0.0 na 2.1.1 się wysypuje.
    Biblioteki zmieniają się co dwa tygodnie.
    Błąd z widocznością komponentów w ngIf leży od stycznia.

    Ale to nowość :) więc heja piszmy w tym bo to trendy. Całość w chmurze bo trendy.

    Zamiast użyć czegoś co działa i jest stabilne, firmy bawią się w nowości i co sprint review wrzaski że tak mało zrobione.
    Nie przegadasz, że siedziałeś trzy dni na problemem, którego nawet na SO nie było :) a jak jest to do wersji niższej i rozwiązanie nie działa.

  14. Pingback: webMASTAH.weekly.028 - Nowoczesny stos technologiczny dla front-endu - webMASTAH

Newsletter devstyle!
Dołącz do 2000 programistów!
  Zero spamu. Tylko ciekawe treści.
Dzięki za zaufanie!
Do przeczytania wkrótce!
Niech DEV będzie z Tobą!