Sprzątaj swój kodzik ciągle

Siadam do kodu i piszę… i piszę… i piszę… a potem save, commit, push. Done? No, nie bardzo. Jeśli pracujesz w TDD, to dobrze wiesz co to jest: red, green, refactor. REFACTOR!!! Czyli moment kiedy po prawie skończonej pracy refaktoryzujemy kod. To  sprowadza się do posprzątania śmieci, usunięcia zbędnych zmiennych, metod i klas oraz wprowadzenia abstrakcji tam gdzie trzeba – ogólnie doprowadzenie kodu do stanu używalności. Jeśli nie pracujesz w TDD to pewnie i tak sprzątasz twórczy bałagan. No chyba, że tego nie robisz; to może pora zacząć.

Dlaczego kod ssie?

Ile razy ktoś marudził na kiepski kod? Jak to jest, że taki kod powstaje? Sam się przecież nie pisze. To my go takim robimy. Czasem nie ma czasu, żeby sprzątnąć bo deadline albo jakakolwiek inna wymówka. Czasami po prostu nie mamy chęci i energii; to jednak nikogo nie zwalnia z obowiązku sprzątania od czasu do czasu. Przecież koniec końców to  my w przyszłości będziemy z tym kodem najwięcej obcować. Zawsze można coś zwalić na innych członków zespołu. Im większy zespół tym łatwiej ale czy na pewno o to chodzi? Jesteśmy dorośli… trzeba po sobie posprzątać. Jaki jest sens trzymania 10 pustych linii pomiędzy metodami? To nie jest kartka papieru gdzie kiedyś coś dopiszemy. Nic tak nie rozprasza jak wtedy, gdy przewijając kod widzisz raz większe a raz mniejsze dziury w kodzie. Do tego jakieś kawałki kodu wykomentowane. Serio? Przecież nawet nie wiadomo czy to jeszcze działa. Co to robiło. Wywal te komentarze i wywal puste miejsca i niech to jakoś wygląda. Na początek tyko tyle i aż tyle. Dzisiaj po otwarciu 690 linijkowego pliku zacząłem wywalać takie puste miejsca. Jak skończyłem zostało ich 615. Nie usunąłem wszystkich pustych linii bo to by było bez sensu.

Puste linie

Puste linie są świetnym narzędziem do poprawienia czytelności kodu gdy oddzielają metody, gdy oddzielają usingi od namespace-a czy logiczne kawałki kodu od siebie. Wtedy ich użycie jest bardzo zasadne. Kod ma się dobrze i łatwo czytać a takie wolne miejsce pozwala coś zaznaczyć . Edytory kodu nie mają (na szczęście) pogrubiania czy ustawiania różnych fontów dla kawałków kodu (wyobrażasz sobie pół metody boldem bo to jest ważniejsze pół metody?). Wolna linia jest naszym narzędziem.

A wracając do wątku… po wyczyszczeniu tego jednego pliku odpaliłem te same reguły na całym solution i okazało się, że 120 plików się zmieniło. Jak dobrze, że są automaty, które potrafią usprawnić ten proces 🙂

A jak to jest w innych branżach?

W piekarni, cukierni, kuchni robi się bałagan. To jest naturalny efekt uboczny procesu przygotowania produktu. Tu się coś wysypie, tam się wyleje. Nie da się utrzymać kuchni bez jednego brudka, bez jednej skazy podczas gotowania,ale naturalne jest, że po skończonej pracy wszystko się sprząta. Nie zostawia się na kiedyś. Nikt nie mówi, jutro. Jak się zostawi syf to potem się zalęgnie robactwo i będzie coraz trudniej doprowadzić lokal do stanu używalności. Zresztą, czy ty jako klient swojej ulubionej restauracji wolisz, aby sprzątali na kuchni codziennie czy może nie sprzątali w ogóle a raz na pół roku (jak wynegocjują z klientami sprint na sprzątanie) robili miesiąc wielkiego, gruntownego sprzątania? Myślisz, że tak sobie wymyślam? Zobacz jak pracują kucharze w MasterChefie gdzie gotują amatorzy a jak w Top Chefie gdzie gotują zawodowcy. Pomimo skrajnie skromnych ilości czasu w Top Chefie na ugotowanie czegokolwiek – oni ciągle sprzątają. Gotują i ciągle, dbają o to aby było czyściutko. To nie jest zryw przed końcem czasu, to jest ciągły proces, ich druga natura. Talerz leży do wydania a stanowisko prawie jak nietknięte. W MasterChef-ie natomiast jest więcej czasu a mimo tego często na stanowiskach jest… bałagan. Jest bałagan, bo uczestnicy nie mają we krwi ciągłego sprzątania swojego warsztatu no i jak już dzieło jest skończone to nie ma czasu aby doprowadzić stół do porządku. To jest różnica pomiędzy profesjonalistami a amatorami.

