Powiedz mi wreszcie o co Ci chodzi – feedback u programisty, analiza przypadku

Feedback, czyli mówiąc najprościej informacja zwrotna. Coś robimy, mówimy, organizujemy, wygłaszamy i ktoś to ocenia. Na tej podstawie następna wersja, następne zachowanie jest lepsze, ponieważ poparte jakąś oceną z zewnątrz. Proste, prawda? Żeby to było takie proste 🙂

Swego czasu brałem udział w wydarzeniu Devoxx4kids, jako organizator i prelegent. Opowiadałem tam o AppInventorze, czyli sposobie na budowę aplikacje mobilnych z klocków, bardzo podobnych do tych w scratchu. Miałem akurat zajęcia dla dziesięciolatków i wiecie co jeden z nich powiedział mi na koniec? „Poprzednie zajęcia były ciekawsze”. Proste, prawda? W żadnym razie nie mogę uznać tego za hejt, bo chłopak nie chciał powiedzieć mi niczego złego, po prostu, powiedział to co myśli. Dało mi to trochę do myślenia i chyba faktycznie, w wieku 10 lat AppInventor może być trochę za trudny, zwłaszcza, że zdążyłem zrobić tylko podstawowe elementy 😉 Ale nie wnioski z opinii są tutaj ważne, tylko sama opinia. Czysta, bez zbędnego kolorowania. Mówi się, że dzieci są najbardziej szczere, mówią co widzą i co czują, ale w którym momencie ta umiejętność z nas ulatuje? Dawania czystego feedbacku, bez swoich emocji, po prostu informacja o tym jak jest? Zwłaszcza, że emocje mogą być różne, w związku z tym ocena naszego działania również może mieć różny wydźwięk.

Pochwały, czyli nasze ulubione. Ktoś mówi, że robimy coś dobrze, to i nam jest lepiej. Najważniejsze to nie zapomnieć, że należy się rozwijać, a nie rozleniwiać, pod wpływem tej całej słodyczy 😉

Zdarza się feedback absolutnie przeładowany złymi emocjami. Czasem nie da się nawet nic sensownego z niego wyciągnąć, można go nazwać po prostu hejtem. Jeśli jest to hejt pod naszymi wpisami, to najlepszym sposobem jest usunięcie go. Bez tracenia czasu na wciąganie się w emocjonalne dyskusje. Zwłaszcza, jeśli przyłączają się do tego nasi inni czytelnicy, to tracimy również ich czas. Gorzej, jeśli nie mamy możliwości usunięcia go, wtedy jeśli już zdecydujemy wdawać się w polemikę, zamiast po prostu ignorować, należy pamiętać, że nie trzeba niczego udowadniać. To hejter ma problem, nie Ty. Nie należy też dać się ponieść emocjom. Przychodzą mi w tym momencie do głowy dwa cytaty: „Hejt to VAT od sukcesu” Marii Peszek, oraz „Rób wszystko najlepiej jak potrafisz, a potem rozłóż parasol i pozwól się opluwać.” – autor podobno nieznany. Poznałem też kilka osób, które bardzo dużo hejtują w sieci, a na żywo – zupełnie inni ludzie. Jak mawia klasyk: „Dobry mąż, ojciec i sąsiad, kto by się spodziewał, że w domu takie rzeczy”.

ktos-nie-ma-racji-gif

source: https://xkcd.com/386/

Najlepszy jednak jest feedback inteligentny. W moim wyobrażeniu staramy się na początku napisać coś dobrego, potem dodajemy łącznik „i” (nie „ale”, bo on nastawia nas tak, jakby wszystko przed było kłamstwem), a potem informujemy co mogło by być lepiej. Jestem sobie w stanie też wyobrazić specyficzną sytuację, kiedy nie jesteśmy w stanie nic dobrego napisać. Wtedy najlepiej zacząć prosto z mostu, np: „Nie zgadzam się absolutnie z tym co napisałeś, ponieważ .. moje doświadczenia, doświadczenia znajomych są zupełnie odwrotne .. to wyrażenie działa zupełnie inaczej niż opisujesz ..” – tego typu zwroty. W ten sposób nie atakujemy osoby, tylko informujemy, że nasze poglądy są inne. Czasem w naszej ocenie wszystko jest ok, warto też o tym napisać, ale najlepsze komentarze to te mówiące o tym, co można zrobić lepiej.

Napisałem o tym jaki feedback może do nas trafić, więc nie łatwo się domyślić, że takie same zasady panują przy dawaniu go. Skupiamy się na pracy, nie autorze, staramy się opisać co jest ok i to co nie do końca nam się podoba. Nie ubierajmy informacji w emocje, po co? Autor ma swoje zdanie, my mamy swoje. Nie wszyscy noszą ten sam rozmiar, prawda? 😉 Zwłaszcza, że pomimo szczerych chęci, błąd może być po naszej stronie. Podobnie sytuacja ma się wśród współpracowników: tester, który kpi z programisty podczas zgłaszania błędu raczej nie przyczyni się do owocnej współpracy. Podobnie programista, który obraża się za zgłoszenie błędu.

A co robić z feedbackiem? Pewne jest jedno, należy go rozważyć. Osoba która go pisze wcale nie musi być mądrzejsza w danym temacie od nas, ale.. może. Systemy komentarzy to aktualnie małe portale społecznościowe, zawsze można odpowiedzieć, dopytać, podziękować za radę. Podobnie sytuacja ma się w pracy, dopytać naprawdę nie boli, a poprawka w miejscu innym niż ktoś miał na myśli, bo nie dopytaliśmy, to strata konkretnych pieniędzy.

