Programistyczny trąd

38

Trond? Tręd? Trend? Co za koleś, słowa pomylił! Ale nie, właśnie nie. Właśnie trąd. Tudzież swąd. Bo posłuchajcie…

Tajemnicą nie jest, że od kilku tygodni nie napisałem ani jednej linijki kodu. Organizowałem konkurs, wylewałem z siebie blogowe posty, nagrywałem DevTalka, zaangażowałem się w recenzję książki, pisałem artykuły (o czym więcej wkrótce), budowałem konferencyjne ścieżki, wymyślałem spisy treści do książek (o czym więcej kiedyś)… et al.

Programista bez kodu. Jak xionc bez ministranta.

Szczerze mówiąc: stęskniłem się za programowaniem. D’oh, dziwnym nie jest! Może nie aż tak bardzo jak bym się spodziewał, ale rączki już świerzbiły. Bardzo ucieszyłem się zatem, gdy nadarzyła się okazja. Nic specjalnie skomplikowanego: ot, wbić się na REST API MailChimpa i coś porobić z listą Uczestników Daj Się Poznać.

Z zapałem otwieram Visuala. Ale to będzie, ale to będzie!!! New -> Project -> Class Library. Nareszcie!!! I od razu, jak zwykle: “install-package xunit”… Już zaraz, już za chwileczkę!!! Stópki tupią niecierpliwie w rytm Behemotha, paluszki rozgrzewamy, fejsik i mail wyłączony, taktaktak! Trzydwajeden…

I BUM!!! Młot dev-Thora spada na moje porcelanowe marzenia, rozbijając je na miliard kawałków, strącając całe podekscytowanie prosto w dół kloaczny.

clip_image001

Dosłownie minutę po kliknięciu na ikonkę IDE okładałem komputer pięściami, a bluzgi echem się odbiły po osiedlu. Jedna minuta wystarczyła, aby stoicki spokój i prawie nieustanne zadowolenie z aktualnej rzeczywistości… prysły. Jak bańka z kwasu solnego.

Jak to możliwe, że moja ulubiona od >10 lat czynność, w ciągu chwili wprawiła mnie we wściekłość, jakiej nie czułem od tygodni? Przecież to taka pierdoła! Ale wtedy zaczęły spływać wspomnienia takich pierdół.

Przypomniało mi się, gdy przez TYDZIEŃ podbijałem w projekcie wersję ASP.NET MVC. I jak trzeba się było przy tym nagimnastykować. Tydzień grzebania w zgniłych mirabelkach zamiast rozwiązywania faktycznych problemów.
Albo gdy przez wiele dni walczyłem nad jakimś banałem w Angularze, który podstępnie, po pierwszym zauroczeniu, z krzywym uśmiechem zaczął mi wbijać zatrute szpile. Piekielne nasienie.
Albo gdy ledwo widząc na oczy siedziałem do 3 rano szukając błędu w skrypcie basha, który działał odpalony z konsoli, ale nie działał jako alias Gita. FFFUUUUUU!
Albo gdy godzinami debuggowałem Autofac, bo tworzył mi… dwa singletony. WTF?!
Albo gdy przez spory okres czasu moja praca polegała na wbijaniu się na kolejne serwery przez VPNy i RDPy i monitorowaniu kolejek RabbitMQ i MSMQ w poszukiwaniu zaginionej wiadomości. Gdzie jesteś dziadu?
Albo… gdy ciśnienie skakało mi w setkach takich scenariuszy. O skazanych na niepowodzenia potyczkach z CSS nawet nie wspominam.

A co najdziwniejsze: podobało mi się to! Ja to lubiłem, to była nieodłączna część mojej pracy i mojego…hobby! To uczucie, gdy po nierównej walce zmuszałem machinę do posłuszeństwa. Gdy nakładałem milionom bitów chomąto, z satysfakcją szepcząc “żryj piach”.

Co się zmieniło? To, że przez kilka tygodni miałem od tego odpoczynek. Aktualnie “praca” (czy niepraca?) – czyli wszystkie zajęcia przy komputerze – zajmują mi od 2 do 5 godzin dziennie. W tym czasie da się zrobić po prostu MEGA MASĘ rzeczy. A oprócz tego mogę poczytać książki, wybrać się na basen, czasem nawet śmignąć do kina, strzelić drzemkę, ujędrnić dupkę na orbitreku czy obiadek czasem ugotować swoim kobietkom, zanim do domu wrócą… Wszystko to między 9 a 15. A do tego robię WSZYSTKO, co sobie zaplanowałem. Po prostu: prawie nie zdarzają się nieprzewidziane sytuacje (oprócz zepsutego komputera). Siadam -> robię -> odpoczywam. Nie ma miejsca na wściekłość. Nie ma wymówki “sorry, zajmie to dłużej, niż się spodziewałem, bo…”. Mam kontrolę.

