#DockNetCore – Twardy Reset w Świecie .NET – Capgemini IT T@lk

Zapraszam na wydarzenie organizowane już w czwartek 29 września 2016 o godzinie 18.00 przez Capgemini w krakowskim Browarze Lubicz (ul. Lubicz 17).

Nasi programiści i architekci przedstawią zagadnienia z zakresu .NET Core i konteneryzacji w oparciu o Docker. Spotkanie będzie podzielone na dwie części: prezentację oraz pokaz przy stanowiskach komputerowych na którym będzie można zobaczyć tworzenie aplikacji z użyciem niezbędnych narzędzi takich jak Visual Studio Code czy Yeoman.

Po prezentacjach będzie można oczywiście porozmawiać z nami o technologiach (i nie tylko) przy dobrym piwie.

Więcej o wydarzeniu znajdziecie tutaj.

Wstęp jest bezpłatny, ale trzeba się zarejestrować – formularz rejestracyjny dostępny na stronie.

Kosmiczny DevDay 2016 – było odlotowo!

Jeśli miałabym jednym słowem podsumować tegorocznego DevDaya to byłoby to słowo inspirujący.

Przede wszystkim dlatego, że tegoroczna konferencja nie była skupiona tylko wokół świata .NET jak do tej pory, ale zdecydowanie wybiegała poza niego dostarczając mnóstwa ciekawych prezentacji na różne tematy. Niejednokrotnie miałam duży dylemat, którą prelekcję wybrać, ale nigdy wyboru nie żałowałam. Dlatego też nie mogę się doczekać kiedy prezentacje pojawią się online, by zapoznać się z tym z czego musiałam zrezygnować.

No dobra – ale dlaczego kosmiczny? Otóż na identyfikatorach umieszczone było słowo Explorer i w takim też duchu utrzymane były trzy prezentacje – pierwszego dnia „NASA’s Ant-Inspired Swarmie Robots” (Kurt Leucht), drugiego – „We Are The Explorers!” (Kurt Leucht) i „To The Moon” (Russ Olsen). Pierwszej nie widziałam, ale dwie następne polecam jako motywujące by spojrzeć na to co robimy w pracy troszkę szerzej – jako coś co ma wpływ na życie innych ludzi i świat. Przyznam, że sama często mam problem w tym, żeby zobaczyć sens niektórych rzeczy, dlatego warto było tego posłuchać. Zwłaszcza, że opowiedziany został kawał historii przygotowań do lotów w kosmos. Zainteresowało mnie to do tego stopnia, że postanowiłam zgłębić temat. Chyba zacznę od jakiś filmów o lotach w kosmos:) Przesłaniem wspomnianych prezentacji było również to, że nie ma rzeczy niemożliwych i że warto próbować do skutku.

Nowe rzeczy, z którymi się zapoznałam w trakcie konferencji to ReactJS i pojęcie Service Worker. ReactJS nie miałam do tej pory okazji spróbować, ale tak bardzo mi się spodobał, że chyba wymyślę sobie niedługo coś co mogłabym w nim napisać, żeby się nauczyć. Z kolei Service Worker, choć jeszcze nie do końca wspierane przez wszystkie przeglądarki, uważam za naprawdę fajną opcję i coś co zdecydowanie rozszerza możliwości aplikacji przeglądarkowych.

Bardzo podobały mi się prezentacje Niall Merrigan’a  i „How Did You Find That?” I „A Security Testers Toolbox”. W pierwszej z nich pokazany został szereg systemów dostępnych bez hasła przez zdalny pulpit lub VNC. Okazuje się, że w 2.5 minuty jesteśmy w stanie przeskanować internet w poszukiwaniu takich rzeczy i przejąć sterowanie nad basenem, ogrzewaniem, systemem do hydromasażu, jachtem, tartakiem czy inteligentnym domem. Do tego dochodzi jeszcze cała masa kamer internetowych przez które można podglądać domy, dzieci sklepy. Wymieniłam tylko niektóre, Niall wymienił kilkadziesiąt a jest ich pewnie o wiele więcej. Druga prezentacja pozwalała zapoznać się z narzędziami do testowania zabezpieczeń – nie wszystko zadziałało, ale i tak było bardzo ciekawie:) Niall prowadzi prezentacje w bardzo fajny i zabawny sposób  – z przyjemnością się go słucha.

Fajnie też słuchało mi się prelekcji Zacha Holmana „Firing People”, który na swoim przykładzie opowiedział nam o zwalnianiu ludzi – problemach z tym związanych oraz radach co robić i czego nie robić – dla zwalniających i zwalnianych.

Zdecydowanie przyda mi się również to, czego dowiedziałam się na prezentacji „Modern Performance Best Practices” Dustina Whittle. Dustin pracuje w firmie AppDynamics, która tworzy oprogramowanie wspomagające śledzenie wydajności aplikacji internetowych i wyszukiwanie słabych punktów. Pokazał kilka darmowych narzędzi, które można użyć w codziennej pracy – jak Site Speed czy WebPageTest.

Żeby dowiedzieć się jak zająć się moją niedawno opublikowaną aplikacją od strony marketingowej udałam się na prelekcję Sharon Steed „Empathy Marketing: Why Vulnerability is the Greatest Tool in Your Arsenal” – niestety jednak niewiele nowego ona dla mnie nie wniosła, gdyż jednak komunikacja i wczucie się w użytkownika to jest to co zawsze starwiam na pierwszym miejscu.

Pierwszego dnia uczestniczyłam również w „Lightning Talks”, w trakcie których pojawiły się trzy tematy: „Remotely Agile”, „Spaced repetition algorithm” i „Statistical Forecasting: Estimating Made Easy”.

