Ahoj! Jmenuji se Alexey Pyankov, jsem hlavní programátor ve společnosti Sportmaster. Hned řeknu, že „náčelník“ neznamená „nejdůležitější ze všech programátorů“, ne, je to jen jméno, takový okouzlující překlad pro „Senior+“.
Ve firmě Sportmaster pracuji od roku 2012 a za tuto dobu vytvořil vývojový tým mnoho řešení, která jsou zajímavá po technické stránce. Ale dnes bych chtěl mluvit o naší práci, s důrazem spíše na to, jak jsme uvažovali v určitých nejednoznačných situacích.
Tento článek nebude obsahovat konkrétní technická řešení (ani nic technického vůbec), kterých byste se měli chopit a použít ve svém projektu. Spíše jde o zamyšlení nad odvedenou prací. Byly tam takové zvláštní momenty, které nás ovlivnily jako tým – stmelily nás, posílily a prověřily sílu. Dnes se pokusím hovořit o těchto chvílích, o atmosféře týmové práce, o našich hráběch a řadě psychologických pastí, do kterých občas sami vjíždíme.

A začnu rokem 2012.
Do roku 2012 jsem v té době přišel s hlavním cílem – pracovat na našem vlajkovém webu. V té době to bylo „Frankensteinovo monstrum“: část týmu pracovala s naším starým systémem, který příliš nezvládal zátěž (Bitrix), zatímco další část týmu (včetně mě) se snažila implementovat nový systém , která byla vybrána podle kritéria „Až to bude nejdražší e-commerce na světě, vezměme to“. Bylo to přesně „pokusili se implementovat“ - protože systém zoufale odolával a na každý okamžik, který se jim podařilo vyřešit, se vždy objevilo „překvapení“. Tvrdě jsme pracovali, ale pohybovali jsme se hlemýždím tempem.
Pro mě osobně bylo poslední kapkou seznámení se s kódem jedné metody v tomto „nejdražším e-shopu na světě“, kdy několik hodin soustředěné práce na nepřehledné chybě vedlo k tomu, že důvod byl nalezen někde v custom-tag, který funguje při generování html v jsp. Účelem této vlastní značky je zobrazit součet některých hodnot. To není špatné, k tomu jsou custom-tagy určeny. Překvapení se ale skrývalo v tom, že se zároveň mění některá data v databázi, na to je vázáno chování na následujících stránkách a pokud stisknete F5, volání se opakuje, narušuje se tím konzistence dat . Navíc to porušilo tak, že se to objevilo až po pár krocích, na 3. stránce sekvence. Ne, nevadí mi mít v týmu takového „hlavního ninju“ a udržovat pozornost svých kolegů v dobré kondici s jeho kódem. Ale jen tak, v nejdražším systému!
Bylo to v pátek. A s kolegou jsme strávili sobotu a neděli v kanceláři, abychom vymysleli, jaké úkoly pro systém právě teď podnik nastavuje a jaké úkoly může vymyslet za rok. Jak bychom je tedy vyřešili, kdybychom nebyli zahnáni do rámce používání tohoto nejdražšího a nejrozhořčenějšího systému.
Sotva řečeno, než uděláno. Udělali jsme pilotní projekt, ve kterém jsme položili základ pro vývoj nového webu Sportmaster. Mnohé z těchto nápadů se chytily a právě nyní na webu aktivně koluje jejich pokračování.
Pilotní fáze a časové rámce
2 dní. Vytvořili jsme mikroprototyp – o víkendu jsme převedli naši databázi do ElasticSearch, kde jsme prováděli fasetové vyhledávání. Voila! Ve stejném zakoupeném systému toto nastavení „sežralo“ 2 týdny. A tady - doslova za pár hodin! A také to funguje rychleji. A je to řádově rychlejší.
2 týdny. Prototyp řežeme a přidáváme funkce pro adekvátní personalizované výsledky.
Například uživatel má několik slev a akcí, které jsou pro něj relevantní - pak ve výsledcích vyhledávání na produktech musíte zobrazit přesně cenu, kterou lze získat použitím všech dostupných dobrot tím nejziskovějším způsobem.
S akciemi to není tak jednoduché. Koupil jsem si třeba lyže, teď je sleva 40% na čepici, ale zároveň se ruší uvítací sleva 10% na celou objednávku. Ano, ano, to je reálný případ :) A pro nastavení takovéto akce v nákupním systému byly zaplaceny 3 konzultace s dodavatelem, v důsledku čehož jsme dostali mnoho příkladů, jak dělat různé jiné akce. Velmi diplomatické a vzhledem k ceně konzultací velmi dobré ekonomicky.
Ukázali jsme podniku podrobné demo. Slíbili, že rychle sestaví pilot a okamžitě se pustili do práce.
2 měsíců. Děláme pilotní projekt v podobě živého webu s katalogovým vyhledáváním. Hledejte pomocí faset, výsledky vyhledávání s osobními slevami, pilot vypadá skoro jako web Sportmaster a nahráli jsme stejné produkty. zlatíčko!
Přidáme „Eloquence:100“ od vedoucího oddělení a prezentace pro firmu bude s třeskem! Dostáváme volnou ruku k tomu, abychom sami vyvinuli platformu eCommerce.
A to znamená, kluci, udržet tým, kluci, udržet rozpočet. Chladný!
Roky 2. Spuštění webu do výroby. Ano, na dlouhou dobu. Vše, co jsme tehdy znali, jsme vyzkoušeli pouze v prototypovém měřítku. Dva lidé snadno vytvoří sehraný tým. A úkoly, které jsme „odklikli“, byly vesměs malými přírůstky do „Hello World“ v nových technologiích. Snadno jsme vytvořili nové hypotézy, rychle je otestovali, neměli čas se připoutat, a proto je bez lítosti „zabili“. Když nás bylo 10, setrvačností jsme extrapolovali naši pracovní rychlost na všechny ostatní. A slíbili takové termíny pro splnění úkolu, které se rovnají myšlence krásy znásobené naším nadšením.
Běžná situace? 🙂
Tak už víte, co bude dál?
Past #1. "Super extrapolátor"
Je jasné, že nové technologie vypadají v prezentacích velmi cool a fungují dobře v aplikaci Hello World. Realita je tomu ale většinou o něco vzdálenější.
Tak tady to je. Vezmeme knihovnu a napíšeme spoustu aplikačního kódu. Unit testy považujeme za zátěž (jsme cool a pracujeme zde na nadzvukových úrovních, kód je moderní a tak dále). Neustále měníme a vylepšujeme API na cestách - jaké testy existují, vážně. A to vše pod heslem „skvěle optimalizovaný proces vývoje“ (ano, teď je děsivé to i popsat).
A pak je vše zcela zřejmé.
Zavádíme novou verzi na uat. Kluci z obchodu to jdou vesele otestovat a mačkat tlačítka. Občas lisují docela kreativně – něco odpadne. Chtěl bych sem jít a zjistit, co pro to udělali. Na druhé straně monitoru ale nestojí tvrdohlavý tester, který vám vyvalí všechny vlastnosti prostředí s přihlédnutím k počasí v regionu, ale zákazník z byznysu. Prostě mu to „nefunguje“. Což znamená, že je nešťastný. Zeptejte se ho a on to udělá děsivý nespokojený!

