Përshëndetje! Unë quhem Alexey Pyankov, jam programatori kryesor në kompaninë Sportmaster. Do ta them menjëherë, që "kryesor" nuk do të thotë "më kryesor nga të gjithë programatorët", jo, kjo është vetëm një emër, një përkthim tërheqës për "Senior+".
Në kompaninë Sportmaster punoj që nga viti 2012, dhe gjatë kësaj periudhe ekipi ynë i zhvillimit ka krijuar shumë zgjidhje interesante nga ana teknike. Por sot do doja të flisja për punën tonë me theks të veçantë te se si ne kemi arsyetuar në situata të caktuara të paqarta.
Në këtë artikull nuk do të ketë zgjidhje teknike specifike (po ashtu asgjë teknike), të cilat duhet t'i kapni dhe t'i aplikoni në projektin tuaj. Në vend të kësaj, është një refleksion mbi punën e kryer. Ka pasur momente të veçanta, të cilat na kanë ndihmuar si ekip — na kanë bashkuar, forcuar dhe testuar në qëndrueshmëri. Për këto momente, për atmosferën e punës në ekip, për pengesat tona dhe disa kurthe psikologjike, në të cilat ne vetë ndonjëherë krijojmë, do të përpiqem të flas sot.

Dhe do të filloj pikërisht nga viti 2012.
Unë erdha në 2012 me qëllimin kryesor në atë kohë — punën mbi faqen tonë kryesore. Në atë kohë, kjo ishte një "monstrum Frankenstein": pjesa e ekipit punonte me sistemin tonë të vjetër, i cili nuk përballonte mirë ngarkesën (Bitrix), ndërsa pjesa tjetër e ekipit (ku përfshihesha edhe unë) përpiqej të implementonte një sistem të ri, të zgjedhur sipas kriterit "Nëse kjo është ecommerce më e shtrenjtë në botë, do ta marrim". Pikërisht "përpiqeshim të implementonim" — sepse sistemi po i rezistonte fort, dhe në çdo rast që arritnim të zgjidhnim një problem, patjetër që shfaqej një "surprizë" në përgjigje. Punonim shumë, por përparonim me shpejtësi të ngadaltë.
Për mua, pika vendimtare ishte takimi me kodin e një metode në këtë "e-commerce më të shtrenjtë në botë", kur disa orë pune intensive mbi një bug të ngatërruar çuan në faktin se arsyeja u gjet diku në custom-tag, i cili punon gjatë gjenerimit të html në jsp. Qëllimi i këtij custom-tag është të paraqesë shumën e disa vlerave. Kjo nuk është e keqe, sepse për këtë është krijuar custom-tag. Por befasia ishte se në këtë proces disa të dhëna në databazë janë ndryshuar, dhe kjo ndikon në sjelljen e faqeve të ardhshme, dhe nëse shtypni F5 — thirrja përsëritej, duke e shkelur konsistencën e të dhënave. Në fakt, kjo shkelje shfaqej vetëm pas disa hapash, në faqen e tretë të sekuencës. Jo, unë nuk kam ndonjë problem me një "mester-ninja" në ekip dhe që t'i mbajë kolegët të vëmendshëm me kodin e tij. Por që të jetë kështu, në librin e sistemit më të shtrenjtë!
Ishte e premte. Ndërsa të shtunën dhe të dielën unë dhe kolegu vendosëm të qëndrojmë në zyrë me qëllim të kuptojmë se cilat detyra biznesi janë përpara sistemit pikërisht sot dhe cilat detyra mund të shpikim pas një viti. Si përfundim, si do t'i zgjidhnim ato, nëse nuk do të ishim të shtypur nga kufijtë e përdorimit të këtij sistemi më të shtrenjtë dhe më të bezdisshëm.
E thënë — e bërë. Ne realizuam një pilot, në të cilin vendosëm bazën për zhvillimin e një sit-i të ri për Sportmaster. Shumica e këtyre ideve u pranua dhe tani vazhdojnë të jenë aktivisht në faqen.
Hapat e pilotit dhe afatet e kohës
2 ditë. Krijuam një mikroprototip — gjatë fundjavës transferojmë bazën tonë në ElasticSearch, bëjmë kërkimin me facet. Voilà! Në atë sistem të blerë një konfigurim i tillë "ha" 2 javë. Por këtu — për pak orë! Dhe punon më shpejt. Në fakt, më shpejt me një rend.
2 javë. "Po krijojmë" prototipin, shtojmë funksionalitet për një prezantim të arsyeshëm të personalizuar.
Për shembull, nëse përdoruesi ka disa zbritje dhe oferta që janë pikërisht për të — atëherë në rezultatet e kërkimit për produktet duhet të shfaqet çmimi që mund të arrihet, duke aplikuar të gjitha përfitimet e mundshme në mënyrën më të favorshme.
Me promocionet nuk janë aq të thjeshta. Për shembull, bleva ski, tani ka një zbritje 40% për kapelen, por në të njëjtën kohë anulohet zbritja e mirëseardhjes 10% për tërë porosinë. Po, ky është një rast real 🙂 Dhe për të vendosur një promocion të tillë në sistemin e blerjes, ishin paguar 3 konsultime me ofruesin, nga të cilat morëm shumë shembuj se si të bëjmë promocione të tjera të ndryshme. Shumë diplomatikisht dhe, duke marrë parasysh koston e konsultimeve — shumë mirë ekonomikisht.
I dhamë biznesit një demo të detajuar. Premtuam të përfundojmë pilotin shpejt dhe menjëherë filluam punën.
2 muaj. Projekti pilot — e bëjmë në formën e një сайti në gjallë me kërkimin në katalog. Kërkimi me faseta, rezultatet e kërkimit — me zbritje personale, duket që piloti është pothuajse si сайты Спортмастера, dhe ndoshta produktet që kemi ngarkuar janë po ato. Bukuri!
Shtojme 'Красноречие:100' të shefit tonë të departamentit, dhe prezantimi për biznesin kalon me sukses! Na jepet kartë-blanxh për të zhvilluar platformën e eCommerce vetë.
Dhe kjo do të thotë, mbani, djem, ekipin, mbani, djem, buxhetin. Super, apo jo!
2 vite. Nxjerrja e site-it në prodhim. Po, vonë. Gjithçka që dinim ne, e provuam vetëm në shkallë prototipi. Dy njerëz lehtësisht formojnë një ekip të harmonishëm. Edhe detyrat që ne 'shkëputnim' — në thelb ishin disa përmirësime të vogla 'Hello World' në teknologjitë e reja. Ne lehtësisht gjeneronim hipoteza të reja, shpejt i verifikonim, nuk na vinte keq t'i 'vrisnim'. Kur u bëmë 10 njerëz, me inercinë na e transferuam shpejtësinë e punës sonë tek të tjerët. Dhe premtuam afate të tilla për përfundimin e detyrave, që ishin të barabarta me përfytyrimin e bukur shumëzuar me entuziazmin tonë.
Situatë e njohur? 🙂
Atëherë, a e dini se çfarë do të ndodhë më pas?
Trap N°1. 'Ekstrapolatori Super'
E qartë, teknologjitë e reja duken shumë të mrekullueshme në prezantime dhe tregojnë vetë qartë në aplikacionin 'Hello World'. Por realiteti zakonisht është pak më larg këtij.
Pra, marrim bibliotekën, shkruajmë një sasi të madhe kodi aplikativ. Testet e njësive i konsiderojmë një barrë (ne jemi cool dhe po punojmë në shpejtësi supershpejti, kodi është modern dhe të tjera). Vazhdimisht e ndryshojmë dhe përmirësojmë API-në në lëvizje — pra, cila është këtu testi, seriozisht. Dhe gjithë kjo nën emrin 'kemi optimizuar procesin e zhvillimit' (po, tani është e frikshme ta përshkruash këtë).
Dhe pastaj, gjithçka është mjaft e qartë.
Ne pohojme një version të ri në uat. Djemtë nga biznesi e kanë marrë me entuziazëm për ta testuar këtë dhe për të shtypur butonat. Ndonjëherë ata e bëjnë këtë në mënyrë kreative - diçka ndalon. Duhet të shkoj dhe të zbuloj se çfarë është bërë për këtë. Por përtej monitorit nuk ka ndonjë tester të ngërdhirë, i cili do të të japë të gjitha karakteristikat e mjedisit me kushtet e motit në rajon, por një porositës nga biznesi. Ai thjesht thotë "nuk funksionon". Kështu që ai është i pakënaqur. Pyete atë - dhe ai do të jetë i frikshëm i pakënaqur!