Pierwszy był tak naprawdę opisem tego jak wygląda metodologia Agile w pracy zdalnej. Czyli, że zamiast siedzieć w jednym pomieszczeniu wszyscy łączą się głosowo na jednym kanale i tak przeprowadzają standupy, retrospekcje czy demo.  Padła jedna ważna rada – by nigdy nie łączyć się grupą z jednego komputera np. w sali konferencyjnej podczas, gdy inne osoby łączą się ze swoich stanowisk. Dlatego, iż ważne jest by wszystkich było słychać jednakowo dobrze a tak się nie dzieje jeśli np. jedna osoba łączy się ze swojego komputera a kilka z sali konferencyjnej. Wówczas łatwo o zły przepływ informacji.

Drugi temat interesował mnie najbardziej ponieważ opowiadał, oczywiście w wielkim skrócie, o algorytmach wykorzystywanych przez aplikacje do nauki języków takie jak SuperMemo, Anki, Duolingo czy Memrise. Uwielbiam uczyć się języków obcych i kilka z tych aplikacji wykorzystuję regularnie. Do tego zawsze chciałam w tej kwestii stworzyć coś swojego. Być może dzięki wiedzy nabytej podczas konferencji znów wrócę do tematu.

Trzeci – użycie statystyki w estymowaniu zadań. No cóż… nie przekonało mnie to. Estymowanie to bardzo trudna sprawa i wydaje mi się, że bardzo ciężko znaleźć czynniki, które mogłyby się stać współczynnikami pewnych równań:)

Pierwszy dzień konferencji zakończył się bardzo optymistycznie prezentacją „Optimism” Reginalda Braithwaite. Nie dowiedziałam się niczego nowego, ale bardzo lubię słuchać tego typu prelekcji lub też czytać artykuły po to, by podtrzymywać w sobie pewne wzorce ułatwiające optymistyczne podejście do życia. Reginald książkę po którą chętnie sięgnę:  “Learned Optimism,”  Martina Seligmana.

Tym optymistycznym akcentem zaczęliśmy mniej formalną część konferencji i z Multikina w którym były prelekcje, przenieśliśmy się do specjalnie postawionego namiotu za kinem na afterparty. Można było napić się piwa lub wina i przegryźć co nieco a także pogadać z ludźmi. W okolicy godziny 22ej impreza przeniosła się do jednej z nowych krakowskich (a właściwie krakoskich) piwnych miejscówek czyli do Weźże Krafta na Dolnych Młynów. W doborowym towarzystwie zabawa była przednia. Nie dotrwałam jednak do końca by następnego dnia móc z niezmąconym zbytnio umysłem uczestniczyć w dalszej części konferencji.

I tak właśnie znalazłam dużo inspirujących informacji w prezentacji „A Homespun Decentralised DIY Data Science Research Pipeline for the Internet of *Your* Things” Jose Dominguez’a. Myślę, że data science i machine learning to jest coś czego chciałabym spróbować więc i ten temat zamierzam zgłębić w najbliższym czasie. Tym bardziej, że dużo w tym wszystkim matematyki, która była moim głównym powodem, by zająć się programowaniem. Może to właśnie TO?

Ciekawą nowinka był również temat „Getting Physical with Web Bluetooth” prowadzony przez Uri Shaked. Pokazał nam jak za pomocą aplikacji napisanej w JS sterować inteligentną żarówką lub robotem. Jest moc:)

Wybrałam się również na prezentację „Fall in Love in Human, or Why Engineers are the Best Designers” Adama Jaworskiego. Zrobiłam to troszkę z przekory, gdyż nijak nie zgadzałam się z tym stwierdzeniem, ale jednak Adamowi udało się mnie przekonać. Zdecydowanie lepiej współpracować ściśle z użytkownikiem i poznawać jego potrzeby niż po prostu zdać się na modny i ładny design, który niekoniecznie będzie przez użytkownika lubiany i będzie dla niego wygodny. Adam mocno odróżnił projektowanie od robienia grafiki dzięki czemu temat prezentacji naprawdę nabrał sensu.

Podsumowując: dużo się działo, były świetne tematy i dużo fajnych ludzi. Nie mogę też nie wspomnieć o dobrym jedzeniu:) Było super! Tak trzymać i do zobaczenia za rok!

4Developers – świetne wydarzenie, ale parę rzeczy bym zmieniła

4Developers

Wczoraj po raz pierwszy miałam okazję uczestniczyć w konferencji a właściwie festiwalu, bo tak nazwano tegoroczną edycję, 4Developers w Warszawie. Wszystko to dzięki konkursowi, który zorganizował Konrad Kokosa, którego niniejszym serdecznie pozdrawiam. Bardzo się cieszę z tego wydarzenia, gdyż prelekcje w których uczestniczyłam były na naprawdę wysokim poziomie i przyjemnie się tego wszystkiego słuchało. Co prawda zdarzyło się też parę takich, które nieco rozminęły się z moimi oczekiwaniami na ich temat. Generalnie odkąd planowałam wyjazd na konferencję było mi bardzo ciężko zdecydować na co pójść i na każdą godzinę miałam dwóch a czasem nawet trzech kandydatów. Nie mogę się doczekać nagrań, by nadrobić to, na co nie udało mi się pójść.

Zacznę jednak od opisania tych nieco słabszych stron, w ramach których moim zdaniem organizatorzy powinni co nieco poprawić. Ponieważ będzie tego dużo, więc jeśli ktoś nie ma ochoty czytać o organizacji może od razu przejść do opisu prelekcji na których byłam. Opis słabych stron wyszedł mi dość długi i nie chciałabym, by ktoś nie doczytał do końca posta, bo wcześniej zniechęci się do konferencji, która była naprawdę fajna!

Wydarzenie odbywało się w Hotelu Gromada Okęcie, który jest dość starym hotelem i chyba nie do końca przystosowanym do obsługi tak dużych wydarzeń. Prelekcje odbywały się na trzech poziomach (-1, 0 i 1) więc w przerwach bardzo obciążona była ewakuacyjna klatka schodowa, która była bardzo wąska co mocno utrudniało sprawne poruszanie się w górę i w dół. Była tam zdaje się druga klatka, ale zarezerwowana dla cateringu więc nie bardzo dało się jej używać.