Konferencja pod chmurką z piwkiem w ręce

logo-colour

Dawno dawno tutaj nic nie publikowałem. Sporo tematów leży w kolejce i czeka aż będzie chwila czasu. Ostatnio ten czas dosyć skutecznie zjada coś, co zaczęło się od niewinnego… „a może byśmy zrobili konferencje?” Było to dawno dawno temu, gdzieś ponad rok temu. Wracając z konferencji tak od słowa do słowa razem z Piotrkiem stwierdziliśmy, że można by zrobić konferencję. Niestety ani czasu ani sposobności do tego nie było. Jednak pewnego dnia pojawiła się mała, mikroskopijna szansa… przy odpowiednim ułożeniu Księżyca, Jowisza, Marsa i kilku innych głazów w kosmosie rzucone „lepiej zróbmy swoją własną konferencję” trafiło na podatny grunt. A potem to już poleciało. I tak mamy dzisiaj 1.08 a ja mam ogromną przyjemność zaprosić Ciebie na konferencję BBQ4.IT która odbędzie się 9 września czyli dobre zakończenie wakacji i początek nowego roku intensywnych wyzwań. To również ostatni weekend przed dniem programisty i jeśli dobrze pamiętam dzień admina więc idealny termin aby zrobić konferencyjkę przy grillu i piwku. Założenia są proste. Ma być miło i przyjemnie dlatego zaprosiliśmy najlepszych z najlepszych polskich mówców z branży, do tego zorganizowaliśmy zadaszenie (jakby padało bo event będzie na wolnym powietrzu), profesjonalną ekipę co nam usmaży kiełbaski i naleje piwko. Wszystko free. Jedyny wymóg to posiadanie wejściówki, które są darmowe. Dlatego zarejestruj się już teraz zanim wejściówki jeszcze są.

Zapraszam i do zobaczenia 9.09 Bielsko-Biała BBQ4.IT

Konferencja Get.Net

Dwa lata temu wybrałem się na pierwszą edycję Łódzkiej konferencji GET.NET, która była moim zdaniem bardzo udana. Pewnie nie tylko moim bo powstały kolejne edycje. W tym roku zaś otrzymałem zaproszenie aby poprowadzić prelekcję. Zaproszenie przyjąłem i tak oto wylądowałem kolejny raz na GET.NET. Oprócz swojego gadania o IoT udało się posłuchać kilku fajnych wykładów. Ścieżki były dwie więc trzeba było wybierać a nie było łatwo. Na pierwszy rzut poszedł Maurice de Beijer z wykładem o dockerze. Próbowałem podejść do tematu kilka razy ale bez większych emocji, po prostu nie miałem wielkiej potrzeby. Maurice pokazał tak naprawdę podstawowe „Hello Docker World” ale w taki sposób, że wszystko podał elegancko na talerzu. Prosto i do rzeczy, jeśli nie wiedziałeś co to Docker to wyszedłeś z wiedzą a jeśli już coś liznąłeś w temacie to też można było się co nieco dowiedzieć. Później poszedłem na DevOpsy z mBanku w wykonaniu Piotrka Stappa. DevOps oglądałem przez szybkę bo codziennie zajmuję się innymi rzeczami więc stwierdziłem – a co tam, zobaczmy coś nowego. No i nie zawiodłem się, Piotrek pokazał wiele elementów i wiele rozwiązań, które warto stosować a główna oś – koszykówka pięknie się w to wpasowywała. Potem Andrzej Krzywda ze swoim Legacy to DDD – wreszcie bo z tym wykładem nigdy jakoś po drodze nie miałem, albo inna ścieżka albo nie byłem na konferencji gdzie o tym mówił a temat arcy (arkency) ciekawy. Fajnie słucha się człowieka, który opisuje swoją ścieżkę do oświecenia i widzi się sporo wspólnych części*. Temat trudny ale pokazany prosto i pokazany gdzie są korzenie tego wszystkiego. Od mnie dodam tylko, że warto się tym zainteresować bo to działa i ułatwia życie – btw. odszukajcie play listę Andrzeja na spotify i przeczytajcie nazwy utworów, to jest lista Andrzeja do refactoringu 🙂 Dalej na talerzu znalazł się Michał Jasiorowski mówiący o Akka.net Kolejny temat, którym warto się zainteresować bo actor model to mimo, że stary pattern to bardzo mocny. Sama akka.net to 1 do 1 port z javowej akka więc korzenie całkiem solidne. Na deser już bez możliwości wyboru, jeden wspólny wykład i Wojtek Erbetowski o budowaniu api dla apek mobilnych. Sam bym nie wybrał się na to bo mobilnych apek nie piszę i nie zapowiada się na razie więc…. ale nie było wyboru więc poszedłem i posłuchałem. No i Wojtek otworzył mi oczy na wiele spraw. Małe urządzonka jakimi są telefony i tablety rzeczywiście maja swoje wymagania. Dla mnie bardzo ciekawy wykład.

