Jiří Šmolík: Šedá eminence karlínského backendu
Rozhovor nejen o backendu
Jiří Šmolík patří v Ackee k nejseniornějším vývojářům, svou prací se ale chlubí nerad. Jako team leader má přitom pod palcem celý backend a prsty skoro v každém projektu. Když tedy svolil k rozhovoru, vzali jsme to z gruntu. Většího profíka a experta na Node.js, Javascript nebo architekturu backendových aplikací byste totiž hledali jen těžko.
Jirko, pamatuješ si svoje začátky v Ackee?
To si pamatuju naprosto přesně. Tehdy jsem vyšel ze školy jako úplný zelenáč téměř bez zkušeností s jakoukoliv profesionální praxí v oboru a rozhodoval jsem se právě mezi Ackee, kam mě doporučil spolužák, a jednou bankou, kam jsem měl nastoupit jako Java programátor. Což byla dvě docela odlišná prostředí. Ale naštěstí jsem si vybral Ackee, kde jsem spokojený dodnes.
A co tvoje začátky v backendu?
Když nepočítám začátky na FITu na ČVUT, backend pro mě začal s Ackee. Přišel jsem na pohovor a pár dnů nato jsem s novou prací dostal i projekt. Vytáhnul jsem z tašky notebook a hned jsem na něm začal dělat. (Ale ten projekt už bohužel umřel). Pracoval jsem pod jedním backend vývojářem a tenkrát se to dělalo ještě v PHP. To byly ještě jiné technologie než dneska.
K tomu se ještě dostaneme. Jak se od té doby změnila náplň tvojí práce?
Ze začátku jsem byl pod dozorem těch zkušenějších vývojářů a tak nějak jsem si hrál na svém písečku. Dostal jsem konkrétní zadání, které jsem byl s průběžnou konzultací schopný vypracovat. Nic jiného mě vlastně nezajímalo. Šlo o základní úkony, které by člověk na mém místě měl umět i ze školy. Napsat si jednoduchý skript, spojit ho s databází a podobně.
A pak už to nebylo tak jednoduché?
Projekty, co děláme v Ackee dneska, už se zdaleka nedají zvládnout v jednom člověku. Většinou je na to potřeba celý tým. A někdy i víc týmů napříč různými platformami. Ty spolu musí komunikovat a je potřeba to opravdu více promýšlet. Na pozici team leadera, kde jsem teď, se bez širšího kontextu neobejdu.
Jak ses k vedení backend týmu vlastně dostal?
Postupně jsem získával větší přehled obecně o vývoji aplikací. I daleko větších aplikacích, o kterých jsem tehdy neměl ani tušení, jak se to dělá. Firma rostla, nabírali jsme nové lidi, týmy se zvětšovaly. Potřeba teamleadrovské pozice z toho tak nějak vyplynula. A podle vedení jsem byl zřejmě ten člověk, co se na to hodil nejlíp. Takže část mojí práce teď už zahrnuje i starost o tým a jeho výsledky.
Co dalšího pozice team leadera obnáší?
Především zajistit pro firmu fungující backend tým. To znamená odpovědnost za výstupy týmu po technické stránce. A taky ta zmiňovaná péče o lidi. Kromě týmových meetingů jsou důležité i 1:1, které mám s každým členem z týmu. Řešíme nejen to, jak se má a jak se mu pracuje. Snažím se ho nějakým způsobem technicky posunout dopředu, případně zdokonalit v tom, co už ovládá. Nejdůležitější je, aby byli všichni v týmu spokojení. Aby mohli v klidu pracovat na svých projektech a nemuseli se starat o ten širší kontext. Tím, co pro mě tenkrát byli kluci z vedení, jsem teď já pro ostatní.
Takže péče o lidi je teď tvůj denní chleba?
Nemusí to být nutně každý den, ale když přijde nový člověk, tak určitě. To se denně snažím zjistit jeho pokrok. Sám totiž vím, že když člověk nastoupí a nikdo se mu dostatečně nevěnuje, může na něčem zbytečně trávit čas. Pak je z toho naštvaný a ta práce ho nebaví. Proto se to nováčkům snažím dost ulehčit. A když se náhodou stane, že se o něho nemůžu postarat já, tak dobře informuju někoho jiného z týmu, u koho vím, že to skvěle zvládne. Ale většinou mi to vyjde.
A když se zrovna nevěnuješ nováčkům, tak tvůj běžný pracovní den vypadá jak?
No, to je dobrá otázka. Už nějakou dobu větší projekty nekódím, ale jsem v roli architekta a technického dozoru. To znamená, že můj den začíná vyřizováním mailů a komunikací obecně. Ať už jde o lidi z týmu nebo klienty. Kouknu na merge requesty, dělám code review a několikrát denně je konzultuji s ostatními, aby všechno bylo tak, jak má. Teď je toho docela hodně, protože pracujeme na dvou velkých projektech. Snažím se lidi vést k tomu, že je lepší se zeptat někoho zkušenějšího z týmu, než aby se nad tím trápili sami. A taky průběžně připravuji sebe i ostatní na meetingy.
Můžeš prozradit, na čem konkrétně teď s backend týmem děláte?
Jsou to dvě zpravodajské aplikace pro Livesport – FlashNews a FlashSport. Jde o největší věci, které jsme kdy dělali. Už v minulosti jsme stavěli Tapito, což byl tenkrát náš největší projekt. Ale Livesport ho odkoupil a rozhodl se, že vezme naše získané know-how a společně s námi postaví dva úplně nové projekty. Je to náročné po stránce technické i organizační. Je potřeba koordinovat a dohlížet na celý tým.
Přináší tvoje práce i nějaké další výzvy?
Nemyslím si, že je plná výzev. Asi se mi docela daří všechno řešit průběžně. Všichni říkají, že backend tým funguje nejlíp. :D Nevím, jestli je to tím, že máme bezproblémové lidi nebo se nám lépe daří problémům předcházet. Teď se nám tým každopádně rozrostl do největšího počtu, co jsme kdy v Ackee měli. Takže možná ty výzvy ještě přijdou.
Stává se ti někdy, že ti něco nejde nebo si nevíš rady?
To se stává docela často. V takovém případě zkouším dělat věci po svém nebo dohledávám na internetu, kde nacházím různé tipy a směry. Ty se ale často setkávají s mou nedůvěrou. Tak či tak to zkonzultuju minimálně s jedním člověkem z týmu. Zkrátka je potřeba ten druhý pohled na věc. Někdy jdu pro radu za naším CTO Dominikem. Pokud nepomůže ani to, tak jsme asi udělali všechno pro to, aby to fungovalo co nejlépe.
Co považuješ za tvůj nejvíc challenging projekt? A jak se ho podařilo dotáhnout do konce?
Největší výzvou jsou popravdě ty dva již zmiňované projekty. A ještě se je neodvážím označit za dotažené do konce. Ten největší nápor nás totiž teprve čeká se spuštěním velké reklamní kampaně na jeden z nich. Ale věříme, že to dopadne dobře, protože pro to děláme všechno. Vyzkoušeli jsme si na tom plno nových věcí, které jsme si pečlivě vybrali pro dosažení toho požadovaného výsledku.
Takže rádi zkoušíte nové věci? Jak se s odstupem díváš na Javascript na serveru vzhledem k tomu, že v Ackee se píšou backendy v Node.Js?
Přesně tak! Tehdy to mělo nějaké věci, co jiné jazyky neměly. Ale především to byla novinka a bylo jednoduché v tom psát. To jsou vlastně dvě podmínky, které nějaká technologie musí mít, abychom ji adoptovali.
Táborů je nicméně víc, někdo to hejtuje, někdo miluje. Mám pocit, že kvůli té jednoduchosti je to dostupnější a přitahuje to hodně lidí. V podstatě každý si může napsat cokoliv. Internet je plný balíčků, které píšou lidi bez jakéhokoli technického backgroundu, a dost se to v tom odráží. Na to je potřeba dát si pozor.
Vypíchl bys nějaké současné trendy v backendu? Kde čerpáš inspiraci?
Hlavním zdrojem pro mě jsou různé technické newslettery nebo lidi v týmu. Taky sleduju spoustu tech účtů na Twitteru. (inspiraci najdete na konci rozhovoru, pozn. red.) Objevují se trendy, které nejsou aplikovatelné v našem prostředí ve firmě. A pak se objevují třeba padesát let staré trendy. O nich přednášejí lidi na konferencích, ale to většinou znamená, že je to nějaká alfa verze nepoužitelná v produkci. Takže i rok staré záznamy na YouTube jsou v pohodě.
A jak k těm trendům v Ackee přistupujete?
Dlouho jsme používali REST a ten současný trend je něco jiného, neRESTového. Hodně lidí přecházelo na GraphQL. Není to nejnovější technologie, ale jde o protokol, který oproti RESTu plno věcí usnadňuje. My se teď vezeme na existující alternativě, kterou je gRPC. Je to poměrně neověřená technologie, ale o to víc jsem rád, že ji zkoušíme a daří se nám ji úspěšně adaptovat.
A co se týče programovacích jazyků?
Snažili jsme se zavést Go. Jednak abychom rozšířili portfolio a taky proto, že jsme chtěli zkusit něco jiného. Má sice podobný use case jako Node.Js, ale trochu odlišné výhody. Před nějakou dobou Dominik rozjížděl dokonce školu GO. Ještě se nám teda nepodařila dotáhnout do žádné produkční aplikace, ale myslím, že je to věc, která by se dala považovat za trend.
Mně osobně přijdou docela trendy commit message, které jsou v Ackee plné emotikonů, ale vím, že jsou za tím přísné konvence. Jak to vůbec vzniklo a čím vám tahle pravidla pomáhají v práci?
V Ackee máme rádi emoji a protože nám to přijde zábavnější, používáme právě tuhle gitmoji konvencí. Každá emoji definuje jinou změnu, takže člověk na první pohled pomocí jednoho či dvou znaků může vidět, k jaké změně v aplikaci došlo. Ať už jde o kosmetické úpravy, neškodné změny konfigurace či opravy… Jak se říká, obrázek řekne víc než tisíc slov.
Dokázal bys popsat (pomocí slov a ne obrázků) typického backenďáka, jestli to vůbec jde?
To je docela složitá otázka. Myslím, že se to s postupem času dost změnilo. Dřív to byl podle mě spíš introvertní člověk. Současný backenďák má většinou svoji práci i jako koníček a věnuje se mu v nějaké míře i doma. K tomu patří často nějaká hodně technická záliba typu hardware a různé novinky v technologiích. Anebo jde o záliby, které nemá nikdo jiný ve firmě, jako je třeba hraní deskových her. Kolikrát jsme se snažili o organizaci hromadného hraní a nikdo kromě backenďáků nepřišel. :D Ostatní říkají, že jsme nerdi, tak na tom asi taky něco bude. Prostě máme rádi techniku.
A co je ten tvůj koníček s přesahem do techniky?
Taky si někdy rád kódím po večerech – vlastní věci nebo si hraju s tím, co zrovna řeším v práci. Samozřejmě dobrovolně. :D Když nejsem spokojený s tím, jak jsem to udělal, zkouším to doma a zajímá mě, jak se podobný problém řeší někde jinde. Ale já nejsem právě jeden z těch, co mají nějaký ten vyloženě zajímav ý koníček.
Takže co děláš, když nekódíš?
Mimo pracovní dobu cokoliv. Rád běhám, jezdím na kole a hraju WoWko. Dřív jsem hrával taky Counter Strike a když kluci chtějí, občas si týmově zahrajeme Transport Tycoon nebo se sejdeme na ty deskovky.
Je něco, co (potenciálnímu) backenďákovi v Ackee nesmí chybět?
Samozřejmě pokud jsou lidi dobrý, tak je bereme, i když se tváříme, že nebereme! Určitě by to měl být někdo se zájmem o ten obor a vztahem k technologii. Je to na tom dost vidět, ty lidi jsou pak lepší. Ukázalo se, že u nás nad tím přemýšlíme skoro pořád. Zároveň ale nestojíme o žádného osamělého vlka, který si bude dělat jen svoje věci. Tým je tu od toho, abychom všichni táhli za jeden provaz. Vzájemně sdílíme svoje know-how, konfrontujeme se s možným řešením a vždycky se snažíme dojít k tomu nejlepšímu.
A trochu inspirace od Jirky na závěr:
- Thoughtworks Technology Radar
- Node Weekly
- Twitter Node.js
- Twitter TypeScript
- Technolog/speaker Kevlin Henney
- TypeScript guru Dragomir, který odpovídá snad na všechny TS otázky na StackOverflow