Od lokalnego serwisu do globalnej marki – wywiad z Grzegorzem Krysiakiem, CTO ZnanyLekarz.pl

7 lat to z perspektywy rozwoju produktu czy startupu lata świetlne. Z drugiej strony tylko tyle czasu potrzebował portal ZnanyLekarz, należący do międzynarodowej grupy DocPlanner, aby zdobyć pozycję globalnego lidera rynku umawiania wizyt lekarskich online. Wspólnie z Grzegorzem Krysiakiem, CTO firmy, postaramy się zrekonstruować drogę od lokalnego serwisu do globalnej marki, odwiedzanej przez miliony użytkowników miesięcznie.

Tak dynamiczny postęp niesie ze sobą szereg wyzwań, jakie stają przed zespołem IT. Jaka była historia rozwoju produktu, od kilku osób do połączenia zespołów programistów z Warszawy i Barcelony? O tym już za moment.

Opowiemy o wszystkich kluczowych decyzjach ze strony IT. Odpowiemy również na pytanie, w jakiej części sukces całego przedsięwzięcia determinowany jest przez zgrany zespół programistów.

Spis treści

Na początek – krótki zarys

W 2011 roku Mariusz Gralewski odkupuje działający od 2 lat serwis znanylekarz.pl. Kwota transakcji była dużo większa od realnej wartości portalu, ale twórca GoldenLine dostrzega w tym niszę. Wie, że ponad 3 miliony Polaków poszukuje lekarzy, a szczególnie tych najlepszych, przez internet, niestety w dużej mierze bezskutecznie.

Maj 2017 roku, grupa DocPlanner zamyka kolejną rundę finansowania, tym razem na poziomie 15 milionów dolarów. Łączna kwota inwestycji w DocPlanner do tej pory, uwzględniając ostatnią rundę, wynosi 46 miliony dolarów. W ubiegłym roku DocPlanner połączył siły z hiszpańską spółką Doctoralia, wchodząc tym samym na rynki Ameryki Łacińskiej i rozwijając swoje usługi w umawianiu wizyt lekarskich. Obecnie marka jest obecna w 24 krajach, a do jej “corowych” rynków należą Włochy (MioDottore.it), Polska (ZnanyLekarz.pl), Turcja (Doktortakvimi.com) oraz Hiszpania, Brazylia i Meksyk.

Rozmowa z Grzegorzem Krysiakiem

Piotr Nowosielski: Cześć Grzegorz, dziękuję, że znalazłeś czas na rozmowę. Przejdziemy długą drogę, od punktu wyjścia do pozycji, w której obecnie jesteście. Proponuję zacząć klasycznie, od początku. Cofnijmy się zatem do 2011 roku, gdy kupiliście serwis ZnanyLekarz. Przyświecał Wam wtedy jasny cel, aby zdominować polski rynek.

Miałeś już spore doświadczenie z GoldenLine, serwisem który rozwijałeś wspólnie z Mariuszem Gralewskim. Gdy deal związany z kupnem portalu był ostatecznie klepnięty, stanąłeś na czele zespołu IT, który miał to wszystko poukładać. Zastanawia mnie prosta sprawa od czego trzeba było zacząć?

Grzegorz Krysiak: Od początku! 🙂 Serwis, który kupiliśmy, stworzony został w 2000 roku przez jedną osobę. Mnóstwo kodu i autorskich rozwiązań. Z naszej perspektywy w architekturze brakowało struktury, która pozwoliłaby na łatwe dokładanie nowych funkcjonalności i rozszerzanie istniejących. Dodatkowo, chcieliśmy też podrasować design. Podjęliśmy decyzję, aby przepisać wszystko praktycznie od zera. Otworzyliśmy zatem pusty projekt i zaczęliśmy pisać. Za główny cel, który pomagał nam podejmować decyzje obraliśmy: stworzyć serwis, który obsłuży duży ruch i będzie pozwalał na proste wprowadzanie nowych funkcjonalności.

Podejmując decyzję o zakupie serwisu, byliśmy nadal zaangażowani w GoldenLine, ZnanyLekarz był “side-project’em”. Musieliśmy znaleźć czas i osoby, które pomogą w przepisaniu serwisu.