Co bym zmienił w konferencji? Hm… myślę, że z salami dziwnie wyszło bo aula spora – tak aby pomieścić wszystkich, później świeciła pustkami bo połowa ludzi poszła do innej sali. Mimo tego że na dużej auli ludzi było sporo to wyglądało że wcale wiele nie ma. Chyba lepiej by wyszło gdyby dalsze wykłady były na małych salkach. No i ciasteczka i kawa na tym samym poziomie była by mile widziana. Reszta super. Miejsce parkingowe, łatwy dojazd, fajne wykłady i tylko piwa pokonferencyjnego szkoda no ale trzeba było wracać 🙂

Wroc# czyli świetna konferencja

Stadion śląski we wrocławiu

Wielkie oczekiwania po pierwszej, wspaniałej edycji Wroc#-pa nie zostawiły wiele miejsca na potknięcia organizatorom. Pierwsza edycja wystartowała z wysokiego C. Oczekiwania były ogromne co zresztą było widać w jakim tempie rozchodziły się wejściówki – dosłownie w sekundach. Lineup był taki, że się zupełnie temu nie dziwię. Zresztą pisałem o tym tutaj. No a jak było? Było świetnie. Piękna lokalizacja chociaż trochę słabo oznaczona przez co nie było łatwo trafić ale przy takim rozmiarze obiektu baner by musiał być chyba na cały stadion więc spoko, chyba każdy kto miał dotrzeć dotarł.

Stadion śląski we wrocławiu

Na pierwszy rzut był Mark Rendle a właściwie miał bo nie przyjechał… znowu… jak ostatnio… tzn nie jak ostatnio. Na szczęście nie dopadła go grypa tylko po prostu się spóźnił. Zaczęło się więc od Iana Coopera. Gościa, którego uwielbiam za bardzo głębokie i szerokie zarazem zrozumienie tematu. Jego wykłady mimo, że nie porywają lekkością w formie to są przesycone mięsem. Wszystko składa się jak puzzle. Tym razem było o mikroserwisach i znowu Ian pięknie przeprowadzał krok po kroku, co i dlaczego. Świetny wykład – no chyba, że ktoś czytał slajdy to tracił co najlepsze 🙂 Potem Mark Rendle – wreszcie dotarł i mógł poopowiadać o startupach i porażkach jakie w nich uczynił. Forma lekka i bardzo przyjemna. W między czasie zapodano śniadanie. I to jakie….

hot dogi na wrocsharp wielki bar kanapkowy na wrocsharp

Hit sezonu… hotdogi i morze kanapeczek.

git is easy - enrico campidoglio

Wsparci kaloriami Enrico poopowiadał jaki to GIT jest prosty i banalny z czym muszę się zgdzić. Enrico pięknie pokazał też jakie trudne problemy rozwiązuje GIT – kolejne wersje, poprawki do wydanych wersji, wersje z nowymi feature-ami – wszystko to z czym codziennie musimy się stykać. To już nie jest trywialne i każdy kto miał do utrzymywania 3 wersje wstecz dla dziesiątek klientów i pracował nad „next ver” jednocześnie wie jakie to jest upierdliwe. To nie jest łatwa materia. Enrico pięknie to uchwycił a potem popłyną w morzu funkcjonalności jaką oferuje git. Dalej Julie z bardzo przyjemnym wykładem o vNext + entity + postgre ale wszystko na macu. Da się? Pewnie, że się da. Jeśli nigdy nie robiłeś nic z vNextem vel .Net Core to to jest niezła kopalnia wiedzy.