Ale wracając do pytania zadanego wcześniej, co się stało, że nie umiemy dawać feedbacku jak dzieci? W którym momencie ta umiejętność przekazania tego co myślimy wprost bez zbędnych emocji z nas ulatuje? Innymi słowy które – „nie wolno tak mówić” w końcu zaczyna działać? 😉 Po jakimś czasie dojrzewamy, stajemy się wyczuleni na krytykę (dojrzewanie, akceptacja przez środowisko, te sprawy), wolimy nie mówić co myślimy. Noo i IT to przecież w większości introwertycy, osoby które wolą pracować samotnie, z maszynami, zamiast z ludźmi. Wiem, że ostatnim zdaniem sporo uprościłem, ale chodzi mi o pokazanie tego, że sytuacja jest ciężka. Na szczęście, można to ćwiczyć. Umiejętność dawanie feedbacku to umiejętność, jak każda inna. Słyszałem o praktykach, że jeśli coś ci się podoba w pracy programisty, to idź, zanieś mu słodkiego cukierka, jeśli nie, to kwaśnego.. Litości, nie traktujmy siebie jak?.. Małpki? Gorzej? Które nie potrafią znieść krytyki, czy pochwały wprost 😉 Uczmy się rozmawiać, albo chociaż opisywać o co nam chodzi.. Trochę praktyki? Przeczytaj coś, oceń co o tym myślisz, zapisz sobie tą ocenę, zanalizuj pod kątem, czy nie krzywdzi nikogo i opublikuj 😉 Przeczytałeś następny materiał, zrób to samo. Proste, prawda? Z programistami w firmie też da się w ten sposób, gwarantuję 😉 W firmach zdarzają się takie rzeczy jak „code review”, czyli ludzie się spotykają i nawzajem oceniają swoją pracę, konkretnie swój kod. Warto być tutaj otwartym, żeby nie doprowadzić do sytuacji: „on mi pokazał w tamtym tygodniu, to ja mu teraz wytknę – nazwy zmiennych”.

A kiedy warto zostawić po sobie opinie? Cóż, częściej lepiej niż rzadziej 😉 Naturalnym odruchem jest wyrzucenie swojego żalu wtedy kiedy nie zgadzamy się z artykułem, ale jeśli się zgadzamy, również warto to zaznaczyć. Nie twierdzę, że każdy napotkany artykuł w internecie nie przetrwa bez wyrażenia przez nas opinii 😉 Ale warto zwłaszcza wtedy, kiedy uznajemy go za naprawdę wartościowy 😉

Informacja zwrotna niesie ze sobą naprawdę wielką siłę, mnie do napisania tego artykułu i przyjrzeniu się zjawisku zainspirowały komentarze pod postem o tym jak dzisiaj szukał bym pierwszej pracy, nie tylko te tutaj, ale również na facebooku. Bardzo mnie ucieszyło, że jestem w stanie pomóc chociaż kilku osobom. Mam też w głowie kilka pomysłów na artykuły o podobnej tematyce, pewnie nigdy bym się nimi nie zajął, gdyby nie komentarze 😉 Reasumując, umiejętność przekazania swojej oceny jest naprawdę ważna i dobrze ją ćwiczyć, bądź co bądź lepiej usłyszeć wprost o tym co się komuś nie podoba, jak dostać kwaśnego cukierka 😉

Pozdrawiam!

Jak dzisiaj szukałbym pierwszej pracy – poradnik od poziomu „chcę w programowanie”

Dołączyłem ostatnio do grupy JavaDevMatt na facebooku która skupia głównie osoby początkujące, szukające pierwszej pracy, junior developerów. Udzieliłem się w jednym wątku dotyczącym poszukiwań i.. dostałem masę zapytań w PW. Po namyślę stwierdziłem, że klepnę posta na ten temat, ponieważ mając wiedzę którą posiadam obecnie, moje poszukiwania pracy wyglądały by zupełnie inaczej. Ja akurat szukałem jako junior Java developer, ale myślę, że po za technologiami które wymienię porady są interdyscyplinarne. Ale po kolei.

Jak szukałem pierwszej pracy?

Cóż, moja historia jest taka, że skupiłem się głównie na poznaniu javy jako języka. Nie zagłębiałem się w żadne frameworki, po prostu robiłem proste programiki nie zastanawiając, czy może w pracy przyda mi się coś jeszcze. Dodatkowo starałem się zrobić coś, co by mnie wyróżniło. Wtedy był to kurs programowania dla początkujących, który aktualnie jest dostępny tutaj. Mam też na koncie studia informatyczne, ale każdy sam musi zdecydować, czy są potrzebne 🙂 Przeczytałem mnóstwo opinii zarówno za, jak i przeciw i to nie jest tematem tego wpisu. Faktem jest, że aktualnie nie spotkałem się z pracodawcą, który by ich wymagał. Ale nigdy nie wiadomo, czasy mogą się zmienić, część pracodawców może mieć to w wymaganiach również dzisiaj. Dodatkowo, pierwszą pracę zdobyłem pisząc na Facebooku, że szukam 😉

Jak szukał bym pracy dzisiaj?

