Sveiki! Mano vardas Aleksejus Pyankovas, aš esu „Sportmaster“ vyriausiasis programuotojas. Iš karto pasakysiu, kad „vyriausiasis“ nereiškia „svarbiausias iš visų programuotojų“, ne, tai tik vardas, toks žavus „Senior+“ vertimas.
Kompanijoje „Sportmaster“ dirbu nuo 2012 m., per šį laiką kūrėjų komanda padarė daug sprendimų, kurie yra įdomūs iš techninės pusės. Tačiau šiandien norėčiau pakalbėti apie mūsų darbą, pabrėždamas, kaip samprotavome tam tikrose dviprasmiškose situacijose.
Šiame straipsnyje nebus konkrečių techninių sprendimų (ar apskritai nieko techninio), kurių turėtumėte imtis ir pritaikyti savo projekte. Greičiau tai nuveikto darbo apmąstymas. Buvo tokių ypatingų momentų, kurie paveikė mus kaip komandą – jie mus suvienijo, sustiprino ir išbandė jėgas. Šiandien pabandysiu papasakoti apie šias akimirkas, apie komandinio darbo atmosferą, apie mūsų grėblius ir daugybę psichologinių spąstų, į kuriuos kartais įsiveliame patys.

Ir aš pradėsiu nuo 2012 m.
Į 2012-uosius atėjau turėdamas pagrindinį tuometinį tikslą – dirbti mūsų pavyzdinėje svetainėje. Tuo metu tai buvo „Frankenšteino monstras“: dalis komandos dirbo su mūsų senąja sistema, kuri nelabai gerai atlaikė apkrovas (Bitrix), o kita komandos dalis (kurioje buvo ir aš) bandė diegti naują sistemą. , kuri buvo pasirinkta pagal kriterijų „Kai tai yra brangiausia elektroninė prekyba pasaulyje, imkim“. Būtent „jie bandė įgyvendinti“ - nes sistema beviltiškai priešinosi ir kiekvieną akimirką, kurią pavyko sutvarkyti, visada atsiliepė „staigmena“. Sunkiai dirbome, bet judėjome sraigės tempu.
Man asmeniškai paskutinis lašas buvo pažintis su vieno metodo kodu šioje „brangiausioje pasaulyje elektroninėje prekyboje“, kai kelias valandas trukęs koncentruotas darbas ties painia klaida privedė prie to, kad priežastis buvo rasta kažkur Custom-tag, kuris veikia generuojant html JSP. Šios tinkintos žymos tikslas yra parodyti kai kurių reikšmių sumą. Tai nėra blogai, tam skirtos individualizuotos žymos. Tačiau nuostaba buvo paslėpta tame, kad tuo pačiu metu keičiami kai kurie duomenys duomenų bazėje, elgesys kituose puslapiuose yra susietas su tuo, o jei paspausite F5, skambutis kartojamas, tai pažeidžia duomenų nuoseklumą. . Be to, jis pažeidė taip, kad pasirodė tik po kelių žingsnių, 3-iame sekos puslapyje. Ne, aš neprieštarauju, kad komandoje yra toks „pagrindinis nindzė“ ir jo kodas palaiko gerą kolegų dėmesį. Bet kaip tik taip, brangiausioje sistemoje!
Tai buvo penktadienį. O mes su kolega šeštadienį ir sekmadienį praleidome biure, siekdami išsiaiškinti, kokias užduotis verslas kelia sistemai šiuo metu ir kokias užduotis gali sugalvoti po metų. Atitinkamai, kaip mes juos išspręstume, jei nebūtume įvaryti į šios brangiausios ir labiausiai piktinančios sistemos naudojimo rėmus.
Ne anksčiau pasakyta, nei padaryta. Sukūrėme bandomąjį projektą, kuriame padėjome pamatus naujos „Sportmaster“ svetainės kūrimui. Daugelis šių idėjų prigijo ir šiuo metu svetainėje aktyviai sklando jų tęsinys.
Bandomieji etapai ir laiko tarpai
2 dienos. Sukūrėme mikroprototipą – savaitgalį perkėlėme duomenų bazę į ElasticSearch, atlikdami briaunuotą paiešką. Voila! Toje pačioje įsigytoje sistemoje šis nustatymas „suvalgė“ 2 savaites. Ir štai – tiesiogine prasme per porą valandų! Ir tai taip pat veikia greičiau. Ir tai yra eilės tvarka greičiau.
2 savaitės. Pjauname prototipą ir pridedame funkcionalumą, kad gautume tinkamus asmeninius rezultatus.
Pavyzdžiui, vartotojas turi keletą specialiai jam aktualių nuolaidų ir akcijų – tuomet prekių paieškos rezultatuose reikia nurodyti būtent tokią kainą, kurią galima gauti pelningiausiai naudojant visas turimas gėrybes.
Su akcijomis nėra taip paprasta. Pavyzdžiui, aš nusipirkau slides, dabar taikoma 40% nuolaida kepurėlei, bet tuo pačiu atšaukiama 10% sveikinimo nuolaida visam užsakymui. Taip, taip, tai realus atvejis :) O norint įsirengti tokią akciją pirkimo sistemoje, buvo apmokėtos 3 konsultacijos su tiekėju, ko pasekoje gavome daug pavyzdžių, kaip daryti įvairias kitas akcijas. Labai diplomatiškas ir, įvertinus konsultacijų kainą, ekonomiškai labai geras.
Parodėme išsamią įmonės demonstracinę versiją. Jie pažadėjo greitai surinkti pilotą ir nedelsdami ėmėsi darbo.
2 mėnesiai. Vykdome bandomąjį projektą tiesioginės svetainės su paieška kataloge forma. Paieška su aspektais, paieškos rezultatai su asmeninėmis nuolaidomis, pilotas atrodo beveik kaip Sportmaster svetainė, o mes įkėlėme tuos pačius produktus. Mieloji!
Pridedame „Iloquence:100“ iš savo skyriaus vadovo, ir pristatymas verslui vyksta su kaupu! Mums suteikiama galimybė patiems kurti elektroninės prekybos platformą.
O tai reiškia, vaikinai, išlaikykite komandą, vaikinai, laikykitės biudžeto. Šaunu!
2 metais. Svetainės paleidimas į gamybą. Taip, ilgą laiką. Viską, ką tada žinojome, išbandėme tik prototipų masteliuose. Du žmonės nesunkiai suformuoja gerai suderintą komandą. Ir užduotys, kurias „atsileidome“, iš esmės buvo nedideli „Hello World“ papildymai naujose technologijose. Mes nesunkiai sugeneravome naujas hipotezes, greitai jas patikrinome, nespėjome prisirišti ir todėl nesigailėdami „nužudėme“. Kai mūsų buvo 10, mes pagal inerciją ekstrapoliavome savo darbo greitį visiems kitiems. Ir jie pažadėjo tokius užduoties atlikimo terminus, kurie prilygsta grožio idėjai, padaugintam iš mūsų entuziazmo.
Ar tai pažįstama situacija? 🙂
Tada ar jau žinai, kas bus toliau?
Spąstai #1. "Šaunus ekstrapoliatorius"
Akivaizdu, kad naujos technologijos labai šauniai atrodo pristatymuose ir gerai veikia „Hello World“ programoje. Tačiau realybė paprastai yra šiek tiek toliau nuo to.
Taigi štai. Paimame biblioteką ir parašome krūvą programos kodo. Vienetinius testus laikome našta (mes šaunūs ir dirbame viršgarsiniu lygiu, kodas modernus ir pan.). Mes nuolat keičiame ir tobuliname API kelyje – rimtai kokie ten testai. Ir visa tai po „labai optimizuoto kūrimo proceso“ vėliava (taip, dabar baisu net apibūdinti).
Ir tada viskas yra gana akivaizdu.
Išleidžiame naują UAT pastatą. Verslo vaikinai linksmai ruošiasi viską išbandyti ir paspausti mygtukus. Kartais spaudžia gana kūrybiškai – kažkas nukrenta. Norėčiau čia nuvykti ir sužinoti, ką jie dėl to padarė. Tačiau kitoje monitoriaus pusėje – ne užsispyręs bandytojas, kuris, atsižvelgdamas į orą regione, išleis jums visas aplinkos savybes, o klientas iš verslo. Jam tai tiesiog „neveikia“. O tai reiškia, kad jis nelaimingas. Paklausk jo ir jis padarys baisu nepatenkintas!

