Retrospektíva prekážok. Ako vlastné riešenie prekonalo platené

Ahoj! Volám sa Alexey P'ankov, som hlavný programátor v spoločnosti Sportmaster. Hneď poviem, že „hlavný“ neznamená „najhlavnejší zo všetkých programátorov“, nie, je to len názov, taký očarujúci preklad pre „Senior+".

V spoločnosti Sportmaster pracujem od roku 2012 a za ten čas tím vývoja vytvoril množstvo technicky zaujímavých riešení. Dnes by som však chcel hovoriť o našej práci s dôrazom na to, ako sme uvažovali v určitých nejednoznačných situáciách.

V tomto článku nebudú konkrétne technické riešenia (a ani celkově niečo technického), ktoré by sa mali uchopiť a aplikovať vo vašom projekte. Skôr ide o reflexiu na vykonanú prácu. Boli také osobité momenty, ktoré ovplyvnili nás ako tím - zjednotili nás, posilnili a preverili našu odolnosť. O týchto momentoch, o atmosfére práce v tíme, našich prekážkach a rade psychologických pascí, do ktorých sa občas dostávame, sa dnes pokúsim hovoriť.

Retrospektíva prekážok. Ako vlastné riešenie prekonalo platené

A začnem práve od roku 2012.

Prišiel som v roku 2012 s hlavným cieľom v tom čase - prácou na našej vlajkovej stránke. Vtedy to bol „monštrum Frankenštejna“: časť tímu pracovala s naším starým systémom, ktorý si nepočínal veľmi dobre pod loadom (Bitrix), a v druhej časti tímu (kam som patril aj ja) sme sa snažili zaviesť nový systém, ktorý sme vybrali na základe kritéria „Keďže je to najdrahší e-commerce na svete, berieme ho“. Presne „snažili sme sa zaviesť“ - pretože systém zúfalo odolával, a na každý problém, ktorý sa nám podarilo vyriešiť, sa určite objavil „prekvapenie“ ako odpoveď. Pracovali sme veľa, ale napredovali sme rýchlosťou slimáka.

Pre mňa poslednou kvapkou bolo spoznanie kódu jedného metódy v tejto "najdrahšej e-commerce na svete", keď niekoľko hodín sústredenej práce na zložitom bugu viedlo k tomu, že príčina bola nájdená niekde v custom-tag, ktorý sa aktivuje pri generovaní html v jsp. Úlohami tohto custom-tag je zobraziť súčet určitých veličín. To nie je zlé, na to je custom-tag určený. Ale prekvapenie sa skrývalo v tom, že pri tom sa menia niektoré údaje v databáze, na tom závisí správanie na nasledujúcich stránkach, a ak stlačíte F5 — volanie sa opakovalo, čo narušovalo konzistenciu dát. Navyše to narušovalo takým spôsobom, že sa to prejavilo až po niekoľkých krokoch, na 3. stránke postupnosti. Nie, nie som proti tomu, aby taký "majster-ninja" bol v tíme a svojím kódom udržiaval pozornosť kolegov v hypu. Ale takto, v libe najdrahšej systému!

Bolo to v piatok. V sobotu a nedeľu sme s kolegom strávili v kancelárii s cieľom zistiť, aké úlohy stanovuje biznis pred systémom práve dnes a aké úlohy môže vymyslieť za rok. Zodpovedajúce, ako by sme ich riešili, ak by sme neboli uväznení v hraniciach používania tej najdrahšej a najfrustrujúcejšej systému.

Povedané — vykonané. Urobili sme pilot, v ktorom sme položili základ pre vývoj novej webovej stránky Sportmaster. Mnoho z týchto nápadov sa ujalo a práve teraz ich pokračovanie aktívne funguje na stránke.

Etapy pilota a časové rámce

2 dni. Vyrobili sme mikroprototyp — cez víkend prevádzame našu databázu do ElasticSearch, robíme facetový vyhľadávanie. A je to! V tejto zakúpenej systéme táto konfigurácia "zožrala" 2 týždne. A tu — doslova za pár hodín! A ešte aj funguje rýchlejšie. Navyše rýchlejšie o poriadok.

