Druga twarz Blipa

Co zrobił ze swoim milionem za Blipa ;)? Czy GG jest “imperium zła”? Jak testuje kod i jakich narzędzi używa? Oraz o to co radzi przyszłym założycielom startup’ów zapytałem “drugą twarz” Blipa.

Blip jeden z kilku klonów twittera w polskim Internecie. Mimo młodego wieku zdążył już wywołać trochę zamieszania w naszym internetowym grajdole. Serwis wcześnie zapowiadany, długo nie był dostępny, następnie w bardzo wczesnej fazie beta został kupiony przez Gadu-Gadu. Dziś trwają prace nad wersją 1.0. Projekt Blip jest powszechnie kojarzony z osobą Marcina, czasem tylko, co bardziej dociekliwi dostrzegą, że wymieniana jest także druga osoba - Zbigniew.
Dziś publikuję wywiad, jaki z nim przeprowadziłem. Mam nadzieję, że przybliży on nieco Blipa od kuchni - zarówno technicznej, jak i biznesowej. W wywiadzie pytam zarówno o technikalia jak i stronę biznesowo-startupową. Staram się też uzyskać odpowiedzi na kilka pytań, które już obrosły legendą. Myślę też, że osoby pracujące nad realizacją własnych pomysłów mogą wyciągnąć z tego wywiadu interesujące wnioski. Zapraszam do lektury.