chris klug wrocsharp

Dalej Chris zalał nas „gnojówką” w postaci ekosystemu js-owego. Chris świetnie pokazał jak wyglądają problemy „na froncie”. Piszę gnojówka nie osobiście bo imho prezentacja świetna natomiast dotyka wg mnie najsłabszej rzeczy w całym js-ie czyli rozwalony i słabo działający ekosystem. Zresztą to ładnie pokazała afera z padding leftem kilka dni później 😉

No nic, ostatni wykład i Glenn z ekipy tworzącej .net core pokazał co będzie a będzie jeszcze lepiej niż już jest. Na prawdę fajny wykład i naprawdę czekam z niecierpliwością co tam wypuszczą z tego Redmond. Jak wszystko będzie pięknie działać a vs nie będzie się wieszać to czekają nas piękne czasy 🙂

W między czasie można było zaglądnąć do muzeum komputerów i pooglądać jak to kiedyś bywało. Niektórym jakieś niezdrowe emocje się włączały na widok lotusa 🙂

muzeum komputerów na wrocsharp, dzurkarka muzeum komputerów na wrocsharp muzeum komputerów na wrocsharp

 

A na koniec pozostała wisienka na torcie. Czyli panel. Wynalazek stworzony przez Dana Northa aby zeszłoroczną dziurę w czasie zapełnić. Miało to tak dobre przyjęcie, że i w tym roku znalazł się na to czas. A więc, pytania od publiczności i zupełnie lekka atmosfera. Mark świetnie to poprowadził, w dodatku w tym czasie zaczęło się lać piwko uwarzone specjalnie na konferencje. W tym roku było w czym wybierać. No oczywiście rozmowy rozmowy rozmowy. Ta konferencja ma to do siebie, że przyciąga bardzo dużo ludzi i można spotkać tam bardzo dużo znajomych z daleka i bliska. Na prawdę warto tam być.

Powyższy wpis nie był specjalnie streszczeniem wszystkich wykładów bo na wielu blogach o tym poczytacie więc spisałem tylko swoje odczucia. Jeśli chociaż trochę Cię zainteresowałem to polecam pooglądać filmiki z wykładów – już wychodząć 🙂 (to jest plus jak wpis długo się kisi w drafcie).

My First Startup (And Other Mistakes) (Mark Rendle) from WROC# Develop Yourself on Vimeo.

 

From Monolith to Microservices (Ian Cooper) from WROC# Develop Yourself on Vimeo.

Entity Framework Core and OS X: WAT? (Julie Lerman) from WROC# Develop Yourself on Vimeo.

The Things Git Can Do (that none of the GUIs ever told you about) (Enrico Campidoglio) from WROC# Develop Yourself on Vimeo.

What do you mean "a front-end build pipeline"!? (Chris Klug) from WROC# Develop Yourself on Vimeo.

ASP.NET Core (Glenn Condron) from WROC# Develop Yourself on Vimeo.

Dzień po konferencji dzięki Piotrkowi udało nam się zapisać na wycieczkę po Objectivity. Mimo, że ludzie zmęczeni organizacją całej tej świetnej konferencji to znaleźli dla nas chwilę czasu aby pochwalić się swoją firmą – dziękujemy. A mają się czym chwalić oj mają. Fajne biura, świetne kuchnie, bardzo fajnie wyglądające procesy, na mnie zrobili bardzo miłe wrażenie. I pewnie ktoś stwierdzi – a pewnie dostałeś naklejki to dobrze o nich piszesz 😛 – nie nie dostałem naklejek – kawę. Natomiast ostatnio Wrocławskie Objectivity zajęło drugie miejsce w rankingu najlepszych miejsc pracy do 500 osób – najwyżej notowana firma IT w tej kategorii więc coś jest na rzeczy.

Gratuluję i niecierpliwie czekam na przyszłoroczną edycję.