2 týždne. "Pílime" prototyp, pridávame funkčnosť pre adekvátnu personalizovanú výstup.

Napríklad, ak má používateľ niekoľko zliav a akcií, ktoré sú aktuálne pre neho — potom v výsledkoch vyhľadávania na tovaroch je potrebné zobraziť práve tú cenu, ktorú je možné získať použitím všetkých dostupných výhod najvýhodnejším spôsobom.

S akciami to nie je také jednoduché. Napríklad, kúpil som lyže, teraz je zľava 40 % na čiapku, ale ruší to welcome zľavu 10 % na celú objednávku. Áno, toto je skutočný prípad 🙂 A na to, aby sme nastavili takúto akciu v nákupnom systéme, sme zaplatili 3 konzultácie s dodávateľom, počas ktorých sme získali množstvo príkladov, ako spraviť rôzne iné akcie. Veľmi diplomaticky a vzhľadom na cenu konzultácií — veľmi dobre ekonomicky.

Ukázali sme biznisu podrobnú demónstráciu. Sľúbili, že rýchlo zrealizujú pilot a ihneď sa pustili do práce.

2 mesiace. Pilotný projekt — robíme vo forme živého webu s vyhľadávaním v katalógu. Vyhľadávanie s fasetami, výsledky vyhľadávania — s osobnými zľavami, pilot vyzerá takmer ako web Sportmasteru, a aj produkty sme nahrali tie isté. Lahôdka!

Pridávame «Krásne rečnenie:100» nášho vedúceho oddelenia a prezentácia biznisu prebieha na drajv! Dostávame voľnú ruku na to, aby sme vyvinuli eCommerce platformu sami.

A to znamená, držte sa, chlapci, tím, držte sa, chlapci, rozpočet. Super, že?

2 roky. Výstup webu do produkcie. Áno, trvalo to dlho. Všetko, čo sme vtedy vedeli, sme skúšali len v rozsahu prototypu. Dvaja ľudia ľahko vytvoria zladený tím. A úlohy, ktoré sme 'odbavovali' — v podstate to boli malé doladenia 'Hello World' v nových technológiach. Ľahko sme generovali nové hypotézy, rýchlo ich overovali, nestihli sme sa viazať a preto sme ich bez ľútosti 'zabiť'. Keď nás bolo 10, my sme setovali našu rýchlosť práce na všetkých ostatných. A sľúbili sme také lehoty plnenia úloh, ktoré sú rovné predstave o dokonalosti vynásobenej naším nadšením.

Poznáte to? 🙂

Takže, už viete, čo bude ďalej?

Pasca č. 1. „Extrapolátor-súper“

Je jasné, že nové technológie vyzerajú veľmi úžasne v prezentáciách a excelente sa osvedčujú v aplikácii typu 'Hello World'. Ale realita je zvyčajne o trochu vzdialenejšia od toho.

Takže. Berieme knižnicu, píšeme kopu aplikačného kódu. Jednotkové testy považujeme za záťaž (sme predsa skvelí a makáme na nadzvuku, kód je moderný a podobne). Neustále meníme a dopĺňame API za chodu — tak aké testy, vážne. A všetko to pod vlajkou 'skvele sme optimalizovali proces vývoja' (áno, teraz je to dokonca strašné popisovať).

A ďalej je všetko celkom zrejmé.

Vydávame nový build na uat. Chlapci z biznisu sa pustili do testovania a stláčania tlačidiel. Niekedy tlačia dosť kreatívne — niečo sa odporúča. Tu by bolo dobre ísť a zistiť, čo na to urobili. Ale na druhej strane monitora nestojí nadšený testér, ktorý ti vyškrtá všetky charakteristiky prostredia s ohľadom na počasie v regióne, ale zákazník z biznisu. Ten jednoducho vyhlasuje, že „nefunguje“. A to znamená, že nie je spokojný. Opýtaj sa ho — a on bude strašne nespokojný!