Pak, aby se chyba rozmnožila, musíte jít a vše hrubou silou. Samozřejmě jsme žádnou stížnost neignorovali a vše zaznamenali. Opustili plánované úkoly, ale „uhasili oheň“.
Tak jsme si vykopali další díru.
Past #2. "stachanovec"
Dostali jste nepříliš příjemnou chybu. Začínáš chápat. Nejde to - hněv - snažíš se na to znovu přijít - další průšvih - ujasňuješ si vše, co můžeš - zase to není ono - myslíš si, že už jsi starý a všichni mají děti a hypotéku - zkoušíš to znovu - opět to není totéž. Pár hrnků kávy a vše se opakuje. 12-14 hodin práce v kuse je téměř normou. A teď, když už je všechno na hranici svých možností – bum, inspirace!

Možná, že zvenčí je hodnocení účinnosti takového dne dobře a správně viditelné. Ale zevnitř to může být jinak.
V mém případě dojem z takové práce obsahoval: „Jsem skvělý, jsem cool, mám to správně“. Ne vždy vědomě, ale nevědomě – vždy!
A ty se na to chytneš, žádná sranda. Ukazuje se, že vnitřní metriky úspěšnosti pohybu se posouvají od výsledku k množství vynaloženého úsilí a úrovni toho, jakých výkonů jste dosáhli, jak moc jste trpěli při pokusu o vyřešení problému.
To je asi nejhorší past.
Pak to bude jednodušší a zábavnější :)
Past #3. „Síla Hello World“
Náš technologický zásobník toho období: ElasticSearch, Hazelcast, Pentaho, freemarker (a osvědčené Java, Spring, Tomcat, nginx). Freemarker neposkytoval příliš informativní chybové zprávy. Ale ElasticSearch, Hazelcast, Pentaho musely být několikrát záplatovány - brilantně jsme našli případy, kdy nefungovaly tak, jak je uvedeno v dokumentaci.
Snadný start a rychlé výhody plynoucí z používání nové technologie jsou dobré, ale vedou k euforii a snižují ostražitost. Protože nová technologie obsahuje chyby, rozhodně obsahuje chyby. A pokud jste o nich ještě nepsali, radujte se, jste to právě vy, kdo se stane průkopníkem, který v každém případě sebere něco křivého a jde do Googlu nebo na SO. Samozřejmě, že „pokřivené“ lze najít v osvědčených produktech, ale v nových je to mnohem jednodušší.

