On teada, et CTO pĂ€devus kontrollitakse alles teisel korral selle rolli tĂ€itmisel. Sest ĂŒhe asi on töötada paar aastat ettevĂ”ttes, koos sellega areneda ja samas kultuurilises kontekstis jĂ€rjest rohkem vastutust saada. Ja hoopis teine asi on kohe tehnoloogiajuhi ametisse asumine ettevĂ”ttes, kus on pĂ€randid ja hulk probleeme, korrektselt vaiba alla pĂŒhitud.
Selles osas on Leon Fire'i kogemus, mida ta jagas , mitte otseselt ainulaadne, kuid koos tema staaĆŸi ja erinevate ametikohtade arvuga, mida ta 20 aasta jooksul on kandnud, on see vĂ€ga kasulik. Allpool on 90 pĂ€eva sĂŒndmuste kronoloogia ja palju lugusid, mille ĂŒle on naerda tore, kui need juhtuvad kellegagi teisega, aga millega ei ole nii lĂ”bus isiklikult silmitsi seista.
Leon rÀÀgib vene keeles vÀga vÀrvikalt, seega, kui teil on 35-40 minutit, siis soovitan videot vaadata. Ajakirjanduse versioon ajasÀÀstmiseks on allpool.

Esimene raporti versioon oli hĂ€sti struktureeritud ĂŒlevaade inimeste ja protsessidega töötamisest, mis sisaldas kasulikke soovitusi. Kuid see ei edastanud kĂ”iki ĂŒllatusi, millega teel kokku puutusin. SeetĂ”ttu muutsin vormi ning esitasin probleemid, mis uues ettevĂ”ttes mu ees ilmnesid, nagu kurat urnist, ja nende lahendamise meetodid kronoloogilises jĂ€rjekorras.
Kuu aega enne
Nagu paljud head lood, algas see alkoholiga. Istusime tuttavatega baaris ja nagu IT-ala inimestele kohane, kurtis igaĂŒks oma probleemide ĂŒle. Ăks neist oli just töökohta vahetanud ja rÀÀkis oma muredest nii tehnoloogiate, inimeste kui ka meeskonnaga. Mida kauem ma kuulasin, seda enam mĂ”istsin, et tal oleks lihtsalt mind palgata vaja, sest just selliseid probleeme olen ma viimased 15 aastat lahendanud. Nii ma talle ka ĂŒtlesin, ja jĂ€rgmisel pĂ€eval kohtusime juba töökeskkonnas. EttevĂ”tte nimi oli Teaching Strategies.
Teaching Strategies on turul lastest liidab vĂ€ikelaste Ă”ppeprogrammide turgu â alates sĂŒnnist kuni kolme aastani. Traditsiooniline âpaberipĂ”hineâ ettevĂ”te on tegutsenud juba 40 aastat, samas kui digitaalne SaaS-versioon platvormist on olnud olemas 10 aastat. Suhteliselt hiljuti algas digitehnoloogia kohandamine ettevĂ”tte standardite juurde. âUusâ versioon kĂ€ivitus 2017. aastal ja oli pea sama, kuid töötas halvemini.
Huvitaval kombel on selle ettevĂ”tte liiklus vĂ€ga prognoositav â pĂ€evast pĂ€eva, aastast aastasse saab tĂ€pselt ennustada, kui palju inimesi tuleb ja millal. NĂ€iteks kell 13-15 lĂ€hevad kĂ”ik lapsed lasteaedades magama, samas kui Ă”petajad hakkavad andmeid sisestama. Ja see toimub iga pĂ€ev, vĂ€lja arvatud nĂ€dalavahetustel, kuna nĂ€dalavahetustel ei kĂ€i peaaegu keegi tööl.

