Te vaak wordt ik nog geconfronteerd met onprofessionele omgang in software ontwikkeling. Dikwijls ligt dit niet bij de projectleiding, maar eerder bij de mentaliteit van de developer.
Nu ga ik niet lopen verkondingen dat agile ontwikkeling hier iets aan zal verbeteren. Je zou misschien zelfs zeggen: "Ja, dat is toch agile... het 'werkt' op de simpelste en kortste manier". Maar die definitie is niet helemaal correct. Agile is veel meer dan dat en streeft daarenboven naar een hogere software kwaliteit. Denk maar aan unit/regression/acceptance testing, TDD, design in de code ipv in zware documenten, ... zijn maar enkele facetten die bijdragen tot een hogere kwaliteit.
agi·le (bw.): [soft.] snel, flexibel en met gemak kunnen inspelen op verandering.
Dit is eigenlijk een korte definitie van agile development; natuurlijk is er veel meer dan dat.
Agile is een erg praktijk gebaseerd proces gedefinieerd naar bewezen waarden en princiepen van software ontwikkeling. Het richt zich vooral op het doeltreffend werken en onnodige zaken achterwege laten. Nu wordt agile vaak ook wel eens als een proces gezien, dit is niet helemaal zo. Het is een deel proces, die zich wel laat inpassen in overige software processen zoals xp, fdd, dsdm, rup, ...
Agile development streeft ernaar om dingen eenvoudig te houden, onnodige complexiteit is vaak niet nodig. Nutteloos toepassen van design patterns is hier een voorbeeld van. Het is niet de bedoeling dat patterns op voorhand ingewerkt worden, het is beter om er pas naar toe te refactoren als de oplossing voor het probleem duidelijk wordt.
Verder is het ook nodig dat er ontzettend goed en snel ingespeeld kan worden op verandering. Veranderende requirements zijn de realiteit en iedereen (in software ontwikkeling) heeft ermee te maken. Hier zijn een aantal methoden voor, zoals agile requirement management: de requirements worden op een 'stack' geplaatst, samen met een prioriteit die toegekend wordt door de klant.
Modelleer en documenteer met een doel en naar een lezer. Het mag niet de bedoeling zijn om te gaan modelleren omdat het zo hoort; is ineffectief, beperkt het overzicht en kost daarenboven ook nog eens een hoop geld.
De nr1. prioriteit van iedere developer zou namelijk het effectieve ontwikkelen moeten zijn.
Bij agile model driven development wordt er in zeer kleine cycles gewerkt, maar wordt de programmeur wel gedwongen om eerst goed over de opzet na te denken; model/brain storming.
De intiële cycle (meestal een paar dagen) dient om de globale architectuur te doordenken, opzet van het gehele systeem, appserver, database, multi-tier, netwerk, ..
Dan volgt de volledige development stage; Er wordt per user story een korte sessie gehouden van een aantal minuten (5 à 10), waar deze story in het kort gemodelleerd wordt (vaak op een whiteboard) zodat deze gedefinieerd wordt als model. Na deze model storm sessie, wordt er overgaan in het effectieve coderen, liefst nog TDD zodat we onze codebase kunnen voorzien van regressie/unit testen. Op deze manier proberen we dan althans de software kwaliteit naar boven te krikken. Er wordt minder tijd verprutst aan onnodige details, er wordt meer tijd in de code gestopt.
Is agile een oplossing? Ik weet het eerlijk gezegd niet.. op lange termijn misschien. Wat zijn jullie ervaringen? Hoe gaan jullie op een hoog niveau om met software processen?
Idd, dat 'werkt' ook ja.. maar het ziet er niet lekker uit en gaat gegarandeerd tot problemen leveren. En dan wordt er verder gewoon maar wat aangemodderd, beetje bugfixing en klaar.. het 'werkt'.Waarom het op die manier doen, zo kan het toch ook perfect?
Nu ga ik niet lopen verkondingen dat agile ontwikkeling hier iets aan zal verbeteren. Je zou misschien zelfs zeggen: "Ja, dat is toch agile... het 'werkt' op de simpelste en kortste manier". Maar die definitie is niet helemaal correct. Agile is veel meer dan dat en streeft daarenboven naar een hogere software kwaliteit. Denk maar aan unit/regression/acceptance testing, TDD, design in de code ipv in zware documenten, ... zijn maar enkele facetten die bijdragen tot een hogere kwaliteit.
agi·le (bw.): [soft.] snel, flexibel en met gemak kunnen inspelen op verandering.
Dit is eigenlijk een korte definitie van agile development; natuurlijk is er veel meer dan dat.
Agile is een erg praktijk gebaseerd proces gedefinieerd naar bewezen waarden en princiepen van software ontwikkeling. Het richt zich vooral op het doeltreffend werken en onnodige zaken achterwege laten. Nu wordt agile vaak ook wel eens als een proces gezien, dit is niet helemaal zo. Het is een deel proces, die zich wel laat inpassen in overige software processen zoals xp, fdd, dsdm, rup, ...
Agile development streeft ernaar om dingen eenvoudig te houden, onnodige complexiteit is vaak niet nodig. Nutteloos toepassen van design patterns is hier een voorbeeld van. Het is niet de bedoeling dat patterns op voorhand ingewerkt worden, het is beter om er pas naar toe te refactoren als de oplossing voor het probleem duidelijk wordt.
Verder is het ook nodig dat er ontzettend goed en snel ingespeeld kan worden op verandering. Veranderende requirements zijn de realiteit en iedereen (in software ontwikkeling) heeft ermee te maken. Hier zijn een aantal methoden voor, zoals agile requirement management: de requirements worden op een 'stack' geplaatst, samen met een prioriteit die toegekend wordt door de klant.
Modelleer en documenteer met een doel en naar een lezer. Het mag niet de bedoeling zijn om te gaan modelleren omdat het zo hoort; is ineffectief, beperkt het overzicht en kost daarenboven ook nog eens een hoop geld.
De nr1. prioriteit van iedere developer zou namelijk het effectieve ontwikkelen moeten zijn.
Bij agile model driven development wordt er in zeer kleine cycles gewerkt, maar wordt de programmeur wel gedwongen om eerst goed over de opzet na te denken; model/brain storming.
De intiële cycle (meestal een paar dagen) dient om de globale architectuur te doordenken, opzet van het gehele systeem, appserver, database, multi-tier, netwerk, ..
Dan volgt de volledige development stage; Er wordt per user story een korte sessie gehouden van een aantal minuten (5 à 10), waar deze story in het kort gemodelleerd wordt (vaak op een whiteboard) zodat deze gedefinieerd wordt als model. Na deze model storm sessie, wordt er overgaan in het effectieve coderen, liefst nog TDD zodat we onze codebase kunnen voorzien van regressie/unit testen. Op deze manier proberen we dan althans de software kwaliteit naar boven te krikken. Er wordt minder tijd verprutst aan onnodige details, er wordt meer tijd in de code gestopt.
Is agile een oplossing? Ik weet het eerlijk gezegd niet.. op lange termijn misschien. Wat zijn jullie ervaringen? Hoe gaan jullie op een hoog niveau om met software processen?