PN: Jak wielkie tempo sobie narzuciliście, jakie były priorytety, jeżeli chodzi o część IT? Domyślam się, że z racji tego, iż portal GoldenLine bardzo dobrze funkcjonował, nie było presji na to, aby jak najszybciej zarabiać, tylko mogliście skupić się przede wszystkim na stworzeniu solidnego produktu. Czy jednak nie miało to aż takiego znaczenia?

GK: Tempo było faktycznie duże. Mieliśmy masę pomysłów, które chcieliśmy zrealizować i sprawdzić w praktyce. Tymczasem na istniejącym kodzie trudno było to zrobić. Byliśmy mocno zdeterminowani, żeby nowa wersja serwisu ruszyła jak najszybciej i była skalowalna na inne rynki.

Na początku nasza wizja ZnanegoLekarza dosyć znacznie różniła się od tego, co robimy teraz. Wcześniej miał być to portal promocyjny dla lekarzy. W skrócie: lekarz publikuje swój profil, uzupełnia ważne informacje o sobie i dzięki temu, w jakiś sposób, zyskuje pacjentów. Początkowo chcieliśmy po prostu sprzedawać lekarzom wizytówki.

To jednak nie zaskoczyło. Zaczęliśmy szukać dalej – wymyśliliśmy umawianie wizyt – to był kluczowy moment dla ZnanegoLekarza. Swoją drogą to ciekawa historia, mieliśmy już sporo doświadczenia, aby nie robić rozbudowanych produktów na start, także pierwsza wersja umawiania wizyt w ZnanymLekarzu polegała na tym, że Piotrek, który zajmował się produktem, siedział na słuchawce z kilkoma lekarzami, których prosiliśmy, aby udostępnili kilka terminów wizyt. Ja ręcznie wrzucałem je w kodzie, szedł szybki deploy, a jak już pacjent umówił się na wizytę, telefonicznie przekazywaliśmy informację lekarzowi.

Można powiedzieć, że zrobiliśmy totalne MVP. Chcieliśmy sprawdzić, czy ludzie są na tyle otwarci na nowe rozwiązania, że będą chcieli umawiać się do lekarza przez Internet.

Po tym jak umówiliśmy kilkaset takich wizyt, a pacjenci i lekarze byli super zadowoleni postanowiliśmy stworzyć już w pełni działający produkt, zautomatyzowany i “ładnie” zakodowany.

część naszego zespołu IT

PN: Opowiedz coś więcej. Jakie technologie wykorzystaliście? Jak wiele czasu w praktyce pochłaniały prace nad kodowaniem i kluczowymi funkcjonalnościami na początku rozwoju ZnanegoLekarza?

GK: Stackiem tech jest PHP oraz MySQL (a konkretniej MariaDB). Znaliśmy się na tym jak zaczynaliśmy, wiedzieliśmy, że sporo ludzi w tym siedzi, to był dla nas oczywisty wybór. Wchodząc poziom niżej – PHP – jaki framework? – na początku zdecydowaliśmy się na użycie autorskiego frameworka, głównie dlatego, że to były czasy, gdy frameworki PHP’owe z trudem utrzymywały duże obciążenie lub wymagały mocnych serwerów. My chcieliśmy mieć szybki serwis na minimalnej infrastrukturze, zdolny do obsłużenia dużego ruchu.

Stworzyliśmy prosty i lekki framework. Sporą barierą okazało się wdrożenie nowych devów, ponieważ każdy musiał się uczyć całego środowiska od początku. Dużym minusem był też brak community, które pomogłoby nam rozwijać core naszego kodu. Natomiast szybko mogliśmy tworzyć nowe funkcjonalności – to wtedy było najważniejsze.

Właściwie od początku olbrzymie znaczenie miała wyszukiwarka w serwisie. Korzystaliśmy z SphinxSE, dzięki temu mogliśmy ograć wyszukiwanie pełnotekstowe w dosyć prosty sposób, dając całkiem dobre quality użytkownikowi. Jednak w tamtych czasach (2011) ta technologia nie dawała zbyt wielu możliwości – konieczność reindeksacji lub używania uciążliwych delta-indeksów, słabe wsparcie dla wyszukiwań prefixowych, itd.

PN: Przejdźmy nieco do pracy waszych programistów. Ile osób liczył na starcie zespół ZnanegoLekarza i jak wyglądała jego organizacja?

