{"id":73944,"date":"2020-03-13T02:42:03","date_gmt":"2020-03-12T23:42:03","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/retrospektiva-grablej-kak-samopisnoe-reshenie-okazalos-kruche-platnogo"},"modified":"2020-03-13T02:42:03","modified_gmt":"2020-03-12T23:42:03","slug":"retrospektiva-grablej-kak-samopisnoe-reshenie-okazalos-kruche-platnogo","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/retrospektiva-grablej-kak-samopisnoe-reshenie-okazalos-kruche-platnogo","title":{"rendered":"Graalide retrospektiiv. Kuidas isetehtud lahendus osutus paremaks kui tasuline","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Tere! Minu nimi on Alexey Pyankov, olen Sportmasteri peaprogrammeerija. \u00dctlen kohe, et \"peamine\" ei t\u00e4henda \"k\u00f5ige peamine k\u00f5igi programmeerijate seas\", ei, see on lihtsalt nimi, selline armas t\u00f5lge s\u00f5nast \"Senior+\".<\/p>\n<p><\/p>\n<p>Ettev\u00f5ttes Sportmaster olen t\u00f6\u00f6tanud alates 2012. aastast ja selle aja jooksul on arendusmeeskond loonud palju tehniliselt huvitavaid lahendusi. Kuid t\u00e4na tahan r\u00e4\u00e4kida meie t\u00f6\u00f6dest, keskendudes pigem sellele, kuidas me m\u00f5tlesime teatud mitmet\u00e4henduslikes olukordades.<\/p>\n<p><\/p>\n<p>Selles artiklis ei ole konkreetseid tehnilisi lahendusi (ega ka midagi tehnilist), mida v\u00f5iks haarata ja enda projektis rakendada. Pigem on see arutelu tehtud t\u00f6\u00f6 \u00fcle. Olid erilised hetked, mis m\u00f5jutasid meid kui meeskonda \u2014 sidusid, tugevdasid ja panid meie vastupidavust proovile. Nendest hetkedest, meeskonna t\u00f6\u00f6 atmosf\u00e4\u00e4rist, meie graalidest ja mitmest ps\u00fchholoogilisest l\u00f5ksust, kuhu me end m\u00f5nikord takerdame, p\u00fc\u00fcan ma t\u00e4na r\u00e4\u00e4kida.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Graalide retrospektiiv. Kuidas isetehtud lahendus osutus paremaks kui tasuline\" src=\"\/wp-content\/uploads\/2020\/03\/1651640dbf2cb45d48e1e046a78c931f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja alustan just 2012. aastast.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Tulid 2012. aastal peamise eesm\u00e4rgiga \u2014 t\u00f6\u00f6tada meie lipulaeva veebisaidi kallal. Sel ajal oli see \"Frankensteini monster\": osa meeskonnast t\u00f6\u00f6tas meie vanas s\u00fcsteemis, mis ei suutnud koormustega h\u00e4sti hakkama saada (Bitrix), teine osa meeskonnast (kuhu kuulusin ka mina) p\u00fc\u00fcdis rakendada uut s\u00fcsteemi, mille olime valinud kriteeriumiga \"Kuna see on maailmas k\u00f5ige kallim e-kaubandus, v\u00f5tame selle.\" Just \"p\u00fc\u00fcdsime rakendada\" \u2014 sest s\u00fcsteem osutus \u00e4\u00e4rmiselt vastupanuv\u00f5imeliseks, ning iga kord, kui olime millegiga edukalt toimetanud, tuli kindlasti vastuseks \"\u00fcllatus\". T\u00f6\u00f6 oli palju, kuid edasi liikusime aeglase sisalikuna.<\/p>\n<p><\/p>\n<p>Minu jaoks oli viimane piisk, kui kohtusin \u00fche meetodi koodiga \"k\u00f5ige kallimas e-kaubanduses maailmas\", kus mitu tundi keskendunud t\u00f6\u00f6d segases vigas t\u00f5id esile, et p\u00f5hjus peitus kuskil custom-tag'is, mis t\u00f6\u00f6tab html genereerimisel jsp-s. Selle custom-tag'i \u00fclesanne on kuvada mingi v\u00e4\u00e4rtuste summa. See on arvestatav, sest selleks see custom-tag on loodud. Kuid ootamatus peitus selles, et sellega muudetakse andmeid andmebaasis, mis m\u00f5jutab j\u00e4rgmiste lehtede k\u00e4itumist, ja kui vajutada F5 \u2014 kutse kordus, see rikkus andmete j\u00e4rjepidevust. Lisaks rikkus see n\u00f5nda, et probleem ilmnes alles p\u00e4rast mitmeid samme, 3. lehe korral. Ei, ma ei ole vastu, et selline \"meister-ninja\" oleks meeskonnas ja hoiaks oma koodiga kolleegide t\u00e4helepanu teravana. Kuid, et nii juhtuks k\u00f5ige kallimas s\u00fcsteemis!<\/p>\n<p><\/p>\n<p>See juhtus reedel. Laup\u00e4eva ja p\u00fchap\u00e4eva veetsime kolleegiga kontoris eesm\u00e4rgiga m\u00f5ista, milliseid \u00fclesandeid \u00e4ri t\u00e4na s\u00fcsteemile esitab ja milliseid \u00fclesandeid v\u00f5iks v\u00e4lja m\u00f5elda aasta p\u00e4rast. Vastavalt sellele, kuidas me neid lahendaksime, kui ei oleks piirdunud kasutama seda k\u00f5ige kallimat ja k\u00f5ige \u00e4rritavamat s\u00fcsteemi.<\/p>\n<p><\/p>\n<p>Lubatud \u2014 tehtud. Me tegime pilootprojekti, mille alla pani aluse uue Spordimeistri kodulehe arendusele. Paljud neist ideedest on ellu j\u00e4\u00e4nud ja nende j\u00e4tk on aktiivselt k\u00e4imas veebilehel.<\/p>\n<p><\/p>\n<h2 id=\"etapy-pilota-i-vremennye-ramki\">Piloodietapid ja ajaraamid<\/h2>\n<p><\/p>\n<p><strong>2 p\u00e4eva.<\/strong> Me tegime mikroteksti \u2014 n\u00e4dalavahetusel k\u00e4rbime oma andmebaasi ElasticSearch'i, teeme fassaadi otsingu. Voil\u00e0! Sama ostetud s\u00fcsteemis oli sellise seadistuse tegemine 2 n\u00e4dalat. Siin \u2014 s\u00f5na-s\u00f5nalt paar tunni jooksul! Ja t\u00f6\u00f6tab kiiremini. Tegelikult kiiremini kordades.<\/p>\n<p><\/p>\n<p><strong>2 n\u00e4dalat.<\/strong> \"T\u00f6\u00f6tame\" protot\u00fc\u00fcbi kallal, lisades funktsionaalsust adekvaatse isikup\u00e4rastatud tulemuse jaoks. <\/p>\n<p><\/p>\n<p>N\u00e4iteks, kui kasutajal on mitu allahindlust ja kampaaniat, mis kehtivad just tema jaoks \u2014 siis tuleb toodete otsingutulemustes n\u00e4idata just seda hinda, mida saab saada, rakendades k\u00f5iki olemasolevaid boonuseid k\u00f5ige kasulikumal viisil.<\/p>\n<p><\/p>\n<p>Kampaaniate haldamine on keeruline. N\u00e4iteks, ostsin suusad, n\u00fc\u00fcd on m\u00fctsi puhul 40% allahindlus, kuid see t\u00fchistab 10% tervet tellimust puudutava tervitusallahindluse. Jah, see on t\u00f5eline juhtum \ud83d\ude42 Ja et sellist kampaaniat ostuhalduss\u00fcsteemis konfigureerida, tuli maksta 3 konsultatsiooni teenusepakkujaga, mille tulemusena saime palju n\u00e4iteid, kuidas teha mitmeid teisi kampaaniaid. V\u00e4ga diplomaatiliselt ning arvestades konsultatsioonide hinda \u2013 majanduslikult v\u00e4ga hea deal.<\/p>\n<p><\/p>\n<p>N\u00e4itasime \u00e4rile \u00fcksikasjalikku demonstratsiooni. Lubasime kiiresti pilootprojekti kokku panna ja hakkasime kohe t\u00f6\u00f6le.<\/p>\n<p><\/p>\n<p><strong>2 kuud.<\/strong> Pilootprojekt \u2013 teeme selle elava veebisaidi kujul, mis v\u00f5imaldab otsingut kataloogis. Otsing funktsioonide sissetoomisega, otsingu tulemused \u2013 isiklike soodustustega, n\u00e4eb piloot peaaegu v\u00e4lja nagu Sportmasteri veebisait, ja tooted on meil samad. Imeline! <\/p>\n<p><\/p>\n<p>Lisame meie osakonna juhi \u00abKrasnorechie:100\u00bb, ja esitlus \u00e4rile l\u00e4heb suurep\u00e4raselt! Me saame volitused, et arendada eCommerce platvormi ise.<\/p>\n<p><\/p>\n<p>See t\u00e4hendab, hoidke meeskond, hoidke eelarvet, poisid. \u00c4ge, eks!<\/p>\n<p><\/p>\n<p><strong>2 aastat.<\/strong> Veebisaidi viimine tootmisse. Jah, pikalt. K\u00f5ik, mida me siis oskasime, katsetasime ainult protot\u00fc\u00fcbi ulatuses. Kaks inimest saavad kergesti moodustada siseriikliku meeskonna. Ja \u00fclesanded, mida me \u201elahendasime\u201c \u2013 olid peamiselt v\u00e4ikesed t\u00e4iendavad \u201eHello World\u201c tehnoloogiate tutvustused. Me genereerisime uusi h\u00fcpoteese, testisime neid kiiresti, ei j\u00e4\u00e4nud kinni ja seet\u00f5ttu tapame neid kahetsemata. Kui meid oli 10, h\u00fcpoteetiliselt eeldasime, et meie t\u00f6\u00f6 kiirus laieneb teistele. Ja lubasime selliseid t\u00e4itmise t\u00e4htaegu, mis olid v\u00f5rreldavad meie ilusate kujutlustega, korrutatuna meie innukusega.<\/p>\n<p><\/p>\n<p>Kas see tundub tuttav? \ud83d\ude42<\/p>\n<p><\/p>\n<p>Noh, kas te juba teate, mis edasi tuleb?<\/p>\n<p><\/p>\n<h2 id=\"lovushka-1-ekstrapolyator-krutysh\">L\u00f5ks nr 1. \u201eEkstrapolatsioonikruut\u201c<\/h2>\n<p><\/p>\n<p>On selge, et uued tehnoloogiad n\u00e4evad esitluses v\u00e4ga \u00e4gedad v\u00e4lja ja toimivad h\u00e4sti \u201eHello World\u201c tasemel rakendustes. Kuid reaalsus on tavaliselt veidi kaugemal.<\/p>\n<p><\/p>\n<p>Nii et. V\u00d5TAME raamatukogu, kirjutame hulga rakenduslikku koodi. \u00dchiktestimist peame koormuseks (me oleme ju \u00e4gedad ja t\u00f6\u00f6tame siin \u00fclispeediga, kood on kaasaegne jne). Muudame ja t\u00e4iustame API-d jooksvalt \u2014 noh, mis testid siin, t\u00f5siselt. Ja kogu see protsess \u201eoptimeerime arenduse\u201d lipu all (jah, praegu on seda isegi hirmus kirjeldada).<\/p>\n<p><\/p>\n<p>Ja siis on k\u00f5ik \u00fcsna selge.<\/p>\n<p><\/p>\n<p>V\u00e4ljastame uue versiooni uat-ile. \u00c4rij\u00f5ud testivad k\u00f5ik hoolega ja vajutavad nuppe. Nad vajutavad m\u00f5nikord \u00fcsna loominguliselt \u2014 midagi laguneb. Siin oleks paslik minna ja uurida, mida selle jaoks on tehtud. Kuid monitori taga ei ole hullu testijat, kes viib sind l\u00e4bi k\u00f5ik keskkonna omadused, arvestades piirkonna ilmateadet, vaid tellija \u00e4rist. Tal on lihtsalt \"ei t\u00f6\u00f6ta\". See t\u00e4hendab, et ta on rahulolematu. K\u00fcsi temalt \u2014 ja ta \u00fctleb <em>hirmutav<\/em> rahulolematu!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Graalide retrospektiiv. Kuidas isetehtud lahendus osutus paremaks kui tasuline\" src=\"\/wp-content\/uploads\/2020\/03\/9d980b25fabea5e0a34a428fb9dbb85e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Siis, et viga reprodutseerida, pead minema ja l\u00e4bi katsetama k\u00f5ik v\u00f5imaliku. Loomulikult ei j\u00e4tnud me t\u00e4helepanuta \u00fchtegi kaebust ja k\u00f5ik probleemid lahendati. Me j\u00e4tsime k\u00f5rvale plaanitud \u00fclesanded, et \"tulekahju kustutada\".<\/p>\n<p><\/p>\n<p>Nii me kaevusime j\u00e4rgmisse auku.<\/p>\n<p><\/p>\n<h2 id=\"lovushka-2-stahanovec\">L\u00f5ks nr 2. \"Stahhanovets\"<\/h2>\n<p><\/p>\n<p>Sinule tuleb ebameeldiv viga. Alustad uurimist. Ei \u00f5nnestu \u2014 viha \u2014 uus katse uuesti lahti m\u00f5testada \u2014 j\u00e4rgmine eba\u00f5nnestumine \u2014 selgitad k\u00f5ik, mis v\u00f5imalik \u2014 j\u00e4lle vale \u2014 m\u00f5tled sellele, et oled juba vana ja k\u00f5igil on lapsed ning h\u00fcpoteek \u2014 proovid uuesti \u2014 j\u00e4lle vale. Paari koondkooki ja k\u00f5ik kordub. 12-14 tundi pidevat t\u00f6\u00f6d \u2014 peaaegu norm. Ja siis, kui k\u00f5ik on piiril \u2014 pl\u00f5ks, arusaamine!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Graalide retrospektiiv. Kuidas isetehtud lahendus osutus paremaks kui tasuline\" src=\"\/wp-content\/uploads\/2020\/03\/8f66e2ca834ffafd72bde53fd397bcb7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>V\u00f5ib-olla on v\u00e4ljastpoolt vaadates sellise p\u00e4eva efektiivsuse hindamine h\u00e4sti ja \u00f5igesti n\u00e4htav. Kuid seestpoolt \u2014 v\u00f5ib olla v\u00e4ga erinev.<\/p>\n<p><\/p>\n<p>Minu puhul sisaldas sellise t\u00f6\u00f6 kogemus \"Ma olen vingev, ma olen \u00e4ge, ma lahendasin probleemi\u201d. Mitte alati teadlikult, kuid alateadlikult \u2014 alati!<\/p>\n<p><\/p>\n<p>Ja sellele j\u00e4\u00e4d s\u00f5ltuvusse, ilma naljata. Tundub, et sisemised m\u00f5\u00f5dikud edusammude kohta nihkuvad tulemusest pingutuste arvu ja alanduste tasemele, mida oled korda saatnud, kui palju oled kannatanud, p\u00fc\u00fcdes probleemi lahendada.<\/p>\n<p><\/p>\n<p>T\u00f5en\u00e4oliselt on see k\u00f5ige kohutavam l\u00f5ks.<\/p>\n<p><\/p>\n<p>Edasi l\u00e4heb kergem ja l\u00f5busam \ud83d\ude42<\/p>\n<p><\/p>\n<h2 id=\"lovushka-3-sila-hello-world\">L\u00f5ks nr 3. \"Hello world\" j\u00f5ud<\/h2>\n<p><\/p>\n<p>Meie tehnoloogiad sellel perioodil: ElasticSearch, Hazelcast, Pentaho, freemarker (ja t\u00f5estatud Java, Spring, Tomcat, nginx). Freemarker ei andnud v\u00e4ga informatiivseid erroriteateid. Kuid ElasticSearch, Hazelcast ja Pentaho tuli paar korda pat\u0161eerida \u2014 me leidisime oskuslikult juhtumeid, kus nad ei t\u00f6\u00f6tanud nii, nagu dokumentatsioon m\u00e4\u00e4ras.<\/p>\n<p><\/p>\n<p>Kerge algus ja kiirete tulemuste saavutamine uue tehnoloogia kasutamisega tundub hea, kuid see toob kaasa eufooria ja v\u00e4hendab ettevaatlikkust. Sest uus tehnoloogia sisaldab vigu, see kindlasti sisaldab vigu. Ja kui neist veel ei ole kirjutatud \u2014 ole r\u00f5\u00f5mus, just sina oled see esimesena, kes t\u00e4ielikult avastab midagi eba\u00f5iget ning hakkab seda Google'is v\u00f5i SO-s otsima. Muidugi, \u201eeba\u00f5ige\u201c v\u00f5ib leida ka usaldusv\u00e4\u00e4rsetest toodetest, kuid uutest \u2014 on see palju lihtsam.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Graalide retrospektiiv. Kuidas isetehtud lahendus osutus paremaks kui tasuline\" src=\"\/wp-content\/uploads\/2020\/03\/86d505a5125b8106503497b72ff7761e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hoolimata k\u00f5igist raskustest j\u00f5udsime tootmisse. Jah, viivitustega. Jah, mitte v\u00e4ga stabiilselt. Kuid \u00fcldiselt \u2014 ilma katastroofideta.<\/p>\n<p><\/p>\n<p>Kokkuv\u00f5tteks tuletan veel kord meelde l\u00f5kse, kus moonutatakse tervet arusaama t\u00f6\u00f6protsessist.<\/p>\n<p><\/p>\n<ol>\n<li><strong>\u201eEkstrapolaator-vinge\u201c<\/strong>. Praeguste edusammude innustusel liigume edasi ja r\u00f5\u00f5msalt ekstrapoleerime arenduskiirusest eelnevatele projektidele.<\/li>\n<li><strong>\u201eStahhanovlane\u201c<\/strong>. Teeme t\u00f6\u00f6d l\u00f5puni, oleme enda \u00fcle rahul, aga ei m\u00e4rkagi, et lahendatud probleemid on meie enda vigade\/kohmakuse\/hooletuse tagaj\u00e4rg. T\u00f6\u00f6, mida pole teostatud.<\/li>\n<li><strong>\u201eHello worldi j\u00f5ud\u201c<\/strong>. Kiirustame tootmisse viima k\u00f5ige uuemat ja huvitavamat.<\/li>\n<\/ol>\n<p><\/p>\n<h2 id=\"pochemu-vsyo-poluchilos\">Miks k\u00f5ik \u00f5nnestus<\/h2>\n<p><\/p>\n<p>Muidugi, ma ei loetlenud k\u00f5iki vigu, mis meil selle aja jooksul oli, aga need on k\u00f5ige levinumad, mis v\u00f5ivad esineda igasuguste projektide puhul. Selline vigade fikseerimine aitab neid hiljem v\u00e4ltida.<\/p>\n<p><\/p>\n<p>Veidi sellest, kuidas meil \u00f5nnestus luua selline mini-startup ettev\u00f5tte sees ja veenda \u00e4ri minema juba ostetud s\u00fcsteemilt millegi enda loodud peale.<\/p>\n<p><\/p>\n<p><strong>Tingimus nr 0<\/strong>. Tervislik kliima ettev\u00f5ttes. See ei ole ainult t\u00f6\u00f6tajate \u201es\u00e4ravad silmad\u201c ja suhtlemisoskus stressitingimustes k\u00fcpsiste valmistamisel, ei. See puudutab k\u00f5iki suhtlusi.<\/p>\n<p><\/p>\n<p><strong>Tingimus nr 1<\/strong>. Usuda sellesse, mida teed. T\u00f5siselt, ma ei arva, et meil oleks olnud mingit v\u00f5imalust, kui oleksime tegelenud pilootprojektiga, ilma et oleksime ostetud s\u00fcsteemi \u201ekuni poldini\u201c v\u00e4lja uurinud \u2014 ehkki tagasi astudes teades alateadlikult, et see s\u00fcsteem on parem ja seljatab meid.<\/p>\n<p><\/p>\n<p>Mida me tegime: 1) uurisime ostetud s\u00fcsteemi, selle abil lahendasime peamised \u00e4rivajadused 2) koostasime \u00fclesannete nimekirja, mis ei ole mitte ainult praegu olemas, vaid ka tulevikus 3) valisime lahenduse, mis sobib paremini. Ja siis oli meie lahenduse hindamine ekspertide hinnang.<\/p>\n<p><\/p>\n<p>Kas nad annaks meile midagi, kui me lihtsalt tuleksime ja \u00fctleksime: \"Poisid, k\u00f5ik on jama, me ei taha sellega tegeleda ja otsustasime alustada nullist\"? Vaevalt. Ja vastus oleks selline, et see j\u00e4\u00e4ks meelde \ud83d\ude42<\/p>\n<p><\/p>\n<p><strong>Tingimus nr 2<\/strong>. Esimene samm on v\u00e4ike. Loome esimese h\u00fcpoteesi ja testime seda. Selleks v\u00f5ib kuluda ka teie isiklikku aega. Kui te ei soovi oma aega kulutada \u2014 siis ei tasu sellise asja kallale hakata. Ja kui te ei taha v\u00e4ikest h\u00fcpoteesi kontrollida, vaid tahate kohe midagi lahedat ja s\u00e4ravat teha \u2014 hoidke sellistest inimestest eemal!<\/p>\n<p><\/p>\n<p>Meil vedas, ja k\u00f5ige esimene h\u00fcpotees t\u00f6\u00f6tas. Kuid nii ei juhtu alati. N\u00e4iteks \u00fches j\u00e4rgmistest projektidest, kui edendasime admin-paneeli sarnases pilootprojekti raames, t\u00f6\u00f6tas meil vaid 18. variant. Ja 17 esimest l\u00e4henemist olid asjata. Muide, admin-paneeli loomise loos olid s\u00fc\u017eeep\u00f6\u00f6rded tasemel Brasiilia telesarjad, kuna meeskonna moodustasid poisid, kes olid sel ajal juba veteranid, t\u00f5elised \"kogenud tegijad\".<\/p>\n<p><\/p>\n<p><strong>Tingimus nr 3<\/strong>. Loome MVP ja otsime valupunkte otsustaja n\u00e4os. Muidugi v\u00f5ib tema n\u00e4os peegelduda hirmsus juba selle fakti t\u00f5ttu, et te toote talle kolmek\u00fcmnendat korda mingit projekti. Kuid sellegipoolest. Ja kindlasti n\u00e4itame, kuidas me t\u00e4pselt tema probleeme oma tootega lahendame.<\/p>\n<p><\/p>\n<p><strong>Tingimus nr 4<\/strong>. Kiiresti teeme k\u00e4ep\u00e4rase piloodi, mis n\u00e4eb v\u00e4lja <em>ligikaudu<\/em> nagu l\u00f5pptulemus. K\u00f5ik t\u00e4iesti \u00e4gedalt teha \u2014 ahvatlev, kuid v\u00f5ite sattuda perfektsionismi l\u00f5ksu, mille t\u00f5ttu tundub, et soovite n\u00e4idata pilootversiooni juba ideaalsest tootest. Ning selliseid ei ole. Seet\u00f5ttu tehke v\u00e4hemalt pullidest.<\/p>\n<p><\/p>\n<p><strong>Tingimus nr 5<\/strong>. Toode. Projekt kasvab, saab rahastust, tulevad spetsialistid, kellel on soliidne kogemus.<br \/>\nJa kui te olete klassikaline startup-ettev\u00f5tja, siis on see see hetk, kui tuleb kiirusest p\u00f5geneda. Sest kerge lendamine tippudes ja \u00fcldine heaolu tunne hajuvad kiiresti.<\/p>\n<p><\/p>\n<p>Turule minek \u2014 see on kohtumine reaalsete koormustega, integreerimine k\u00fcmnete s\u00fcsteemidega, ning kui loote uut funktsionaalsust, siis t\u00f6\u00f6tlete samal ajal olemasolevaid versioone. K\u00f5ik need on v\u00e4ljakutsed, mis on palju t\u00f5sisemad kui idee genereerimine ja \u00fche kliendi probleemi lahendamine, isegi kui see on h\u00e4sti.<\/p>\n<p><\/p>\n<p>Need on v\u00e4ljakutsed, ja oskuste areng toimub just sellel etapil.<\/p>\n<p><\/p>\n<p>Ait\u00e4h, et lugesid. Head uut koodi!<\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/485088\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041f\u044c\u044f\u043d\u043a\u043e\u0432, \u044f \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440. \u0421\u043a\u0430\u0436\u0443 \u0441\u0440\u0430\u0437\u0443, \u0447\u0442\u043e \u00ab\u0433\u043b\u0430\u0432\u043d\u044b\u0439\u00bb \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442 \u00ab\u0441\u0430\u043c\u044b\u0439 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0437 \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432\u00bb, \u043d\u0435\u0442, \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u0442\u0430\u043a\u043e\u0439 \u043e\u0447\u0430\u0440\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0434\u043b\u044f \u00abSenior+&quot;\u00bb. \u0412 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0441 2012 \u0433\u043e\u0434\u0430, \u0438 \u0437\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0441 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b. \u041d\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":73945,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-73944","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041f\u044c\u044f\u043d\u043a\u043e\u0432, \u044f \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/retrospektiva-grablej-kak-samopisnoe-reshenie-okazalos-kruche-platnogo\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0420\u0435\u0442\u0440\u043e\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430 \u0433\u0440\u0430\u0431\u043b\u0435\u0439. \u041a\u0430\u043a \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043a\u0440\u0443\u0447\u0435 \u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041f\u044c\u044f\u043d\u043a\u043e\u0432, \u044f \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/retrospektiva-grablej-kak-samopisnoe-reshenie-okazalos-kruche-platnogo\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-03-12T23:42:03+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-12T23:42:03+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Tagasivaade tagasil\u00f6\u00f6kidele. Kuidas kohandatud lahendus osutus paremaks kui tasuline | ProHoster","description":"Tere! Minu nimi on Aleksei Pjankov, olen Spordimeistri peaprogrammeerija.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/retrospektiva-grablej-kak-samopisnoe-reshenie-okazalos-kruche-platnogo","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0420\u0435\u0442\u0440\u043e\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430 \u0433\u0440\u0430\u0431\u043b\u0435\u0439. \u041a\u0430\u043a \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043a\u0440\u0443\u0447\u0435 \u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041f\u044c\u044f\u043d\u043a\u043e\u0432, \u044f \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/retrospektiva-grablej-kak-samopisnoe-reshenie-okazalos-kruche-platnogo","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-03-12T23:42:03+00:00","article:modified_time":"2020-03-12T23:42:03+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"73944","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:24:23","updated":"2022-10-06 05:35:50","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/73944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=73944"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/73944\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/73945"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=73944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=73944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=73944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}