Jednak nie tylko hotel przywodził na myśl dawne czasy – na wejściu witała przybywających kolejka rodem z PRL, jeśli ktoś pamięta kolejki po mięso.;) Pojawiłam się na miejscu około 8.30, ale to niestety nie wystarczyło, by odebrać identyfikator przed rozpoczęciem pierwszego wykładu, dlatego też spóźniłam się na niego około 15 minut. Kolejka robiła się z powodu małej ilości stanowisk (chyba trzy), w których można było się „odmeldować”. Nie było również podziału na litery alfabetu, jak ma to miejsce nawet na mniejszych konferencjach (bardzo upłynnia ruch). Co więcej – dostawało się identyfikator oraz bransoletkę (podobno potrzebną do wydania obiadu, ale nikt tego nie sprawdzał) i to właściwie tyle. Po koszulkę trzeba było jeszcze raz ustawić się w kolejce po wypełnieniu ankiety w aplikacji Eventory.

I tutaj dochodzimy do koszmaru chyba każdego uczestnika czyli tej nieszczęsnej aplikacji. To już nie jest tylko moja opinia, bo zewsząd dochodziły mnie głosy dość niepochlebne od ludzi trzymających w ręku telefon z otwartą aplikacją i próbujących cokolwiek zdziałać. Otóż kompletnie nie nadawała się do używania jej offline – to naprawdę absurdalne, że aby przejrzeć agendę albo nawet swoją agendę, trzeba było mieć połączenie z internetem. Co gorsza – ten kompletnie nie wyrabiał.  WiFi konferencyjne działało słabo a LTE nie wyrabiało. Efekt był taki, że pod papierowymi rozpiskami z agendą gromadziły się tłumy fotografujące ją, by nie musieć korzystać z aplikacji.

Aplikacja wyświetlała powiadomienia o zamianie sal czy konkursie na Twitterze, ale brakowało w niej właśnie ważnej rzeczy takiej jak mapka z salami, w których umieszczone były poszczególne ścieżki – mapki można było podobnie jak agendę sfotografować albo sięgać po nie do wydarzenia na Facebooku – średnio to wszystko wygodne.
Sama nie wiem co mnie podkusiło, żeby sobie spisać wcześniej na kartce wykłady na które chcę pójść razem ze ścieżkami z których pochodzą, ale to mnie uratowało. Zwykle jestem fanem aplikacji do wszystkiego, ale tym razem przekonałam się, że jednak co papier to papier:)

Generalnie aplikacja ta ma służyć jako przewodnik do różnych eventów, więc nie była dedykowana pod 4Developers i pomysł jaki realizuje jest bardzo fajny, ale niemożność korzystania z niej offline w przypadku tak dużych eventów troszkę ją dyskwalifikuje. Pojawiało się też kilka innych problemów, które zgłaszali użytkownicy w Sklepie Google.

Wspomniane WiFi było bolączką nie tylko uczestników, ale też prelegentów, gdyż niemożność podłączenia się do sieci w niektórych przypadkach wpływała na możliwość zaprezentowania jakiejś funkcjonalności. Uważam też, że trochę nie fair wobec prowadzących wykłady było to, iż czas oczekiwania na wejście był taki długi. Przez to wiele osób się spóźniło a wiele nie dotarło na pierwsze prelekcje. O 9tej kolejka nadal sięgała wejścia a kiedy wyszłam z pierwszego wykładu, było niewiele lepiej a było to około 9.55.

Zresztą podobnie było z szatnią, kiedy próbowałam w przerwie zabrać z niej swoje rzeczy. Chciałam wziąć je przed ostatnim wykładem w którym chciałam uczestniczyć, ponieważ musiałam zdążyć na pociąg. Niestety ten sprytny plan skończył się tak, że na ten ostatni wykład nie dotarłam. Za ladą w szatni stał jeden pan…  A przecież przed czasem odbierały swoje rzeczy raczej nieliczne osoby.

Kolejka na obiad – tam też brakło z kolei jasnego oznaczenia, gdzie się kończą i zaczynają kolejki do poszczególnych „korytek”. Przy tej okazji też przyszła mi do głowy rzecz, której brakuje mi chyba we wszystkich tego typu wydarzeniach. Brak informacji, gdzie leży jakie jedzenie, dostępnej z daleka. Bo po co mam stać za kurczakiem, jeśli po drugiej stronie są świetne pierogi… Ale tego co jest dostępne w danym „korytku” nie dowiem się dopóki nie odstoję w kolejce:( Ewentualnie dopóki nie odpytam kogoś „a skąd to masz?”:)

Jest jeszcze jedna ważna rzecz, która sprawiała, że mam poczucie, iż nie byłam w stanie wykorzystać w pełni tej konferencji. Mianowicie takie wydarzenie to przecież nie tylko prelekcje, ale też firmy ze swoimi stoiskami i networking (zwłaszcza, jeśli nie mogę uczestniczyć w imprezce przed czy po). Tymczasem na 4Developers cały czas byłam w biegu. Podobało mi się, że wykłady trwały 45 minut, ale wielokrotnie było to za mało, bo czasem zaczynały się parę minutek po przewidywanym starcie i później zamiast kwadransu przerwy między prelekcjami zostawało 10 minut albo i mniej. Jak w tym czasie pogadać z kimś, zjeść/wypić cokolwiek, nie mówiąc już o bardziej ustronnych potrzebach. Tak więc mijałam wczoraj wszystkich w biegu pijąc kawę pomiędzy piętrami. Pół godziny to jednak absolutne minimum jeśli chodzi o przerwy pomiędzy wykładami.

Dopiero w domu przymierzyłam koszulkę, ale niestety jak na S jest dość duża i brakuje jej damskiego kroju:( Szkoda też, że trafiłam na zieloną nie czarną. W sumie zagadką dla mnie pozostaje jak można było dostać czarną;)

No dobra, dość narzekania. Wszystkie wymienione rzeczy można łatwo poprawić, więc pokładam duże nadzieje w organizatorach:)