A co, gdyby programowanie wyglądało w ten sposób? Siadam -> koduję -> odpoczywam? Zrobione, odhaczone, lecimy dalej! Ale nie, jak spoglądam wstecz to… prawie nigdy to tak nie wygląda. Prawie zawsze coś się spieprzy. Prawie zawsze coś wyskoczy. A to bug w bibliotece. A to skopane narzędzie. A to myląca treść błędu. A to…

Jak to możliwe, że w XXI wieku tak wygląda praca programisty?

Czy to ze mną coś nie tak… i się czepiam?

BTW, z MailChimp się tego dnia nie połączyłem. Tak mnie to zdenerwowało, że musiałem zakończyć kontakt z komputerem.
Nazajutrz zainstalowałem nUnit i zrobiłem co było do zrobienia. Tylko że już nie było oczekiwania i ekscytacji. Było “kur…, muszę się babrać w tej kace, ale co zrobisz”.

No i napisałem tego posta.

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.

38 Comments

  1. Odpowiadając na Twoje pytanie: “Czy to ze mną coś nie tak… i się czepiam?”- chyba wszystko ok, spostrzeżenia są trafne. Mam dokładnie to samo, nie wiem czy to wypalenie zawodowe, zmęczenie, znużenie czy po prostu starzenie się. Kiedyś takie siedzenie, grzebanie, szukanie było ciekawe, dziś mnie denerwuje, frustruje i wpędza w dołka. Inna sprawa, że kiedyś człowiek miał więcej czasu, a dziś jest rodzina, dzieci, liczne obowiązki i coraz mniej czasu na chwilę odpoczynku, więc siedzenie godzinami nad rozwiązaniem mniej lub bardziej trywialnych błędów jest dla mnie stratą czasu, chcę zrobić to, co mam zrobić i mieć czas na inne rzeczy. Dawniej nie przeszkadzało mi, kiedy szacowałem, że zakodowanie czegoś zajmie mi 10 godzin, a zajmowało 40, bo pojawiły się problemy z IDE, biblioteką, skryptami itd. itp. Dziś mnie to denerwuje i powiem szczerze, że to w programowaniu coraz mniej mi się podoba- człowiek nie może skupić się na swojej robocie, bo ciągle coś wokół niej szwankuje. To mniej więcej tak jakby stolarz miał zrobić szafę- niby zajmie mu to chwilę, ale robi się z tego wieczność, bo ciągle coś nawala- popsuje mu się piła, połamie jakieś narzędzie, wyrzynarka nie działa tak jak powinna, bo ma złą wersję softu, klej do bani, krzywe wkręty… To wkurza;)

    • MIGUEL,
      Wiesz co, to chyba naprawdę starość :) jakkolwiek ładnie byśmy tego nie nazwali inaczej, jak “dojrzałość” czy “doświadczenie”.

  2. Mi ten wpis przypomniał cudowne zabawę z tworzeniem appki na IPhona w XCODE przy pomocy bibliotek od innych twórców.

    Po wyciekach pamieć od samej biblioteki jak przyjazności GUI IDE XCODE zacząłem kwestionować wszystkie narzędzia związane z tworzeniem aplikacji na telefony IPhone.
    Prawie straciłem wszystkie zmysły bo tak przecież nie może wyglądać tworzenie oprogramowania.

    • Nie tylko zewnętrzne biblioteki sprawiają kłopoty, również API iOS-a jest wyjątkowo zabugowane.

      Przykładowo masz komponent UITextView w którym chcesz wyświetlić linki. Linki te muszą być klikalne. Ok, jest flaga po której ustawieniu komponent detektuje w tekście linki istają się one klikalne. Fajnie.

      Ale jak się okazuje, zmiana zawartości kontrolki nie powoduje uaktualnienia linków. Trzeba zrobić jakiś hak wygrzebany na stackoverflow. Ale nadal jest problem, bo w trybie Voice Over (czytnik ekranowy) po zmianie contentu ten odczytuje poprzednie, już niewidoczne linki !@#$%!#

      Myślisz sobie, ok jest błąd to może użyję UIWebView. Dupa. W tym momencie w trybie VoiceOver nie mogę zmusić go by podczas nawigacji zachowywał się jak komponent UITextView. Tzn. Zamiast przechodzić po całych kontrolkach, VoiceOver wchodzi do UIWebView i przełazi po akapitach. A miało być tak prosto.

      Inny fuckup, Jeżeli ktoś używa czytnika ekranowego, to tenże nieradzi sobie z nazwami pisanymi wielkimi literami np. NARZĘDZIA odczytuje jako narzdzia.
      Takie napisy są wymuszane w nagłówkach ekranu ustawień. Jak chcesz, żeby ekran ustawień był spójny z resztą systemu, to się nie da. I weź ty tu napisz profesjonalną aplikację.

      • Ja z kolegą MACIEJ tak się zgadzam, że bym postawił jakieś piwo na konferencji jak będzie okazja.
        Lepiej bym same tego nie napisał.

        Android nie jest taki zły w porównaniu z API IOS.

  3. A propos instalacji xUnit -> to jest błąd w najnowszej wersji. Rozwiązania są 2 – instalujesz starszą wersję xUnit lub aktualizujesz nugeta. Po aktualizacji nugeta zainstalujesz najnowszy xUnit bezproblemowo :)

    • no nie :) musisz miec pewnie najnowszego nugeta z najnowszym VS. bo VS 2013 z najnowszym nugetem nie dziala. takze, prawda u mnie 2.0.0 dziala ale chyba u % tez nie smigalo :)

      pisalem do ludzi z xunit i dupa, od 5 miesiecy mam z tym problem i to jest troche zenua

      • Ja mam vs2013 ultimate i nuget najnowszy i mi nie dziala :) dla pewnosci, ostatnia ver dla vs2013 to 2.8.7 z dnia July 27th 2015. Wersja 3.x nie dziala z vs2013.

      • Choc mozliwe ze mam vs zwalony. Co prawda na rootsuffix nowym tez mi nie smiga.

        Albo znow :) special case :) wiec nie mowie ze nie ma rawa dzialac :) stwierdzam tylko fakt z mojego komputera :) jak Ci dziala to super :)

      • Tak czy siak, nie powinna miec miejsca taka sytuacja, ze chcesz dodac sobie xUnit, a tu dupa. ;)

      • No jasne :) ale teraz skoro wiem ze jest osoba ktprej to dziala to bede szukal rozwiazania bardziej doglebnie :) bo to troche jest… Wkurzajace ;)

    • JEDMAC,
      VS 2015. Próbowałem zainstalować poprzednią wersję xunit, bo znalazłem gdzieś taką poradę, ale był inny błąd.
      To na świeżutkim systemie! Dziwne, bo przed formatem działało, jak zresztą wspomniał Gutek.
      Widocznie jakaś dziwna kombinacja VS/nuget/xunit… Osiwieć można.

      • Procent, a próbowałeś zaktualizować NuGet i dopiero zainstalować xUnit?

      • JEDMAC,
        No właśnie o to chodzi że ja NIE CHCĘ próbować nie wiadomo czego. Nie działa: wyłączam. To świeżutki komp, wszystko na nowo zainstalowane. Chore jest, żebym w takiej sytuacji musiał wnikać.

  4. Chyba źle na to patrzysz. Nasza praca to nie praca przy taśmie, gdzie składamy 300 razy dziennie to samo. Nasza praca to raczej czysta pasja artystów i rzemieślników. Każdy nawet najprostszy program jest czymś unikalnym i niepowtarzalnym. Nawet jak robimy tutoriale to każdy z nas kombinuje co by tu jeszcze zmienić/dodać/ulepszyć.

    I teraz do sedna “siadam -> robię -> odpoczywam” – wszystko się zgadza. Siadasz, robisz i odpoczywasz. “Robisz” to ten element w którym są emocje i dzięki temu powstaje prawdziwe dzieło. Czasem lepsze czasem gorsze, ale zawsze dzieło w pełni artystyczne. A sztuka potrzebuje emocji :)
    A dlaczego? Można sobie o tym poczytać np na Wikipedii: https://en.wikipedia.org/wiki/Art_and_emotion

    p.s. BTW O czym byśmy blogowali jak by się wszystko udawało za pierwszym podejściem?

    • PIOTR,
      Nie można powiedzieć że ktoś źle na coś patrzy bo każdy patrzy jak chce ;). Tak jak napisałem, kiedyś mnie to kręciło.
      A o czym byśmy blogowali… Jak widać, mi się blogowanie o takich rzeczach już znudziło, bo ile można.

  5. Ha, u nas w matematyce jest takie powiedzenie: “Jaki jest najpiękniejszy okres w życiu matematyka? Od ukończenia dowodu do znalezienia pierwszego błędu.” Coś mi się wydaje, że widzę pewną analogię. ;-)

  6. Mózg ma taką tendencję samoleczenia – po pewnym czasie wypiera złe wspomnienia, a najbardziej przebijają się te dobre. I dlatego pewnie myśląc o kodowaniu pamiętałeś tylko te super chwile, kiedy robisz coś zajebistego, wszystko fajnie działa i mozna lecieć na skrzydełkach do domu z poczuciem dobrze zrobionej roboty. ^^ Dla tych chwil chce nam się programować ale cóż, są też te niedobre momenty. Np. ja teraz pracuje nad niedużym serwerkiem do gry i jest fajowo, ale już drżę na myśl o tym, co będzie jak to wyjdzie live na ludzi i wszystko się spierdoli. :]

    • Parę lat temu jeden gość mi mówił, że po 2-letniej przerwie postanowił dorobić drugi stopień po studiach “bo czemu nie” i myślał, że będzie fajnie. Przyznał, że dopiero w trakcie tego “magistra” przypomniał sobie całe szambo w związku z “inżynierem”, a wcześniej pamiętał właśnie tylko dobre rzeczy. Najpierw poczuł taki “challenge” a potem czar szybko prysł.

  7. Hehe dobre dobre :) Miałem to samo wczoraj tylko od wujka Googla. Chciałem sobie usiądź i pobawić się PostSharpem i zobaczyć jak działa GCM od Googla… Coś tam miesiąc temu sprawdzałem na konsoli developerskiej Googla, ustawiałem sobie serwisy, kody itp… Siadłem po miesiącu by móc przetestować tą usługę a tutaj INFO: “NIE UDAŁO SIĘ WNIEŚĆ OPŁATY REJESTRACYJNEJ Aby móc korzystać z konta, musisz wnieść opłatę rejestracyjną”… I na tym się skończyło moje programowanie … trzeba uiścić opłatę :D błahostki irytują i zniechęcają to fakt :D

  8. tomaszk-poz on

    “Czy to ze mną coś nie tak… i się czepiam?”
    Starzejesz się w sensie nie chcesz tracić czasu na pierdoły. Po czasie użerania się technologia powszechnieje i nie chce tracić swój cenny czas na niedoróbki producenta.
    Mam to samo – dosłownie *urwica mnie bierze jak znienacka zdycha podświetlenie w Razor albo okazuje sie, ze jakas metoda od array w js nie działa w Chrome a w Firefox tak.
    Nad prosta sprawa siedziałem dwa dni, bo ze zmeczenia robilem tez głupie bledy. Chcialem formatke www zrobić nowocześnie, na js, jquery etc, sprzężeniem wizualnym co można wybrać z listy. a teraz widze, ze wystaczylo zrobić po staremu przez ajax + aktualizacja DOM odpowiedzią partial z kontrolera.
    Przeciez i tak to będzie dzialac tylko na desktopach i w LAN, wiec o co chodzi. Nie, uparłem sie na “lepszejsze” jak głupi osioł.
    Wkurza mnie podejście Microsoft – cos zrobia ale tak nie do końca – w @Html.EnumSelectFor ściąganie przyjaznych nazw działa, ale dla Enum [flag] już nie (przynajmniej u nie). Porada z StackOverflow – dopisać kilometry kodu, kurde na niedoróbki MS – dopisać, dopisać dopisać.
    Zastanawiam się, czy nie olać świadomie nowe rzeczy – zamiast być królikiem doświadczalnym zrobić klasycznie, niby więcej pisania ale z szybszym efektem.

    W JAVA jest lepiej czy gorzej?

    Może rozwiązaniem jest scisla specjalizacja a nie full-stack, bo widze, ze pieprza mi sie jezyki. Kiedy było prościej moim zdaniem – był Borland i luz.

    • TOMASZK,
      Ja wymyśliłem że po prostu potrzebuję dłuższej przerwy, do momentu gdy zatęsknię nawet za takimi rzeczami. Ciekawe kiedy to nastąpi.

    • IMO w Java jest podobnie. Właśnie chyba za to się kocha te wszystkie rozwiązania open-sourcowe, bo można przy nich trochę pomajstrować :P

  9. Jak się dłubało za młodości, kiedy człowiek zmagał się ze szkołą, to dłubanie było ciekawe. Im mniej czasu człowiek na to ma z własnej ochoty to tym bardziej chciałby efekty, a nie babranie się. A zwłaszcza kiedy ktoś od nas tych efektów oczekuje. Innymi słowy chodzi o to, żeby króliczek był złapany! I tu wchodzimy w dedlajny. Dedlajny i tworzenie oprogramowania to jak kosa na kamieniu, tylko że codziennie. Frustrację z powodu mijania się z wypełnionymi oczekiwaniami uważam za zupełnie normalną. I niestety bardzo niezdrową.

    Macieju, stworzyłeś konkurs, który w sumie niekoniecznie promuje złapanie króliczka tylko jego gonienie. I w sumie może to jest nawet uzdrawiające :)

    Natomiast z moich większych faili ostatnio było zainwestowanie czasu w nightmarejs. Oczywiście strona domowa zachęca, niby mają dobre pokrycie testami, niby dużo ludzi w organizacji w repo na githubie, niby używają nowinki (generatory z ES6)… a okazuje się, że nikt listenerów nie odpina i przez to przy trochę większej ilości całość wysypuje się. Prosty case testu akceptacyjnego: wejdź na stronę, dodaj randomowy produkt, zarejestruj się, kup to i zapłać za to. Do połowy ledwo dojdzie i crash. Najlepsze było to, że przepisałem testy z CasperJS, który nie wspierał wtedy SSL przez PhantomJS, także fail razy 2. nightmarejs wyrzuciłem a potem – Codeception – o wiele lepsze nie jest, ale w moim przypadku działa.

    • Konkurs mógłby wyleczyć z czegoś takiego chyba… Bo robimy dla siebie, bez terminów, a problemy to materiał na posty :).
      Z JS to współczuję, mnie angular ugryzł i być może to moja wina, ale z drugiej strony jakiś sadysta to wymyślał. A geniusz sprzedał.

  10. ‘A co, gdyby programowanie wyglądało w ten sposób? Siadam -> koduję -> odpoczywam? Zrobione, odhaczone, lecimy dalej! Ale nie, jak spoglądam wstecz to… prawie nigdy to tak nie wygląda. Prawie zawsze coś się spieprzy. Prawie zawsze coś wyskoczy. A to bug w bibliotece. A to skopane narzędzie. A to myląca treść błędu. A to…

    Jak to możliwe, że w XXI wieku tak wygląda praca programisty?’

    Tak było też u mnie póki siedziałem w światku .NET. Gdy zmieniłem platformę moje życie uległo znacznej poprawie :) Zdecydowanie mniej wkurwów na tydzień

      • node.js w większości jeśli chodzi o rzeczy serwerowe. Po stronie klienta Angular 1.5. Tylko i wyłącznie SPA.

        Tylko stabilne wersje bibliotek i żadnych zabaw z betami. (Miałem wątpliwą przyjemność bawić się z Angularem 2, ale z racji iż to beta ze słabą dokumentacją, to i poziom wkurwów był zbyt wysoki ;) )

      • A ok no to anżular na mnie też najlepiej nie działa. Z node jeszcze nie miałem przyjemności, tylko słyszałem narzekania na odpowiednik “dll hell” w npm :).
        Cóż, każdy niesie swój krzyż.

      • tomaszk-poz on

        Jak możesz wybrać platformę to ok. Ale nie każdy może w obecnej pracy. U mnie nodejs podpadl ostro jak mi on razem z gulpem i sassem przestal wspoldzialac i chciał cos kompilować w c++. Kompilacja nie powiodła sie, wyczyscilem, zaktualizowałem i zadzialalo a nagle pięknego dnia przestalo – to ja podziekowalem – po co budowac stan przedzawałowy?

  11. Pingback: Kamera, akcja: Zapraszam na mój kanał na YouTube! | devstyle | Maciej Aniserowicz