Přes všechny potíže jsme se pustili do výroby. Ano, s prodlevami. Ano, ne příliš stabilní. Ale obecně žádné katastrofy.
V souhrnu ještě jednou upozorním na pasti, které narušují zdravé vnímání pracovního procesu.
- "Super extrapolátor". Pod dojmem současných úspěchů jdeme a s radostí extrapolujeme rychlost vývoje na nadcházející projekty.
- "stachanovec". Tvrdě pracujeme, jsme se sebou spokojeni, ale nevnímáme, že problémy, které řešíme, jsou důsledkem našich osobních chyb/nedostatků/zanedbání. Práce, které se nemají dělat.
- „Síla Hello World“. Spěcháme, abychom zavedli všechny nejnovější a nejzajímavější věci do výroby.
Proč se vše povedlo?
Samozřejmě jsem neuvedl všechny chyby, které jsme během této doby měli, ale ty nejčastější, pravděpodobně pro projekt jakékoli specifičnosti. Tento druh zaznamenávání chyb pomáhá těmto chybám v budoucnu předejít.
Něco málo o tom, jak se nám v rámci firmy podařilo vytvořit takový ministartup a přesvědčit byznys, aby přešel z již zakoupeného systému na něco vlastního.
Podmínka č. 0. Zdravé klima ve firmě. Nejde jen o „vypalování očí“ zaměstnanců a komunikační dovednosti ve stresových podmínkách získávání cookies, ne. Jde o všechny interakce.
Podmínka č. 1. Věřte tomu, co děláte. Vážně, nemyslím si, že bychom měli nějakou šanci, kdybychom se chopili pilota, aniž bychom zakoupený systém rozebrali až na šroub – tedy ustoupili a podvědomě věděli, že tento systém je chladnější a porazí nás.
Co jsme udělali: 1) vymysleli nákupní systém, s jeho pomocí jsme vyřešili hlavní požadavky ze strany obchodu 2) sestavili seznam úkolů, které existují nejen nyní, ale budou existovat i v dohledné době, 3) vybrali řešení, které lépe sedí. A pak, naše posouzení řešení bylo posouzením odborníků.
Dali by nám něco, kdybychom jen přišli a řekli: „Kluci, všechno jsou kecy, nechceme to řešit a rozhodli jsme se vytvořit si vlastní od nuly“? Stěží. Navíc by odpověď dostala v takové podobě, že by se dobře pamatovala :)
Podmínka č. 2. První krok děláme v malém. Vytvořme první hypotézu a otestujme ji. Můžete tomu věnovat i svůj osobní čas. Pokud nechcete ztrácet čas, neměli byste si takovou věc vůbec brát. A pokud nechcete testovat malou hypotézu, ale chcete to okamžitě udělat cool a brilantně, držte se od takových lidí dál!
Měli jsme štěstí a hned první hypotéza vyšla. Ale to se nestává vždy. Například v jednom z následujících projektů, kdy jsme propagovali admin panel v rámci podobného pilotního projektu, se nám osvědčila pouze 18. možnost. A prvních 17 přiblížení ke střele bylo marných. Mimochodem, v příběhu o vytvoření admin panelu byly dějové zvraty na úrovni brazilských televizních seriálů, protože tým tvořili kluci, kteří byli v té době již veterány, skutečné „strouhané rohlíky“.
Podmínka č. 3. Děláme MVP a hledáme bolest v tom, kdo rozhoduje. Samozřejmě může mít ve tváři zděšený výraz už jen z toho, že mu už po třicáté přinášíte nějaký nápad. Ale stejně. A dbáme na to, abychom přesně ukázali, jak řešíme jeho problémy s naším produktem.
Podmínka č. 4. Na koleně rychle uděláme pilota, který vypadá o jako konečný výsledek. Je lákavé udělat všechno opravdu cool, ale můžete uvíznout v perfekcionismu, což může vést k tomu, že místo pilotního dílu budete chtít ukázat pilotní verzi již dokonalého produktu. Ale neexistují. Tak si jednu vyrobte z tyčinek.
Podmínka č. 5. Produkt. Projekt se rozrůstá, dostává finance a přicházejí specialisté se solidními zkušenostmi.
A pokud jste klasický startupista, pak je to právě ten okamžik, kdy potřebujete skončit s píšťalkou. Protože snadné lety na samotný vrchol a pocit všeobecného blaha z toho, co se děje, se rychle rozplynou.
Přechod do výroby znamená čelit skutečné zátěži, integrovat se s desítkami systémů a když vytváříte novou funkcionalitu, současně vylepšujete staré verze v rámci údržby. To všechno jsou výzvy, které jsou mnohem závažnější než přijít s nápadem a vyřešit, byť dobře, jen jeden klientský problém.
To jsou výzvy a k růstu dovedností dochází právě v této fázi.
Děkuji za přečtení. Šťastný nový kód!
Zdroj: www.habr.com