Jeśli zatem chodzi o prelekcje – pierwsza – „Jak nie zawalić projektu – komunikacja i ryzyko” Karola Drzymały.  Ponieważ była to ścieżka GameDev, Karol przywoływał wiele przykładów z produkcji gier, ale też było wiele nawiązań do pracy w firmach takich jak Pixar czy Disney. Ta druga podobno dopiero po nawiązaniu współpracy z Pixarem i wdrożeniu ich technik komunikacji znów sięgnęła szczytu jeśli chodzi o filmy animowane.

Podobał mi się wzór na kompetencje zespołu, mianowicie:

KZ = Σk x c

Kompetencja zespołu (KZ) to suma kompetencji (k) pojedynczych jego członków pomnożona przez ich zdolność do komunikacji (c).

Komunikacja wśród programistów jest o tyle ważna, że większość z nas jednak najlepiej się czuje, kiedy koduje sobie gdzieś w kątku i nikt nam nie przeszkadza. No ale niestety tylko w grupie jesteśmy w stanie się dowiedzieć, że ktoś przed nami coś już zaimplementował albo rozkminił to nad czym właśnie się głowimy. Stąd też proponowany układ biurek w zespole tak by wszyscy siedzieli plecami do siebie i gdy chce się coś komuś pokazać wystarczy by się odwrócił. Karol mówił również o tym, że w tak blisko siebie skoncentrowanych zespołach niepotrzebna jest dokumentacja, gdyż zastępuje ją dobra komunikacja.

Wykład był raczej przyjemny i lekki, ale prowadzący mówił momentami dość cicho, więc miałam problem z wyłapaniem słów siedząc w drugim rzędzie. Sala była nieduża, ale i tak mam wątpliwości czy osoby siedzące w głębi, były w stanie go dobrze słyszeć.

Kolejną prelekcją w mojej agendzie było „Oops I did it again czyli jak przetestować swoją aplikację?” Kacpra Szurka. Tutaj prowadzący szedł jak burza z pokazem problemów na jakie w aplikacji należy zwracać uwagę, gdzie i jak ich szukać. Fajne było to, że wykład był bardzo żywy, dynamiczny, przykłady problemów z kolei były wyciągnięte z prawdziwych bibliotek open source – na przykład wtyczek do WordPressa.

Podobała mi się metoda tworzenia filtrów na takie „podejrzane” fragmenty aplikacji. Były to kawałki wyrażeń regularnych, które pozwalały na wychwycenie w kodzie miejsc, gdzie niewłaściwie zaopiekowaliśmy się jakąś daną pochodzącą od użytkownika. Co prawda przykłady były w większości w PHP, więc nie każdemu się przydadzą, ale ogólna idea jest bardzo dobra. Kilka ciekawszych problemów jakie zostały poruszone:

  • SQL Injection – jeśli nie stosujemy „prepared statement” musimy pamiętać nie tylko o zadbaniu o to co idzie do WHERE, ale także do ORDER BY (często zapominany) i LIMIT.
  • XSS – ciekawe było wspomnienie o plikach SWF, które często wyświetla się bez wcześniejszej weryfikacji zapominając o tym, iż mogą zawierać JavaScript
  • Typowo PHPowy problem to na przykład zakomentowanie kawałka kodu w HTMLu za pomocą <– –>, gdzie ktoś może w tym zakomentowanym elemencie podstawić zamknięcie komentarza i coś nam wykonać
  • Częsty problem wynikający z dołączania np. weryfikacji czy użytkownik jest administratorem poprzez słowo kluczowe include. Jeśli robimy to na każdej stronie wymagającej autoryzacji łatwo jest o jakiejś zapomnieć i w ten sposób umożliwić dostęp osobom nieuprawnionym
  • Poleganie na „tajnych, zagmatwanych” ścieżkach na które pewnie nikt nie wpadnie zamiast autoryzacji. Wówczas wrzucenie gdzieś do otwartego repozytorium plików folderów .git lub .svn, może nam odsłonić tego typu ścieżki i otworzyć drogę do nadużyć. Podobnie z plikami typu robots.txt.
  • Dodanie do wszystkich stron tokenu CSRF, ale nie sprawdzanie go w odpowiednich miejscach.

Następnie był jeden z bardziej wyczekiwanych przeze mnie wykładów – „Nie koduj, pisz prozę!” Sławka Sobótki. Było świetnie! Do tej pory nie miałam okazji jeszcze uczestniczyć w żadnej prelekcji Sławka na żywo dlatego z niecierpliwością przebierałam nóżkami, by wreszcie zobaczyć to wszystko na żywo. Prezentacja poprowadzona bardzo profejsonalnie i z prawdziwą swadą.

Był podział na trzy typy programistów – tych którzy mają dobre poczucie stylu (tak zwykle myślimy o sobie), tych którzy mają złe (czyli takie, które jest inne niż nasze) a także tych, których styl w ogóle nie obchodzi. Niestety najgorzej się sprawa ma właśnie z tymi ostatnimi, bo żadnej dyskusji z nimi nie ma. Z tymi drugimi jest nieco lepiej – wystarczy przeciągnąć ich na naszą stronę. Jednak najczęściej, gdy widzimy czyjś inny styl padają słowa „Kto Cię robił, kto Cię uczył, skąd Ty dojeżdżasz” (cytat dosłowny z prowadzącego;)). Nasz styl jest zawsze najlepszy:) Inne prawie dosłowne cytaty:

  • Każdy z nas zna to uczucie, kiedy „buduje sobie katedrę” czyli dopieszczamy nasz śliczny kod, wszystko jest w najlepszym stylu napisane, a tu przychodzi ktoś i coś tam sobie dopisuje…
  • Dobry obiekt powinien być – apatyczny, introwertyczny i samolubny – całkiem jak programista:)

Sławek ostrzegał także przed zbyt wczesnym nadawaniem nazw obiektom czyli jeszcze zanim dowiemy się co dany obiekt będzie robił próbujemy nadać mu nazwę. Zawsze kończy się to czymś nieadekwatnym. Zamiast tego zaproponował Gibberish game – czyli nadawanie nazw „bełkotliwych” np. z przyrostkiem „aty” (użytkownikowaty, kontowaty itp.) Chyba lepiej brzmi to po angielsku;)