Retrospektíva prekážok. Ako vlastné riešenie prekonalo platené

Takže, aby sme reprodukovali chybu, musíme ísť a všetko prehodiť. Samozrejme, nezanechali sme bez povšimnutia ani jednu sťažnosť a všetko sme opravili. Odkázali sme naplánované úlohy, ale „hasili sme požiar“.

Takto sme si vykopali ďalšiu jamu.

Pasca č. 2. „Stachanovec“

Prišiel ti nie veľmi príjemný bug. Začínaš sa v tom vyznať. Nedarí sa — hnev — pokus zbadať to znova — ďalší kolaps — upresňuješ všetko, čo je možné — opäť nie to, na čo myslíš, že už si starý a všetci majú deti a hypotéky — skúšaš znovu — opäť nie to. Niekoľko šálok kávy, a všetko sa opakuje. 12-14 hodín práce v kuse — takmer normálne. A tak, keď sú už všetci na hranici — bum, osvetlenie!

Retrospektíva prekážok. Ako vlastné riešenie prekonalo platené

Možno z pohľadu z vonka je hodnota efektivity takého dňa jasne a správne viditeľná. Ale zvnútra — môže to byť rôzne.

V mojom prípade dojem z takej práce obsahoval „Som šik, som úžasný, zvládol som to“. Nie vždy vedome, ale nevedome — vždy!

A na to si zvykneš, bez štipky humoru. Vychádza to tak, že vnútorné metriky úspešnosti sa posúvajú z výsledku na množstvo vynaloženého úsilia a úroveň toho, aké hrdinské činy si vykonal, ako veľmi si trpel pri riešení úlohy.

Možno, že je to najstrašnejšia pasca.

Ďalej to bude ľahšie a zábavnejšie 🙂

Pasca č. 3. „Sila Hello world“

Náš technologický stack v tom období: ElasticSearch, Hazelcast, Pentaho, freemarker (a osvedčené Java, Spring, Tomcat, nginx). Freemarker nevydával veľmi informatívne chybové správy. Ale ElasticSearch, Hazelcast, Pentaho sme museli patchovať niekoľkokrát — talentovane sme nachádzali prípady, v ktorých fungovali inak, ako je stanovené v dokumentácii.

Ľahký štart a rýchle úspechy s využitím novej technológie sú skvelé, no zavádzajú do eufórie a znižujú ostražitosť. Pretože nová technológia vždy obsahuje chyby, nevyhnutne obsahuje chyby. A ak o nich ešte nenapísali — teš sa, presne ty sa staneš tým priekopníkom, ktorý si nevyhnutne nájde niečo krivého a pôjde hľadať na Google alebo na SO. Samozrejme, „krivinu“ môžete nájsť aj v overených produktoch, ale v nových je to omnoho jednoduchšie.

Retrospektíva prekážok. Ako vlastné riešenie prekonalo platené

Napriek všetkým problémom sme sa dostali do produkcie. Áno, s lagmi. Áno, nie veľmi stabilne. Ale celkovo — bez katastrof.

Znova spomeniem pasce, v ktorých sa skresľuje zdravé vnímanie pracovného procesu.

  1. „Extrapolátor-kruh“. Pod dojmom aktuálnych úspechov ideme vpred a nadšene extrapolujeme rýchlosť vývoja na nadchádzajúce projekty.
  2. „Stachanovec“. Pracujeme na hranici možností, sme so sebou spokojní, ale nevšímame si, že problémy, ktoré riešime — to sú následky našich osobných chýb/ nedostatkov/ zanedbaní. Práca, ktorú je potrebné vykonať.
  3. „Sila Hello world“. Ponáhľame sa zaviesť do produkcie všetko najnovšie a najzaujímavejšie.

Prečo sa to podarilo

Samozrejme, nevymenoval som všetky chyby, ktoré sme mali za toto obdobie, ale tie najbežnejšie, pravdepodobné pre projekt akejkoľvek špecifikácie. Takéto zaznamenávanie chýb pomáha vyhýbať sa im v budúcnosti.