Veidi ettepoole vaadates tahan mÀrkida, et alustasin oma tööd kÔige rohkem liiklust omaval aastal, mis on huvitav erinevatel pÔhjustel.
Platvorm, mis oli oma olemuselt vaid 2 aastat vana, omas omapÀrast tehnoloogiate kogumit: ColdFusion ja SQL Server 2008. ColdFusion, kui te ei tea, ja tÔenÀoliselt te ei tea, on selline ettevÔtte tasemel PHP, mis ilmus 90ndate keskel, ja sellest peale ei ole ma midagi kuulnud. Seal olid ka: Ruby, MySQL, PostgreSQL, Java, Go, Python. Kuid peamine monoliit töötas ColdFusioni ja SQL Serveriga.
Probleemid
Mida rohkem ma rÀÀkisin ettevĂ”tte töötajatega nende tööst ja probleemidest, millega nad silmitsi seisavad, seda rohkem sain aru, et probleemid on mitte ainult tehnilised. Olgu, tehnoloogia on vana â me oleme töötanud ka vanemate sĂŒsteemidega, kuid probleemid olid seotud meeskonna ja protsessidega, ning ettevĂ”te hakkas seda lĂ”puks mĂ”istma.
Traditsiooniliselt istusid seal tehnikud nurgas ja tegid oma tööd. Kuid ĂŒha enam Ă€riprotsesse hakkas liikuma digitaalsesse keskkonda. SeetĂ”ttu, aastaga enne mu töö algust, ilmusid ettevĂ”ttesse uued positsioonid: juhatus, CTO, CPO ja QA-direktor. See tĂ€hendab, et ettevĂ”te hakkas investeerima tehnoloogiasse.
Raske raskus pĂ€rand oli tunda mitte ainult sĂŒsteemides. EttevĂ”ttes olid legacy-protsessid, legacy-inimesed, legacy-kultuur. KĂ”ike seda tuli muuta. MĂ”tlesin, et igav ei hakka kindlasti ja otsustasin proovida.
Kaks pÀeva enne
Kaks pÀeva enne uue töö algust saabusin kontorisse, tÀitsin viimased dokumendid, tutvusin meeskonnaga ja avastasin, et meeskond vÔitleb sel ajal probleemiga. Probleemiks oli see, et keskmine lehe laadimisaeg oli tÔusnud 4 sekundini, mis oli kaks korda rohkem.

Graafikult vaadates oli selgelt midagi juhtunud, kĂŒll aga polnud selge, mis. Selgus, et probleem oli seotud varsaste latentsusega andmekeskuses: 5 ms latentsus andmekeskuses muutus 2 sekundiks kasutajatele. Miks see nii lĂ€ks, ma ei teadnud, aga igal juhul oli teada, et probleem on andmekeskuses.
Esimene pÀev
Kaks pÀeva hiljem, oma esimesel tööpÀeval, avastasin, et probleem ei olnud kuskile kadunud.

Kaks pĂ€eva laadisid lehed kasutajatele keskmiselt 4 sekundiga. KĂŒsisin, kas nad leidsid, milles probleem on.
â Jah, me avasime tiku.
â Ja?
â Noh, nad pole meile veel vastanud.
Siis sain aru, et kÔik, millest mulle varem rÀÀgiti, on vaid jÀÀmÀe vÀike tipp, millega tuleb vÔidelda.
On olemas hea tsitaat, mis sobib siia vÀga hÀsti:
âMĂ”nikord on tehnoloogia muutmiseks vaja muuta organisatsiooni.â
Kuna aga hakkasin tööle aasta kĂ”ige kiiremal ajal, tuli olukorrale lĂ€heneda kahe lahenduse vĂ”imaluse kaudu: nii kiirelt kui ka pikaajalises perspektiivis. Tuleb alustada sellest, mis on kriitiline just nĂŒĂŒd.
Kolmas pÀev
Nii kestis laadimine 4 sekundit ja kell 13-15 olid kÔige suuremad tipud.

Kolmandal pÀeval nÀgi laadimise kiirus sel ajavahemikul vÀlja nii:

Minu arvates ei töötanud ĂŒldse midagi. KĂ”igi teiste arvates töötas see aga veidi aeglasemalt kui tavaliselt. Kuid lihtsalt nii ei juhtu â see on tĂ”sine probleem.
Proovisin tiimi veenda, kuid nad vastasid, et on lihtsalt vaja rohkem servereid. See on muidugi probleemilahendus, kuid mitte alati ainus ja kĂ”ige tĂ”husam. KĂŒsisin, miks serveritest jÀÀb puudu ja kui suur on liiklusmaht. Ekstrapoleerisin andmed ja sain, et meil on umbes 150 pĂ€ringut sekundis, mis jÀÀb mĂ”istlikesse piiridesse.
Kuid ei tohi unustada, et enne Ă”ige vastuse saamist tuleb esitada Ă”ige kĂŒsimus. Minu jĂ€rgmine kĂŒsimus oli: kui palju meil on frontend-servereid. Vastus ĂŒllatas mind veidi â meil oli 17 frontend-serverit!
â Kardan kĂŒsida, 150 jagada 17, tuleks umbes 8? Kas tahate öelda, et iga server kĂ€itleb 8 pĂ€ringut sekundis ja kui homme on 160 pĂ€ringut sekundis, siis vajame veel 2 serverit?
Muidugi, me ei vajanud tÀiendavaid servereid. Lahendus oli koodis endas ja see oli vÀliselt nÀhtav:
var currentClass = classes.getCurrentClass();
return currentClass; Oli funktsioon getCurrentClass(), sest kogu sait töötab klassi kontekstis â Ă”igesti. Ja selle funktsiooni jaoks iga lehe kohta tuli 200+ pĂ€ringut.
Seega oli lahendus vĂ€ga lihtne, ei olnud vaja midagi ĂŒmber kirjutada: lihtsalt mitte kĂŒsida sama teavet uuesti.
if ( !isDefined("REQUEST.currentClass") ) {
var classes = new api.private.classes.base();
REQUEST.currentClass = classes.getCurrentClass();
}
return REQUEST.currentClass;Olin vĂ€ga rÔÔmus, sest arvasin, et kolmandal pĂ€eval leidsin peamise probleemi. Kui naiivne ma olin, see oli ainult ĂŒks vĂ€ga paljusid probleeme.