GK: Na początku było dwóch developerów na full time. Ja byłem w tamtym czasie jeszcze zaangażowany w GoldenLine. Prowadzenie dwóch tematów na raz jest super trudne, wiedziałem, że muszę skupić się na jednym. Wybrałem ZnanegoLekarza, bo wierzyłem, że w przyszłości będzie to ogromny międzynarodowy projekt.

Zaczęliśmy w tamtym czasie bardzo szybko rozbudowywać zespół, mieliśmy sporo hipotez do przetestowania. Zatrudnialiśmy średnio jedną osobę na miesiąc. Z czasem team rozrósł się do około 8 osób. Większość czasu spędziliśmy na przepisywaniu ZnanegoLekarza. Nie przywiązywaliśmy zbyt dużej uwagi do organizacji pracy, chcieliśmy jak najszybciej wypuścić nową wersję serwisu.

PN: Jak dynamicznie zaczęliście się rozwijać? Pierwsze zewnętrzne finansowanie to 2012 rok, w wysokości $1M, część pochłonął marketing i wejście na zagraniczne rynki, lecz parcie na rozwój zespołu IT było również nie mniejsze. Przed jakimi wyzwaniami stanęliście w tamtym czasie?

GK: Cały czas przyświecał nam cel: jak możemy ZnanegoLekarza rozwijać jeszcze szybciej i dodatkowo przygotować serwis do odpalania w wielu krajach.

Zaczęliśmy zastanawiać się… czy nasz autorski framework to najlepsze rozwiązanie? Nowe osoby nie bardzo rozumiały, o co w nim chodzi. Coraz bardziej popularne stawało się Symfony (na którego mechanizmach zresztą wzorowaliśmy się, tworząc swój framework), a co najważniejsze niektóre z naszych problemów i wyzwań były już w nim rozwiązane.

Wybór był prosty – zdecydowaliśmy się przejść na SF2.  Naszym pierwszym wyzwaniem było płynne przejście, bez zmniejszenia szybkości pracy nad projektami biznesowymi.

Drugim była wydajność – im więcej features tworzyliśmy, tym kod stawał się bardziej zasobożerny, generował więcej zapytań do bazy – każdy request zajmował trochę więcej czasu, serwis tracił płynność działania. Musieliśmy mocno rozkminić temat skalowalności: jak zapewnić super experience dla użytkownika poprzez bardzo krótki czas odpowiedzi serwera. Skalowanie sprzętem było trudne, nasza infrastruktura opierała się na dedykach i bardzo zależało nam na minimalizacji kosztów. Skupiliśmy się na cache’owaniu danych, zaczęliśmy wdrażać Varnish’a + ESI.

Kolejnym wyzwaniem była potrzeba zadbania o masę tematów technologicznych, które pojawiały się wraz ze wzrostem całej firmy: stworzenie narzędzi ułatwiających obsługę klientów, automatyzacja płatności i fakturowania, wsparcie narzędziami handlowców, którzy jeździli do lekarzy, itd. To są tematy, których często się nie docenia, a mają ogromny wpływ na sprawność całego zespołu.

Kluczowym momentem w drodze od start-upu do stabilnej firmy jest moment, kiedy obok produktu, który jest królem, ważne stają się tematy back-office’owe. Dużo z nich można załatwić dobrymi gotowymi narzędziami. Poświęciliśmy temu obszarowi sporo czasu i uwagi.

PN: Ile osób wtedy było w firmie, z wyróżnieniem na poszczególne działy?

GK: Trudne pytanie, to było bardzo dawno temu 🙂 Z tego, co pamiętam łącznie było nas około 40 osób, z czego większość stanowiła sprzedaż. Dział IT liczył około 8 osób..

PN: Zostając przy części związanej z wyjściem poza Polskę. Z czym wiąże się wejście na dużo większe rynki? Włochy były swojego czasu dwukrotnie większe od naszego rynku, a tam również przejęliście lokalnego konkurenta.

GK: Krajem, od którego zaczęliśmy były Czechy. Później Turcja, Węgry, Rosja, Włochy. To było wyzwanie, wielu rzeczy się wtedy nauczyliśmy, zarówno technologicznie, jak i produktowo.

Na start należy bardzo dobrze ograć tłumaczenia. Dla nas największym bólem było oczekiwanie na przetłumaczenie elementów interfejsu – skutecznie zwalniało to każdy projekt. W pewnym momencie odkryliśmy ideę tzw. crowdsourcingu i usługę PhraseApp. Tłumaczenia mieliśmy praktycznie od ręki z jakością jakiej oczekiwaliśmy.

