programmatūras inženierijaProjektu vadībatīrs kodsveikls
Izstrādes ātrums pret koda uzturēšanu
Straujā tehnoloģiju pasaulē komandas bieži saskaras ar vilkšanu starp "izstrādes ātrumu" - tieksmi ātri piegādāt funkcijas - un "koda uzturēšanu" - tīra, mērogojama koda rakstīšanas praksi, kuru ir viegli atjaunināt. Lai gan ātrums šodien iegūst tirgus daļu, apkope nodrošina, ka produkts rīt nesabruks zem sava svara.
Iezīmes
Ātrums pērk jums laiku tirgū, bet uzturēšana pērk ilgmūžību.
Nekontrolēts ātrums noved pie "mantotā koda", kuru galu galā kļūst neiespējami modificēt.
Uzturamība ir ieguldījums, kas vēlāk rada "negatīvu" interesi par izstrādes laiku.
Veiksmīgākās komandas atrod "stabilu stāvokli", kas līdzsvaro abus faktorus.
Kas ir Attīstības ātrums?
Ātrums, ar kādu komanda var pāriet no koncepcijas uz dzīvu, funkcionālu funkciju ražošanā.
Bieži piešķir prioritāti "Minimālā dzīvotspējīgā produkta" (MVP) funkcijām, lai apkopotu tūlītējas lietotāju atsauksmes.
Var būt nepieciešams izmantot īsceļus, iekodētas vērtības vai izlaist visaptverošus testa komplektus.
Būtiski jaunuzņēmumiem, kuriem ir jāpierāda biznesa modelis, pirms beidzas kapitāls.
Lielā mērā paļaujas uz ātru prototipēšanu un gatavām trešo pušu integrācijām.
Var novest pie "tehniskā parāda", kas darbojas kā finansiāla interese par slikti uzrakstītu kodu.
Kas ir Koda uzturēšana?
Vieglums, ar kādu programmatūru var saprast, labot un uzlabot visā tās dzīves ciklā.
Uzsver tīra koda principus, modulāro arhitektūru un konsekventas nosaukumu piešķiršanas konvencijas.
Nepieciešama visaptveroša dokumentācija un augsts automatizēts testa pārklājums, lai novērstu regresijas.
Samazina "pievienošanas laiku" jauniem izstrādātājiem, kas pievienojas ilgtermiņa projektam.
Samazina kopējās lietošanas izmaksas, padarot turpmākos kļūdu labojumus ievērojami ātrākus.
Nodrošina, ka sistēma var mērogoties, lai apstrādātu vairāk lietotāju, neprasot pilnīgu pārrakstīšanu.
Salīdzinājuma tabula
Funkcija
Attīstības ātrums
Koda uzturēšana
Primārais mērķis
Laiks līdz tirgum
Ilgtermiņa stabilitāte
Koda sarežģītība
Augsts (spageti koda risks)
Zems (strukturēts un modulārs)
Izmaksu profils
Zems sākums, augsts vēlāk
Augsts priekšā, zems vēlāk
Testēšanas stingrība
Minimāls/manuāls
Plašs / automatizēts
Dokumentācija
Reti vai neeksistē
Visaptverošs un skaidrs
Riska faktors
Sistēmas trauslums
Nokavēti tirgus logi
Detalizēts salīdzinājums
Tehniskā parāda ietekme
Koncentrēšanās tikai uz ātrumu rada tehniskus parādus, kas ir "ātri un netīri" labojumi, kas jārisina vēlāk. Ja komanda pārvietojas pārāk ātri pārāk ilgi, parāds uzkrājas, līdz katra jauna funkcija aizņem desmit reizes ilgāku laiku, jo pamatā esošais kods ir tik trausls. Uzturamība cenšas samaksāt šo parādu iepriekš, izmantojot rūpīgu dizainu.
Mērogojamība un evolūcija
Sistēma, kas izveidota ātrumam, bieži sasniedz "griestus", kur tā nevar apstrādāt vairāk datu vai lietotāju bez avārijas. Uzturams kods ir veidots ar abstrakcijas slāņiem, kas ļauj izstrādātājiem nomainīt komponentus vai uzlabot infrastruktūru ar minimālu berzi. Šī modularitāte ir tas, kas atdala prototipu no profesionālas uzņēmuma lietojumprogrammas.
Izstrādātāja morāle un apgrozījums
Darbs ātrgaitas vidē ar zemu apkopi bieži noved pie izstrādātāju izdegšanas pastāvīgas kļūdu dzēšanas dēļ. Un otrādi, uzturamās kodu bāzes veicina lepnuma sajūtu un ļauj izstrādātājiem koncentrēties uz jaunu lietu veidošanu, nevis tās pašas bojātās loģikas labošanu. Tīra kodu bāze ir viens no labākajiem rīkiem, lai saglabātu labākos inženiertehniskos talantus.
Biznesa vērtība laika gaitā
Ātruma biznesa vērtība ir priekšlaicīga; Tas palīdz jums uzvarēt sacīkstēs. Tomēr uzturēšanas biznesa vērtība ir eksponenciāla; tas nodrošina, ka jūs paliksiet sacensībās. Lielākā daļa veiksmīgu uzņēmumu galu galā pāriet no "ātras kustības" mentalitātes uz "stabilas izaugsmes" fāzi, lai aizsargātu savus pamataktīvus.
Priekšrocības un trūkumi
Attīstības ātrums
Iepriekšējumi
+Ātrāka ienākšana tirgū
+Zemākas sākotnējās izmaksas
+Tūlītēja atgriezeniskā saite
+Augsta veiklība
Ievietots
−Trausla sistēma
−Dārgi nākotnes labojumi
−Grūti mērogojams
−Augsts izstrādātāju izdegšana
Koda uzturēšana
Iepriekšējumi
+Viegli mērogojams
+Mazāk ražošanas kļūdu
+Ātrāka pievienošana
+Stabila veiktspēja
Ievietots
−Lēnāka sākotnējā palaišana
−Augstākas sākotnējās izmaksas
−Pārmērīgs inženierijas risks
−Aizkavēta atgriezeniskā saite
Biežas maldības
Mīts
Uzturējama koda rakstīšana vienmēr aizņem divreiz ilgāku laiku.
Realitāte
Lai gan sākotnēji tas prasa vairāk pārdomu, pieredzējuši izstrādātāji bieži raksta uzturamu kodu līdzīgā tempā kā "nekārtīgs" kods, jo viņi izmanto izveidotus modeļus, kas novērš apļveida loģikas kļūdas.
Mīts
Tehniskais parāds vienmēr ir slikta lieta.
Realitāte
Tehniskais parāds var būt stratēģisks instruments. Tāpat kā biznesa aizdevums, tas ļauj jums "iegādāties" klātbūtni tirgū tagad, ja vien jums ir skaidrs plāns, kā to atmaksāt, pirms procenti sabojā projektu.
Mīts
Uzturams kods nozīmē "Bez kļūdām".
Realitāte
Kļūdas ir neizbēgamas jebkurā sistēmā. Tomēr uzturams kods padara šīs kļūdas daudz vieglāk atrodamas, izolētas un labojamas, procesā neizjaucot trīs citas nesaistītas funkcijas.
Mīts
Jūs varat vienkārši "iztīrīt kodu" vēlāk, kad projekts ir veiksmīgs.
Realitāte
Patiesībā, tiklīdz projekts ir veiksmīgs, spiediens uz funkciju piegādi parasti palielinās. Ļoti reti komandai ir pietiekami ilga "pauze", lai labotu dziļi iesakņojušos arhitektūras haosu.
Bieži uzdotie jautājumi
Kāds ir "zelta griezums" starp ātrumu un apkopi?
Nav noteikta procentuālā daļa, bet kopējs nozares standarts ir 80/20 noteikums. Tērējiet 80 procentus no savām pūlēm funkciju piegādei un 20 procentus "pārveidošanai" vai tehniskā parāda atmaksai, lai saglabātu kodu bāzi veselīgu.
Kā es varu izskaidrot uzturēšanas nepieciešamību ieinteresētajām personām, kas nav tehniskas?
Izmantojiet analoģiju "Auto apkope". Jūs varat braukt ar automašīnu ar ātrumu 100 jūdzes stundā, nekad nemainot eļļu, lai ietaupītu laiku, bet galu galā dzinējs aizķersies, un jūs būsiet iestrēdzis ceļa malā, kamēr konkurenti iet jums garām.
Vai automatizētie rīki var palīdzēt uzturēties?
Jā, tādi rīki kā Linters, statiskā analīze un SonarQube var automātiski atzīmēt nekārtīgu kodu vai augstu sarežģītību. Tomēr šie rīki nevar salabot fundamentāli bojātu arhitektūru; Tas joprojām prasa cilvēka ieceri un tālredzību.
Vai Agile izstrāde dod priekšroku ātrumam, nevis uzturēšanai?
Agile bieži tiek nepareizi interpretēts kā "ātri kustēties un salauzt lietas", bet Agile manifests faktiski uzsver "tehnisko izcilību". True Agile ir nepieciešama uzturēšana, lai komanda varētu turpināt reaģēt uz izmaiņām katrā sprintā.
Kad ir pareizi pilnībā ignorēt uzturamību?
Tas ir pieņemams "Throwaway Prototypes" - kods, kas īpaši rakstīts, lai pārbaudītu vizuālo koncepciju vai vienu loģisko plūsmu, kuru jūs 100 procentiem plānojat izdzēst un pārrakstīt no nulles, kad koncepcija ir pierādīta.
Kā "Dokumentācija" iekļaujas šajā salīdzinājumā?
Dokumentācija ir uzturēšanas pīlārs. Bez tā koda nodoms tiek zaudēts, kad sākotnējais autors aiziet, efektīvi pārvēršot "Speedy" kodu melnā kastē, kurai neviens neuzdrošinās pieskarties.
Kādas ir pirmās pazīmes, kas liecina, ka ātrums nogalina manu projektu?
Meklējiet "Regresijas kļūdas" (vienas lietas labošana sabojā citu) un "Ātruma kritums". Ja jūsu komanda strādā smagāk, bet katru mēnesi pabeidz mazāk uzdevumu, tehniskais parāds, visticamāk, aizsprosto jūsu izstrādes konveijeru.
Vai "pārmērīga inženierija" ir uzturēšanas risks?
Pilnīgi. Izstrādātāji var pavadīt nedēļas, veidojot "perfekti mērogojamu" sistēmu produktam, kuram, iespējams, nekad nebūs vairāk par desmit lietotājiem. Mērķis ir "Just-in-Time" uzturēšana - veidošana tādam mērogam, kādu jūs sagaidāt nākamajos 6-12 mēnešos.
Spriedums
Izvēlieties izstrādes ātrumu agrīnās stadijas prototipiem, saspringtiem termiņiem vai pavisam jaunas tirgus hipotēzes apstiprināšanai. Ieguldiet koda uzturamībā galvenajiem biznesa produktiem, finanšu sistēmām vai jebkurai lietojumprogrammai, kas paredzēta dzīvošanai un izaugsmei ilgāk par sešiem mēnešiem.