Kuid selle esimese probleemi lahendamine alandas graafikut palju madalamale.
Samas samal ajal tegime ka muid optimeerimisi. Palju asju, mida saab parandada, tuli esile. NĂ€iteks kolmandal pĂ€eval avastasin, et sĂŒsteemis oli ikkagi puhver (esialgu arvasin, et kĂ”ik pĂ€ringud tulevad otse andmebaasist). Kui ma mĂ”tlen puhversalvestusele, siis kujutan ette standardseid Redis vĂ”i Memcached. Kuid nii arvasin vaid mina, sest selle sĂŒsteemi puhverdamiseks kasutati MongoDB-d ja SQL Serverit â sama, kust just andmed loeti.
KĂŒmnes pĂ€ev
Esimese nÀdala jooksul tegelesin probleemidega, mida tuli kohe lahendada. Teisel nÀdalal osalesin esmakordselt seistes meeskonna koosolekul, et nÀha, mis toimub ja kuidas kogu protsess sujub.
Taaskord selgus midagi huvitavat. Meeskonda kuulus: 18 arendajat; 8 testijat; 3 juhti; 2 arhitekti. Ja kĂ”ik nad osalesid ĂŒhistes rituaalides, see tĂ€hendab, et enam kui 30 inimest tuli igal hommikul koosolekule ja rÀÀkis, mida nad tegid. Selge on, et kohtumine ei kestnud 5 ega 15 minutit. Keegi ei kuulnud kedagi, sest kĂ”ik töötasid erinevates sĂŒsteemides. Sellises olukorras 2-3 ĂŒlesande kĂ€sitlemine ĂŒhe tunni jooksul grooming session'il oli juba hea tulemus.
Esimene asi, mida me tegime, oli jagada meeskond mitmeks tooteliiniks. Erinevate sektsioonide ja sĂŒsteemide jaoks moodustasime eraldi meeskonnad, kuhu kuulusid arendajad, testijad, tootemanajerid ja Ă€rianalĂŒĂŒtikud.
Tulemuseks saime:
- Standupide ja koosolekute lĂŒhendamine.
- Tootealane teadmistebaas.
- Omanditunne. Kui varem inimesed pidevalt rotatsioonis olid, siis nad teadsid, et nende vigadega peavad tÔenÀoliselt tegelema keegi teine, mitte nemad ise.
- Koostöö rĂŒhmade vahel. Pole vaja öelda, et QA ja arendajate omavahelised suhted ei olnud ennenĂ€gematult head, tootemaad korraldasid oma tegevust jne. NĂŒĂŒd on neil ĂŒhine vastutuspunkt.
Peamiselt keskendusime efektiivsusele, tootlikkusele ja kvaliteedile â just neid probleeme pĂŒĂŒdsime meeskonna transformatsiooniga lahendada.
Kaks ĂŒksteist pĂ€eva
Meeskonna struktuuri muutmise protsessis avastasin, kuidas arvestatakse LuguPunkti. 1 SP oli vĂ”rdne ĂŒhe pĂ€evaga, ja iga pilet sisaldas SP-d nii arenduseks kui ka QA-ks, seega vĂ€hemalt 2 SP-d.
Kuidas ma selle avastasin?