Wspomniał również o warsztatach Jarka Pałki (bardzo mnie to zafascynowało), w których tworzone są żywe karty CRC. Czyli taka zabawa, gdzie to ludzie są poszczególnymi kartami i odgrywają swoje role zgodnie z przypisanymi im odpowiedzialnościami.

Nie obyło się bez prztyczka w nos w stronę programistów .NET. Mianowicie był przykład kodu w Javie, który wyglądał mniej więcej tak:

Obiekt.metoda(parametr)

i opis wrażenia jak się to czyta, bo faktycznie czyta się jak zdanie – początek dużą literą i małe litery aż do końca. W .NET byłoby oczywiście

Obiekt.Metoda(parametr)

Sławek wspomniał, że wygląda to dość kiepsko, bo duża litera mogłaby sugerować, że zaczynamy nowe zdanie a tak nie jest. I w sumie się z tym zgadzam:) Tylko dlaczego Javowcy ciągle dokuczają tym biednym .Netowcom?

Następnie udałam się na wykład ze ścieżki UX by dowiedzieć się czegoś na temat projektowania aplikacji, co mogłoby przydać mi się w projektowaniu moich własnych aplikacji. Było to Jak rozpoznać potrzeby użytkownika? Design Thinking i poszukiwanie nowej wartości.” Jakuba Daneckiego. Prelekcja była bardzo ciekawa, ponieważ można było posłuchać wielu przykładów z prawdziwych projektów.

Niestety prowadzący nie do końca przygotował się do prezentacji, ponieważ tak naprawdę miał jakąś inną i ciągle powtarzał, że przeprasza, że nie przyciął jej by zawierała tylko to co chciał pokazać. Przez co tracił czas na wyszukiwanie odpowiednich slajdów czy zdjęć – troszkę szkoda, bo przez to umykał czas, który można by przeznaczyć na te ciekawe opowieści.

Z zasad ogólnych jeśli chodzi o projektowanie można było zapoznać się z tzw. Double Diamond (nazwa pochodzi od wyglądu tego schematu przypominającego właśnie dwa romby bądź jak na rysunku, który podlinkowałam – dwa kwadraty). Zasada ta dzieli cykl tworzenia projektu na cztery etapy – Discover, Define, Develop i Deliver. Na każdym etapie możemy cofać się do poprzednich.

Polega to na tym, że najpierw określamy potrzeby użytkownika, pomysły, (dlatego zakres się rozszerza). Następnie na etapie Define doprecyzowujemy je i wybieramy te, które uważamy za ważne, które w pierwszej kolejności chcemy zrealizować. W fazie Develop implementujemy, prototypujemy, wybieramy najlepsze rzeczy – znów dużo się dzieje, by w ostatniej części czyli Deliver dostarczyć już gotowy produkt.

Wykład był fajny, ale w kwestii pracy nad własnymi projektami niewiele nowego się dowiedziałam.

Po przerwie obiadowej przyszedł moment, żeby się ogarnąć czyli prelekcja na którą również  bardzo czekałam czyli „GMD – Getting More Done” Maćka Aniserowicza. Od jakiegoś czasu mocno interesuję się tematyką produktywności, pracy nad sobą i minimalizmu, który też tą produktywność poprawia. Czytam, słucham, troszkę wdrażam, ale chyba właśnie z tym jest u mnie najgorzej:( Bałam się zatem, że kolejny obejrzany wykład tylko powtórzy to co już wiem, ale miałam też nadzieję, iż może da mi kopa potrzebnego do wykorzystania tej ciągle zdobywanej wiedzy.

Obawa się nie potwierdziła a nadzieja spełniła:)

Mianowicie Maciek opowiedział o swoim własnym doświadczeniu z oczyszczaniem głowy z pałętających się po niej różnych „do zrobienia” by zrobić miejsce na fajne pomysły, które łatwiej pojawią się w czystym umyśle. Jego plan był prosty – jeden cały wolny dzień poświęcamy na to by siąść i spisać na karteczkach wszystko co nam przychodzi do głowy co musimy zrobić. Wszystkie pomysły, plany, marzenia a także drobne pierdoły – obowiązki domowe, rodzinne itd. Po wyrzuceniu tego wszystkiego na kartki mamy głowę wolną i pustą. Pozostaje tylko czekać na „olśnienia”. Przyznam, że tej metody nie znałam i bardzo mi się ona spodobała. Nie wiem tylko kiedy uda mi się wygospodarować taki wolny dzień:)

Ważne literki to M, N, O, P, R jak Myśl, Notowanie, Organizowanie, Planowanie, Robienie.

Myśl to właśnie to powyższe spisanie wszystkiego co nam siedzi w głowie.

Notowanie – ma na celu odciążenie mózgu i archiwizację przemyśleń. Również pozwala na zrobienie w głowie miejsca na nowe rzeczy.

Organizowanie – tutaj Maciek proponuje podział na trzy miejsca na notatki. Pierwsze to listy do odhaczania zadań, które nie mają konkretnych terminów – mogą być na dziś, jutro, za tydzień. Drugie – to kalendarz, który oczywiście służy do planowania zadań związanych z konkretną datą. I ostatnie miejsce – tam zapisujemy wszystko inne – pomysły, notatki z książek itp.

Do tych trzech typów notatek Maciek poleca m.in. Google Keep (listy do odhaczenia) i OneNote. Osobiście w pełni się pod tym podpisuję, bo OneNote używam od dawna do notatek właśnie. Ja również próbowałam kiedyś Evernote, ale jakoś nie mogę się do niego przekonać. Google Keep jest świetny, ale nadaje się tylko do krótkich rzeczy i po jakimś czasie, to co na początku mi się podobało czyli kolorowe karteczki, zaczęło mnie nużyć. Obecnie testuję aplikację na Androida SolCalendar, która wygląda dużo lepiej niż wbudowany kalendarz Google. Oczywiście synchronizuje się z nim, ale ponadto umożliwia tworzenie list ToDo z przypomnieniami, która również synchronizuje się z produktem Google  o nazwie Lista zadań czy jakoś tak. To taka prosta lista, którą możemy podejrzeć w Gmail. Fajnie jest mieć listę ToDo i kalendarz w jednej aplikacji.