Z racji tego, że moje porady brzmią jak przepis podaję je w punktach, po wykonaniu których dostaję się pracę 🙂 Nie jest to oczywiście wiedza objawiona, tylko moje zdanie poparte doświadczeniem, nie mniej dam sobie obciąć klawiaturę, że postępowanie zgodnie z tą procedurą poprowadzi w dobrym kierunku 😉 Skupiam się tutaj na scenariuszu, w którym coś już robisz i w ciągu dnia masz 2-3 godzinki na ekstra naukę. Jeśli studiujesz, Twoja sytuacja jest jeszcze lepsza, bo masz więcej czasu 🙂

  1. Po pierwsze – język angielski. Prawie każda firma go wymaga, jeśli idzie Ci słabo, to ćwicz równocześnie z wykonywaniem następnych punktów. Od początku pisz kod po angielsku, staraj się czytać angielskie artykuły, rozwijaj też czynne umiejętności, rozmowa to podstawa w tej branży 😉
  2. Wszyscy mówią, zajmuj się tym co Cię interesuje 😉 Ale prawda jest taka, że na początku po prostu tego nie wiesz. Metaforycznie wchodzisz w świat kartonów o różnych kształtach i kolorach, ale nie wiesz co jest w środku. Bo skąd, to są po prostu nazwy: Node.js, Java, R#. Są różne zestawienia które pomagają zdecydować, jaki język wybrać na podstawie tego, którą częścią technologii chcemy się zająć. Np takie:
    which-programming-language-should-i-learn-first-infographic

    po kliknięciu naciśnij PPM i otwórz grafikę w nowej karcie, żeby zobaczyć pełną rozdzielczość

    Po za tym można wybrać kilka które nas interesuje i poczytać co się w nich tworzy. Ale nawet jeśli wybierzemy i nam się nie spodoba, to zawsze można to zmienić. I tak zyskujemy doświadczenie, ponieważ wchodząc w nowy język, coś już rozumiemy i nie trzeba np tłumaczyć nam koncepcji zmiennej, pętli, instrukcji warunkowej, obiektu 😉 Dodatkowo język jest środkiem do tworzenia aplikacji, a nie celem. Chociaż na początku łatwo o tym zapominamy. Zresztą do tej pory walki na polu Java czy .Net przez znawców tylko jednej z tych technologii to chleb powszedni 🙂 Ale nie zawracajmy sobie teraz tym głowy.

  3. W międzyczasie wybieraj się na jakieś konferencję o danej technologii, jeśli mieszkasz w dużym mieście na pewno jest jakaś w okolicy. Jeśli w małym, to może chociaż online. Poznaj trochę środowisko, może prelegenci przekonają Cię do aplikowania do którejś z firm. Jeśli byłeś już na kilku i jakaś firma bardzo Ci się podoba, to pogadaj z kimś, może być z hr-u. Powiedz, że się uczysz i na co masz zwrócić uwagę, bo za kilka miesięcy chcesz zacząć u nich pracę. Weź adres i napisz maila, dokładnie wypytując o technologię. Efekt murowany, jeśli po kilku miesiącach napiszesz następnego – jestem gotowy, chcę aplikować. Na sam start dostajesz mnóstwo punktów 🙂
  4. Ogarnij podstawy wybranego przez siebie języka. No dobra, ale gdzie kończą się podstawy? Pomyślmy – zmierzyć to możemy np poziomem projektu który potrafimy napisać, albo powiedzmy czasem który poświęcimy. Ta druga miara podoba mi się bardziej. Dlaczego? Nie chcę proponować konkretnych projektów które miały by coś mierzyć, w tym miejscu w przypadku javy Mateusz podał przykładowy, który świadczy, że coś umiesz. Ale w innych technologiach złożoność może być inna. Moja propozycja? 300 godzin z danym językiem na początek korzystając z kursów praktycznych, w których uczymy się i tworzymy od razu jakieś małe rzeczy, następnie może jakaś bardziej szczegółowa książka, coś w stylu kompendium, byle nie zbyt toporna, żeby nie stracić zapału (cały czas ćwiczymy kod, robimy przykłady, wiedza na sucho wchłania się gorzej). Jeśli przyjdzie nam do głowy jakiś projekt na max kilka dni, również go zróbmy.
  5. Bierzemy ogłoszenia o prace na stanowisko które nas interesuje i patrzymy co tam jest po za wybraną przez nas technologią przewodnią 🙂 Oczywiście ogłoszenia rzadko piszą programiści, dlatego może być tam kilka byków, lepiej przejrzeć więcej ogłoszeń i wybrać najpopularniejsze technologie, albo dopytać na forum. Może ucząc się trafiliśmy na to, w którym kierunku dalej się rozwijać? Jeśli nie, to najlepsza droga, przejrzałem kilka przykładowych ofert i wyszły mi takie technologie:
    • Spring
    • Maven
    • jUnit
    • SQL
  6. Jak nie trudno się domyślić warto poświęcić kilkanaście lub kilkadziesiąt dni na naukę każdej z nich. Różne znajdziemy i mają różne poziomy złożoności.
  7. Coś już umiemy, dobrym pomysłem jest w tym momencie poznanie jakiegoś systemu kontroli wersji. Tutaj standardem jest raczej GIT, chociaż zdarza się, że jest inaczej. Ponadto dobrze byłoby podnieś swój ogólny warsztat, dowiedzieć się, czym są code-smells, kiedy komentarze mają znaczenie, w tym miejscu mogę polecić konkretną propozycje: „Czysty kod..” autorstwa Uncle Boba. Dodatkowo utworzenie kont na portalach typu LinkedIn, czy Twitter, Github nie zaszkodzi. Coś już wiemy, czyli możemy komentować, albo udostępniać rzeczy które uważamy za wartościowe.
  8. Przez ostatnie około 150-200 godzin 'średnio duży’ projekt. Staramy się korzystać z kontroli wersji, dobrych praktyk itd.. Dodatkowo publikowanie go na GitHubie jest dobrym pomysłem. Dzięki temu w trakcie rekrutacji można powiedzieć, że mamy coś, co możemy pokazać.. Jeśli nie zdążymy go skończyć to trudno. Z pierwszym projektem tak będzie, możemy chcieć zaczynać pisać go od początku, to normalne, cały czas się uczymy 😉
  9. Nie jest to punktem koniecznym, ale wyjdźmy po za schematy. Zróbmy coś nowego, co sprawi, że od początku spojrzą na nas inaczej. Nie wiem, np włączyłem się w projekt open source, moja praca polegała na.. Albo wysyłając CV dorzućmy krótki filmik, pochwalmy się blogiem w którym opisujemy jak się uczyliśmy, co sprawiało nam problemy i jak je rozwiązywaliśmy. Inwencja twórcza jak najbardziej dopuszczalna.
  10. Zróbmy dobre cv, nie chcę się tutaj rozpisywać nad szczegółami, ale bez koloryzowania, czytelne, ładne, opiszmy projekty. Można to cv podesłać komuś do wglądu, albo poszukać materiałów jak robić dobre jako początkujący programista. Jest tego sporo w sieci. Trzeba też sobie odpowiedzieć na jedno bardzo ważne pytanie, które padnie na pewno. Ile chcemy zarabiać? W mojej ocenie w momencie w którym to piszę, czyli ostatni kwartał roku 2016 stawka 2200-2800 netto dla junior java developera bez doświadczenia we Wrocławiu jest normalną stawką 😉 To wszystko oczywiście zależy od firmy, technologii, etc.. Można się rozejrzeć za porównywarką zarobków na danym środowisku, albo podpytać kolegów.