Trochu o tom, ako sa nám vlastne podarilo vytvoriť taký mini-startup v rámci spoločnosti a presvedčiť biznis prejsť z už zakúpenej systému na niečo vlastné.

Podmienka č. 0. Zdravé prostredie vo firme. Nie je to len o „horúcich očiach“ zamestnancov a komunikatívnosti v stresových situáciách pri získavaní sušienok, nie. Ide o všetky interakcie.

Podmienka č. 1. Veriť v to, čo robíš. Seriózne, nemyslím si, že by sme mali akúkoľvek šancu, keby sme robili pilot, keby sme nerozobrali zakúpený systém „do skrutiek“ — teda, zastavili sa a podvedome si boli vedomí, že tento systém je lepší a prekoná nás.

Čo sme urobili: 1) porozumeli sme zakúpenému systému, s jeho pomocou sme vyriešili hlavné požiadavky podnikania 2) zostavili sme zoznam úloh, ktoré nie sú len aktuálne, ale aj budú v blízkej budúcnosti 3) vybrali sme riešenie, ktoré lepšie vyhovuje. A tak, naše hodnotenie riešenia — to bola hodnotenie expertov.

Dajú nám niečo, ak by sme len prišli a povedali, že "chlapci, všetko je nanič, nechceme sa s tým zaoberať a rozhodli sme sa začať od začiatku"? Asi ťažko. A odpoveď by bola skôr taká, že si ju dlho zapamätáme 🙂

Podmienka č. 2. Prvý krok robíme v malom. Generujeme prvú hypotézu a overujeme ju. Môžete si na to vziať aj svoj osobný čas. Ak sa vám nechce venovať svoj čas — nemali by ste sa do niečoho takého púšťať. A ak sa vám nechce testovať malú hypotézu, ale chcete hneď urobiť niečo úžasné a skvelé — držte sa od takých ľudí ďalej!

Mali sme šťastie a fungovala najprv hypotéza. Ale nie vždy to tak býva. Napríklad pri jednom z nasledujúcich projektov, keď sme propagovali administračné rozhranie v rámci podobného pilota, nám fungovala až 18. varianta. A 17 predchádzajúcich prístupov k problému zlyhalo. Mimochodom, v histórii s tvorbou administračného rozhrania dodatočné zápletky boli na úrovni brazílskych seriálov, pretože tím tvorili chalani, ktorí už boli veteráni, skutoční "oťukaní profíci".

Podmienka č. 3. Robíme MVP a hľadáme bolesti u rozhodujúcej osoby. Samozrejme, na jeho tvári sa môže už od toho faktu, že mu po tridsiaty krát prinášate nejaký nápad, zračiť hrôza. Ale aj tak. A určite mu ukážeme, ako presne riešime jeho problémy svojím produktom.

Podmienka č. 4. Rýchlo urobíme pilot, ktorý vyzerá približne ako konečný výsledok. Urobiť všetko úplne skvele — je lákavé, ale môže sa to skončiť perfekcionizmom, kvôli ktorému namiesto pilota chcete ukázať pilotnú verziu už ideálneho produktu. A také nie sú. Preto urobte aspoň niečo z palíc.

Podmienka č. 5. Produkt. Projekt rastie, získava financie, prichádzajú odborníci so solídnymi skúsenosťami.
A ak ste klasický startupista, toto je ten moment, kedy je najvyšší čas zdrhnúť. Pretože ľahké lety po najvyšších úrovniach a pocit celkovej blahobytosti sa rýchlo rozplynú.

Vstup do produkcie — to je stretnutie so skutočnými záťažami, integrácia s desiatkami systémov, a pritom pri vytváraní novej funkcionality zároveň, v rámci podpory, upravujete staré verzie. To všetko sú výzvy oveľa vážnejšie, než vymyslieť myšlienku a vyriešiť, aj keď dobre, len jednu problém klienta.

Tieto sú výzvy a rast zručností — presne na tomto stupni sa to deje.

Ďakujeme, že ste si to prečítali. Šťastný nový kód!

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster