Inimestele meeldib teha pigem seda, mida pole vaja. Seda illustreerib hästi ka poodlemine, kus tassitakse hunnikus asju koju ning seejärel pannakse need kappi seisma ja lagunemist ootama. Siinkohalgi tarkvara arendus väga ei erine – paljud programmeerijaid lisavad lähtekoodi hulgaliselt võimalusi, mida võib tulevikus vaja minna. Seda, kas neid ka tulevikus kasutati on vähe tõenäoline.
Kui lisada asju, mida kunagi võib vaja minna, siis peamiselt tõuseb keeruks, kuid samas võib see ka paindlikum olla. Viimane osa ei ole just tihti tõene.
You Ain’t Gonna Need It
(YAGNI)
Printsiip on piisavalt konkreetne: sa ei vaja seda. Tegelikult enne imeliste asjade lisamist tuleks mõelda, kas seda läheb vaja või mitte. Enne otsuse langetamist tasub kaaluda ka, kas hiljem sama funktsionnaluse lisamine ei ole keerulisem või ajakulukam kui praegusel hetkel.
Siinkohal on arukas kasutusele võtta praktikad, mis aitavad süsteemiosa piisavalt paindlikuks muuta hilisemate muutuste osas. Ekstreemprogrammeerimises (XP) juhindub paljugi testide põhjal. Kui testid ei nõua sellist võimalust, siis seda ka ei tehta. Põhjuski ei ole väga keeruline – iga uus võimalus lisab keerukust juurde programmile ja nõuab aega. Siit kerkib ka üks teine sarnase ideega reegel välja, Keep It Simple, Stupid (KISS).
Seetõtu on Test Driven Development ja Behavior Driven Development parktikad head – määrad ära, mida testitakse ja üritad võimalikult lihtsalt seda realiseerida (kirjutatakse täpselt nii palju toote koodi, et test läbiks). Siinkohal ei tähenda lihtsus seda, et võiks arhitektuuri võssa visata ja häkkima hakata. Lisaks annab see suurema koodi kaetavuse.
Printsiip peaks hoidma õnnetusest, et arendajast saab Joel Spolsky definitsiooni järgi Architecture Astronaut. Paljudele arendajatele meeldib teha üldisemalt ja seadistavamalt, kuid alati pole see mõistlik, sest aega on napib tihtipeale.
See printsiip pole reegel, leidub olukordi, kus seda printsiipi pole mõistlik rakendada, kuid soovitan siiski mõelda selle peale, kas vajatavat asja tegelikult vaja läheb või mitte.
Loe veel sarnastel teemadel:
- Modernne tarkvara loomine V: Mitu kasutajakontot sul on?, 18. november
- Mida TDD tähendab?, 18. november
- Programmeerija ei ole tarkvara arendaja, 10. juuli
- KoopiaKoopiaKoopia ei ole ilus, 20. veebruar
- xDUF, 4. juuni
1 kommentaar
1
Täna hommikul kui ma 9.30 paiku tööle liikusin kõndis minu ees üks dressides härrasmees, kes oli vaatamata varajasele tunnile jõudnud käia juba Hulludel Päevadel poodlemas. Vastu tulid talle ilmselt tuttavad inimesed ja ta lehvitas neile tõstes oma kollaseid kilekotte ning julgustades: “Kiiresti, kiiresti”.
Teema aga on õige just sellest vaatenurgast, et ainuke kulu tarkvara peale ei ole arenduskulu. Mida rohkem koodi, seda rohkem selle haldamist, seda rohkem vigu, seda rohkem haldamise kulu.
Oleg
10:12, 2. aprill
Lisa kommentaar
KAIZEN FEED
Telli endale Kaizeni uudisvoog
KOMMENTAARIDE FEED
Telli endale kommentaaride voog
KAIZEN TWITTER
Lühiuudised Kaizeni autoritelt
KAIZEN FACEBOOK
Liitu Kaizeniga
MIS ON KAIZEN?
Kaizen on Saiku tarkvaraarendusealane blogi, kus kirjutame erinevatest lähenemistest meisterlikule tarkvaraarendusele.
KATEGOORIAD
- .NET (18)
- Analüüs/Arhitektuur (11)
- Arendus (66)
- Ettevalmistus (1)
- Juhtimine (2)
- Varia (24)
SILDIPILV
- .NET (41)
- ilus kood (23)
- Arendus (23)
- C# (20)
- Analüüs/Arhitektuur (14)
- Testimine (10)
- raamat (8)
- Ruby (8)
- projektijuhtimine (8)
- printsiibid (6)
- produktiivsus (5)
- ReSharper (5)
- PHP (5)
- NHibernate (4)
- objekt-orienteeritud (4)
- pidev integratsioon (4)
- Viited (4)
- agile (4)
- Java (4)
- Geekdinner (4)
- lean (4)
- raamatukogu (4)
- CI (3)
- Cruise Control.NET (3)
- Robert C. Martin (3)
- scrum (3)
- iteratsioon (3)
- suhtlus (3)
- jQuery (2)
- TechEd 2008 (2)
- Visual Studio (2)
- valideerimine (2)
- intervjuu (2)
- tööpakkumised (1)
- analüüs (1)
- ASP.NET (1)
- ümberstruktureerimine (1)
- üritus (1)
- CodeRush (1)
- dokumentatsioon (1)
- Kent Beck (1)
- LINQ (1)
- Martin Fowler (1)
- Moq (1)
- Rhino Mocks (1)
- stackoverflow (1)
- võltsitud objektid (1)
- Whiteboard Wednesday (1)
- hindamine (1)
- tarkvara kvaliteet (1)
- ajagraafikud (1)
- Saiku (1)
- koolitus (1)
- tagasivaate (1)
- koosolek (1)
- dünaamilised keeled (1)
- staatilised keeled (1)
- FluentNHibernate (1)
- facebook (1)
- aastapäev (1)
- Rake (1)
- Oredev 2008 (1)
- toyota way (1)
- raiskamine (1)
- NDepend (1)
- podcasts (1)
- väle tarkvaraarendus (1)
- raido tonts (1)
- minimal marketable feature (1)
- kasutajalugu (1)
- twitter (1)
- Joomla! (1)
- MVC (1)
- andmebaas (1)
- versioonimine (1)
- diskussioon (1)
- regulaaravaldised (1)
- motiveerimine (1)
- mõõdikud (1)
- agileestonia (1)
- riistvara (1)
- koolitused (1)
- kujundus (1)
- kodulehed (1)
- veeb (1)