A co jest najważniejsze?

Minął rok, może trochę mniej, może trochę więcej, może nawet dwa w zależności od tego ile mieliśmy czasu. Punkty z listy odhaczone, umiemy to. Pora rozejrzeć się za dobrą pracą. Najlepiej uderzać do firm, które już sobie upatrzyliśmy, albo które ktoś nam polecił, albo które pojawiają się na rynku i wyglądają dobrze. Dostosuj CV pod konkretne oferty, wysyłaj i chodź na rozmowy 😉 Spokojnie, mi też kilka pierwszych prób się nie udało i nie dostałem pracy. Spytaj co było słabe, popraw i próbuj dalej. Tutaj znajduje się bardzo dobry film odnośnie rozmowy rekrutacyjnej, kilka pomysłów i kilka błędów które można popełnić. Warto też w sieci poszukać przykładowych pytań, czy porad, jak dobrze wypaść na rozmowie. Bo wiesz co, może zabrzmi to banalnie, ale najważniejszym elementem jesteś Ty. Twoje podejście, w internecie można spotkać wiele opinii, że programiści uważają się za primadonny, które tylko wybrzydzają i narzekają. Ty pewnie myślisz, że nic jeszcze nie umiesz. Ale nie przejmuj się, programiści z dobrym 10 letnim stażem też tak myślą, wszystko spowodowane jest przez syndrom oszusta, o którym świetnie opowiadał Michał Gruca, ja też pewnie kiedyś jeszcze coś o nim napiszę 🙂 A tymczasem wyrzuciłem z siebie wszystko co miałem do powiedzenia na temat drogi jaka moim zdaniem jest najbardziej optymalna do zostania programistą. Możesz ją oczywiście zmodyfikować, dodać gdzieś inne elementy, takie jak np nauka wzorców projektowych, po za tym, to nie jedyna ścieżka, świetnie swoją historię opowiedział też Damian Knak. Twoja kolej, powiedz w komentarzu co o tym myślisz, i czy chcesz podążać tą drogą, czy może masz jakąś inną historię do opowiedzenia. Jeśli jesteś na początku, to również napisz co o tym myślisz 😉 Tak więc drogi pre-juniorze, zakasuj rękawy i do dzieła 🙂

Pozdrawiam!

Odkrył sposób jak zrobić clickbait [8 punkt Cię zaskoczy] [ZOBACZ MEMY]

Klikasz a tu … nie ma punktu numer 8 🙂 Czyli dzisiaj chciałem napisać o tym, co wkurza mnie w clickbaitach. Na początek – czym są clickbaity. Są to linki które fałszywą informacją (tytułem) starają się zachęcić do kliknięcia w nie. Fałszywa informacja oznacza, że pod linkiem albo jest treść niezgodna z tytułem, albo coś zupełnie innego niż on sugeruje (po kliknięciu najczęściej widać szał przekierowań w pasku tytułu przeglądarki), albo jest materiał, który stara się wyłudzić od Ciebie pieniądze obiecując złote góry. Dzisiaj chciałem zrobić mały przekrój tego co można znaleźć w sieci. Po co? Trzeba uczyć swój mózg, jak unikać bezsensownej straty czasu.

„Nauczyciele go nienawidzą, odkrył sposób jak w 13 dni opanować język angielski.” Czujecie o co chodzi prawda? Najczęściej Skype mnie obrzuca takim…czymś. Po kliknięciu zostajecie przekierowani na stronę z ofertą, gdzie za jedyne 25 zł możecie nabyć super kurs pobudzający bezpośrednio komórki mózgowe, czy.. whatever. Słowem – cuda za grosze. Nie wiem jaka jest konwersja tego typu ofert (kliknięcia na faktyczną sprzedaż), ale dla mnie takie praktyki są co najmniej moralnie wątpliwe.

„Jesteś milionowym odwiedzającym, kliknij po darmowego iPhone’a…” Taa to jest chyba specjalność stronek z linkami. Chyba każdy z nas był chociaż raz milionowym odwiedzającym i miał szansę na darmowego Iphone’a. Po kliknięciu oczywiście przekierowanie na stronkę, gdzie darmowy sms i już zaraz się odzywamy i będziemy finalizować 🙂 Nie muszę chyba tłumaczyć, że ten darmowy sms uruchamia usługę premium i codziennie nabija nam rachunek. Od jakiegoś czasu jednak operatorzy mają ustawowy obowiązek blokować na życzenie użytkowników dostęp do usług premium sms. Ale trzeba samemu pamiętać, aby taką chęć wyrazić.

Czasami reklamodawcy grają sobie z użytkownikami w grę: „znajdź właściwy download”. Jeśli jesteś na stronie pierwszy raz, to musisz szukać maleńkiego napisu „ad”, albo zbadać sobie zawartość strony, który element gdzie prowadzi. Czasem innego sposobu nie ma..

Jednak dla mnie osobiście najgorszą rzeczą, przed którą nie da się bronić inaczej, jak tylko w ogóle ignorując całkowicie dany serwis jest tytuł, który po kliknięciu okazuje się zupełnie niezgodny z prawdą. Z przykrością muszę tutaj napisać o moim ulubionym kiedyś serwisie android.com.pl. Dlaczego? Tytuł: „Luka w zabezpieczeniach Qualcomma sprawia, że prawie miliard urządzeń jest zagrożonych„. Zawartość – w skrócie to użytkownik musi mieć zainstalowaną specjalną aplikację, przez którą można przejąć kontrolę nad urządzeniem. Nie jest to jednostkowy materiał, ale ciągle się takie pojawiają. „Nowa funkcja w Androidzie już dostępna”, a po wejściu w zawartość okazuje, że tylko dla użytkowników w USA. Dla mnie taki tytuł to zwykła ściema. Zresztą temat luk w zabezpieczeniach w Androidzie, pojawia się praktycznie co tydzień i to nie tylko na tamtym portalu.