Daniel: Parę słów o sobie?
Nazywam się Zbigniew Sobiecki i gram w komputer, czasem też w Internet.
D: Opowiedz trochę o swoim doświadczeniu zawodowym. Od jak dawna i w czym programujesz?
Z: Właściwie, to teraz musiałbym spojrzeć do swojego profilu na LinkedIn, bo szczerze mówiąc, nie pamiętam, od kiedy pracuję w “zawodzie”. Myślę, że to już około osiem - dziewięć lat, licząc z pierwszą pracą kiedy nie miałem jeszcze skończonych 18 lat. Programowałem jeszcze wcześniej, na początku w Turbo Pascalu. Potem wpadła mi w ręce jedna z najlepszych na świecie, według mnie, książek o programowaniu - “The C Programming Language” Kernighana i Ritchie’go. I od tego czasu moja kariera zawodowa była związana z programowaniem. Pośrednio, bo na początku pracowałem jako administrator (tworzyłem sporo oskryptowania do zarządzania systemami), potem długo byłem związany z tematem bezpieczeństwa systemów operacyjnych (pisanie odpowiednich modułów kernela Linuksa, FreeBSD), sieci (programowanie snifferów), zagadnieniami telekomunikacyjnymi (systemy billingowe, IVR, VoIP), itd. I tak poprzez tworzenie różnego rodzaju rozwiązań enterprise’owych, posiadających bardzo często interfejs WWW, dotarłem do technologii Webowych.
D: Od jak dawna Ruby/Railsy?
Z: W Ruby zacząłem programować dopiero przez buzz jaki wywołały Rails, mniej więcej w połowie roku 2005. Niestety, bo wolałbym trafić na ten język wcześniej i poznać go od “klasycznej” a nie “frameworkowej” strony. Wcześniej jednak miałem dużo doświadczeń z Perl’em i Python’em, więc nie było mi zbyt trudno się wdrożyć.
D: Wyjaśnij w 3 zdaniach co to jest Blip i dlaczego mam z niego korzystać? (pewnie masz to już nieźle wyćwiczone :))
Z: Blip to platforma komunikacyjna, która pozwala Ci utrzymywać kontakt ze swoimi znajomymi na wiele sposobów. Możesz obserwować co robią i czym rozmawiają przez: stronę WWW, komórkę a także pisać do nich i pisać o sobie przez komunikator i SMS/MMS. Zebrane w ten sposób treści tworzą dla każdego użytkownika multimedialny mikroblog, na którym czas płynie znacznie szybciej. (uff).
D: Czy to prawda ze Blip jest potomstwem Bootstrapa?
Z: Zależy jak na to patrzeć. Blip nie powstawał na Bootstrapie, jednak gdyby nie Bootstrap, pewnie Blip nie powstałby nigdy. Na Bootstrapie bowiem spotkaliśmy się z Marcinem Jagodzińskim.
D: Kto tworzył Blipa i za co był odpowiedzialny?
Z: Marcin stworzył większość XHTML/CSS dla Blipa i starał się uchronić mnie przed robieniem innych rzeczy, takich jak PR, kontakty z użytkownikami, szukanie pomysłów, dyskutowanie ich szczegółów z testerami, które nie pomagały mi w programowaniu. Nasze role były naturalnie zdeterminowane przez umiejętności, które się nawzajem dość dobrze uzupełniają.
D: Czy po przejęciu Blipa przez GG Twoja rola uległa zmianie?
Z: Niekoniecznie. Dalej robimy to, co robiliśmy wcześniej, z tą tylko różnicą, że teraz jest na to więcej czasu i zasobów, które udostępnia nam GG. Tak ludzkich, sprzętowych, jak i finansowych. Przed przejęciem musiałem dbać o posiadanie etatowej niemalże współpracy ze swoimi klientami, żeby się utrzymać
D: Jak dziś duży jest zespól pracujący nad Blipem?
Z: Przy Blipie stale pracują trzy osoby. Od lipca współpracuje z nami Jarosław Rzeszótko.
D: Czy wiadomo już kiedy Blip ma pozbyć się metki beta?
Z: We wrześniu 2007.
D: To być może informacje poufne, ale czy możesz powiedzieć jak wyglądały negocjacje z GG? Prowadziliście je razem czy tylko jeden z was?
Z: Negocjacje prowadziliśmy wspólnie, jako że razem podejmujemy wszystkie ważniejsze dla Blipa decyzje. Zwykle dyskutujemy, aż dojdziemy do konsensusu. A jak nie dojdziemy, staramy się przetestować obie dostępne opcje ;). Wracając do negocjacji, na pewno mogę powiedzieć, że trwały bardzo krótko. Z domknięciem wszystkich kluczowych ustaleń zakończyły się chyba w tydzień.
D: Wasza decyzja o sprzedaniu się GG była odebrana raczej chłodno. Czy możesz przybliżyć jej przyczyny?
Z: Nie byliśmy finansowo ani czasowo gotowi do uruchomienia startupu z prawdziwego zdarzenia bez zewnętrznego finansowania. Pomysł stworzenia Blipa powstał na początku roku i, teraz myślę, że dość naiwnie ocenialiśmy (na kilka tygodni) ilość czasu potrzebną na wypuszczenie wersji beta. “Zróbmy to, puśćmy i zobaczymy co z tego wyniknie, przecież to mały projekt” - mniej więcej tak sobie mówiliśmy. I faktycznie: ani technicznie ani funkcjonalnie nie ma tutaj specjalnych wodotrysków. Jednak bardzo długo zmienialiśmy koncepcje co do sposobu działania serwisu i prezentowania informacji użytkownikowi, tak żeby się w nim nie zgubił i jednocześnie zeby wzrosła jego “grywalność”. Czas upływał, koncepcje się zmieniały, a kod przeistaczał się w poligon doświadczalny, bo nie wszystko dało się uprzednio zaprojektować. Wiele rzeczy musieliśmy przetestować na realnych użytkownikach. Ja dodatkowo musiałem zapewnić sobie utrzymanie z bieżących projektów dla moich klientów, co sprawiało że czasem przez tydzień nie napisałem ani jednej linii kodu. W międzyczasie pojawiło się trochę konkurencji i doszliśmy do wniosku, że jeśli szybko nie pozyskamy inwestora, tak, aby skupić się tylko na rozwoju Blipa, nic z tego nie wyjdzie. Najpierw szukaliśmy inwestora jedynie finansowego, prowadziliśmy nawet dosyć zaawansowane rozmowy. Z wielu względów nie czuliśmy się jednak przekonani do takiej opcji. Potem pojawiła się możliwość współpracy z GG na zasadach, które bardzo nam przypadły do gustu. Należy pamiętać, że przejęcie Blipa przez GG to nie są tylko pieniądze na jego rozwój. To także miliony użytkowników, infrastruktura, i zasoby ludzkie, których nie znajdziemy gotowych, w pudełku na półce w sklepie.
D: Jaką wygląda Wasz deal z GG? Jesteście pracownikami GG czy pozostaliście właścicielami serwisu?
Z: GaduGadu posiada pełne prawa do serwisu. Do nas natomiast należy bieżące rozwijanie go i poszukiwanie nowych kierunków rozwoju, a także wyciąganie korzyści z możliwości integracji z produktami GG. Nie jest więc tak, że Blip od jutra stanie się zakładką w Mojej Generacji lub jedynie dodatkiem do komunikatora. Do możliwości, które otworzyły się przed nami w momencie przejęcia przez GG podchodzimy z namysłem i staramy się integrować w rozsądny sposób.
D: Jak wygląda GG od środka? Czy jest rzeczywiście takim “imperium zła”, jak niektórzy sądzą?
Z: W Gadu-Gadu pracują normalni ludzie, co wydaje się nie być oczywiste dla wszystkich. Jest tutaj na pewno wielu bardzo dobrych programistów, używane są podobne technologie i metodologie tworzenia oprogramowania jak u wiodących producentów software’u. Nie mogę narzekać na swobodę pracy ani żadne bariery formalne, a wydaje się, że na złą prasę “imperium zła” mają wpływ; najgłośniejsi użytkownicy GG. A przecież jeśli Blipa będzie używało m.in. stado rozwydrzonych nastolatków, to nie znaczy, że twórców serwisu należy z nimi utożsamiać.

