In de huidige veranderende economie verschuiven de prioriteiten van organisaties continu en worden it-projecten helaas nog vaak geannuleerd. Organisaties die werkzaam zijn in deze snel veranderende en concurrerende markt overleven door het aanbieden van producten en diensten die op dít moment relevant zijn voor hun klanten. Het is de uitdaging om diensten op een zo efficiënt mogelijke manier beschikbaar te stellen en gedurende het gehele proces een positieve klantervaring te onderhouden.
Hiervoor moeten dienstverleners wel degelijk een strategie ontwikkelen, maar tegelijkertijd moeten zij deze waar nodig ook los durven laten. Als situaties anders uitpakken dan vooraf gedacht, moet een onderneming de flexibiliteit tonen om te kunnen improviseren en bijsturen. Dit proces wordt vaak aangeduid met de term ‘agility'; de overgang naar agility vormt tegenwoordig een belangrijke onderscheidende factor.
‘Agile' neemt het over van traditionele ‘waterfall'-methoden als het gaat om de voorkeur voor het leveren van it-projecten. Agile moedigt uitvoerders aan om projecten te heroverwegen en te focussen op de waarde die het organisaties op dit moment oplevert. Daarnaast wordt deze informatie gebruikt om de juiste prioriteit aan investeringen te stellen. Kosten worden bespaard doordat er minder geld wordt besteed aan it-projecten die dreigen te mislukken en aan projecten die maar een minimaal succes opleveren.
De onderneming waar ik werk heeft zes uitdagingen opgesteld waar veel agile-projecten mee te maken krijgen. Door aandacht aan deze uitdagingen te besteden, is de kans groot dat agile-projecten zowel binnen it als de business de juiste ondersteuning krijgen om op koers te blijven.
Transparantie
Het komt geregeld voor dat er tijdens een project geen issues worden gesignaleerd, maar het project uiteindelijk toch vertraging oploopt. Het is voor een projectmanager een grote uitdaging ervoor te zorgen dat alle mogelijke problemen op tijd aan het licht komen. Het verbeteren van de transparantie binnen het gehele proces helpt daarbij. Het gaat hierbij niet alleen om meer transparantie tussen klanten en projectteams, maar bijvoorbeeld ook om meer zichtbaarheid binnen het projectteam zelf.
Communicatie
Een lacune in de communicatie tussen teamleden is een typische uitdaging waar veel agile-projecten mee te maken krijgen. Dat komt doordat dit soort projecten enorm afhankelijk zijn van actieve samenwerking. Veel bedrijven maken zich in hun communicatie volledig afhankelijk van face-to-face meetings en emailverkeer, wat een slechte gewoonte is waar we vanaf moeten stappen. Bedrijven hebben steeds meer te maken met werken in verschillende tijdszones.
Zo werken veel westerse bedrijven samen met grote offshore-ontwikkelsites in India en China. Door het tijdsverschil zijn er per dag maar weinig uren waarin projectleden in beide locaties op dezelfde tijd aanwezig zijn. Bedrijven moeten veel meer focussen op directe, één-op-één-communicatie, waarbij de kans op het ontstaan van misverstanden het kleinst is.
Cultuur
Verschillen in cultuur tussen leden binnen een softwareteam brengen zowel lokaal als internationaal de nodige uitdagingen met zich mee. Agile it-projecten kunnen de culturele verschillen verkleinen en zodoende synergie creëren. Door lastige situaties op een open, transparante wijze te benaderen en daarbij uit te gaan van het gezond verstand, worden cultuurverschillen overstegen.
Collaboratie
Een team dat gebruik maakt van agile-principes, zal naar alle waarschijnlijkheid sneller dan andere teams de vruchten plukken van de samenwerking. Agile draait om collaboration, problemen vroegtijdig signaleren en ook anderen helpen bij het oplossen van problemen. Het draait om het overnemen van werk van een collega als je daar tijd voor hebt. Het draait ook om het voortijdig opsporen van fouten in plaats van achteraf, als het implementatieproces al voltooid is.
Team
Om agile tot een succes te maken, moet een onderneming beschikken over medewerkers die kennis hebben van de binnen de onderneming gebruikte methodieken. Ook moeten medewerkers in staat zijn om nieuwe vaardigheden snel en goed op te pakken. Het team moet zich ervan bewust zijn dat technologie echt een ‘business enabler' is; het komt het beste tot zijn recht wanneer het voor de klant leidt tot productieve software in plaats van dat het blijft bij slechts een theoretisch goed verhaal.
Configuratiemanagement
Implementaties zijn vaak een uitdaging doordat verschillende onderdelen moeten worden samengebracht. Geregeld krijgen ondernemingen met grote problemen te maken wanneer componenten die offshore gebouwd zijn geïntegreerd worden met de on-site-onderdelen. Een goede teamstructuur, geautomatiseerde processen en unit testing zijn enkele voorbeelden om deze situaties aan te pakken.
Veel bedrijven die uit ervaring spreken, zullen aangeven dat het runnen van agile-projecten een goede en snelle manier is om op een succesvolle wijze softwareprojecten te draaien. Het vereist wel een andere ‘mindset' om binnen een dergelijk model te opereren. Het uitvoerende gedeelte kan een uitdaging lijken wanneer je te maken hebt met grote teams. Het wordt helemaal lastig wanneer deze teams zich verspreid over de hele wereld bevinden en je te maken hebt met verschillende culturen en tijdszones. In eerste instantie kan de agile-methode een uitdagende manier van werken lijken en daardoor vallen bedrijven geregeld terug op de conventionele ‘waterfall'-technologie waarmee zij gewend zijn te werken. Deze technologie kan op het eerste gezicht geschikt lijken, maar het brengt bedrijven uiteindelijk niet de vereiste return on investment.
Bert Hooyman, Vice President & Chief Architect Europe bij MphasiS
Leuk dat je configuratiemanagement noemt (wordt niet vaak over gesproken in de Computable), maar jammer dat de punten die je vervolgens noemt niets hiermee te maken hebben. De punten die je hier noemt zijn typisch integratiemanagement, aangevuld met een stukje build-management.
(wat overigens niet wegneemt dat configuratiemanagement niet belangrijk zou zijn)
Daarnaast mis ik nog één aspect, waar nogal eens makkelijk aan voorbijgegaan wordt: architectuur van je product. Met name bij grote complexe monolithische producten, waarbij je ook nog eens te maken hebt met hardware ontwikkeling met doorlooptijden van 6 maanden of meer zijn veel lastiger vanuit een agile aanpak te benaderen dan bijvoorbeeld een eenvoudige webapplicatie. Door zo’n complex product te decomponeren in kleine, onafhankelijk te beheren brokstukken, kun je op deze brokstukken weer wel een agile aanpak loslaten. Echter, de architectuur moet het dan wel mogelijk maken deze decompositie te realiseren.
(wat ik dan wel onder configuratie management versta, vindt je overigens onder andere op http://en.wikipedia.org/wiki/Configuration_management en http://www.intccm.org)