Wracając jednak do wykładu, to kolejną literką było P jak planowanie – najlepiej jest planować tyle ile jesteśmy w stanie zrobić plus jeszcze troszkę. Tak byśmy nie mieli możliwości się nudzić, ale też byśmy nie dołożyli sobie zbyt dużo i nie skończyli zdołowani i przytłoczeni nadmiarem roboty. Może nas to zdemotywować i zniechęcić.

Najciekawsza i najtrudniejsza literka to R jak robienie. Tutaj pojawił się bardzo ciekawy koncept tzw. „mikroprzerw”. Maciek porównał jak wyglądał jego dzień przed i po wprowadzeniu tej idei.
Wcześniej dzień wypełniała najpierw praca, później czas dla rodziny, a później wreszcie czas dla siebie – czyli duża przerwa, która jednak w dużej mierze była wypełniona pierdołami – zadzwonić gdzieś, naprawić coś itp. Efekt był taki, że z dużej przerwy robiła się mała przerwa i na nic nie starczało czasu.
Z kolei system mikroprzerw polega na tym, by w ciągu dnia – czy to czasu pracy, czy to czasu poświęcanego rodzinie wykorzystywać każdą bezproduktywną chwilę. Czekamy aż się coś skompiluje – wykonujemy potrzebny telefon itp. W ten sposób cały dzień będzie usiany takimi małymi kawałkami czasu, które wykorzystaliśmy bardziej produktywnie a nasz czas wolny na koniec dnia pozostanie tylko na rzeczy, którymi naprawdę chcemy się zająć.
Przy tej okazji pojawił się też znany mi już motyw 2 minut czyli jeśli coś ma nam zająć mniej niż 2 minuty, to zróbmy to od razu. Takimi rzeczami np. są wszelkiego rodzaju telefony do wykonania, krótkie maile itp. W ten sposób unikniemy też ciągłego wołania w głowie „muszę zadzwonić, muszę zadzwonić” i wreszcie będziemy mogli skupić się na tym co robimy.

Muszę jeszcze wspomnieć o tym, iż nie bez powodu tytuł prelekcji przywodzi na myśl książkę „Getting things done” Davida Allena. Maciek zaadaptował na swój sposób metodę GTD. Jest on kolejną osobą, która adaptuje model, ale nie używa go od deski do deski. Rozmawiając z ludźmi o tej książce czy też czytając blogi i słuchając podcastów nie spotkałam jeszcze nikogo, kto by tą metodę przyjął bezkrytycznie i był w stanie wprowadzić ją w swoim życiu w 100%. Ja również jestem w posiadaniu książki, ale przyznam, że nie byłam w stanie przez nią przebrnąć, gdyż jest moim zdaniem trochę przegadana i żeby wyłuskać z niej właściwą treść trzeba się mocno postarać. Bardziej podobają mi się jednak różne własne adaptacje metody GTD.

Na koniec była jeszcze mowa o tym po co nam te wszystkie metody a także jakie są wady. Tak więc niewątpliwym plusem jest możliwość zapanowania nad swoim czasem i zmniejszenie stresu towarzyszącego nam z powodu niezrobionych rzeczy. Natomiast minusy, które najbardziej zapadły mi w pamięć, to uzależnienie od telefonu (choć osobiście mocno się zastanawiam nad powrotem do korzeni czyli papierowych notesów) oraz fakt, że ciągle coś planując, zapisując, organizując żyjemy bardziej w przyszłości niż teraźniejszości. Tutaj pojawiły się dwa kolejne terminy, które i ja zamierzam zgłębić – czyli mindfullness  oraz presence (bycie obecnym tu i teraz).

Polecone przez Maćka książki: „7 nawyków skutecznego działania” Stephena Coveya (mam na liście książek do przeczytania) oraz „Twój mózg w działaniu” Davida Rocka.

Pozytywnie nakręcona po tej prezentacji poszłam na wykład „Embrace Events and let CRUD die”, który prowadził Kacper Gunia. Na początku zapowiedział, że będzie się starał zdążyć w założonym czasie więc troszkę się spieszył. Temat był dla mnie dość nowy i przez tą szybkość nie do końca nadążałam. Mimo to zainteresował mnie na tyle, że jak tylko znajdę czas chętnie doczytam sobie coś na spokojnie by w pełni zrozumieć to co widziałam wczoraj.

Kolejna prezentacja również była jedną z najbardziej przeze mnie wyczekiwanych – „Dlaczego oni są nienormalni? Czyli jak pracować w środowisku międzykulturowym.” Grzegorza Godlewskiego. Miałam nadzieję, że przyniesie mi więcej wiedzy o tym jak pracować z ludźmi z różnych krajów, gdyż jest to problem z jakim stykam się na co dzień. Poznałam w codziennej pracy ludzi z Wielkiej Brytanii, Szwecji, Norwegii, Francji, Włoch, Chin, USA i zawsze zastanawiam się co mogę zrobić lepiej w komunikacji z nimi. Przyznam jednak od razu, że do końca tego wykładu nie dotrwałam. Na tą godzinę miałam jeszcze inny wykład, na którym mi zależało i po około połowie na niego się udałam. Dlaczego? Troszkę rozczarowała mnie niewielka ilość przykładów z życia. Grzegorz ma bardzo bogate doświadczenie jeśli chodzi o współpracę z różnymi narodowościami, więc spodziewałam się anegdot sypanych jak z rękawa.  Tych jednak było bardzo mało. Najwięcej było teorii z zakresu antropologii, która była bardzo ciekawa, ale brakowało mi jednak odniesień do codziennych sytuacji w pracy.