YouTube podczas wrzucania filmów ma możliwość załadowania miniaturki dla niego. Tutaj z kolei pojawia się możliwość wstawienia miniaturki, która nie ma nic wspólnego z filmem. Najczęściej spotykane na wszelkiego rodzaju „russian compilation”. Dla mnie to również clickbait, klikając oczekujesz zobaczyć kadr, który jest na miniaturce. Najczęściej jest to „szczucie cycem”. Nie mówię tutaj, że wszystkie dorzucane miniaturki są złe, można to zrobić dobrze, że po rzucie okiem na miniaturkę od razu wiemy z czym mamy do czynienia. Np „Polimaty” robią to dobrze, widzisz Kotarskiego i zawsze wiesz czego się spodziewać 🙂 Przykład obrazują te zrzuty.

Na facebooku np zdarzają się posty w stylu „na zawsze w naszej pamięci, sprawdź czy nie było tam Twoich znajomych”, które przekierowują na różne strony typu – „wydarzenia lokalne” i wymagają zalogowania się przez facebook, żeby móc wrzucać na ścianę użytkownika kontent.. I tak w kółko. Głośny przykład tego typu to np „ferie odwołane”. Mały tip, zawsze sprawdzaj dokąd prowadzi tego typu informacja, na szarym tle jest link.

Albo np reklama na telefonie, która wibruje i krzyczy „masz 12 wirusów, jeśli za minutę nie pobierzesz oprogramowania Twój telefon się zepsuje.” I do tego te dramatyczne wibracje, odliczanie, od razu skojarzyły mi się ze starymi programami antywirusowymi, które wyły syreną z głośników, jak coś wykryły 🙂

Nie są to wszystkie kwiatki które można znaleźć w sieci, tylko wybrane przeze mnie przykłady. Cóż, wyobraźnia twórców tego typu rzeczy bywa czasem naprawdę wybujała 😉 Kolejny przykład to jeszcze pobieranie z różnego rodzaju serwisów hostujących instalki powoduje pobranie „akceleratorów”, które po za aplikacją instalują też niechciane oprogramowanie. Nie wiem czy to podpina się pod kategorię clickbait, ale wykorzystuje odruch użytkownika do klikania „dalej” podczas instalacji. Noo i nieświadomy człowiek zgadza się na wszystko. Cóż, moralnie wątpliwe. Więc co tak właściwie klikać można?

Reasumując, w sieci można stracić mnóstwo czasu, jeśli się nie uważa. Nie oznacza to też wcale, że wszędzie są clickbaity, tytuł, czy grafika powinien zachęcać do wejścia, ale nie powinien wzbudzać sensacji gdzie jej nie ma, ani wprost oszukiwać użytkownika. Dobry tytuł powinien nam powiedzieć czego spodziewać się po tekście bez kolorowania rzeczywistości. Dlatego najważniejszy jest tekst, jeśli będzie dobrej jakości, to z lepszym czy gorszym tytułem – ludzie i tak będą przekazywać go dalej. A autorzy po za klikami zyskają też dobre recenzje i wierniejszych czytelników, którzy będą chcieli jeszcze wrócić.

Pozdrawiam!

Delegować, czy procedować

Życie jest pełne wyborów.. Trzeba odmalować pokój – mamy wybór – zatrudnić specjalistę, czy zrobić to samemu. Zrobić grafikę do projektu – samemu, czy poszukać jakiegoś płatnego gotowca. Zrobić, czy zapłacić. Poświęcić kilka godzin, czy zająć się czymś innym. „Thank you captain obvious” chciało by się rzec po tym wstępie. Ale przyjrzyjmy się temu nieco głębiej.

Na początek rozważmy koszty obu podejść. Robiąc coś samemu naszym głównym kosztem jest czas. Czas, który w wielu przypadkach może być kilkukrotnie dłuższy, niż gdybyśmy zlecili to zadanie specjaliście. A także – o czym się zapomina, jakość. Choćbym spędził i sto godzin nad jakimś logiem, to nie mam gwarancji, że będzie tak samo dobre jak zamówione u profesjonalisty. Ale za to zyskuję coś ważnego – ono jest moje własne. Miałem nad nim pełną kontrolę i zrobiłem je dokładnie tak jak chciałem. Po prawdzie najczęściej okazuje się, że wyobrażenie było jakieś takie piękniejsze, ale to jest moje własne, prywatne logo. A co jeżeli zlecam pracę? Przede wszystkim, moim głównym kosztem są pieniądze. Czas czasem również, jeżeli jest to np ostatnia rzecz w projekcie na którą czekamy, ale to wynika ze złego planowania, jest  po za tematem. Ponadto praca może nie być na miarę, tzn naturalnie możemy kilkukrotnie prosić o wykonanie zlecenia, ale to dodatkowy czas i pieniądze. Ale może się okazać również w drugą stronę, że po dostaniu próbki produktu poczujemy – tak, to jest to, nie potrafiłem tego opisać wcześniej, ale dokładnie tego potrzebowałem. Idealne wyczucie. Jak widać większość rzeczy praktycznie sama wyklucza się z tego równania. Pozostają dwie najważniejsze: czas vs koszt.

Kiedy warto nabywać nowe umiejętności? Nad tym też warto dobrze się zastanowić. Kiedy będziemy korzystali z czegoś często, to czy chcemy za to płacić? A może robienie tego sprawi nam dodatkową frajdę, albo na chwilę oderwie nas od bieżących problemów, co również będzie miało dobroczynny wpływ. Może przyczyni się do poszerzenia perspektywy, że jednak ta grafika to nie jest taka prosta, co pozwoli nam wymagać konkretniejszych rzeczy przy zlecaniu zadania, ponieważ będziemy już znali jego specyfikę. Niestety bez względu na to, którą opcję wybierzemy jesteśmy ograniczeni. Nie mamy nieskończonej ilości czasu, oraz nieskończonych zasobów finansowych. Warto rozsądnie dobierać sobie umiejętności.

