Kiiretempolises tehnoloogiamaailmas seisavad meeskonnad tihti silmitsi tõmbetõmbega 'arenduse kiiruse' — funktsioonide kiire tarnimise — ja 'Koodi hooldatavuse' — puhta, skaleeritava ja kergesti uuendatava koodi kirjutamise praktika vahel. Kuigi kiirus võidab täna turuosa, tagab hooldatavus, et toode ei kuku homme omaenda raskuse all kokku.
Esiletused
Kiirus ostab turul aega, kuid hooldatavus annab pikaealisust.
Kontrollimatu kiirus viib 'pärandkoodini', mida muutub lõpuks võimatuks muuta.
Hooldatavus on investeering, mis tekitab hiljem 'negatiivset' huvi arendusaja suhtes.
Kõige edukamad meeskonnad leiavad "stabiilse seisundi", mis tasakaalustab mõlemad tegurid.
Mis on Arengu kiirus?
Kiirus, millega meeskond saab liikuda kontseptsioonist elavaks, funktsionaalseks filmiks tootmises.
Sageli eelistab 'minimaalse elujõulise toote' (MVP) funktsioone, et koguda kohest kasutajate tagasisidet.
See võib hõlmata otseteede, kõvakodeeritud väärtuste kasutamist või põhjalike testikomplektide vahelejätmist.
Oluline idufirmadele, kes peavad enne kapitali otsa saamist tõestama oma ärimudelit.
Tugineb tugevalt kiirele prototüüpimisele ja valmis kolmandate osapoolte integratsioonidele.
See võib viia 'tehnilise võlani', mis toimib nagu finantsintress halvasti kirjutatud koodile.
Mis on Koodi hooldatavus?
Tarkvara mõistmise lihtsus, parandamine ja täiustamine kogu selle elutsükli jooksul.
Rõhutab puhta koodi põhimõtteid, modulaarset arhitektuuri ja järjepidevaid nimetamiskonventsioone.
Vajab põhjalikku dokumentatsiooni ja kõrget automatiseeritud testikatvust, et vältida regressioone.
Vähendab uute arendajate pikaajalise projektiga liitumise 'sisseelamisaega'.
See vähendab omamise kogukulu, muutes tulevased veaparandused oluliselt kiiremaks.
Tagab, et süsteem suudab skaleeruda rohkemate kasutajatega ilma täieliku ümberkirjutamiseta.
Võrdlustabel
Funktsioon
Arengu kiirus
Koodi hooldatavus
Peamine eesmärk
Turule jõudmise aeg
Pikaajaline stabiilsus
Koodi keerukus
Kõrge (spagetikoodi risk)
Madal (struktureeritud ja modulaarne)
Kulude profiil
Madal alguses, kõrge hiljem
Kõrgel ees, madalal hiljem
Testimise rangus
Minimaalne/manuaalne
Ulatuslik/Automatiseeritud
Dokumentatsioon
Hõre või olematu
Põhjalik ja selge
Riskitegur
Süsteemi haprus
Turuaknad vahele jäänud
Üksikasjalik võrdlus
Tehnilise võla mõju
Ainult kiirusele keskendumine tekitab tehnilist võlga, mis on "kiired ja lihtsad" lahendused, millega tuleb hiljem tegeleda. Kui meeskond liigub liiga kiiresti ja liiga kaua, koguneb võlg, kuni iga uue funktsiooni ehitamine võtab kümme korda kauem aega, sest aluseks olev kood on nii habras. Hooldatavus püüab selle võla kohe ette maksta hoolika disaini kaudu.
Skaleeritavus ja areng
Kiiruseks ehitatud süsteem jõuab sageli 'laeni', kus ei suuda rohkem andmeid ega kasutajaid hallata ilma krahhita. Hooldatav kood on ehitatud abstraktsioonikihtidega, mis võimaldavad arendajatel komponente vahetada või infrastruktuuri uuendada minimaalse takistusega. See modulaarsus eristab prototüüpi professionaalsest ettevõtte rakendusest.
Arendajate moraal ja voolavus
Töötamine kiires ja vähese hooldusega keskkonnas viib sageli arendajate läbipõlemiseni, kuna putukate pidev "tuletõrje" on vajalik. Seevastu hooldatavad koodibaasid tekitavad uhkustunnet ja võimaldavad arendajatel keskenduda uute asjade loomisele, mitte sama katki läinud loogika parandamisele. Puhas koodibaas on üks parimaid tööriistu tippinseneride hoidmiseks.
Äriväärtus aja jooksul
Kiiruse äriline väärtus on ette laetud; See aitab sul võistluse võita. Kuid hooldatavuse äriline väärtus on eksponentsiaalne; See tagab, et jääd võistlusse. Enamik edukaid ettevõtteid liigub lõpuks 'kiiresti' mentaliteedist 'stabiilse kasvu' faasi, et kaitsta oma põhivarasid.
Plussid ja miinused
Arengu kiirus
Eelised
+Kiirem turule sisenemine
+Madalam algne kulu
+Vahetu tagasiside
+Kõrge osavus
Kinnitatud
−Habras süsteem
−Kallid tulevased parandused
−Raskesti skaleeritav
−Kõrge arendajate läbipõlemine
Koodi hooldatavus
Eelised
+Lihtne skaleerida
+Vähem tootmisvigu
+Kiirem sisseelamine
+Stabiilne jõudlus
Kinnitatud
−Aeglasem esialgne start
−Kõrgem algne kulu
−Üleinseneririsk
−Viivitusega tagasiside
Tavalised eksiarvamused
Müüt
Hooldatava koodi kirjutamine võtab alati kaks korda kauem aega.
Tõelisus
Kuigi alguses tuleb rohkem mõelda, kirjutavad kogenud arendajad sageli hooldatavat koodi sarnases tempos nagu 'segane' kood, sest nad kasutavad väljakujunenud mustreid, mis takistavad ringloogika vigu.
Müüt
Tehniline võlg on alati halb asi.
Tõelisus
Tehniline võlg võib olla strateegiline tööriist. Nagu ärilaen, võimaldab see teil turul juba praegu 'osta' positsiooni, kui teil on selge plaan selle tagasi maksmiseks enne, kui intress projekti hävitab.
Müüt
Hooldatav kood tähendab 'Ei mingeid vigu'.
Tõelisus
Vead on igas süsteemis vältimatud. Kuid hooldatav kood muudab need vead palju lihtsamini leitavaks, isoleeritavaks ja parandatavaks, ilma et see rikuks kolme muud omavahel mitteseotud funktsiooni.
Müüt
Sa võid lihtsalt 'koodi puhastada' hiljem, kui projekt on edukas.
Tõelisus
Tegelikult, kui projekt on edukas, suureneb tavaliselt surve funktsioonide tarnimiseks. On väga haruldane, et meeskond saab piisavalt pika 'pausi', et parandada sügavalt juurdunud arhitektuurilist segadust.
Sageli küsitud küsimused
Mis on 'kuldne suhe' kiiruse ja hoolduse vahel?
Kindlat protsenti ei ole, kuid levinud tööstusstandard on 80/20 reegel. Kuluta 80 protsenti oma jõupingutustest funktsioonide edastamisele ja 20 protsenti tehnilise võla 'refaktoreerimisele' või tasumisele, et hoida koodibaas tervena.
Kuidas selgitada hooldatavuse vajadust mittetehnilistele sidusrühmadele?
Kasuta 'auto hoolduse' analoogiat. Sa võid sõita autoga 100 miili tunnis ilma õli vahetamata, et aega säästa, kuid lõpuks mootor kiildub ja sa jääd tee äärde, samal ajal kui konkurendid mööduvad.
Kas automatiseeritud tööriistad võivad aidata hooldatavuse parandamisel?
Jah, tööriistad nagu Linters, Static Analysis ja SonarQube suudavad automaatselt märgistada segase koodi või kõrge keerukuse. Kuid need tööriistad ei suuda parandada põhimõtteliselt katki olevat arhitektuuri; See nõuab endiselt inimlikku disaini ja ettenägelikkust.
Kas Agiilne arendus eelistab kiirust hooldusele?
Agiilset mõistet tõlgendatakse sageli valesti kui 'liigu kiiresti ja lõhu asju', kuid Agile manifest rõhutab tegelikult 'tehnilist tipptaset'. Tõeline Agile nõuab hooldatavust, et meeskond saaks iga sprindis muutustele reageerida.
Millal on täiesti okei hooldatavust ignoreerida?
See on aktsepteeritav ka 'Throwaway Prototypes' jaoks—kood, mis on kirjutatud spetsiaalselt visuaalse kontseptsiooni või ühe loogikavoo testimiseks, mille kavatsed 100% kustutada ja uuesti kirjutada, kui kontseptsioon on tõestatud.
Kuidas sobitub 'dokumentatsioon' sellesse võrdlusse?
Dokumentatsioon on hooldatavuse tugisammas. Ilma selleta kaob koodi kavatsus, kui algne autor lahkub, muutes 'Speedy' koodi mustaks kastiks, mida keegi ei julge puudutada.
Millised on esimesed märgid, et kiirus tapab mu projekti?
Otsi 'Regressioonivigu' (ühe asja parandamine rikub teise) ja 'Kiiruse languse'. Kui teie meeskond töötab kõvemini, kuid lõpetab iga kuu vähem ülesandeid, ummistab tehniline võlg tõenäoliselt teie arendustoru.
Kas 'üleinseneritöö' on hooldatavuse risk?
Absoluutselt. Arendajad võivad kulutada nädalaid, et ehitada 'täiuslikult skaleeritavat' süsteemi tootele, millel ei pruugi kunagi olla rohkem kui kümme kasutajat. Eesmärk on 'Just-in-Time' hooldatavus – ehitada sellise mahu jaoks, mida ootad järgmise 6–12 kuu jooksul.
Otsus
Vali arenduse kiirus varajase staadiumi prototüüpide, rangete tähtaegade või uue turuhüpoteesi kinnitamiseks. Investeeri koodi hooldatavusse põhitoodete, finantssüsteemide või mis tahes rakenduse jaoks, mis on mõeldud elama ja kasvama kauem kui kuus kuud.