Na pewno jednak zapamiętałam coś takiego jak proksemika – która mówi nam o znaczeniu dystansu między ludźmi w podziale na publiczny, społeczny, osobisty oraz intymny. Każdy stosowany w odpowiednich sytuacjach i o odpowiednim znaczeniu. Co ciekawe te dozwolone odległości różnią się w różnych krajach. Była też mowa o chronemice czyli o różnym postrzeganiu czasu w różnych kulturach.

Ponieważ tak jak wspomniałam, moje oczekiwania rozminęły się z rzeczywistością postanowiłam sprawdzić co ciekawego dzieje się na wykładzie, który był moim numerem drugim na tą godzinę czyli na „Wydajność webowa – jak to ugryźć?” Konrada Kokosy. Słyszałam o tej prelekcji wiele dobrego po Boiling Frogs i byłam ciekawa czy będzie wyglądałą podobnie. Tutaj się absolutnie nie rozczarowałam. Konrad pokazał bardzo fajne narzędzie webpagetest.org, które pozwala nam sprawdzić jak szybko działa dana strona, zlokalizować elementy, które opóźniają jej ładowanie.

Ostatni wykład na który udało mi się pójść to „ASP.NET Core + Docker” Jakuba Gutkowskiego. I było super! Dużo przykładów. Kuba bardzo dobrze się przygotował na problemy z siecią – miał offline obrazy kontenerów, dzięki czemu większość prezentacji przebiegała bez przeszkód. Fajne było też to, że skupił się na pokazaniu rzeczy, które nie ulegną tak szybko zmianie jak inne, więc wiedza zdobyta podczas prezentacji za jakiś czas będzie nadal aktualna. Mnie osobiście to co zobaczyłam pomogło uporządkować wiedzę na temat Dockera, ponieważ troszkę interesowałam się tematem ale dość chaotycznie i tylko w nawiązaniu do prezentacji z jakiś innych konferencji na których byłam.

Kuba pokazał Visual Studio Code w połączeniu z Omnisharpem, który dostarcza intellisense a także całą masę aplikacji na hub.docker.com, które umożliwiają nam wykorzystanie Dockera do nauki czegoś nowego bez konieczności stawiania całego środowiska. Tylko bierzemy kontenerek z tym co nam potrzebne i kiedy przestaje być potrzebne po prostu go usuwamy.

Niestety właśnie po tej prezentacji musiałam udać się do szatni i tam już zostałam:( Szkoda, bo bardzo chciałam zobaczyć prezentację „Pokaż kotku, co masz w środku – czyli jak wygląda kod C# po przetworzeniu przez kompilator” Ryszarda Skonieczki.

Podsumowując – mimo tych wszystkich niedogodności, jakie opisałam na początku bardzo się cieszę, że miałam okazję uczestniczyć w tym wydarzeniu. Organizatorom bardzo dziękuję i trzymam kciuki za to by w przyszłym roku było lepiej.

4Developers – konkurs

Prośbę mam dziś ogromną – kto żyw niech głosuje na mój śliczny kodzik napisany w ramach konkursu na blogu Kokosa. Konkurs polega na stworzeniu najdziwniejszego kodu, który będzie prowadził do wypisania „4Developers”. Zatem by wygrać, zdecydowałam się na napisanie kodu w Perlu jako, że jest to język, który pozwala na różne zamotki składniowe a znam go trochę, bo w dawnych czasach pisałam w nim zawodowo:)
A kodzik jest śliczny, bo jest w nim krówka:


#!/usr/bin/perl
$_=<<'MOO';
                 (__)s
    r            (00)
           /---e--\/     p
        o / |     ||        l
    e    *  /\----/\   v
        e   ~~    ~~
MOO
sub MOO{pop.qq,\Ud,}y/c-x//cd;@_=split//;$_=q@^@;$_=ord;$_=MOO split//;
while($;=pop @_){$_.=$;}print

Tak tak, krówka jest prosto z apt-get moo:)

Jeśli pomożecie wygrać obiecuję opisać jakim cudem to wszystko działa:)

Boiling Frogs 2016 – Nie bądź żabą!

Boiling Frogs
W ostatni weekend miałam okazję uczestniczyć w pierwszej edycji konferencji „Boiling Frogs” odbywającej się we Wrocławiu.

Skąd taka nazwa?
Otóż jest pewna legenda/opowieść/mit mówiąca o tym, że jeśli wrzucimy żabę na gorącą wodę, to ona od razu wręcz instynktownie wyskoczy i ucieknie gdzie pieprz rośnie. Natomiast jeśli będziemy ją powoli podgrzewać w początkowo zimnej wodzie, to nie zauważy że coś jest nie tak i zginie.
Konferencji przyświecał zatem cel, by programiści nie stawali się takimi obojętnymi, powoli zdychającymi żabkami a wręcz przeciwnie – by pobudzić ich do ciągłego rozwoju i zdobywania nowych umiejętności. Stąd podtytuł: „Konferencja Software Craftsmanship”.

Moje wrażenia są bardzo dobre. Mimo, iż była to pierwsza taka impreza organizowana przez ITCorner, organizatorzy stanęli na wysokości zadania. To „Wrocławskie Braterstwo Technologiczne” łączy małe i średnie firmy IT na Dolnym Śląsku.

Cykl prelekcji otwierał Tomek Kaczmarzyk prezentujący założenia i cel konferencji. Tym samym mieliśmy okazję przypomnieć sobie manifest Software Craftsmanship. Zapewne też wiele osób zapoznało się z nim po raz pierwszy.

Po tym wykładzie pojawiły się już trzy ścieżki i ciężko było zdecydować na co się wybrać.
Ja zdecydowałam się na wykład „Developerze, zdevelopuj się sam!” Bartka Zdanowskiego. Mówił on o tym, jak sobie radzić, jeśli na co dzień pracujemy z jakimś nudnym i nieciekawym projektem bądź starą technologią. Podpowiadał jak urozmaicić sobie pracę – np. urzadzając w pracy hackathony a także podsunął parę sposobów na rozwijanie się po pracy – np. właśnie konferencje, książki. Nie dowiedziałam się z tej prezentacji nic dla mnie szczególnie nowego, ale myślę, że dla wielu programistów może być bardzo inspirująca.