W czasie wchodzenia na nowe rynki, bardzo ważna była dla nas wydajność serwisu. Serwery mieliśmy we Francji, nie chcieliśmy rozpraszać infrastruktury do różnych data center. Zdecydowaliśmy się na spore zmiany w architekturze aplikacji i wprowadzenie mocnego cache’owania odpowiedzi serwerów – pozwoliło nam to zapewnić porównywalny experience dla użytkownika w Polsce i Turcji.

Dalej skupiliśmy się na różnicach produktowych pomiędzy krajami. Wiedzieliśmy, że stworzenie uniwersalnej usługi na wszystkie rynki było niemożliwe. Musieliśmy ograć nie tylko detale ważne z perspektywy użytkownika, takie jak np. odpowiednie formatowania daty, różnice w dniach wolnych od pracy/świętach, obrazki (porównajcie stronę główną znanylekarz.pl z wersją turecką – doktortakvimi.com), ale także duże projekty np. odpowiednie fakturowanie i rozliczanie klientów (zgodne z wymogami prawnymi), geolokalizacja podczas wyszukiwania (np. użytkownicy z Rosji, a konkretniej z Moskwy z reguły szukają lokalizacji wg odległości do stacji metra), itd.

Na koniec zdecydowaliśmy, że jeżeli chcemy utrzymać tak wysokie, jak dotychczas tempo rozwoju w tak wielu krajach, będziemy potrzebować mechanizmu umożliwiającego włączanie i wyłączanie wybranych funkcjonalności lub części serwisu, niezależnie, w różnych krajach. Tak powstał GateKeeper ( https://github.com/ZnanyLekarz/gatekeeper i https://github.com/ZnanyLekarz/gatekeeper-bundle ). Pozwala on za pomocą jednego kliknięcia zmieniać działanie, a co ważniejsze daje możliwość prostego wprowadzania i testowania nowych funkcjonalności w wybranych krajach.

PN: Rok temu przyjęliście też hiszpański serwis Doctoralia. To, jak się dogadaliście finansowo schodzi na drugi plan, interesuje mnie w tym momencie to, jak wyglądało to przedsięwzięcie pod kątem IT.

GK: To było bardziej połączenie, niż przejęcie. Jako ZnanyLekarz byliśmy mocni w Europie Środkowo-Wschodniej. Doctoralia dominowała w krajach Zachodniej Europy i Ameryki Łacińskiej. Chcieliśmy połączyć nasze siły. Jak już do tego doszło – najważniejszym pytaniem było: jak wykorzystać potencjał ludzi w obu firmach tak, aby działać jeszcze sprawniej.

Zamiast jednego zespołu technologicznego mieliśmy dwa. Jeden w Warszawie, drugi w Barcelonie. To były dwa bardzo dobre zespoły programistów i produktowców. Zakładając, że dotychczas robiliśmy bardzo podobne serwisy, musieliśmy zdecydować, jak podzielić się pracą.

Doszliśmy do wniosku, że nasz produkt da się podzielić na dwie części. To, co widzi użytkownik czyli Marketplace z lekarzami oraz drugi, równie ważny element – SaaS dla lekarzy, czyli dosyć rozbudowana usługa, dzięki której lekarz może zarządzać swoim gabinetem i pacjentami. Zdecydowaliśmy się odseparować te dwie części produktu od siebie. Padła decyzja, że team w Polsce będzie zajmować się Marketplacem, a ten w Barcelonie – SaaS’em.

Autonomiczność obu zespołów była dla nas dużą wartością, do tej pory cały nasz mindset opieramy na tym, że obie usługi są oddzielnymi systemami. Oczywiście komunikują się między sobą z wykorzystaniem różnych API, ale jesteśmy w stanie rozwijać je niezależnie od siebie, podejmując szybkie decyzje technologiczne oraz produktowe. Nasze zespoły są porównywalne liczbowo, w Polsce mamy 20 programistów, w Hiszpanii w granicach 15.

Zapraszamy do dyskusji

Patronujemy

 
 
More Stories
wojtek zając twitter
W wieku 16 lat stworzył front-end Twittera. Dziś pracuje z klientami z całego świata