Świat mamy taki, że bardzo wiele rzeczy można oddelegować, z każdej dziedziny można zamówić sobie fachowca, a samemu rozwijać tylko umiejętności w wąskiej specjalizacji. Ale czy to naprawdę jest najlepsze wyjście? Czy są umiejętności, które mają niepodważalne znaczenie i należy je rozwijać bez względu na wszystko? Czy może wystarczą dwie: sprzedaż i własna specjalizacja? A może tylko umiejętność delegowania zadań i sprzedaż, co pozwoli bardzo wydajnie zarządzać ludźmi i być świetnym liderem?

A co jeżeli nie umiesz sprzedawać? Cóż, zgodnie ze starą rynkową zasadą – jest popyt, znajdzie się i podaż. Trafiłem ostatnio na bardzo ciekawy artykuł, w którym autor zastanawia się, czy programiści również potrzebują agentów? Zastanówmy się nad tym przez chwilę. Pojawia się tu problem jajka i kury, tzn – dobrą umowę z agentem również trzeba wynegocjować. Czyli to nie jest, tak, że „jestem agentem, oferuję każdemu takie same stawki, o spójrzcie sobie”. Ale uznajmy to na razie za kwestię drugorzędną. Agenci dbają o ścieżkę rozwoju programisty, ale to do niego należy zawsze ostateczna decyzja. Dla wielu osób w branży, zwłaszcza tych powiedzmy „stereotypowych”, to może być prawdziwa pomoc. Wreszcie będą mogli zająć się tym co kochają – kodzeniem, a sprzedażą ich umiejętności zajmą się fachowcy. Ale czy dla każdego to jest najlepsza opcja?

Wybiegnijmy w przyszłość. Osobiście nie znoszę kupować ciuchów. Ubierając się stosuję zasadę – „na wierzchu w szafie” – tzn biorę po prostu z góry. Nie zawsze, bo jednak nie chcę wyglądać niechlujnie, ale najczęściej właśnie tak jest. Nie przykładam zbyt wielkiej wagi do tego co mam na sobie. Czy w związku z tym powinienem zatrudnić jakiegoś stylistę, który dopasował by ubrania do mnie, tak, żebym nie musiał się już tym więcej martwić? Nie no, w tym momencie swojego życia uważam to za przesadę. Ale oto pojawiają się pomysły automatycznego dobierania stroju, na podstawie wcześniej kupowanych przedmiotów. I to jest właśnie coś, czemu zaufał bym bezgranicznie. Nawet na zasadzie takiej, że ustalam miesięczny limit, a algorytm odpowiednio dopasowuje i kupuje za mnie ubrania. Ja tylko odbieram paczki, tak aby mieć na bieżąco niezniszczone rzeczy. Bardzo mi będzie odpowiadało takie rozwiązanie, kiedy już się pojawi i będzie dostępne za darmo. Dlaczego za darmo? Niech sprzedawcy konkurują ceną z tym algorytmem i za niego płacą 😉

Podsumowanie od samego tytułu tego tekstu było znane, nie będzie niespodzianką, jest również świetną odpowiedzią w każdej sytuacji, tzn: „to zależy”. Zależy od wielu różnych czynników – osobistych preferencji i umiejętności, budżetu, ilości czasu, celu jaki chcemy osiągnąć. Warto jednak pamiętać o tym, żeby tą decyzję podejmować świadomie. Spóźnienie się z projektem dla klienta, ponieważ chcieliśmy sami zmontować maszynę, która będzie służyła nam za serwer to głupia sprawa. Podobnie zbyt niski dochód z projektu, ponieważ postanowiliśmy oddelegować zbyt dużo zadań, albo źle wybraliśmy zadania do oddelegowania. Może się okazać, że tego typu decyzje były najistotniejsze w całym projekcie. Dlatego też zakończę z angielska, bo to zawsze brzmi dobrze: „Think twice and do, or delegate”.

Pozdrawiam!

Google Now coraz lepsze, czyli żegnaj prywatności

Zerkałem dzisiaj na lewy ekran mojego Nexusa, żeby zobaczyć, czy Google Now wyłapał jakieś ciekawe artykuły z sieci. Zauważyłem tam nową informację:

Użyteczne? Jak najbardziej, faktycznie poszukiwałem tego przedmiotu. Tylko, że na komputerze, jakiś tydzień wcześniej. Przekazano całkiem sporo informacji, miedzy innymi o tym, czy to nie fake obniżka, tzn np najniższa cena w sklepie od tygodnia. Jestem zalogowany na to samo konto w wielu miejscach, dlatego nie jest to może dziwne, tylko czy tak trochę niepokojące? Bo jeśli tak dogłębnie się nad tym zastanowić, to Google wie wszystko o mojej działalności na komputerze, może po za tym, co robię w pracy, tam nie korzystam z prywatnego konta. Ale prywatnie, wie wszystko, wie jakiej muzyki słucham, bo korzystam z ich usług, jakie tematy lubię, jedna wielka big data. Znalazłem nawet na stronach Google spis lokalizacji gdzie się znajdowałem o której godzinie. Można by powiedzieć, żegnaj prywatności. Bo oczywiście, skoro te dane gdzieś są, to można je wykraść, skoro są na serwerach amerykańskich, to oczywiście amerykańskie służby wiedzą wszystko o wszystkich, etc. Google może je dowolnie czytać nasze maile. No dobra, nazywam się Michał Gellert, macie mnie. I co? I nic.. Bez problemu możecie dowiedzieć się o mnie więcej. Ale tak naprawdę, po co? Jesteśmy tłumem użytkowników, jeśli nie masz wroga, który z całych sił chce cię zniszczyć i jeśli nie popełnisz tak oczywistych idiotyzmów jak wrzucenie zdjęcia karty płatniczej do sieci, to tak naprawdę, można spać spokojnie. A co zyskujemy w zamian? Słyszałem kiedyś, że w planach Google jest podsyłanie nam gotowych ofert, kiedy będziemy czegoś szukać, poprzez nauczenie się tego co lubimy. Osobiście nienawidzę zakupów, słabo mi na samą myśl. Takie gotowe oferty, to coś co zaoszczędzi mnóstwo moich stresów. Nawet reklamy które nas interesują są lepsze od wiszącego dwa tygodnie na moim Skype najlepszego sposobu na haluksy (lekarze go nienawidzą). Zyskujemy mnóstwo tego typu rzeczy, które możnaby zamnkąć w dwóch słowach: czas i wygoda. Dla mnie to uczciwa wymiana.