Następnie posłuchałam „BDD i wymagania w Agile” autorstwa Wiktora Żołnowskiego. Wybrałam się na ten wykład, gdyż już kiedyś miałam okazję uczestniczyć w prelekcji Wiktora (o tej samej tematyce, co ta, która miała miejsce parę godzin później) i uważam, że opowiada ciekawie m.in. dlatego, że nie szczędzi przykładów z życia. Tym razem również było wiele takich anegdotek, gdyż Wiktor zaczął od wspomnienia o swojej nie dokończonej jeszcze książce opartej o fakty wyciągnięte z prawdziwego projektu.

Kolejny na mojej liście był Michał Gruca z prelekcją „Pozytywistyczny developer, czyli ciągła praca u podstaw.” I to był zdecydowanie mój numer jeden tej konferencji. Polecam obejrzenie nagrania jak tylko pojawi się w sieci. Otóż motywem przewodnim było to jak ulepszyć atmosferę w zespole, by wszystkim pracowało się fajnie i wydajnie.
Michał zwrócił uwagę na ważny problem, który dręczy wielu developerów – tymczasem myślałam, że jestem jedyna;) Jest on nazywany syndromem oszusta. Mianowicie wielu osobom mimo ogromnej wiedzy i specjalizacji w swojej dziedzinie wydaje się, że wie bardzo mało a wręcz nic i wszystko co osiągnął do tej pory jest dziełem przypadku. Prowadzi do to dużego stresu w sytuacji, gdy ktoś zostanie poproszony o pomoc lub realizację jakiegoś przedsięwzięcia, ponieważ jest on przekonany, że sobie nie poradzi. Oczywiście ostatecznie prowadzi to do tego, że jeśli już się podejmie, to sobie poradzi, ale zapewne bywa i tak, że ze strachu nie podejmie się wcale. Większość prezentacji poświęcona była właśnie temu problemowi. Michał namawia nas, byśmy jednak pomyśleli o tym, jak wiele jest osób, które wiedzą mniej od nas i z którymi możemy dzielić się naszą wiedzą. Pozwoli to zauważyć jak wiele jej posiadamy. Mówi też o tym, że dla ludzi, którzy właśnie mają wspomniane obawy ważne jest, by otrzymywać informację zwrotną – że sobie poradziły, że się im dziękuję za pomoc itp. Pomaga to uwierzyć w siebie i bardziej otworzyć na możliwości.

Na kolejnym wykład wybrałam „Effective Software Delivery” autorstwa Jakuba Kubryńskiego. Mówił on m.in. o tym, żeby nie upierać się przy realizacji wszystkich projektów w jednej technologii tylko dlatego, że kiedyś jakiś projekt za jej pomocą stworzony odniósł sukces. Zachęcał do elastyczności i większego przemyślenia tego co i jak się robi w projektach.

Tutaj powoli dochodzimy do momentu, gdzie muszę napisać coś mniej chwalebnego na tle jednej z prelekcji. Na przedostatnią tego dnia wybrałam „Be pragmatic, be SOLID!” Krzysztofa Menżyka. Niestety kompletnie mnie rozczarowała. Temat SOLID to dość teoretyczna kwestia i łatwo o jego nudne przedstawienie. Tak było właśnie tym razem. Owszem – było trochę teorii i trochę przykładów, ale sposób w jaki było to przedstawiane był dość nudny i miałam momentami wrażenie, iż autor sam siebie znudził tą prezentacją. Być może stało się tak dlatego, że dało się zauważyć spadek zainteresowania ze strony uczestników i doprowadziło do spadku energii. Prelekcja skończyła się dużo przed zakładanym czasem – nie wiem czy efekt taki był zamierzony, czy też powód był taki jak napisałam wcześniej.

Na koniec uczestniczyłam w prezentacji Mariusza Sieraczkiewicza „Naturalny porządek refaktoryzacji”. Czytałam książki o tej tematyce i w codziennej pracy oczywiście stosuję refaktoryzację, więc zastanawiałam się co nowego można jeszcze w tej kwestii wymyślić. Okazało się, że Mariusz bardzo fajnie przedstawił i usystematyzował proces refaktoryzacji. Wykład ten tym samym stał się moim numerem drugim tej konferencji i do obejrzenia go w sieci gorąco zachęcam.

Z konferencji wyniosłam jednak nie tylko nową wiedzę, ale również książkę wygraną w konkursie zorganizowanym przez firmę Recruitiva. Zadaniem dla uczestników było podzielenie się jakąś zabawną wpadką w procesie rekrutacyjnym – swoją bądź zasłyszaną.
Nie mogłam się nie podzielić, gdyż mam takich opowieści mnóstwo:) Od bycia tytułowaną „Drogi Panie” na początku maila, poprzez mail zaczynający się od słów „Pani X” czy taki z tematem „Przygarnę kropka” – nawiązanie do kropki w .NET. Opisywałam już kiedyś na blogu ofertę pracy w „Białym Stoku”, ale na pewno nie wspomniałam o ofercie w której nadawca zarzekał się, iż dogłębnie zapoznał się z moim profilem na LinkedIn proponując mi jednocześnie stanowisko pracy w technologii z którą nie miałam nigdy nic wspólnego:)
Przyznam zatem, że nie było trudno coś do konkursu napisać. Bardzo się cieszę, że moje „przeboje” zostały nagrodzone przez organizatorów.

After party po skończonych wykładach odbywało się w pubie „Kontynuacja” zatem można było jeszcze podzielić się swoimi spostrzeżeniami z prelegentami a także wymienić doświadczeniami z innymi developerami.

Podsumowując – nie mogę się doczekać kolejnej edycji Boiling Frogs. Mam nadzieję, że organizatorzy uda się utrzymać poziom, gdyż poprzeczkę umieścili sobie naprawdę wysoko. Trzymam zatem kciuki i serdecznie pozdrawiam!