Tada, norėdami atgaminti klaidą, turite eiti ir viską sunaikinti. Žinoma, nei vieno skundo neignoravome ir viską užfiksavome. Jie atsisakė suplanuotų užduočių, bet „užgesino ugnį“.
Taigi iškasėme sau kitą duobę.
Spąstai #2. "Stachanovietis"
Gavote ne itin malonią klaidą. Pradedi suprasti. Nepavyksta - pyktis - bandai issiaiskinti - dar vienas bumas - tu viska isaiskinsi - vel ne tas pats - manai, kad tu jau senas ir visi turi vaiku ir hipoteka - bandai dar karta - vėlgi ne tas pats. Keli puodeliai kavos, ir viskas kartojasi. 12-14 valandų darbo iš eilės – beveik norma. O dabar, kai viskas jau prie ribos – bam, įkvėpimas!

Galbūt iš šalies gerai ir teisingai matomas tokios dienos efektyvumo įvertinimas. Tačiau iš vidaus viskas gali būti kitaip.
Mano atveju iš tokio darbo susidarė įspūdis: „Aš esu puikus, aš šaunus, supratau teisingai“. Ne visada sąmoningai, bet nesąmoningai – visada!
Ir tu užsikabini, nejuokaujama. Pasirodo, vidinės judėjimo sėkmės metrikos keičiasi nuo rezultato į įdėtą pastangų kiekį ir lygį, kokius žygdarbius padarėte, kiek kentėjote bandydami išspręsti problemą.
Tai turbūt patys baisiausi spąstai.
Tada bus lengviau ir smagiau :)
Spąstai #3. „Sveikas pasaulio galia“
Mūsų to laikotarpio technologijų paketas: ElasticSearch, Hazelcast, Pentaho, nemokamas žymeklis (ir patikrinta Java, Spring, Tomcat, nginx). „Freemarker“ nepateikė labai informatyvių klaidų pranešimų. Tačiau „ElasticSearch“, „Hazelcast“, „Pentaho“ teko kelis kartus pataisyti – puikiai radome atvejų, kai jie neveikė taip, kaip nurodyta dokumentacijoje.
Lengva pradžia ir greita nauda naudojant naujas technologijas yra gerai, tačiau tai sukelia euforiją ir mažina budrumą. Kadangi naujoje technologijoje yra klaidų, joje tikrai yra klaidų. O jei dar neparašėte apie juos, džiaukitės, būtent jūs tapsite pionieriumi, kuris bet kokiu atveju pasiima ką nors kreivo ir nueina į Google ar SO. Žinoma, „kreivų“ galima rasti patikrintuose gaminiuose, tačiau naujuose tai daug lengviau.