Pozdrawiam!

Skróty klawiaturowe w IDE IntelliJ IDEA

Dobry programista nie używa myszki. Nie zliczę ile razy spotkałem się z tym stwierdzeniem, pisał o tym Robert C. Martin, często słychać to podczas prelekcji na temat stylu pracy programisty. Dlatego chciałem pokazać tutaj moją listę skrótów, których używam najczęściej. U mnie jest ona wydrukowana i przyklejona na podstawce monitora. Kiedyś spotkałem się z tym, że ktoś pokolorował sobie klawiaturę w odpowiedni sposób, są na rynku firmy które mogę przygotować spersonalizowane naklejki na klawiaturę (swoją drogą, nigdy nie słyszałem o pracodawcy, który wymuszając korzystanie z jakiegoś narzędzia, przyozdobił by tak klawiatury. Koszt mały, a szansa wzrostu wydajności całkiem spora). Na początku wyszukiwanie skrótu na liście trwa trochę czasu, ale z czasem potrafi go naprawdę sporo zaoszczędzić. Przede wszystkim nie odrywa nas od klawiatury w poszukiwaniu innego kontrolera, pracuje się bardziej płynnie. Można dzięki temu stosować np pomodoro technique, wyciszając wszystkie powiadomienia na określony czas. Ale do rzeczy, oto lista skrótów które wg mnie są najpotrzebniejsze:

Build  CTRL + F9
Build and run SHIFT + F10
Debug SHFT + F9 
Line Comment or Uncomment CTRL + / 
Block Comment or Uncomment CTRL + SHIFT + / 
Command look-up CTRL + SHIFT + A 
Project quick fix ALT + ENTER 
Refactor/Rename SHFT + F6
Reformat code CTRL + ALT + L
Optimize imports CTRL + ALT + O 
Generate method ALT + INSERT
Code Completion CTRL + SPACE 
Surround code block CTRL + ALT + T 
Delete line CTRL + Y
Copy line CTRL + D
Navigate open tabs ALT + left-arrow ALT + right-arrow
Toggle project visibility ALT + 1
Close Active Tab CTRL + F4 
Find by symbol name CTRL + ALT + SHIFT + N
Find Class CTRL + N 
Find File CTRL + SHFT + N 
Search in path/project CTRL + SHIFT + F 
Lookup recent files CTRL + E 
Show Call hierarchy CTRL + ALT + H
Show parameters for method CTRL + P 
Quick documentation lookup CTRL + Q 
Safe Delete ALT + DELETE 
Go to previous/next method ALT + UP/DOWN 
Go to declaration CTRL + B 
Go to implementation CTRL + ALT + B 
Go to Type Declaration CTRL + SHIFT + B 
Go to Super CTRL + U 
Go to line CTRL + G 
Go to source F4 
Navigate to last edit location CTRL + SHIFT + BACKSPACE
public … main … {} psvm
System.out.println(); sout

Środowisko IntelliJ dostarcza również pełną listę skrótów do wydrukowania i korzystania, są one dostępne po wybraniu menu help -> Default Keymap Reference. Zostajemy wtedy przekierowani do pliku pdf na tą stronę internetową: IntelliJIDEA_ReferenceCard.pdf

Kiedyś była jeszcze całkiem przydatna wtyczka Key Promoter, służąca do zapamiętywania skrótów. Za każdym razem, kiedy kliknęliśmy myszką coś, co można było wykonać kombinacją klawiszy, wyświetlała w dymku powiadomienie o tym fakcie. Niestety nie jest już rozwijana i nie działa, nie mniej kod źródłowy jest dostarczany razem z nią, może ktoś kiedyś ją ożywi 😉

Swoją drogą, słyszałem kiedyś o developerze, który zaczynając pracę przynosił swoją listę i importował ją do środowiska. Od strony pracodawcy wygląda to na pewno profesjonalnie, tylko najprawdopodobniej ten człowiek wyuczył się skrótów korzystając z innego ide niż te, z którego aktualnie miał korzystać. Cóż, to też się zdarza, osobista decyzja, czy ktoś stworzy sobie swoje własne skróty, czy będzie korzystał z tych dostarczonych przez środowisko, zwłaszcza, że IntelliJ ma możliwość wybrania, czy nie chcemy korzystać np ze skrótów z Eclipse, czy NetBeans.

Pozdrawiam!

Zrobię to, czyli motywacja programisty

Słyszeliście kiedyś, że nie mówi się: „postaram się”, tylko „zrobię to!”. Pierwsze stwierdzenie zawiera taki mały sabotaż, że jeśli coś pójdzie nie tak, to trudno, mogę powiedzieć, że się starałem. Drugie nie pozostawia miejsca na interpretację, po prostu wykonam to zadanie, choćby nie wiem jak było trudne. Jak mówi Will Smith: „Jedyna różnica między nami jest taka, że jeżeli wejdziemy na bieżnie, to albo Ty zejdziesz z niej pierwszy, albo ja na niej umrę”.

