28 sierpnia 2013

Scalowanie na Scalaniach #2 = scalowych spotkaniach po godzinach

6 komentarzy
Wróciłem do domu cały rozgrzany, aby rozmyślać o kolejnych odsłonach Scalania = spotkań z językiem Scala.


To już drugie spotkanie pod szyldem scalania i przy 60 osobach zarejestrowanych daje poczucie sensowności kontynuacji pomysłu, aby praktycznie, przez przykłady, poznawać Scalę. Idzie całkiem przyjemnie, ale wciąż nie jestem zachwycony z niewielkiego odzewu ze strony uczestników. Na szczęście dzisiaj udało mi się zamienić słowo z kilkoma i wiem, jak i dlaczego należałoby poprowadzić kolejne odsłony.


Dziękuję wszystkim uczestnikom, a w szczególności +Paweł Cesar Sanjuan Szklarz i +Grzegorz Kubiak za wprowadzenie w tajniki Scali na początku spotkania oraz firmie Javart za wsparcie sponsorskie. Sponsor sprawił, że poza wiedzą merytoryczną, mogliśmy zapomnieć (choćby na chwilę) o głodzie i pragnieniu. Dziękuję!


Nowością dzisiejszego spotkania było "odpalenie" (wcześniej planowanych na 10 minut) 15-minutowych wprowadzeń w konstrukcje języka Scala, które mogą być nieocenione przy rozwiązywaniu zadań. Z dyskusji po spotkaniu wnioskuję, że to należy utrzymać.

Co uzmysłowiono mi po spotkaniu to powód, który może być główną przyczyną, że na Scalaniach mamy taką obsadę. W końcu zadania można rozwiązywać samodzielnie w domu, na plaży, gdziekolwiek, więc po co ten trud związany z przyjściem na spotkanie?! Trudno uzasadnić to bez czegoś szczególnego. I tym szczególnym czymś okazuje się być...możliwość porównywania rozwiązań wspólnie i omawianie technik programistycznych. Dyskusja o nich wydaje się być niemożliwa do odtworzenia w samotności. To należy utrzymać.


Pomysłem na kolejną odsłonę jest wybór 3 osób z zarejestrowanych, które przygotują się do poprowadzenia wstępu niezbędny do rozwiązania kolejnych zadanek.

Padł również pomysł, aby pogrupować uczestników w 3-4 osobowe grupy, wśród których byłaby 1-2 osoby znające Scalę. W taki sposób możnaby pozwolić osobom dyskutować o rozwiązaniach w mniejszych grupach, aby później wyeksponować je dla wszystkich. Nie wiem, czy należałoby to wdrożyć już na kolejnym, trzecim spotkaniu, ale z pewnością należy to rozważyć.


Istotną zmianą w stosunku do dzisiejszego spotkania musi być utrzymanie tempa rozwiązywania zadań, tak aby już wykonane nie były rozwiązywane ponownie (co przytrafiło nam się dzisiaj). Jeszcze nie potrafię wyobrazić sobie, co zrobić z nowymi osobami do języka oraz scalania w ogólności, ale wstępnie zaproponowano stworzenie podsumowań spotkań poprzednich w postaci ściąg z konstrukcjami języka Scala, które oczekuje się od uczestników kolejnych spotkań. Z dzisiejszego dnia należy zapamiętać czym jest dopasowanie wzorców (ang. pattern matching), def do definiowania metod i kilka metod scala.collection.immutable.List.

Udoskonaleniem należałoby uważać tworzenie agendy spotkania, które powinno usprawnić komunikację między organizatorami a uczestnikami.

I ten dostęp do Internetu. Mam wrażenie, że na MIMUWie powinno być detalem, który łatwo da się obsłużyć, jeśli zająć się tym z wyprzedzeniem. Trzeba o tym koniecznie pamiętać przygotowując kolejne scalania.

Co jeszcze? Podziel się swoimi pomysłami w komentarzach poniżej, albo na forum Warszawa JUG.

Zachęcam również do nadsyłania propozycji zadań w postaci pull requestów (PR) w projekcie scalania na GitHubie. Zgłoszono mi kilka błędów w sygnaturach metod, więc liczę na kilka PRów niebawem. Wciąż ich za mało. Nie każ mi długo czekać. Proszę.

Trzecia odsłona scalania już niebawem. Bacznie obserwuj platformę spotkań grupy Warszawa JUG.

Zdjęcia ze spotkania znajdują się w moim albumie Scalania 2 na G+.

p.s. Firmy zatrudniające w Warszawie programistów scalowych: Javart, Citi, Coeditor, AdPilot i NetSprint. Jest w czym wybierać i wierzę, że wybierzesz właściwie :-)

22 sierpnia 2013

Poszukiwany Credit Front Office Framework Developer w warszawskim zespole w Citi

3 komentarzy
Jak już zapewne czytałeś/-aś, od 1 lipca jestem pracownikiem Citi w Warszawie na pozycji lidera zespołu ds rozwoju aplikacji.

Tytuł szumny, a na chwilę obecną sprowadza się do budowania zespołu - rozmowy kwalifikacyjne, monitorowanie procesu rekrutacyjnego od strony systemów HR oraz kontaktu z przyszłym pracownikiem i inne równie nietechniczne sprawy. Ktoś mógłby mniemać, że nuda, ale mimo, że nietechnicznie, jestem zachwycony móc to robić. Zawsze to coś innego, a wcale nie mniej zachwycającego.

Jednak sprawy techniczne czekają na mnie i do zespołu będzie rekrutowana osoba na stanowisko "chief of stuff", co zniesie ze mnie obsługę spraw mniej technicznych w zespole. Czujesz się na siłach, aby podjąć się trudów organizacji pracy zespołu? Skontaktuj się ze mną. Namiary na oficjalną ofertę pracy w Citi niebawem.

Ale co skłoniło mnie do opublikowania tego wpisu, to inne wakaty, które wciąż czekają na obsadzenie w moim zespole - Credit Front Office Framework Developer.

Stanowisko wymaga niebagatelnych umiejętności, wśród których znaleźć można znajomość algorytmiki, rozległa znajomość programowania w Javie oraz Scala, Clojure i Hadoop. Do tego dobra znajomość angielskiego w mowie i częste zwycięstwa w walce ze spiętrzeniami w projekcie. Oczywiście nie wszystko jednocześnie, a jedynie czym więcej, tym lepiej. Umiejętność logicznego rozkładania problemu i oprogramowania go w wybranym języku jest najbardziej pożądaną cechą. Więcej w oficjalnej ofercie pracy na to stanowisko (gdyby link nie prowadził do oferty, wystarczy wyszukać frazy "java scala" w obszarze EMEA/Polska/Mazowieckie/Warszawa). W razie pytań, proszę o kontakt ze mną - chętnie odpowiem na wszelkie pytania.

Do zespołu poszukiwani są mniej zaawansowani programiści (juniorzy) jak i wymiatacze. Na dzień dzisiejszy mamy w zespole 11 nietuzinkowych osób (pozdrowienia dla +Grzegorz Balcerek+Paweł Cesar Sanjuan Szklarz+Marcin Pieciukiewicz+Artur Stanek), a potrzebujemy jeszcze raz tyle (!) Roboty jest cała masa różnej maści - od babrania się w błotku po bezkresy refaktorowania w Javie i Clojure oraz pomału i w Scali. Pomożesz? Koniecznie o tym porozmawiajmy!

W takim zespole mógłbym nawet robić za sprzątaczkę. Bezpośredni dostęp do (wiedzy) członków tego zespołu uważam za największy zysk mojego przejścia do Citi. A nadchodzą kolejni i to równie wyczesani!

21 sierpnia 2013

Scalania #2 - spotkania z językiem Scala w najbliższą środę, 28 sierpnia

6 komentarzy
Zapraszam na drugie spotkanie z językiem Scala - Scalania - w najbliższą środę, 28 sierpnia. Więcej informacji logistycznych na stronie spotkania http://scalania.pl.

Największą zmianą w stosunku do poprzedniej, inauguracyjnej edycji będzie 30-minutowe wprowadzenie uczestników w konstrukcje języka Scala, które będą przydatne do rozwiązywania zadań. Dodatkowo motywem przewodnim będzie praca z projektami z GitHuba, co powinno dodatkowo zachęcić uczestników do jego aktywnego użycia na potrzeby własnego samorozwoju.

Będąc pod ogromnym wrażeniem zawartości książki Functional Programming in Scala będzie wiele zadań z rozdziału o monoidach (10. Monoids) i opóźniania wykonywania (5. Strictness and laziness).

Zapraszam!

08 sierpnia 2013

Metoda a funkcja oraz stan w obiekcie i funkcji w Scali

8 komentarzy
Trudno byłoby oczekiwać, że poniedziałek, świeżo po wakacjach, mógłby należeć do najmilszych dni, bo w końcu to koniec letniej laby i to nie byle jakiej. Jeszcze posiedziałbym w Niechorzu. Chociaż tydzień dłużej.

Z pewną obawą wracałem do pracy, ale już w biurze czekał na mnie +Grzegorz Balcerek oraz Marcin Jaskólski. Po lekturze kolejnego rozdziału Scala in Action natchnęło mnie na dyskusję o różnicy między metodami a funkcjami w Scali. Ciekawym, ilu z Was zauważa różnicę.

Niech ja zacznę z przedstawieniem swojego zrozumienia.

Metoda jest wyłącznie składową instancji typu (świadomie nie piszę obiektu, aby nie mylić ze scalowym object), podczas gdy funkcja jest bytem niezależnym, żyjącym samodzielnie. Scala oferuje możliwość przekształcenia metody w funkcję za pomocą podkreślnika (dla każdego brakującego parametru).
scala> class A { def f(n: Int) = 5 }
defined class A

scala> new A().f _
res0: Int => Int = <function1>
Od tej pory res0 staje się funkcją jednego parametru typu Int, która zwraca wartość typu Int. Jak widać, funkcja jest więc wartością pewnego typu. Metoda takiej cechy nie posiada.

W Scali sprawa się trochę komplikuje ponieważ każda funkcja jest reprezentowana przez obiekt typu FunctionX, gdzie X oznacza liczbę akceptowanych parametrów wejściowych. Stąd też możnaby powiedzieć, że nawet dla bytów określanych mianem funkcji w Scali istnieje instancja typu scala.FunctionX, co przeczy, że funkcja jest bytem samodzielnym. Czy, aby na pewno?

A co Ty o tym sądzisz? Chętnie wysłucham Twojej wersji, która wyprowadzi mnie z błędu lub uzupełni braki, gdzie potrzeba. Z góry dziękuję.

Nie długo trwało, aby w biurze pojawił się +Paweł Cesar Sanjuan Szklarz! Czyż można byłoby wyobrazić sobie lepsze rozpoczęcie dnia?! Na pewno nie!

Zaintrygowany Paweł poruszył inny temat odnośnie porównania istoty funkcji i obiektu. Dla mnie oba domykają pewien stan i wykonanie obu jest wręcz identyczne. Paweł obiecał pogłówkować nad tym jeszcze, bo nie mógł się zgodzić z tym, że musi się ze mną zgodzić :-) Czekam z niecierpliwością.

Cudnie móc tak rozpocząć pracę po wspaniałym urlopie. Każdemu życzę tak mocnego zespołu merytorycznie, z którym można poruszyć niejeden nietrywialny temat. Bezcenne.

p.s. Są jeszcze wakaty w moim zespole w Citi. Zainteresowanych zapraszam do kontaktu na priv, aby uruchomić proces rekrutacyjny.

06 sierpnia 2013

Ach, cóż to były za wakacje! Niechorze rządzi

3 komentarzy
Ach, cóż to były za wspaniałe wakacje!

Gdyby ktoś mi powiedział jeszcze kilka tygodni temu, że nad naszym polskim morzem (w Niechorzu i okolicy) może być taka pogoda, fale i ogólnie atmosfera, nie dałbym temu wiary.


Zaplanowaliśmy nasz rodzinny wyjazd na wczesny, sobotni ranek, o 4:00 w sobotę, 20 lipca. Trasa do Niechorza trwała ponad 12 godzin (!), więc kiedy dotarliśmy na miejsce, pozostał nam już tylko krótki spacer po plaży i wio do spania z Maksymkiem.

Kolejne dni już dane nam było spędzić według schematu: pobudka chwilę przed 8, śniadanie do 9, spacer do Boryska do 10 i smażing do 12, aby zdrzemnąć się z Maksymkiem do 15, obiad od 16 do 17 i spacerowanie po okolicy do 20, kąpiel Maksymka i ziuziu spać. Całkiem pozytywnie wpłynęło to na naszą kondycję. Każdemu przydała się spora porcja spania!

Starszaki - Iwetka i Patryk - "broili" do późnego wieczora, więc trudno było znaleźć kogoś niezadowolonego.

Chyba, że wspominamy drugi tydzień, kiedy to pogoda podupadła i zaczęło padać. Tutaj należało już wykazać się inicjatywą, co zrobić z czasem między śniadaniem a południem i później po południowym spaniu Maksymka do wieczora. Mimo przelotnych deszczy, pogoda pozwalała na krótkie wypady nad morze i przez to było cudownie.

Siedzieliśmy nad morzem prawie pełne dwa tygodnie, a wciąż nie mieliśmy dosyć (Agata i Ja z Maksymkiem, bo Iwetka z Patrykiem nawiali do Warszawy na swoje koncerty).

Kąpiel w morzu była (prawie) codziennie. Fale były również. Maksym z Boryskiem bawili się w piachu całym sobą. Słońca ponad miarę. Ryba smaczna (w Kergulenie i u Cywila). Jedzenie w Jantar-Spa na medal. Słowem - żyć, nie umierać.


Akurat ten dwutygodniowy wypoczynek zbiegł się z moim przejściem do nowej pracy w Citi, więc kolejna zmiana - wyjazd poza Warszawę na dłużej - tylko mnie podkręciły. Czuję się wypoczęty i gotowy do kolejnych wyzwań! Kto chętny sprawdzić?! :-)

A skoro o wyzwaniach to zapraszam do udziału w kolejnym przedsięwzięciu - projekcie scalania, którego celem jest spopularyzowanie języka Scala i podreperowanie wiedzy z zakresu algorytmiki (bo mi się kandydaci do pracy wykruszają i nie ma kogo rekrutować). Już zakasałem rękawy i uwijam się, aby zdążyć przez warsjawą, bo chodzi mi po głowie poprowadzenie scalowego warsztatu! Kto wyraziłby zainteresowanie udziałem?