Tym razem chcieliśmy porozmawiać z właścicielem firmy, tworzącej oprogramowanie. Łukasz Piestrzeniewicz prowadzi firmę Ragnarson, zatrudniającą kilkunastu programistów Ruby,a do tego wciąż sam programuje i aktywnie udziela się w społeczności RoR pod nickiem Bragi.

Aleksander Dąbrowski: Dlaczego w Ragnarsonie piszecie w Rubym? Z punktu widzenia programisty wybór jest dla mnie jasny, chciałem się dowiedzieć, jak to wygląda z punktu widzenia przedsiębiorcy.

Łukasz Piestrzeniewicz: Rozmawiasz z programistą, zdajesz sobie z tego sprawę? Przede wszystkim jestem programistą i jeszcze cały czas kocham programować. Czasami moi koledzy mocno klną na to, że się za to biorę i przeszkadzam. Cztery lata temu, gdy zaczynałem swoją karierę jako programista pracujący już nie w dużej korporacji, ale jako freelancer, stwierdziłem, że Ruby to jest właśnie coś takiego co mnie ciągnie. Od tego czasu regularnie się posługuję tym językiem. Oczywiście po drodze były jeszcze mniejsze lub większe miłostki z innymi językami. Póki co, Ruby ze swoim ekosystemem, z tzw. 'mindsetem' ludzi, którzy w nim piszą jest najlepszym rozwiązaniem.

Chociaż miałem okazję przejść przez ładnych parę języków: mocno specjalistycznych czasu rzeczywistego, Javę, C++, zdarzyło mi się programować w Objective C (żeby było śmieszniej aplikacje konsolowe, a nie GUI), nadal uważam, że Ruby jest jednym z najlepszych języków jakie powstały. Ponadto z punktu widzenia przedsiębiorcy bardzo ważne jest dla mnie, z jakiego rodzaju ludźmi współpracuję, jak bardzo mogę im ufać i jak dobrymi programistami są. Środowisko Ruby ma tutaj doskonały wybór jeśli chodzi o programistów. To są naprawdę ludzie o bardzo dużych umiejętnościach, bardzo dużej odpowiedzialności, otwarci na nowości i chętnie idący za wszystkimi najlepszymi praktykami jakie zdarzają się w środowiskach programistycznych.

Dlatego właśnie ze wszystkich sił promuję ten język i w zasadzie biorę tylko i wyłącznie projekty, które są z nim związane. Jeśli się trafią jakiekolwiek inne, prędzej czy później przepisuję je na Ruby.

AD: Opowiedz parę słow o Ragnarsonie, czym się zajmujecie, realizujecie własne projekty, czy zlecenia? Jak radzicie sobie z pozyskiwaniem klientów i czy nie macie problemów z przekonywaniem ich do języka Ruby, dla niektórych jeszcze wciąż języka "egzotycznego"?

ŁP: Ragranson zaczął się jako jednoosobowa działalność gospodarcza. Stwierdziłem, że chcę pisać w Ruby, chcę pisać w Railsach i zacząłem szukać pracy, która by mi to umożliwiała. Zrezygnowałem po prostu z pracy w dużej korporacji i zacząłem pracę na własny rachunek. Na początku nie było najróżowiej, bo Railsy były wtedy w wersji 0.11. Jeszcze nie miały jedynki, gdy udało mi się znaleźc pierwszego klienta.

Wykonywanie projektów dla firm zewnętrznych, to do tej pory była i nadal jest podstawowa część tego co robimy. Tak na prawdę 100% zysków przynoszą nam projekty zewnętrzne. Mamy w tym momencie również dwa własne projekty, nad którymi pracujemy i które zostaną opublikowane w przeciągu dwóch, trzech miesięcy, ale dokończenie ich wymaga jeszcze sporo nakładu pracy. Będzie to, między innymi pierwsza polska chmura pracująca tylko w Railsach.

Nie mamy żadnych problemów, z przekonaniem klientów do pracy w Railsach, ponieważ ufają nam w tym temacie. Pracujemy głównie dla firm zachodnich. Udało się nam wyrobić bardzo dobrą markę wśród zachodnich klientów i jeżeli chodzi o pozyskiwanie zleceń, zwykle wystarcza poczta pantoflowa, że mamy kilku wolnych ludzi, klienci się zgłaszają i dają nam 100 % dowolności jak to robimy. Dla nich ważne jest by dostać stabilny, dobrze przetestowany końcowy produkt w miarę szybko. Jednym słowem chodzi o to, żeby nie miał błędów. I raczej brzydko mówiąc klientom wisi w jakim to jest języku. A my robimy to akurat w Rubym i robimy to bardzo dobrze.

AD: W jakiej metodyce pracujecie? Scrum, Kanban, coś innego?