Nepaisant visų sunkumų, pradėjome gaminti. Taip, su vėlavimais. Taip, nelabai stabilus. Bet apskritai jokių nelaimių.
Apibendrinant, dar kartą atkreipsiu dėmesį į pinkles, kurios iškreipia sveiką darbo proceso suvokimą.
- "Šaunus ekstrapoliatorius". Sužavėti dabartinių sėkmių, einame ir su džiaugsmu ekstrapoliuojame plėtros greitį būsimiems projektams.
- "Stakhanovite". Sunkiai dirbame, esame patenkinti savimi, bet nepastebime, kad problemos, kurias sprendžiame, yra mūsų asmeninių klaidų/trūkumų/aplaidų pasekmė. Darbai, kurių nereikia daryti.
- „Sveikas pasaulio galia“. Skubame į gamybą įvesti visus naujausius ir įdomiausius dalykus.
Kodėl viskas pavyko?
Žinoma, neišvardijau visų klaidų, kurias turėjome per tą laiką, bet dažniausiai pasitaikančias, tikėtina, bet kokio konkretumo projektui. Toks klaidų fiksavimas padeda jų išvengti ateityje.
Šiek tiek apie tai, kaip mums pavyko sukurti tokį mini startuolį įmonės viduje ir įtikinti verslą pereiti nuo jau įsigytos sistemos prie kažkokio savo.
Sąlyga #0. Sveikas klimatas įmonėje. Tai ne tik darbuotojų „degančios akys“ ir bendravimo įgūdžiai įtemptomis sausainių gavimo sąlygomis, ne. Tai apie visas sąveikas.
Sąlyga #1. Tikėkite tuo, ką darote. Jei rimtai, nemanau, kad būtume turėję jokių šansų, jei būtume ėmęsi piloto neišardę įsigytos sistemos iki varžto – tai yra atsitraukę ir nesąmoningai žinodami, kad ši sistema šaunesnė ir mus nugalės.
Ką padarėme: 1) sugalvojome pirkimo sistemą, jos pagalba išsprendėme pagrindinius verslo užklausas 2) sudarėme sąrašą užduočių, kurios ne tik egzistuoja dabar, bet ir bus artimiausioje ateityje 3) pasirinkome sprendimą, kuris tinka geriau. Ir tada mūsų sprendimo vertinimas buvo ekspertų vertinimas.
Ar jie mums ką nors duotų, jei tik ateitų ir pasakytume: „Vaikinai, viskas yra kvailystė, nenorime su tuo susidurti ir nuspręstume nuo nulio pasidaryti patys“? Vargu ar. Be to, atsakymas būtų gautas tokia forma, kad gerai įsimintų :)
Sąlyga #2. Pirmą žingsnį žengiame mažu. Sugeneruokime pirmąją hipotezę ir patikrinkime ją. Tam taip pat galite skirti savo asmeninį laiką. Jei nenorite gaišti savo laiko, tuomet neturėtumėte imtis tokio dalyko. Ir jei nenorite patikrinti mažos hipotezės, bet norite tai padaryti iš karto šauniai ir puikiai, laikykitės atokiau nuo tokių žmonių!
Mums pasisekė ir pati pirmoji hipotezė pasiteisino. Tačiau taip nutinka ne visada. Pavyzdžiui, viename iš toliau pateiktų projektų, kai reklamavome administratoriaus skydelį kaip panašaus bandomojo projekto dalį, mums pasiteisino tik 18-oji parinktis. Ir pirmieji 17 priartėjimų prie sviedinio buvo veltui. Beje, istorijoje su admin panelės kūrimu siužeto vingiai buvo braziliško serialo lygio, nes komandą sudarė vaikinai, kurie tuo metu jau buvo veteranai, tikri „tarkuoti suktinukai“.
Sąlyga #3. Mes darome MVP ir ieškome sprendimų priėmėjo skausmo. Žinoma, jo veide gali pasirodyti siaubas vien dėl to, kad jau trisdešimtą kartą parneši jam kažkokią idėją. Bet nesvarbu. Ir būtinai parodysime, kaip tiksliai išsprendžiame jo problemas su mūsų gaminiu.
Sąlyga #4. Ant kelio mes greitai atliekame pilotą, kuris atrodo apie kaip galutinis rezultatas. Kyla pagunda, kad viskas būtų tikrai šaunu, tačiau galite įstrigti perfekcionizme, dėl kurio norėsite parodyti ne bandomąją, o bandomąją jau tobulo produkto versiją. Bet jų nėra. Taigi tiesiog padarykite vieną iš pagaliukų.
Sąlyga #5. Produktas. Projektas auga, gauna finansavimą, ateina solidžią patirtį turintys specialistai.
O jei esate klasikinis startuolis, tai pats momentas, kai reikia mesti su švilpuku. Nes lengvi skrydžiai į pačią viršūnę ir bendros palaimos jausmas to, kas vyksta, greitai išsisklaido.
Pradėti gamybą reiškia susidurti su tikrais darbo krūviais, integruotis su daugybe sistemų, o kurdami naują funkcionalumą kartu tobulinate senas versijas kaip priežiūros dalį. Visa tai yra iššūkiai, kurie yra daug rimtesni nei sugalvoti idėją ir išspręsti, nors ir gerai, tik vieną kliento problemą.
Tai iššūkiai, o įgūdžių augimas vyksta būtent šiame etape.
Ačiū, kad skaitėte. Laimingo naujojo kodo!
Šaltinis: www.habr.com