Technikalia

D: Spróbuj przybliżyć mi architekturę Blipa
Z: Blip nie ma architektury standardowego serwisu WWW. Oprócz tego, że oczywiście, używamy Rails i one serwują treść przez HTTP, to analogicznie musimy dystrybuować wiadomości do i od użytkowników innymi kanałami, takimi jak Gadu-Gadu, MMS, SMS czy Jabber. Mamy więc niejako dwa światy - pierwszy to klasyczny model MVC, dostępny przez Web i drugi, któremu znacznie bliżej do architektury komunikatora. Poza własnymi rozwiązaniami bazujemy na ogólnie używanych na świecie technologiach i bibliotekach - mongrel, nginx, lighttpd, memcache. Nie chcę wdawać się w szczegóły, bo takie dywagacje zwykle prowadzą do dyskusji w stylu Emacs czy Vi, Brainfuck czy PHP. A bez piwa w takie dyskusje nie wchodzę.
D: Dlaczego Railsy? Nie obawiasz się o wydajność?
Z: Railsy dlatego, że najszybciej się w nich pisze. Najkrótsza jest droga od pomysłu, do realizacji. I wszystko jest pod ręką - tworzenie specyfikacji, testów, sprawdzanie pokrycia nimi kodu, dostęp do bazy danych i tak dalej. A może po prostu Railsy, bo Ruby. Jeśli chodzi o wydajność, to długo się zastanawiałem jak uniknąć problemów przy ograniczonych, bądź co bądź zasobach (kiedy jeszcze nie myśleliśmy o inwestorze) i jak poradzić sobie z dużym ruchem. Należy pamiętać, że ruch od strony technicznej na Blipie jest nieporównywalnie większy, niż na innych serwisach przy tej samej liczbie użytkowników. W chwili obecnej, przeglądarka komunikuje się z naszymi serwerami co kilka sekund, nawet bez żadnej interakcji od strony użytkownika. Zastanawiałem się więc, aż w końcu napisałem krytyczne pod względem wydajności komponenty w … ANSI C. Wydajność wzrosła dramatycznie, przy oczywistym spadku możliwości zarządzania tą częścią kodu ;)
D: Z czego korzystacie - pluginy, rozszerzenia, biblioteki, narzędzia?
Z: Używamy kilku niewielkich pluginów, nie ma chyba sensu się nad tym rozwodzić. Dotychczas używanym przez nas frameworkiem do JavaScript’u było jquery, teraz przesiadamy się na Prototype. Wprowadzamy memcache, kod trzymamy w SVN połączonym z Trac’em. Jeśli chodzi o narzędzia, to Jarek wyznaje Emacs’a, a ja aktualnie TextMate. Oba edytory odpowiednio doposażone, częściowo przez nasze własne rozwiązania, np. integrację z RTags.
D: Jak testujecie kod?
Z: Używamy RSpec, RCov i to wszystko mamy zintegrowane w bardzo przyjemnym narzędziu - CruiseControl.rb. Po każdym commitcie do SVN, kod automatycznie poddawany jest pełnemu zestawowi testów i za pomocą RCov tworzone jest zestawienie pokrycia testami każdego pliku źródłowego. Otrzymujemy też informacje o tym, jak wydajny jest nasz kod, ile trwało wykonanie wszystkich testów, itp.
D: Pokaż statystki rake stats :)
Z: Nie pokażę!
D: Czego używacie do śledzenia błędów?
Z: O pojawieniu się dowolnego błędu w środowisku produkcyjnym jesteśmy informowani przez bardzo popularny plugin ExceptionNotification. Z jego pomocą otrzymujemy e-mail z pełnym opisem błędu, backtracem, zawartością sesji i opisem środowiska.
D: Wiem, że Blip był przepisywany. Możesz wyjaśnić dlaczego (i ile razy :)) ?
Z: Nie wiem, czy przepisywanie to dobre słowo. Kod nie był w całości pisany od zera, chociaż na przykład zmiana jquery na prototype wymusiła przepisanie używanego JavaScriptu od początku. W momencie jednak przejęcia nas przez Gadu, zaczęliśmy szeroko zakrojony refactoring tego co było. Kod był kiepskiej jakości, bo obecna wersja Blipa od strony technicznej, to wciąż efekt poligonu doświadczalnego, gdzie sprawdzaliśmy co da się zrobić i wielokrotnie zmienialiśmy fundamentalne koncepcje. Trudno w takiej sytuacji, przy ekstremalnie ograniczonych zasobach czasowych, dbać np. o kompletność czy integralność testów i stuprocentowe usunięcie niepotrzebnych części. Przed przejęciem nas przez GaduGadu, codziennie stawaliśmy w obliczu wyboru - dodać nową funkcjonalność, poprawić obecną, czy może zadbać o więcej mówiące nazwy zmiennych i prawidłowe wcięcia. I to wszystko maksymalnie przez 1-2 h dziennie.
D: Co zmieniło się od strony technicznej po przejęciu przez GG?
Z: Tak jak powiedziałem wcześniej - mamy więcej czasu i zasobów. Mogliśmy pozwolić sobie na powiększenie zespołu i wspólnie, z Jarkiem przemyśleliśmy od początku całość kodu i chcemy zrobić tak, żeby nie trzeba było się go wstydzić. Niebagatelnym wyzwaniem jest też kwestia wydajności całego rozwiązania. Inaczej jest, kiedy tworzymy serwis mało rozpowszechniony, dostępny na zaproszenia, gdzie liczba użytkowników rośnie sobie w tempie możliwym do ogarnięcia, a inaczej kiedy mamy do dyspozycji takie medium jak serwisy GaduGadu, za pomocą których niewątpliwie będziemy chcieli wypromować Blipa. W takiej sytuacji musimy być przygotowani na bardzo szybkie i nieinwazyjne skalowanie. Chcemy też się uczyć na błędach Twitter’a, który przez długi czas na początku swojej działalności miał duże problemy wydajnościowe.

Biznes

D: Jak się odnalazłeś jako inżynier w biznesowych realiach? Czego się nauczyłeś? Co Cię zaskoczyło?
Z: Podstawowa lekcja, którą akurat przeszedłem już jakiś czas temu, szukając finansowania dla poprzedniego projektu jest taka, że pieniądze nie są problemem. Jeśli jest w miarę dobry pomysł, zaangażowanie i ludzie, którzy potencjalnie mają szanse go zrealizować - finansowanie zawsze się znajdzie. Oczywiście nie samo, trochę trzeba się postarać. Lekcja, którą dały mi negocjacje w sprawie Blipa jest taka, że pieniądze to nie wszystko, a inwestor wyłącznie finansowy, który nie ma doświadczenia z branży w której działamy, to nie zawsze najlepsze wyjście. Bardzo ważne są też dobra niepieniężne, które można uzyskać wraz z inwestycją. Zwłaszcza kiedy nie mamy doświadczeniu w zarządzaniu spółką, organizowaniu różnego rodzaju aspektów działań firmy, którą chcemy stworzyć. I trzecia kwestia o której się przekonałem, że w tego typu transakcjach nie ma żadnej magii, której można się spodziewać patrząc z perspektywy otwartego okna z kodem programu. Zdaję sobie sprawę, że to wszystko są rzeczy dosyć banalne i mniej lub bardziej oczywiste. Ale dopiero przekonanie się o nich na własnej skórze tworzy doświadczenie, którego nie zdobędziemy czytając wywiad taki jak ten.
D: Co dziś zrobiłbyś inaczej? Największa porażka?
Z: Z perspektywy czasu, od strony technicznej widzę, że popadłem trochę w pułapkę przedwczesnej optymalizacji. Planowaliśmy znacznie krótszą wersję beta i utrzymywanie serwisu przez jakiś czas wyłącznie z własnych środków. Ale wtedy wszyscy rozpisywali się o tym jak walno działa Twitter, a nasza aplikacja jest dużo bardziej dynamiczna, pomimo mniejszego o kilka rzędów wielkości grona użytkowników. Zainwestowałem trochę czasu w optymalizowanie różnych rzeczy, które teraz wydają się być bez znaczenia. Ale mój tok myślenia wtedy, nadal wydaje mi się być w pełni uzasadniony. Teraz jednak wiem, że i tutaj należy nieco uważniej rozejrzeć się za złotym środkiem i jedynie rozważyć implementację wentyli bezpieczeństwa, a nie od razu je budować.
D: Dla równowagi - największy sukces?
Z: Wydaje mi się, że jednym z naszych lepszych posunięć dotychczas było bardzo wczesne wypuszczenie API. Nasi pierwsi testerzy to w większości programiści, którzy bardzo szybko zaczęli tworzyć aplikacje i biblioteki korzystające z Blipa. Inne serwisy najczęściej odwlekają ten moment, zwłaszcza na polskim rynku. Ewentualnie wypuszczają coś, co nawet trudno nazwać interfejsem programistycznym, nie mówiąc już o dokumentacji do niego i stworzeniu miejsc do dyskusji nt. wykorzystania udostępnionych narzędzi. Nie zarzucamy tego kierunku, lada moment pojawi się znacznie bardziej zaawansowane API, umożliwiające zrobienie w Blipie prawie wszystkiego za pomocą własnego oprogramowania. Patrzymy na nasz produkt bardziej jak na platformę komunikacyjną, łączącą wiele kanałów wymiany informacji niż na zamknięty serwis, w którym tylko my decydujemy jak będzie można go wykorzystać. Tutaj dajemy duże pole do popisu naszym użytkownikom i uważam, że to świetna decyzja.
D: Co zrobiłeś ze swoim milionem dolarów za Blipa?:)))
Z: Zakopałem w ogródku, na wypadek, gdybym potrzebował bilonu przy nowych pomysłach. A i te zaczynają majaczyć na horyzoncie ;)
D: Gdzie chciałbyś być za 5 lat?
Z: Pewnie na urlopie! Mam nadzieje że nie pierwszym urlopie od czasu naszej rozmowy, bo ostatni miał miejsce chyba trzy lata temu. A poważnie mówiąc - moje plany nie sięgają tak daleko. Śmiem twierdzić, że nawet nie dalej niż na trzy miesiące do przodu. Jest dużo rzeczy do zrobienia; Internet i okoliczne rynki to miejsce dla realizacji nieskończonej ilości pomysłów. Podoba mi się tu, podoba mi się kreatywność jaką wyzwala “startupowe” środowisko. Nie mam pojęcia do czego mnie to doprowadzi, ale na pewno nie mam zamiaru w najbliższym czasie zmieniać profesji. Bez względu na to jak banalnie to brzmi - patrzę w przyszłość z nadzieją, że jeszcze niejedną ciekawą przygodę uda mi się przeżyć.
D: 3 porady dla osób które chcą stworzyć swój startup - samo gęste bez lania wody…
Z: Mówi się, że jutro zaczyna się dziś.
  • Po pierwsze, nie czekaj więc do jutra, nie szukaj idealnego frameworka, języka programowania, najlepszej pogody, spokojnej sytuacji na Bliskim Wschodzie. Usiądź, pomyśl, spisz, poeksperymentuj i jak najszybciej wypuść pierwszą wersję. Niech nie będzie idealna, niech robi dobrze tylko jedno. Pokaż to znajomym, i przemyśl ich reakcję. Nie ma nic bardziej stymulującego niż zadowoleni użytkownicy i puchnące logi od serwera WWW. To pobudza do dalszego działania. Jeśli dojdziesz do tego punktu, to znajdziesz jeszcze czas na zaokrąglenie rogów i “efekt lustra” pod obrazkami.
  • Po drugie: nie bój się konkurencji, filtruj to co do Ciebie dociera, ale przede wszystkim rób swoje. Jeśli masz dobry pomysł, na tyle dobry że potrafisz przekonać do niego siebie i wpakować w to swoich znajomych: rób swoje.
  • I po trzecie: pomysł to nawet nie połowa sukcesu. Bez zaangażowania i dobrej realizacji, każdy pomysł wart jest 0 PLN. Brutto.
