programinės įrangos inžinerijaprojektų valdymasšvarus kodasjudrus
Kūrimo greitis vs kodo priežiūra
Sparčiai besikeičiančiame technologijų pasaulyje komandos dažnai susiduria su virvės traukimu tarp "kūrimo greičio" – noro greitai pristatyti funkcijas – ir "kodo priežiūros" – švaraus, keičiamo dydžio kodo, kurį lengva atnaujinti, rašymo praktikos. Nors greitis šiandien užima rinkos dalį, techninė priežiūra užtikrina, kad rytoj produktas nesugrius nuo savo svorio.
Akcentai
Greitis perka laiką rinkoje, bet išlaikymas perka ilgaamžiškumą.
Nekontroliuojamas greitis veda prie "Legacy Code", kurio galiausiai tampa neįmanoma pakeisti.
Išlaikymas yra investicija, kuri vėliau atneša "neigiamą" susidomėjimą kūrimo laiku.
Sėkmingiausios komandos randa "pastovią būseną", kuri subalansuoja abu veiksnius.
Kas yra Vystymosi greitis?
Greitis, kuriuo komanda gali pereiti nuo koncepcijos prie gyvos, funkcinės gamybos funkcijos.
Dažnai teikia pirmenybę "minimalaus perspektyvaus produkto" (MVP) funkcijoms, kad gautų tiesioginius vartotojų atsiliepimus.
Gali būti naudojami spartieji klavišai, užkoduotos reikšmės arba praleidžiami išsamūs testų rinkiniai.
Labai svarbu pradedantiesiems, kuriems reikia įrodyti verslo modelį, kol pritrūks kapitalo.
Labai priklauso nuo greito prototipų kūrimo ir paruoštų trečiųjų šalių integracijų.
Gali sukelti "techninę skolą", kuri veikia kaip finansinės palūkanos už prastai parašytą kodą.
Kas yra Kodo išlaikymas?
Lengva suprasti, taisyti ir patobulinti programinę įrangą per visą jos gyvavimo ciklą.
Pabrėžia švaraus kodo principus, modulinę architektūrą ir nuoseklias pavadinimų konvencijas.
Norint išvengti regresijos, reikalinga išsami dokumentacija ir didelė automatizuotų testų aprėptis.
Sutrumpina naujų kūrėjų, prisijungiančių prie ilgalaikio projekto, prisijungimo laiką.
Sumažina bendras nuosavybės išlaidas, nes ateityje klaidų taisymas bus žymiai greitesnis.
Užtikrina, kad sistema gali būti išplėsta, kad aptarnautų daugiau vartotojų, nereikalaujant visiško perrašymo.
Palyginimo lentelė
Funkcija
Vystymosi greitis
Kodo išlaikymas
Pagrindinis tikslas
Laikas iki pateikimo rinkai
Ilgalaikis stabilumas
Kodo sudėtingumas
Didelė (spagečių kodo rizika)
Žemas (struktūrizuotas ir modulinis)
Išlaidų profilis
Žemas iš anksto, aukštas vėliau
Aukštas iš anksto, žemas vėliau
Testavimo griežtumas
Minimalus / rankinis
Platus / automatizuotas
Dokumentai
Retas arba visai neegzistuoja
Išsamus ir aiškus
Rizikos veiksnys
Sistemos trapumas
Praleisti rinkos langai
Išsamus palyginimas
Techninės skolos poveikis
Susitelkimas tik į greitį sukuria techninę skolą, kuri yra "greiti ir nešvarūs" pataisymai, kuriuos reikia spręsti vėliau. Jei komanda juda per greitai per ilgai, skola kaupiasi tol, kol kiekviena nauja funkcija užtrunka dešimt kartų ilgiau, nes pagrindinis kodas yra toks trapus. Išlaikymas siekia sumokėti šią skolą iš anksto kruopščiai projektuojant.
Mastelio keitimas ir evoliucija
Greitis, sukurta sistema, dažnai pasiekia "lubas", kai ji negali apdoroti daugiau duomenų ar vartotojų be strigimo. Prižiūrimas kodas sukurtas su abstrakcijos sluoksniais, leidžiančiais kūrėjams pakeisti komponentus arba atnaujinti infrastruktūrą su minimalia trintimi. Šis moduliškumas skiria prototipą nuo profesionalios įmonės programos.
Kūrėjo moralė ir apyvarta
Darbas dideliu greičiu ir mažai priežiūros reikalaujančioje aplinkoje dažnai sukelia kūrėjų perdegimą dėl nuolatinio klaidų gesinimo. Ir atvirkščiai, prižiūrimos kodų bazės skatina pasididžiavimo jausmą ir leidžia kūrėjams sutelkti dėmesį į naujų dalykų kūrimą, o ne į tos pačios neveikiančios logikos taisymą. Švari kodų bazė yra vienas geriausių įrankių išlaikyti geriausius inžinerijos talentus.
Verslo vertė laikui bėgant
Verslo vertė greitis yra iš anksto; Tai padeda laimėti lenktynes. Tačiau verslo vertė išlaikymo yra eksponentinė; Tai užtikrina, kad išliksite lenktynėse. Dauguma sėkmingų įmonių ilgainiui pereina nuo "greito judėjimo" mentaliteto prie "stabilaus augimo" fazės, kad apsaugotų savo pagrindinį turtą.
Privalumai ir trūkumai
Vystymosi greitis
Privalumai
+Greitesnis įėjimas į rinką
+Mažesnės pradinės išlaidos
+Tiesioginis grįžtamasis ryšys
+Didelis lankstumas
Pasirinkta
−Trapi sistema
−Brangūs būsimi pataisymai
−Sunku išplėsti
−Didelis kūrėjų perdegimas
Kodo išlaikymas
Privalumai
+Lengva keisti mastelį
+Mažiau gamybos klaidų
+Greitesnis įdarbinimas
+Stabilus veikimas
Pasirinkta
−Lėtesnis pradinis paleidimas
−Didesnės išankstinės išlaidos
−Pernelyg didelė inžinerijos rizika
−Uždelstas grįžtamasis ryšys
Dažni klaidingi įsitikinimai
Mitas
Išlaikomo kodo rašymas visada užtrunka dvigubai ilgiau.
Realybė
Nors iš pradžių reikia daugiau galvoti, patyrę kūrėjai dažnai rašo prižiūrimą kodą panašiu tempu kaip "netvarkingas" kodas, nes jie naudoja nustatytus modelius, kurie apsaugo nuo žiedinės logikos klaidų.
Mitas
Techninė skola visada yra blogas dalykas.
Realybė
Techninė skola gali būti strateginė priemonė. Kaip ir verslo paskola, ji leidžia "nusipirkti" buvimą rinkoje dabar, jei turite aiškų planą, kaip ją grąžinti, kol palūkanos nesugadins projekto.
Mitas
Išlaikomas kodas reiškia "Nėra klaidų".
Realybė
Klaidos yra neišvengiamos bet kurioje sistemoje. Tačiau prižiūrimas kodas leidžia šias klaidas daug lengviau rasti, izoliuoti ir ištaisyti nepažeidžiant trijų kitų nesusijusių funkcijų.
Mitas
Galite tiesiog "išvalyti kodą" vėliau, kai projektas bus sėkmingas.
Realybė
Iš tikrųjų, kai projektas yra sėkmingas, spaudimas pristatyti funkcijas paprastai padidėja. Labai retai komanda gauna "pauzę" pakankamai ilgai, kad ištaisytų giliai įsišaknijusią architektūrinę netvarką.
Dažnai užduodami klausimai
Koks yra "auksinis santykis" tarp greičio ir priežiūros?
Fiksuoto procento nėra, tačiau bendras pramonės standartas yra 80/20 taisyklė. Išleiskite 80 procentų savo pastangų funkcijų pristatymui ir 20 procentų "refaktorizavimui" arba techninių skolų mokėjimui, kad kodų bazė būtų sveika.
Kaip paaiškinti techninės priežiūros poreikį netechninėms suinteresuotosioms šalims?
Naudokite "Automobilių priežiūros" analogiją. Galite vairuoti automobilį 100 mylių per valandą greičiu niekada nekeisdami alyvos, kad sutaupytumėte laiko, tačiau galiausiai variklis užstrigs ir jūs įstrigsite kelio pusėje, kol konkurentai praeis pro jus.
Ar automatizuoti įrankiai gali padėti prižiūrėti?
Taip, tokie įrankiai kaip "Linters", "Static Analysis" ir "SonarQube" gali automatiškai pažymėti netvarkingą kodą arba didelį sudėtingumą. Tačiau šie įrankiai negali ištaisyti iš esmės sugedusios architektūros; Tam vis dar reikia žmogaus sumanymo ir įžvalgos.
Ar "Agile" kūrimas teikia pirmenybę greičiui, o ne priežiūrai?
Agile dažnai klaidingai interpretuojamas kaip "judėti greitai ir sulaužyti dalykus", tačiau Agile manifeste iš tikrųjų pabrėžiamas "techninis meistriškumas". "True Agile" reikalauja priežiūros, kad komanda galėtų ir toliau reaguoti į pokyčius kiekviename sprinte.
Kada galima visiškai ignoruoti prižiūrimumą?
Tai priimtina "Throwaway Prototypes" – kodas, parašytas specialiai vizualinei koncepcijai ar vienam loginiam srautui patikrinti, kurį 100 procentų ketinate ištrinti ir perrašyti nuo nulio, kai koncepcija bus įrodyta.
Kaip "Dokumentacija" tinka šiam palyginimui?
Dokumentacija yra išlaikymo ramstis. Be jo, kodo ketinimas prarandamas, kai originalus autorius išeina, efektyviai paverčiant "Speedy" kodą juodąja dėžute, kurios niekas nedrįsta liesti.
Kokie yra pirmieji požymiai, rodantys, kad greitis žudo mano projektą?
Ieškokite "Regresijos klaidų" (vieno dalyko taisymas sulaužo kitą) ir "Greičio kritimas". Jei jūsų komanda dirba sunkiau, bet kiekvieną mėnesį atlieka mažiau užduočių, techninė skola greičiausiai užkemša jūsų kūrimo vamzdyną.
Ar "Over-Engineering" yra išlaikymo rizika?
Absoliučiai. Kūrėjai gali praleisti savaites kurdami "tobulai keičiamą" sistemą produktui, kuris niekada neturės daugiau nei dešimt vartotojų. Tikslas yra "Just-in-Time" techninė priežiūra – sukurti tokį mastą, kokio tikitės per ateinančius 6–12 mėnesių.
Nuosprendis
Pasirinkite kūrimo greitį ankstyvosios stadijos prototipams, trumpiems terminams arba patvirtindami visiškai naujos rinkos hipotezę. Investuokite į pagrindinių verslo produktų, finansinių sistemų ar bet kurios programos, skirtos gyventi ir augti ilgiau nei šešis mėnesius, kodo priežiūrą.