ŁP: Przede wszystko to co jest dla nas najlepsze w podstawowych technologiach Agile. Sam zaczynałem pracę z XP, teraz raczej ustandaryzowaliśmy się na Scrumie, ponieważ jest łatwy i zrozumiały dla klienta. Ten dosyć ciasny framework, który Scrum posiada (określona metodyka, sposób zachowania), są dla klienta zrozumiałe. Scrum ma bardzo dobrą reklamę, więc stwierdzenie, że pracujemy w Scrumie, czasem wystarcza, żeby klient się zainteresował. Dodatkowo ułatwia to współpracę.

Scrum bardzo dobrze działa przy początkowych fazach projektu, w czasie gwałtownego rozwoju. Natomiast później, kiedy ważniejsze jest utrzymanie projektu, niż szybki jego rozwój, często zaczyna przeszkadzać. W takim wypadku Kanban staje się wygodniejszy. Ale do wszystkiego podchodzimy ze sporą dozą pragmatyzmu. Zasady są zasadami, przestrzegamy ich tak długo, jak nam nie przeszkadzają.

AD: Czy programujecie w parach?

ŁP: To zależy od zespołu, tutaj też jest duża dowolność. Sam często stosuję i narzucam to innym programistom. Nie każdy jest na to chętny, ale mamy kilku zapaleńców, którzy nie są w stanie pracować samemu.

AD: Wiem, że częśc osób pracuje u was zdalnie, jak organizujecie z nimi pracę?

ŁP: Skutecznie.

AD: Zatem z jakich narzędzi korzystacie? :)

ŁP: W każdym projekcie informatycznym komunikacja jest najważniejsza. Moim konikiem jest to, by ludzie porozmiewali się często i jak najskuteczniej. Bardzo dobrym rozwiązaniem jest Skype. Innym, ciekawym rozwiązaniem jest TeamSpeak, programik, który wykorzystuje się do grania, ale można również utworzyć na nim kanał, do którego podłączają się wszyscy programiści biorący udział w projekcie. Wystarczy nacisnąć przycisk i mówi się do wszystkich dostępnych na kanale.

Nie każdy informatyk lubi rozmowę bezpośrednią, bo to już kwestia osobistych preferencji. Dlatego posługujemy się jeszcze Campfire. Jeśli chodzi o tickety, to głównie Track i ostatnio Pivotal Tracker. Natomiast do częstej i bezpośredniej komunikacji, (np. z klientem) Jabber. Tutaj akurat bryluje Google Talk.

AD: Jakich programistów chcielibyście zatrudnić? Jakie taki programista musi mieć cechy?

ŁP. W programiście ważne są cechy charakteru i umiejętności.

Cechy charakteru są ważne bo trudno je zmienić. Najważniejsze to odwaga, chęć do codziennego powiększania wiedzy, umiejętność szybkiej nauki, odpowiedzialność, otwartość na nowe rozwiązania, wysoka inteligencja, umiejętność popełniania błędów i szybkiej ich naprawy, komunikacja z innymi, również obcymi, ludźmi.

Umięjętności dużo łatwiej nabyć. Nawet nasz proces rekrutacji wspiera szybką naukę niezbędnych rzeczy. Założenia rekrutacji są proste: znajdź projekt open source, który Cię interesuje. Znajdź w nim błąd lub funkcjonalność, którymi chciałbyś się zająć (np. w systemie trackingowym projektu). Zrób fork, wykonaj swoją pracę w oparciu o BDD/TDD. Skontaktuj się z osobą utrzymującą projekt i zgłoś swój wkład.

Ludzie, którzy znają git, Ruby, rspec, Ruby on Rails, którzy umieją podzielić się swoją pracą i ustalić szczegóły zadania, wreszcie należycie przetestują swoje oprogramowanie są 'solą naszej ziemi' w Ragnarsonie.

AD: Społeczność Ruby walczy o podawanie widełek płacowych w ogłoszeniach o pracę. Jaki jest Twój stosunek do tego?

Ł.P. Uważam, że gra w otwarte karty jest doskonałym podejściem w którym nikt nie traci. Oczywiście wiem, że moje doświadczenia są ograniczone do pracy z inteligentnymi programistami - ta zasada może nie obowiązywać w innych dziedzinach.

Jednak w wypadku programistów warto wszystkie reguły podać od razu. Dzięki temu firma nie traci czasu na ludzi ze zbyt dużymi wymaganiami finansowymi. Z kolei potencjalni programiści od razu wiedzą z jaką firmą mają do czynienia. Wiedzą czego się spodziewać - i jeśli ich oczekiwania nie są spełnione to mogą przeznaczyć czas na szukanie bardziej odpowiadających im ofert.

Firmy, które nie podają pełnych wymagań, które powstrzymują się przed podaniem widełek uważam za nierzetelne. Liczą na niedoinformowanych, niepewnych siebie programistów. Takich, których można wykorzystać. Z kolei programiści, którzy mimo to aplikują do nierzetelnych firm - no cóż, oni też dostają to co czego chcą. Nie każdy musi pracować w dobrym zespole.