Leiti vea: ĂŒhes aruandes, kus sisestatakse perioodi algus- ja lĂ”ppkuupĂ€ev, ei arvestata viimast pĂ€eva. See tĂ€hendab, et kuskil pĂ€ringus oli mitte <=, vaid lihtsalt <. Ăeldi, et see on kolm Story Points, st 3 pĂ€eva.
PĂ€rast seda me:
- Uuendasime Story Pointide hindamis sĂŒsteemi. NĂŒĂŒd jĂ”uavad vĂ€ikeste vigade parandused, mida saab sĂŒsteemist kiiresti lĂ€bi lasta, kiiremini kasutajani.
- Alustasime seotud piletite ĂŒhendamist arendamiseks ja testimiseks. Varasemalt oli iga pilet, iga viga eraldiseisev ökosĂŒsteem, mis ei olnud seotud ĂŒhegi teisega. Kolme nupu muutmine ĂŒhel lehel vĂ”is olla kolm erinevat piletit koos kolme erineva QA-protsessiga, mitte ĂŒhe automaatse testimisega lehel.
- Algatasime arendajatega koostöö tööjĂ”ukulusid hindava lĂ€henemise osas. Kolm pĂ€eva ĂŒhe nupu muutmiseks â see ei ole naljakas.
KakskĂŒmmend pĂ€eva
Umbes kuu esimese kuu keskpaiku stabiliseerus olukord veidi, sain aru, mis peamiselt toimub, ja hakkasin juba vaatama tulevikku ning mÔtlema pikaajalistele lahendustele.
Pikaajalised eesmÀrgid:
- Haldusega platvorm. Iga lehe sisu hulk pĂ€ringuid â see ei ole tĂ”siseltvĂ”etav.
- Ettearvatavad trendid. MĂ”nikord toimusid liikluspĂ”hjused, mis esialgu ei korreleerinud teiste mÔÔdikutega â tuli aru saada, miks see juhtub ja Ă”ppida, kuidas seda ennustada.
- Platvormi laienemine. Ări kasvab pidevalt, ĂŒha rohkem kasutajaid tuleb, liiklus suureneb.
Varem öeldi sageli: "Laseme kĂ”ik ĂŒmber kirjutada [keel/raamistik], kĂ”ik hakkab paremini töötama!"
Enamasti see ei toimi, on hea, kui ĂŒmber kirjutatud ĂŒldse tööle hakkab. Seega pidime looma tegevuskava â selge strateegia, mis illustreerib samm-sammult, kuidas Ă€ri eesmĂ€rke saavutame (mida me teeme ja miks), mis:
- peegeldab projekti missiooni ja eesmÀrke;
- prioriseerib peamised eesmÀrgid;
- sisaldab ajakava nende saavutamiseks.
Eelnevalt ei ole keegi meeskonnaga rÀÀkinud, millise eesmÀrgiga tehakse muudatusi. Selleks on vaja Ôigeid edule viivaid nÀitajaid. Esmakordselt ettevÔtte ajaloos seadsime tehnilise meeskonna jaoks KPI-d, sidudes need organisatsiooniliste eesmÀrkidega.

See, organizational KPIs are supported by teams, while team KPIs are supported individually. Otherwise, if technological KPIs do not align with organizational ones, everyone pulls the blanket towards themselves.
For instance, one organizational KPI is to increase market share through new products.
What can support the goal of having more new products?
- Firstly, we want to spend more time developing new products instead of fixing defects. This is a logical decision that can be easily measured.
- Secondly, we want to support an increase in transaction volume because the larger the market share, the more users there are, and correspondingly, the more traffic.