Pastaj, për të riprodhuar defektin, duhet të shkojmë dhe të provokojmë të gjitha. Sigurisht, ne nuk e kemi lënë pa vëmendje asnjë ankesë dhe të gjitha i kemi rregulluar. Kemi lënë mënjanë detyrat e planifikuara, por "jemi shuar zjarrin".
Kështu që gërmova një gropë tjetër për vete.
Kapja Nr. 2. "Stahankovec"
Një defekt i pakëndshëm vjen te ti. Fillon të shqyrtosh. Nuk funksionon - zemërimi - përpjekja për të kuptuar përsëri - një tjetër dështim - sqaroni gjithçka që është e mundur - përsëri nuk është ajo - mendon për atë që je tashmë i moshuar dhe të gjithë kanë fëmijë dhe hipotekë - provon përsëri - përsëri nuk është ajo. Disa kafe dhe gjithçka përsëritet. 12-14 orë punë njëra pas tjetrës - pothuajse si normë. Dhe ja, kur gjithçka është në limit - ops, ndriçimi!

Ndoshta, nga jashtë, vlerësimi për efikasitetin e një dite të tillë duket mirë dhe e saktë. Por nga brenda - mund të jetë ndryshe.
Në rastin tim, përshtypja nga një punë e tillë përmbante "Unë jam i mrekullueshëm, unë jam super, unë e zgjidhja këtë". Jo gjithmonë me vetëdije, por në mënyrë të pavetëdijshme - gjithmonë!
Dhe në këtë bëhesh i varur, pa shaka. Kështu që, metrikat e brendshme të suksesit të lëvizjes zhvendosen nga rezultati në numrin e përpjekjeve të bërë dhe nivelin e atyre heroiciteteve që ke kryer, sa e ke përjetuar duke u përpjekur për të zgjidhur problemin.
Ndoshta, kjo është kapja më e frikshme.
Më pas do të jetë më e lehtë dhe më argëtuese 🙂
Kapja Nr. 3. "Forca Hello world"
Staku ynë i teknologjisë në atë periudhë: ElasticSearch, Hazelcast, Pentaho, freemarker (dhe Java, Spring, Tomcat, nginx të provuar). Freemarker nuk jepte mesazhe shumë informuese për gabimet. Por ElasticSearch, Hazelcast, Pentaho duhej të patch-oheshin disa herë - ne gjenim në mënyrë talentuese raste në të cilat ato funksiononin ndryshe nga sa ishte parashikuar në dokumentacion.
Një fillim i lehtë dhe torta të shpejta nga përdorimi i teknologjisë së re — kjo është e mirë, por ata sjellin një gjendje euforike dhe ulin vigjilencën. Sepse teknologjia e re përmban defekte, patjetër përmban defekte. Dhe nëse për to ende nuk janë shkruar — gëzuar, saktësisht ti do të jesh pionieri që gjithsesi do të gjejë diçka të çuditshme dhe do të shkojë të kërkojë në Google ose në SO. Sigurisht, „e çuditshme“ mund të gjendet në produkte të verifikuara, por në të reja — kjo është ndjeshëm më e lehtë.