[]
Spodobało się? Podziel się z innymi: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • Wykop
  • Gwar
  • Digg
  • Technorati

Liczba komentarzy: 6 »

  1. bmalkow said,

    sierpień 28, 2007 @ 21:58

    :-D
    Miło czytać success stories :-)

  2. pauluZ said,

    sierpień 30, 2007 @ 00:02

    Jestem pod wrażeniem.
    Konkretne, techniczne dane i porady :)
    Myślę, że tworzenie API na samym początku to kluczowe działanie - bardzo dobra rada.
    3 ostatnie punkty to ‘przykazania’ każdego ‘freaka’ nastawionego na cel :)

  3. ciukes said,

    sierpień 30, 2007 @ 02:30

    Niech za moj komentarz posluzy artykul “W Dolinie Krzemowej milionerzy czują się biedni” … czego wszystkim startupowcom zycze!:)
    http://gospodarka.gazeta.pl/gospodarka/1,60846,4437114.html

  4. fred_4 said,

    wrzesień 5, 2007 @ 13:51

    Jedno pytanie techniczne: Czemu serwis został przepisany z biblioteki jQuery na prototype? Co przeważyło nad wyższością tej drugiej?

  5. Anonim said,

    wrzesień 8, 2007 @ 00:02

    Od kiedy to Pan Zbigniew może takim mentorskim głosem radzić, że *„dobry pomysł to podstawa”*, skoro sam nie jest autorem żadnego z tego co wiem? :-))) Bardzo odważne słowa.

    Czy dzisiaj każdy może już przenieść zagraniczny sukces na swój rynek i być uznawanym za kogoś mającego coś mądrego do powiedzenia, utożsamiając się z jego pozytywnym odbiorem?

    Technikalia mocno informacyjne, dzięki

  6. zbigniew said,

    wrzesień 10, 2007 @ 19:01

    @fred_4: Powodów było kilka, m.in. to, że w nowej wersji używamy w wielu miejscach RJS, a do prototype wsparcie jest “out-of-the-box” i jest wygodniej.

    @Anonim: Nie wiem na jakiej podstawie uważasz, że nie jestem autorem żadnego pomysłu, zwłaszcza, że się nie podpisujesz, ale mniejsza z tym. Rozumiem, że chodzi o to, jakoby w “klonowaniu Twittera”, nie było nic odkrywczego.

    Zatem po pierwsze: przenieść sukces to jest chyba.. sukces. Można przenieść produkt, można go skopiować, ale nie jest to równoznaczne z sukcesem na nowym rynku. Blip jest oczywiście klonem Twittera tak samo, jedna sieć społeczna kopią innej. Chyba na tym rynku nie do końca rozumiemy pojęcie klona. To jakby mówić, że powinien być jeden producent samochodów (wszystkie takie podobne, działają tak samo, klon jak się patrzy).

    PS1. Nigdzie nie powiedziałem, że dobry pomysł to podstawa, wręcz przeciwnie. Zapraszam do powtórnej, uważnej lektury artykułu i polecam przekonanie się na własnej skórze co oznacza takie “klonowanie”. A może wtedy i wrażenie mentorskiego tonu zniknie. Dzięki za komentarz.

RSS feed for comments on this post · Adres TrackBack

Dodaj komentarz