Then, individual KPIs that can be executed within the group could be, for example, those related to places where the main defects come from. If we focus on this section specifically, we can significantly reduce defects, which would increase the time available for developing new products and again support the organizational KPIs.
Seega peab iga lahendus, sealhulgas koodi ĂŒmberkirjutamine, toetama konkreetseid eesmĂ€rke, mis on ettevĂ”tte ees seatud (organisatsiooni kasv, uued funktsioonid, meeskonna komplekteerimine).
Selle protsessi kĂ€igus ilmnes huvitav asi, mis ei olnud uudiseks mitte ainult tehnilistele inimestele, vaid kogu ettevĂ”ttele: kĂ”ik piletid peavad olema suunatud vĂ€hemalt ĂŒhele KPI-le. See tĂ€hendab, et kui tootearendaja ĂŒtleb, et soovib luua uut funktsiooni, siis peaks esimene kĂŒsimus olema: âMillist KPI-d see funktsioon toetab?â Kui ei ĂŒhtegi, siis vabandust â tundub, et see on tarbetu funktsioon.
KolmekĂŒmnes pĂ€ev
Kuu lĂ”pus avastasin veel ĂŒhe nĂŒansi, et keegi minu ops meeskonnast pole kunagi nĂ€inud lepinguid, mida me klientidega sĂ”lmime. VĂ”ite kĂŒsida, miks lepingud peaksid olema nĂ€htavad.
- Esiteks, kuna lepingutes on mÀÀratud SLA-d.
- Teiseks, SLA-d on kĂ”ik erinevad. Iga klient tuli oma nĂ”udmistega ning mĂŒĂŒgiosakond allkirjastas need ilma vaatamata.
Veel ĂŒks huvitav nĂŒanss â ĂŒhe meie suurima kliendi lepingus on kirjas, et kĂ”ik platvormi toetatavad tarkvaraversioonid peavad olema n-1, seega mitte viimane versioon, vaid eelviimane.
Selge, kui kaugel me n-1-st olime, kui platvorm oli ColdFusion ja SQL Server 2008, mida lÔpetati tÀielikult toetamast juulis.
KĂŒmmnes pĂ€ev
Kusagil teise kuu keskel vabastasin piisavalt aega, et istuda maha ja teha valuestreammapping tÀielikult kogu protsessi. Need on vajalikud sammud, mis tuleb astuda alates toote loomise hetkest kuni selle tarbijani toimetamiseni, ja neid tuleb vÔimalikult detailselt kirjeldada.
Jagad protsessi vĂ€ikesteks osadeks ja vaatad, mis vĂ”tab liiga kaua aega, mida saab optimeerida, parandada jne. NĂ€iteks, kui kaua vĂ”tab aega toote pĂ€ring, minna lĂ€bi grooming, kuni see jĂ”uab piletini, mille arendaja saab vĂ”tta, QA jne. NiivĂ”rd detailselt vaatad iga ĂŒksik samm ja mĂ”tled, mida saab optimeerida.
Kui ma seda tegin, paistsid silma kaks asja:
- kÔrge piletite tagastamise protsent QA-st tagasi arendajatele;
- pull request'i ĂŒlevaatus vĂ”ttis liiga kaua aega.
Probleem oli selles, et need olid jÀreldused, mis nÀisid: tundub, et vÔtab palju aega, kuid me ei ole kindlad, kui palju tÀpselt.
«Midagi ei saa parandada, mida ei saa mÔÔta.»
Kuidas pÔhjendada, kui tÔsine probleem on? Kas selle tÔttu kulutatakse pÀevi vÔi tunde?
Selleks, et seda mÔÔta, lisasime Jira protsessile paar sammu: âvalmis arendamiseksâ ja âvalmis QA-ksâ, et mÔÔta, kui kaua iga pilet ootab ja mitu korda see teatud sammu tagasi tuleb.

