Alex ze StartupJobs: “Nebojte se dělat chyby“


Alex Karshin, který má na starosti vývoj StartupJobs, má za sebou bohatou profesní cestu, kde zkusil různé obory. Zajímá vás, proč upřednostnil právě programování? A jak podle Alexe vypadá ideální programátor? Odpovědi na tyto, ale i další otázky, najdete v následujícím rozhovoru. 

 

Alexi, aktuálně je obrovská poptávka po programátorech, a tak mě zajímá, v čem u tebe vyhrálo právě StartupJobs? :-)

Poptávka je sice obrovská, ale skoro nikdo není schopen garantovat adekvátní pracovní podmínky. Společnosti mají většinou 2-3 roky starý netestovaný kód, na němž se neprováděl žádný refactoring. Podobná situace dostává developery do stavu, kdy jakákoliv změna trvá místo jedné hodiny mnohem déle. U pohovoru pak většinou HR / team leader / project manager naslibuje, jak chtějí dělat věci “správně”, napsat testy a udělat globální refactoring. Dle mých zkušeností k tomu zatím ani jednou nedošlo. Změna přišla, když jsem se setkal s Filipem (zakladatel a CEO StartupJobs). Filip jako první a původní programátor StartupJobs velice dobře věděl, v jakém stavu je kód, a chápe, jak se mají věci dělat. Proto bez problémů souhlasil se zavedením Agile metodiky a s uvedením situace s code base a procesy na správnou cestu.

 

Věnoval ses vždy programování, nebo máš zkušenosti i z jiných oborů?

Kdysi dávno jsem vůbec nechtěl programovat a dělal jsem primárně v marketingu. Byl jsem zodpovědný za vytváření kreativních konceptů a nakonec se mi podařilo i podílet se na vytváření reklamních kampaní pro Mazdu nebo Budweiser v Rusku. Ještě před marketingem jsem dělal na přepážce u jednoho nejmenovaného telekomunikačního operátora, to mi bylo tak 20 let. Nejenže jsem se tu naučil říkat lidem “ne” a naučil jsem se obhájit svoji práci, zároveň jsem také pochopil, že korporát je neúměrné zlo, kde je člověk jenom číslem a de facto pro nadřízené nemá žádnou hodnotu, i když hodnoty vytváří.

 

V čem ti zkušenosti z ostatních oborů pomáhají při programování?

Při programování využiju hlavně kreativitu, kterou jsem rozvíjel během práce v marketingu - hodně mi pomáhá při tzv. “thinking out of the box”.
Při implementaci agilních metodik zase využiji empatii k lidem, se kterými pracuji. Programátoři, a to i ti juniorní, musí pochopit, že je nikdo nebude trestat za jejich chyby. Spíše naopak - jak říká jeden z agilních principů “fail often and fail early”. Proto se snažím uplatnit moje zkušenosti z retailu toho “skvělého” operátora, abych nedělal chyby, které dělali jejich “manažeři”.

 

Jak podle tebe vypadá ideální programátor? Co by měl splňovat?

Jelikož programátor je člověk, který pracuje hlavou, musí umět přemýšlet. Důležité je abstraktní myšlení a schopnost vidět projekt celkově. Musí mít i myšlení kritické a umět naslouchat. Kritické myšlení pomáhá v situacích, kdy se určitý postup nebo nastavený proces či workflow stává religií týmu. Takové situace typu "děláme to tak proto, že to děláme (už dlouho)" by měly být vymýceny pod tlakem kritického myšlení. A v týmu by pak mělo panovat heslo "děláme to tak proto, že nám to tak vyhovuje a protože se díky tomu zvyšuje efektivita naší práce". 

Nesmí chybět ani schopnost pracovat v týmu, pokud tedy jedinec chce v týmu pracovat. Samozřejmě respektuji freelancery, kteří pracují sólo, ti pak tuto schopnost nepotřebují. Ale bez ohledu na to, jak dobře člověk umí programovat, není-li týmovým hráčem, určitě bude demotivovat své kolegy. 

 

Jakým způsobem rozvíjíš své znalosti a dovednosti ty? Mohl bys našim čtenářům doporučit nějaké zdroje nebo akce?

Jsem členem Project Management Institute (to není reklama, že?), který nabízí různé webináře a kurzy pro rozvoj dovedností, které jsou spojené s agilními metodikami, jinými slovy "Agile Mindset". Prošel jsem docela náročným procesem certifikace, abych získal osvědčení Agile Certified Practitioner, a při přípravě jsem se dozvěděl hodně nových informací o Agile, které se jinak jen tak někde neuvádí a nebo se o nich veřejně moc nemluví. Během přípravy mi pomohly i kurzy na Udemy. Navíc máme v SJ zavedený Extreme Programming a po každé iteraci ve fázi retrospektivy zjišťujeme, co nám fungovalo a co ne a jak bychom to mohli celé zlepšit, aby se dobře cítil celý tým.

Čtenářům, kteří patří mezi middle a senior level, bych chtěl doporučit knihy od Roberta Martina. Napsal “jen” 4 knihy - Agile Software Development, Clean Code, The Clean Coder, Clean Architecture. Dále doporučuji seznámit se se vším, co někdy napsal Martin Fowler, konkrétně doporučuji začít alespoň jeho článkem “Inversion of Control Containers and the Dependency Injection pattern”.
Začínajícím developerům, mimo zmíněné knihy a články, bych chtěl doporučit, aby nezačínali prací s Wordpressem a Nette. Raději získejte skilly s dobrým kódem, než abyste se něco naučili na kódu špatném, protože pak strávíte dvakrát více času při přeučování.

 

Jak vypadá tvůj typický pracovní den?

Sprcha - Snídaně - Práce - Oběd - Práce - Večeře - Práce - Sen. Když s tím snem nestíhám, občas zachrním hoďku v kanclu :D
Občas se mi do toho vejde badminton a teď se zase pomalu vracím k lezení (zatím jen na umělé stěně).

 

Co tebe a tvůj tým aktuálně zaměstnává?

Momentálně kompletně přepisujeme StartupJobs. Opouštíme starý nevhodný framework a konečně se zbavíme hodně špatně promyšleného a celkově nesmyslně implementovaného “kešování”. Přejdeme na framework daleko lepší a spolu s redesignem celého webu bychom měli dosáhnout 4 až 5 krát rychlejšího načítání stránek.

Jedním z Alexových koníčků je metal, tak schválně, jestli ho na fotce poznáte :-)

 

Co děláš ve svém volném čase, když náhodou neprogramuješ? :-)

Mám hodně rád 3D modeling a Unity 5. Když neprogramuji pracovně, zkouším nové jazyky a nové přístupy. Naučil jsem se Python jen proto, že jsem mohl :) Taky občas sem tam něco vytvořím pro Android. Rád pomáhám i lidem na Stack Overflow. Vždy si vymezím večer pár minut, abych prošel otázky a odpověděl na něco zajímavého či složitého. 

 

Máš nějaký vzkaz pro naše čtenáře, kteří přemýšlí, že by začali programovat nebo pro ty, kteří uvažují, že skončí v korporátu a poohlíží se v práci pro startup?

Buďte na sebe přísní, “nějak to půjde” není známka dobrého kódu. Vždy dodržujte standardy a tzv. “Best Practices”, špagetový kód a bordel v architektuře není něco, za co vás bude někdo mít rád. Buďte DRY. A vždy pište svůj kód tak, jako kdyby člověk, jehož prací bude váš kód udržovat, byl agresivní psychopat, který ví, kde bydlíte.