W startupie ciekawiej niż w korporacji? Wywiad z Tutlo
Andrzej Makarewicz, Software Engineer i Team Leader oraz Damian Strzelczyk, Co-founder oraz Chief Everything Officer, opowiedzieli nam o historii powstawania Tutlo, platformy do nauki języka angielskiego z native speakerami. Za pomocą tego narzędzia możemy umówić się na rozmowy z tutorami, którzy przeprowadzą nas przez proces nauki. A jak wyglądał proces powstawania Tutlo i jakie plany ma firma na przyszłość? Tego dowiecie się z naszej rozmowy z Andrzejem i Damianem.
Programista przychodząc do korporacji dostaje stabilizację, a zatrudniając się w software housie – różnorodność projektów. Co czeka programistę, który przychodzi do startupu, szczególnie do takiego jak Tutlo?
Dołączając do Tutlo przystępujemy do projektu na najciekawszym etapie rozwoju. Z jednej strony jest to już dość duży, wciąż intensywnie rozbudowywany produkt. Mamy tysiące klientów, aktywnie korzystających z platformy, którym chcemy dostarczyć usługę w najlepszej jakości. Nasza praca trafia do realnych użytkowników i daje im prawdziwą wartość. Przy tym proces wytwarzania i wdrażania oprogramowania traktujemy odpowiedzialnie, duży nacisk kładąc na niezawodność i dostępność naszej usługi.
Z drugiej strony jest on jeszcze na tyle niewielki, że jesteśmy w stanie dotknąć wielu elementów, samodzielnie proponując i wprowadzając istotne zmiany. Zespół odpowiedzialny za platformę nie jest nadmiernie rozbudowywany, z biurokracją ograniczoną do minimum. Przekłada się to na sprawne podejmowanie decyzji i krótką ścieżkę od pomysłu do klienta.
Tutlo to platforma do wideorozmów native speakerów z uczniami. Z jakimi wyzwaniami spotkaliście się na początku tworzenia platformy?
Największym wyzwaniem technicznym na początku tworzenia platformy była obsługa połączenia audio-video między użytkownikami. Chcieliśmy prostoty obsługi dla naszych klientów, dlatego też całość prowadzonej na żywo sesji lekcyjnej osadzona jest na platformie. Nie wymagamy instalowania dodatkowych pluginów czy programów, dzięki wykorzystaniu WebRTC wystarczy nam przeglądarka.
Wykorzystywana technologia była już dojrzała, ale mimo to mnogość konfiguracji sprzętowych i warunków sieciowych dostarczała kolejnych wyzwań. Szczególnie istotne było to w kontekście klientów biznesowych, gdzie pracownicy chcieli korzystać z firmowych komputerów i sieci, często ograniczających ruch i kierujących go przez proxy. Wymaga to stosowania serwerów przekazujących oraz często zmianę protokołu z UDP na TCP, gdzie to klient aktywnie odpytuje serwer przekazujący o nowe pakiety.
Dość problematyczna była również kompatybilność przeglądarek na urządzeniach mobilnych, zwłaszcza na starszych modelach. Wiele z nich nie ma wsparcia lub jest ono niepełne dla technologii WebRTC, występują też ograniczenia kompatybilności kodeków między urządzeniami końcowych uczestników rozmowy. W takich przypadkach zalecamy klientom korzystanie z aplikacji mobilnej, która obchodzi te ograniczenia poprzez obsługę połączenia audio-wideo w natywnej powłoce aplikacji.
Od strony biznesowej mieliśmy ogromne wyzwanie związane z tzw. problemem kury i jajka – musieliśmy zrównoważyć podaż lektorów z popytem na nich po stronie kursantów i przez pierwsze dwa lata było to bardzo trudne w realizacji. Wielokrotnie zmagaliśmy się z problemem, gdy w platformie było za mało lub za dużo lektorów.
Zespół Tutlo w 2018 roku, w nowym biurze
Jak rozwiązaliście problemy techniczne związane z samym streamingiem?
Do połączeń multimedialnych wykorzystujemy WebRTC. Jest to projekt open-source, szeroko wspierany przez najpopularniejsze przeglądarki internetowe. Początkowo pracowaliśmy nad własną infrastrukturą do połączeń, ale w miarę rozwoju projektu i rosnącej liczby użytkowników, utrzymanie własnego rozwiązania zabierało nam istotną część czasu, który mógłby być poświęcony na działania w innych obszarach. Podjęliśmy więc próbę integracji z zewnętrznym serwisem, udostępniającym połączenie WebRTC jako usługę.
Przeprowadzone testy A/B wskazały, że nowe rozwiązanie polepszyło jakość połączenia oraz istotnie zmniejszyło procent sesji nieudanych. W rezultacie zdecydowaliśmy się na skierowanie większości ruchu na nowe rozwiązanie. Zachęceni wynikami pierwszego eksperymentu włączyliśmy kolejnego operatora, co pozwala nam na dynamiczne sterowanie ruchem naszych użytkowników, w zależności od dostępności i aktualnej jakości połączenia oferowanego przez dany serwis.
Opowiedzcie o samym produkcie od strony technicznej. W jaki sposób uczeń komunikuje się z lektorem?
Głównym nośnikiem komunikacji między nauczycielem i uczniem jest połączenie audio-wideo. Do dyspozycji uczestników sesji lekcyjnej jest również czat tekstowy. Podczas większości lekcji wykorzystywane są autorskie materiały lekcyjne. Platforma synchronizuje widoki między uczestnikami sesji, co ułatwia podążanie uczniowi za nauczycielem i aktualnie omawianym materiałem.
W jaki sposób lektor dobierany jest do ucznia i na odwrót?
Uczniowie wchodząc na platformę korzystają z listy aktualnie dostępnych nauczycieli. Mogą wybrać dowolnego z nich, a decyzję podejmują na podstawie biogramu i krótkiej prezentacji wideo.
W niedalekich planach mamy również wprowadzenie mechanizmu sugerowania najlepszego nauczyciela pod cele językowe i preferencje danego ucznia. Rozbudowujemy naszą bazę wiedzy na temat współpracujących z nami lektorów i będziemy chcieli wprowadzić elementy uczenia maszynowego wspomagające proces automatycznego doboru lektora.
Jakie wyzwania związane z Waszym produktem czekają dziś na potencjalnych kandydatów?
Jesteśmy na etapie silnego wzrostu liczby użytkowników, a wraz z nią czasu spędzanego na platformie i stopnia jej wykorzystania. Przekłada się to na nasze działania podejmowane w obszarze optymalizacji kluczowych części platformy oraz zapewnienia jej skalowania i dostępności.
Od strony produktowej mamy również bardzo ambitne plany. Chcemy, aby nasza platforma dawała możliwość kompleksowego doskonalenia kompetencji językowych w obszarach mówienia, pisania, słuchania, oraz czytania. Jest to duże wyzwanie abyśmy przenieśli najskuteczniejsze elementy z tradycyjnych szkół językowych do świata online.
Mamy również w planach wykorzystanie potencjału drzemiącego w sztucznej inteligencji. W najbliższym czasie chcemy wspomóc za jej pomocą optymalny wybór lektora do potrzeb kursanta, a także wprowadzić personalizowane kursy językowe, gdzie dla każdego kursanta generowany jest automatycznie indywidualny kurs na bazie tysięcy dostępnych na platformie materiałów.
Jakimi zasadami kierujecie się podczas pracy z kodem?
Staramy się zapewnić wysoką jakość kodu dodawanego do naszych repozytoriów. Każda zmiana poddawana jest code review i wymaga akceptacji innych członków zespołu przed włączeniem. Inwestujemy czas w pisanie testów jednostkowych w kluczowych miejscach, a także w sytuacjach, gdy dodajemy poprawki bugów. Mamy do dyspozycji podstawowe testy integracyjne oraz rozpoczęliśmy pracę nad wprowadzeniem automatycznych testów funkcjonalnych.
Bardzo cenicie sobie zdanie współpracowników. Możecie podać przykład pomysłu jednego z nich, który został zrealizowany i przynosi efekty?
Ponieważ ostatnie miesiące spędziliśmy intensywnie pracując nad nową wersją aplikacji, takich pomysłów, które weszły w życie jest dużo. Do większych należy wspomniana już integracja z kolejnym operatorem połączeń audio-wideo, żeby zwiększyć naszą niezależność i jakość połączenia. Propozycja wyszła od osoby integrującej pierwsze rozwiązanie i poza celami biznesowymi chciała zademonstrować jak łatwa będzie integracja kolejnych rozwiązań dzięki dobrze opracowanej architekturze.
Projektem, który wyszedł od programisty po rozmowie z osobą zajmującą się koordynacją tutorów było stworzenie mechanizmu zbierania i prezentacji statystyk zajętości tutorów na platformie. Wdrożenie projektu dało narzędzie do obserwacji na bieżąco sytuacji i ułatwiło zarządzanie współpracującymi z nami tutorami, tak aby w godzinach szczytu zawsze była dostępna ich odpowiednia liczba.
Bardzo istotnym z perspektywy rosnącej liczby użytkowników był również projekt optymalizacji zapytań, który wyszedł od kolegi, będącego dużym entuzjastą MongoDB. Zlokalizował on szczególnie obciążające naszą bazę danych zapytania i z sukcesem je zoptymalizował. Przełożyło się to na obniżenie zużycia zasobów, a co istotniejsze skróciło czas potrzebny do realizacji niektórych zapytań nawet o kilkadziesiąt procent, zauważalnie przyspieszając działanie aplikacji u użytkownika.
Na zdjęciu (z przodu): Tomasz Jabłoński oraz Damian Strzelczyk, założyciele Tutlo
W jaki sposób dbacie o rozwój programistów?
Zależy nam żeby technologie wykorzystywane w Tutlo były rozwojowe i atrakcyjne z perspektywy programisty. Nasz nowoczesny stos techniczny jest często wskazywany jako jedna z przyczyn zainteresowania projektem przez obecnych programistów i potencjalnych kandydatów.
Stopień zróżnicowania realizowanych zadań pozwala na wszechstronny rozwój w interesujących obszarach, w zależności od preferencji programisty. Zaczynając od ulepszenia naszego procesu developmentu i wdrożenia oprogramowania, poprzez ogromną porcję nowych funkcji dodawanych do aplikacji, automatyzację procesów wewnętrznych, optymalizację działania platformy, aż do streamingu audio-video i urządzeń mobilnych. Z pewnością nie ma u nas stagnacji i nudy pisania kolejnych CRUD-ów.
Co Waszym zdaniem jest najciekawsze w Tutlo? Coś co powinno zachęcić do aplikowania.
Tutlo zaczęliśmy budować od zera blisko 4 lata temu, a dziś z naszej platformy korzysta ponad 7 tysięcy aktywnych klientów, mamy ponad 300 lektorów oraz ponad 100 pracowników. Tempo naszego rozwoju jest bardzo duże, a uczestnictwo w firmie, która tak szybko rozwija się jest dla wszystkich w naszej firmie wielką przygodą. Skala naszej działalności już jest duża, a tak naprawdę to dopiero początek – na ten moment oferujemy tylko język angielski i to głównie w Polsce. Przed nami jest wprowadzenie wielu różnych języków, a także ekspansja międzynarodowa, więc będzie się działo.
Andrzej Makarewicz. Software Engineer / Team Leader w Tutlo, gdzie przewodzi zespołowi developerskiemu, tworzącemu innowacyjną platformę do nauki języka angielskiego. Zawodowo zainteresowany rozwijaniem ciekawych produktów dostępnych szerokiemu gronu odbiorców. W przeszłości uczestniczył w kilku bardzo rozpoznawalnych projektach, polskich i zagranicznych, z milionami użytkowników na całym świecie.
Damian Strzelczyk. Co-founder oraz Chief Everything Officer w Tutlo, pasjonat przedsiębiorczości oraz startupów. W 2015 roku, wraz z Tomaszem Jabłońskim, stworzył Tutlo – nowoczesną szkołę języka angielskiego online. Dziś po blisko 4 latach działania platforma obsługuje już blisko 7 000 kursantów, posiada oddziały w 9 miastach w Polsce i zatrudnia łącznie blisko 100 osób.