Samuti lisasime âĂŒlevaatusesâ, et teada, kui kaua keskmiselt piletid ĂŒlevaatuses viibivad, ja selle pĂ”hjal edasi liikuda. Meil olid sĂŒsteemilised mÔÔdikud olemas, nĂŒĂŒd lisasime uusi mÔÔdikuid ja hakkasime mÔÔtma:
- Protsessi efektiivsus: tootlikkus ja kavandatud/teostatud.
- Protsessi kvaliteet: defektide arv, QA-st tulenevad defektid.
See aitab tÔeliselt mÔista, mis lÀheb hÀsti ja mis halvasti.
ViiekĂŒmnes pĂ€ev
See kÔik on loomulikult hea ja huvitav, kuid teise kuu lÔpus juhtus see, mis oli tÔenÀoliselt ette ennustatav, kuigi ma ei oodanud sellist ulatust. Inimesed hakkasid lahkuma, sest juhtkond muutus. Uued inimesed tulid juhtima ja algasid muudatused, vanad aga lahkusid. Ja tavaliselt on ettevÔttes, mis on juba mitu aastat eksisteerinud, kÔik sÔbrad ja kÔik tunnevad teineteist.
See oli oodatud, kuid ĂŒllatav oli vallandamiste ulatus. NĂ€iteks esitasid kahe meeskonna juhi samal nĂ€dalal lahkumisavalduse. SeetĂ”ttu pidin mitte niivĂ”rd unustama muid probleeme, vaid keskenduma meeskonna loomisele. See on pikk ja keeruline probleem, kuid sellega pidime tegelema, sest soovisime hoida inimesi, kes jĂ€i (vĂ”i enamiku neist). Pidi kuidagi reageerima sellele, et inimesed lahkusid, et toetada meeskonna moraali.
Teoreetiliselt on see hea: tuleb uus inimene, kellel on tÀielik vabadus hinnata meeskonna oskusi ja asendada töötajaid. Tegelikult ei saa lihtsalt uusi inimesi tuua paljusid pÔhjuseid arvesse vÔttes. Alati on vajalik tasakaal.
- Vana ja uus. Tuleb hoida vanu inimesi, kes saavad muutuda ja toetada missiooni. Kuid samas on vaja tuua ka uut verd, millest rÀÀgime natuke hiljem.
- Kogemus. Olen palju rÀÀkinud headest noortest, kes olid entusiasmi tÀis ja soovisid meie juurde tööle tulla. Aga ma ei saanud neid vÔtta, kuna ei olnud piisavalt vanemaid, kes noori toetaksid ja nende mentoriteks oleksid. KÔigepealt tuli tööle vÔtta tipptegijad ja alles siis noored.
- Mikro- ja makrohaldus.
Mul ei ole head vastust kĂŒsimusele, milline tasakaal on Ă”ige, kuidas seda hoida, kui palju inimesi jĂ€tta ja kui palju survet avaldada. See on puhtalt individuaalne protsess.
ViiskĂŒmmend esimest pĂ€eva
Olen hakanud meeskonda vaatama, et aru saada, kes mul on, ja uuesti meelde tuletasin:
«Enamik probleeme on seotud inimestega».
Olen avastanud, et meeskonnas, olgu need siis arendajad vÔi Ops, on kolm suurt probleemi:
- Rahulolu praeguse olukorraga.
- Vastutuse puudumine â sest keegi pole kunagi seostanud töö tulemusi Ă€ri mĂ”jutamisega.
- Muutuste kartmine.