Napiszę dzisiaj co nie co o swoim podejściu do zagadnienia motywacji, planowania, ponieważ są one tak naprawdę przynajmniej w moim przypadku: połączone. Co tzn? Że najbardziej zmotywowany jestem, kiedy coś wykonuję według planu. Najlepiej, żebym miał zadanie nie dłuższe niż pół godziny, dzięki temu, mogę je sobie odznaczyć na liście i przejść do następnego, widzę, że ich ubywa, że coś się zmienia. Ważne jest, aby lista zadań na każdy dzień była wykonywalna. Kiedy pracowaliśmy, ale zostało nam jeszcze mnóstwo zadań, na które brakło czasu, wtedy poziom motywacji się obniża. Kiedy o ustalonej godzinie skończymy wszystko i możemy zasiąść i poczytaj kawałek dobrej książki, o tak, to są dobre dni.
Jednak nawet przy takim planowaniu i trzymaniu się zadań, zdarza się, że mamy obsuwę, bo coś wypadnie, albo po prostu nam się nie chce.. Co wtedy? Na to również znalazł się cytat: „kiedy nie masz czasu, znajdź sobie dodatkowe zajęcie”. Dla mnie takim dniem, w którym spadała motywacja był czwartek, zauważyłem to po sobie, taki już jestem. Czwartki są straszne. Co pomogło? Dołączenie do grupy developerów i zobowiązanie się do dostarczenia kawałka kodu co czwartek. Teraz nie ma bólu, obiecałem, jestem im to winny. No dobra, ale co, jeśli motywacja spada w ciągu tygodnia? Ano tak, po pierwsze, ZAWSZE po pracy mam pół godziny przerwy, kiedy leżę i czytam, to jest moje pół godziny, moja regeneracja, nie odbiorę wtedy telefonu, nie sprawdzę maila, nie ma mnie. A potem biorę się za swoje projekty, które realizuję po za pracą. W gorszych momentach pomagają motywacyjne wykłady, bądź cytaty, w sieci trochę tego jest. Mam też ulubionych autorów, z polaków to np. Mateusz Grzesiak, Nikodem Marszałek. Do tego kanały na yt:
People are awesome
Architekci umysłu
Jest tego oczywiście więcej, ale te są chyba najczęściej używane. Ale żeby nie było, rozrywki najczęściej nie planuję. Jeśli zdecyduję, że gdzieś wychodzę, to najczęściej bawimy się spontanicznie. Warto jeszcze chyba wspomnieć, czego używam do planowania, mianowicie jest to narzędzie:
ToDoIst
Miałem kilka przygód z różnym narzędziami, to zostało jak najlepsze.

Na koniec najważniejsza rzecz. Trzeba naprawdę kochać to co się robi, a także mieć konkretny cel. Wtedy jest zdecydowanie łatwiej, chce się tego, ponieważ wiadomo gdzie człowiek dojdzie. Mam głęboko na komputerze zapisanego siebie, jaki będę za 5 lat. I zrobię to, będę właśnie taki.

Pozdrawiam!

Notepad++ czyli narzędzie oszczędzające cenny czas

Dostałem nie tak dawno w pracy zadanie, polegające na wyciągnięciu kilkunastu, kilkudziesięciu zdań z pliku xml. Plik miał jakieś wartości przed zdaniem, miał jakieś wartości po zdaniu, miałem wyciągać tylko te zdania, w których linii występowało <UserTask>. Mogłem oczywiście napisać odpowiedni parser, co zajęło by nie wiem, jakąś pewnie godzinę. Tylko tak naprawdę po co, skoro mamy idealne narzędzie do tego typu przekształceń tekstowych. Oto opis jak wykonywać tego typu zadania:

Skrótem klawiszowym ctrl+h otwieramy zaawansowane narzędzie zamieniania, w którym zaznaczamy wyrażenia regularne.
Dokumentacja wyrażeń regularnych znajduje się tutaj:
Notepad++ regular expressions
A tak wygląda polecenie zamiany wszystkich linii nie zawierających danego tekstu
(?!^.*usertask.*$)^.+
Zamieniamy oczywiście na pusty tekst. W miejsce usertask wpisujemy tekst, który jest kluczem do linii, które mają zostać nieruszone.
Polecenie zamiany wszystkiego przed danym tekstem, w każdej linii:
.*text
Zamieniamy również na pusty tekst.
Polecenie zamiany wszystkiego za danym tekstem, w każdej linii:
[text].*
Tutaj również na pusty tekst. Text to słowo klucz.

Okej mamy już wszystkie zdania, ale każde w nowej linii, niejednokrotnie z kilkoma liniami przerwy, a chcielibyśmy je po przecinku. Oto, jak to się robi:
Edycja/Operacje na liniach/Usuwanie pustych linii.
Teraz wystarczy zamienić znak nowej linii na przecinek. W tym celu zaznaczamy rozszerzony, zamiast wyrażenia regularne i wykonujemy taką operację:
rn
Zamieniamy na przecinek, albo to, czego potrzebujemy. I już, zadanie rozwiązane.
Teraz, do każdego pliku xml mamy takie 5 operacji.

Można szybciej 😉
Przed rozpoczęciem tych wszystkich operacji klikamy: Makra/Rozpocznij nagrywanie.
Wykonujemy wszystkie kroki.
Po zakończeniu klikamy: Makra/Zakończ nagrywanie.
Dla następnego pliku wystarczy już tylko Makra/Odtwórz
Zadanie rozwiązane.

Opowiem teraz dwa słowa o wyrażeniu rn. Tak naprawdę oznacza ono przejście do nowej linii, najprościej mówiąc enter. Symbol r to z angielskiego carriage return, i pochodzi jeszcze z czasów, kiedy zamiast ekranów były drukarki. Symbol ten oznaczał przejście na wysokość pierwszego znaku od lewej strony w drukarce, czyli do początku linii. Z kolei symbol n, czyli new line, to po prostu zejście poziom niżej. Jeżeli spotkalibyście się z określeniem CRLF to oznacza ono to samo. Nie wszystkie systemy jednak używają tego standardu, czasem wystarcza sam CR, czasem sam LF.

To tyle ciekawostek na dziś, mam nadzieję, że przydatny lifehack o notepadzie++! 😉

Pozdrawiam!