Pavarësisht të gjitha vështirësive, ne dola në prodhim. Po, me vonesa. Po, jo shumë stabil. Por në përgjithësi — pa katastrofa.
Përfundimisht do të theksoj edhe një herë kapuçet në të cilat deformohet perceptimi i shëndetshëm i procesit të punës.
- «Ekstrapolatori i shkëlqyer». Nën ndikimin e sukseseve aktuale shkojmë dhe gëzojmë me ekstrapolimin e shpejtësisë së zhvillimit në projektet e ardhshme.
- «Stahanoveci». Punojmë deri në këmbë, jemi të kënaqur me veten, por nuk vërejmë se problemet që po zgjidhim — janë pasojat e gabimeve / neglizhencave / mosshkarkimeve tona personale. Punët që nuk duhet të bëhen.
- «Pesha Hello world». Nxitojme të implementojmë në prodhim gjithçka më të re dhe interesante.
Pse gjithçka mori sukses
Sigurisht, unë kam përmendur jo të gjitha gabimet që kemi pasur gjatë kësaj kohe, por ato më të zakonshmet, të mundshme për çdo lloj projekti. Një fikësim i tillë i gabimeve ndihmon të shmangim ato në të ardhmen.
Pak për mënyrën se si arritëm të krijojmë një mini-startup brenda kompanisë dhe të bindim biznesin të largohet nga një sistem të blerë për diçka të shkruar vetë.
Kushti №0. Një klimë e shëndetshme në kompani. Kjo nuk është vetëm „sytë që shkëlqejnë“ të punonjësve dhe komunikueshmëria në kushte stresuese të prodhimit të biskotave, jo. Ky është një për gjithë marrëdhëniet.
Kushti №1. Të besosh në atë që bën. Në seriozitet, nuk mendoj se do të kishim ndonjë shans, nëse do të merreshim me pilotin, pa e shqyrtuar sistemin e blerë „deri në bulë“, domethënë, duke u tërhequr dhe nënvetëdijshëm duke e ditur se ky sistem është më i mirë dhe do na mposhtë.
Çfarë bëmë: 1) kuptuam sistemin e blerë, me ndihmën e tij e zgjidhëm kërkesat kryesore nga biznesi 2) hartuam një listë detyrash, të cilat jo vetëm janë aktuale, por do të jenë edhe në një kohë të parashikueshme 3) zgjodhëm një zgjidhje, e cila përshtatet më mirë. Dhe atëherë, vlerësimi ynë i zgjidhjes — ishte një vlerësim i ekspertëve.
A do ta ndonjëherë diçka, nëse thjesht do të shkonim dhe do të thoshim, "djem, gjithçka është në dështim, nuk duam të merremi më me këtë dhe kemi vendosur të bëjmë diçka nga fillimi"? E dyshimtë. Dhe përgjigjja do të vinte në një formë që do të mbetej e paharruar 🙂
Kushti Nr. 2. Hapi i parë ta bëjmë të vogël. Të gjenerojmë hipotezën e parë dhe ta testojmë. Mund të harxhojmë edhe kohën tonë personale për këtë. Nëse nuk dëshiron të harxhosh kohën tënde — atëherë as nuk duhet të merresh me një punë të tillë. Po sikur të mos duash të verifikosh një hipotezë të vogël dhe dëshiron të bësh diçka të shkëlqyer menjëherë — qëndro larg nga këta njerëz!
Na ndodhi fat që hipoteza e parë funksionoi. Por kjo nuk ndodh gjithmonë. Për shembull, në një nga projektet e ardhshme, kur promovonim admin panelin në kuadër të një pilot projekti të ngjashëm, na rezultoi vetëm varianti i 18-të. Dhe 17 qasjet e para ishin të kota. Për më tepër, në historinë e krijimit të admin panelit, ngjarjet ishin në nivelin e telenovelave braziliane, sepse ekipi përbëhej nga djem, që deri atëherë ishin veteranë, të vërtetë "të zgjuar".
Kushti Nr. 3. Bëjmë MVP dhe kërkojmë dhimbjet te personi që merr vendime. Sigurisht, ai mund të reflektojë tmerr në fytyrën e tij që ju gjithmonë i sjellni një ide pas tjetres. Por për çdo rast. Dhe patjetër t'i tregoni se si zgjidhni problemet e tij me produktin tuaj.
Kushti Nr. 4. Shpejt bëjmë një pilot në mënyrë të shpejtë, i cili duket përafërsisht si rezultati përfundimtar. Të bësh gjithçka për bukuri — është e joshitshme, por mund të biesh në perfeksionizëm, që do të thotë se ndoshta do të dëshirosh të tregosh një version pilot të produktit të idealizuar. Por ato nuk ekzistojnë. Pra, thjesht bëjë gjithçka edhe nga drurë.
Kushti Nr. 5. Produkti. Projekti po rritet, merr financa, vijnë specialistë me përvojë të konsiderueshme.
Nëse je një fillestar klasik, ky është momenti kur duhet të ikesh me shpejtësi. Sepse fluturimet e lehta në majat dhe ndjenja e mirëkuptimit që ndodhin shpejt shpërndahen.
Dalja në prodhim — është përballja me ngarkesa reale, integrimi me dhjetëra sisteme, po kur krijon funksionalitete të reja, njëkohësisht, në kuadër të mbështetjes, përmirëson versionet e vjetra. Të gjitha këto janë sfida shumë më serioze se sa të ideosh një ide dhe të zgjidhësh vetëm një problem të klientit, madje edhe nëse e bën mirë.
Këto janë sfida, dhe rritja e aftësive ndodh pikërisht në këtë fazë.
Faleminderit që lexuat. Gëzuar Kodin e Ri!
Burimi: habr.com