Muudatused viivad alati meid mugavustsoonist vĂ€lja, ja mida nooremad inimesed on, seda vĂ€hem nad muudatusi armastavad, sest nad ei mĂ”ista, miks ja ei mĂ”ista, kuidas. KĂ”ige sagedasem vastus, mida olen kuulnud: âMe pole kunagi nii teinudâ. Tegi absurdu, et vĂ€ikesedki muutused ei möödunud ilma, et keegi ei oleks protestinud. Oluline ei ole, kui palju muudatused nende tööga seotud olid, inimesed ĂŒtlesid: âEi, miks? See ei toimi."
Aga paremaks saab ainult muutusi tegemata jÀÀdes.
Mul oli tÀiesti absurdne vestlus töötajaga, rÀÀkisin talle oma ideedest optimeerimise osas, millele ta vastas:
â Aaa, sa ei ole nĂ€inud, mis meil eelmisel aastal oli!
â No ja mis siis?
â NĂŒĂŒd on palju parem kui oli.
â Nii et ei saa veel paremaks minna?
â Aga miks?
Hea kĂŒsimus â miks? Justkui, kui nĂŒĂŒd on parem, kui oli, siis on kĂ”ik piisavalt hea. See viib vastutuse puudumiseni, mis on pĂ”himĂ”tteliselt tĂ€iesti normaalne. Nagu ma ĂŒtlesin, oli tehniline meeskond veidi kĂ”rvale tĂ”rjutud. EttevĂ”ttes arvati, et nad peavad olema, aga keegi ei ole kunagi standardeid kehtestanud.. Tugiteenuses ei ole SLA-d kunagi nĂ€htud, seega tundus grupile see tĂ€iesti «vastuvĂ”etav» (ja see ĂŒllatas mind kĂ”ige rohkem):
- 12 sekundit laadimisaja;
- 5-10 minutit seisakut iga vÀljalaske korral;
- kriitiliste probleemide lahendamine vÔtab pÀevi ja nÀdalad;
- öise valve puudumine 24/7 / hÀdaolukordadel.
Keegi ei ole kunagi proovinud kĂŒsida, miks me seda paremini ei teeks, ja keegi ei ole kunagi aru saanud, et asjad ei tohiks nii olla.
Lisaks oli veel ĂŒks probleem: kogemuse puudumine. Vanemad lahkusid ning jÀÀnud noorem meeskond kasvas endises reĆŸiimis ja oli nende halvatusest mĂŒrgitatud.
Kogu selle taustal kartsid inimesed veel ka ebaĂ”nnestuda ja tunduda saamatu. See vĂ€ljendub selles, et nad, esiteks, ei kĂŒsi mingil juhul abi. Kui palju kordi oleme grupis ja individuaalselt rÀÀkinud ning ma olen öelnud: «KĂŒsi kĂŒsimus, kui sa ei tea, kuidas midagi teha». Ma olen endas kindel ja tean, et suudan lahendada iga probleemi, kuid see vĂ”tab aega. SeetĂ”ttu, kui saab kĂŒsida kedagi, kes teab, kuidas seda 10 minutiga lahendada, kĂŒsin. Mida vĂ€hem sul on kogemust, seda rohkem sa kardad kĂŒsida, kuna arvad, et sind peetakse saamatu.
Seda kartmine kĂŒsimise ees avaldub huvitavates vormides. NĂ€iteks kĂŒsid: âKuidas selle ĂŒlesandega lood on?â â âJÀÀn paariks tunniks, peagi valmib.â JĂ€rgmine pĂ€eva kĂŒsid taas ja saad vastuseks, et kĂ”ik on hĂ€sti, kuid tekkis ĂŒks probleem, pĂ€eva lĂ”puks kindlasti valmis ei jĂ”ua. Mulle tundub, et seni kuni kedagi seinaga kokku suruda, ja teda koos kellegagi rÀÀkima sundida, nii see kĂ”ik jĂ€tkub. Inimesele meeldib probleem ise lahendada, ta arvab, et kui ta seda ise ei tee, on see suur ebaĂ”nnestumine.
Just seetĂ”ttu arendajad hindasid ĂŒle. See oli pĂ€ris anekdoot, kui arutasime kindlat ĂŒlesannet, kui mulle anti number, mis mind vĂ€ga ĂŒllatas. Selle peale öeldi, et hinnangutes arvestab arendaja ka aega, mille pilet QA-st tagasi tuleb, sest nad leiavad sealt vigu, ja aega, mis kulub PR-ile, ning aega, mille jooksul inimesed, kes peaksid seda vaatama, on hĂ”ivatud â ehk kĂ”ike, mis ĂŒldiselt vĂ”imalik on.
Teiseks, inimesed, kes kardavad tĂŒhi mulje jĂ€tta, liialt analĂŒĂŒsivad. Kui ĂŒtled, mida tĂ€pselt teha, algab see: âEi, aga mis siis, kui me siin mĂ”tleme?â Selles osas ei ole meie ettevĂ”te ainulaadne, see on noorpĂ”lve standardproblem.
Vastuseks esitasin jÀrgmised pÔhimÔtted:
- 30-minuti reegel. Kui poole tunni jooksul ei Ă”nnestu probleemi lahendada, paluge kellelgi abi. See toimib varieeruva eduga, kuna inimesed ei kĂŒsi niikuinii abi, aga vĂ€hemalt on protsess alanud.
- VĂ€listage kĂ”ik, vĂ€lja arvatud tuum, ĂŒlesande teostamise ajahinnangus, st arvestage ainult seda, kui palju aega kulub koodi kirjutamiseks.
- Pidev Ă”ppimine neile, kes analĂŒĂŒsivad ĂŒle. See on lihtsalt pidev töö inimestega.
Kuuendal pÀeval
Kui ma sellega kĂ”ik tegeleda, tuli aeg eelarvega tegeleda. Muidugi leidsin palju huvitavat, kuhu me raha kulutasime. NĂ€iteks oli meil kogu riiul eraldi andmekeskuses, kus seisis ĂŒks FTP-server, mida kasutas ĂŒks klient. Selgus, et â... me kolisime ja see jĂ€i nii, me ei vahetanud seda.â See oli 2 aastat tagasi.
Erilised huvi tekitas pilveteenuste arve. Olen kindel, et peamine pĂ”hjus suurele pilveteenuste arvele on arendajad, kellel on esmakordselt elus piiramatu juurdepÀÀs serveritele. Neil ei ole vaja kĂŒsida: âPalun andke mulle testiserverâ, â nad saavad selle ise vĂ”tta. Lisaks sellele tahavad arendajad alati luua nii Ă€geda sĂŒsteemi, et Facebook ja Netflix kadestaksid.
Aga arendajatel pole serverite ostmise kogemust ega oskust mÀÀrata serverite vajalikku suurust, kuna nad ei ole seda varem vajanud. Ja tavaliselt ei mÔista nad piisavalt erinevust skaleeritavuse ja jÔudluse vahel.
Inventuuri tulemused:
- VĂ€ljusime ĂŒhest andmekeskusest.
- LĂ”petasime lepingu 3 logiteenusega. Sest neid oli meil 5 â iga arendaja, kes hakkas millegiga eksperimenteerima, vĂ”ttis uue.
- KĂ€ivitame 7 AWS-sĂŒsteemi. JĂ€llegi, surnud projekte keegi ei peatunud, need jĂ€tkasid töötamist.
- VĂ€hendasime tarkvara kulusid 6 korda.
SeitsmekĂŒmnes viies pĂ€ev
Aeg möödus ja kahe ja poole kuu pÀrast pidi ma kohtuma juhatusega. Meie juhtkond ei ole parem ega halvem kui teised; nagu kÔik juhatused, tahavad nad kÔik teada. Inimesed investeerivad raha ja tahavad mÔista, kui hÀsti see, mida me teeme, vastab seatud KPI-dele.
Juhatus saab igal kuul palju teavet: kasutajate arv, nende kasv, milliseid teenuseid nad kasutavad ja kuidas, tootlikkus ja efektiivsus ning lÔpuks keskmine lehe laadimisaeg.
Probleem on ainult selles, et ma arvan, et keskmine nÀitaja on puhas kurjus. Kuid juhatusele on seda vÀga raske selgitada. Nad on harjunud tööle aggregaatnumbritega, mitte nÀiteks laadimisaegade hajumisega sekundites.
Seoses sellega olid huvitavad hetked. NĂ€iteks ĂŒtlesin, et tuleb jagada liiklus individuaalsete veebiserverite vahel sĂ”ltuvalt sisu tĂŒĂŒbist.

See tĂ€hendab, et ColdFusion lĂ€bib Jetty ja nginxi ning kĂ€ivitas lehti. Ja pildid, JS ja CSS lĂ€hevad lĂ€bi eraldi nginxi oma konfiguratsioonidega. See on ĂŒsna tavaline praktika, millest ma veel paar aastat tagasi. SeetĂ”ttu laadivad pildid palju kiiremini ja ⊠keskmine laadimiskiirus tĂ”usis 200 ms.

See juhtus seetĂ”ttu, et graafik koostati andmete pĂ”hjal, mis tulid Jettylt. See tĂ€hendab, et kiire sisu ei arvestata â keskmine vÀÀrtus tĂ”usis. Meile oli see arusaadav, me naersime, kuid kuidas selgitada juhatusele, miks me midagi tegime ja tulemuseks oli 12% halvenemine?
KaheksakĂŒmne viies pĂ€ev
Kolmanda kuu lĂ”pus mĂ”istsin, et on ĂŒks asi, millega ma absoluutselt ei arvestanud â see on aeg. KĂ”ik, millest ma rÀÀkisin, vajab aega.

See on minu tĂ”eline nĂ€dalakalender â lihtsalt töönĂ€dal, mitte kuigi koormav. Aeg on kĂ”igest puudu. Seega on jĂ€lle vaja inimesi palgata, kes aitavad probleemidega toime tulla.
KokkuvÔte
See pole veel kĂ”ik. Selles loos ei ole ma veel jĂ”udnud sinuni, kuidas me tootega töötasime ja proovisime end ĂŒhise laine peale saada, vĂ”i kuidas me integreerisime tehnilise toe, vĂ”i kuidas me lahendasime muid tehnilisi probleeme. NĂ€iteks, ma tĂ€iesti juhuslikult avastasin, et meie suurimatel tabelitel andmebaasis me ei kasuta SEKVENTS. Meil on enda kirjutatud funktsioon nextID, ja seda ei kasutata tehingus.
Oli veel miljon sarnast asja, millest vÔiks rÀÀkida pikalt. Kuid kÔige olulisem, millest tasub rÀÀkida, on kultuur.

Just kultuur vĂ”i selle puudumine viib kĂ”ikide teiste probleemideni. Me pĂŒĂŒame luua kultuuri, kus inimesed:
- ei karda ebaÔnnestumisi;
- Ôpivad vigadest;
- teevad koostööd teiste meeskondadega;
- nĂ€itavad ĂŒles initsiatiivi;
- vÔtavad vastutust;
- tervitavad tulemust kui eesmÀrki;
- peavad edu tÀhistamist.
Seda kÔike jÀrgneb.
Leon Fire , ja .
Legacyâga on kaks strateegiat: vĂ€ltida sellega töötamist kui suudetakse, vĂ”i julgelt ĂŒletada kaasnevaid raskusi. Me valime teise tee, muutes protsesse ja lĂ€henemisi. Liitu meiega , ja , ja paneme koos DevOps kultuuri ellu.
Allikas: habr.com
