Concept

 
Het concretiseren van invloedrijke factoren op een ontwikkeltraject een voorwaarde voor elke productiviteitsverbetering. ImprovemenT hanteert een concept dat een pragmatisch kader verschaft voor verbeteractiviteiten, door doelgericht te sturen op de optimale balans tussen technologische aspecten, de toegepaste ontwikkelprocessen en methoden, en de (mensen in de) organisatie. Door de mens prominent in beeld te brengen als bepalend onderdeel van het software ontwikkeltraject, geeft dit concept een handvat voor het omgaan met de inherente complexiteit van hedendaagse, omvangrijke softwareprojecten.

Het gaat niet altijd van een leien dakje bij het maken van software systemen in complexe multidisciplinaire omgevingen. Een softwareproject dat binnen de gestelde tijd en budget wordt gerealiseerd is nog steeds eerder uitzondering dan regel. Het 'TOP Concept' verschaft een handvat voor het inzichtelijk en tastbaar maken van de factoren die van significante invloed zijn op de succesvolle uitvoering van software ontwikkeltrajecten. De kern van dit concept is dat optimaal gebruik wordt gemaakt van de (vaak reeds aanwezige) technische know-how, ervaring en vaardigheden van software engineers in het ontwikkelteam.

Productiviteit
De meeste industriële software ontwikkeltrajecten laten zich het beste omschrijven als een lappendeken. Bij het zoeken naar de optimale integratie van gereedschappen en processen wordt vaak over het hoofd gezien dat persoonlijke eigenschappen en vaardigheden van de individuele software ontwikkelaars altijd een doorslaggevende rol zullen blijven spelen.

Dit is geen nieuw gezichtspunt. In feite zat Barry Boehm al in de 80-er jaren op hetzelfde spoor toen hij de invloed van diverse factoren op de doorlooptijd van software ontwikkeltrajecten in kaart bracht. Productiviteit bleek samen te hangen met de complexiteit van producten, de volwassenheid van de ontwikkelprocessen, maar op de eerste plaats met relevante (professionele) competenties van de betrokken software ontwikkelaars:

De menselijke factor blijkt meer invloed te hebben op productiviteit en software kwaliteit dan enige andere factor. In de IT wereld neemt zeker de laatste tijd het bewustzijn toe dat mensen niet-lineaire, eerste-orde elementen zijn in software ontwikkeling. Steeds vaker klinkt de roep dat ontwikkelgereedschap en processen zich dienen aan te passen aan de software ontwikkelaar, in plaats van andersom.

Balans
We voelen ons als techneuten niet gemakkelijk op het gladde ijs van menselijk gedrag. Toch getuigt het van volwassenheid om – zonder het belang van technologie of processen uit het oog te verliezen – de technische bril eens af te zetten.  Cruciaal daarbij is om vast te stellen om welke zaken het dan gaat, hoe maak je deze zichtbaar en concreet, en wat de tastbare invloed is op het traject en/of het eindproduct. Als kapstok voor deze discussie dient het TOP concept.


De ruggengraat van dit concept is de software architectuur, die de brug slaat tussen de opdrachtgever en de ontwikkelaar. De architectuur en de daarop gebaseerde softwareproducten worden gedragen door drie gelijkwaardige peilers, te weten Techniek, Organisatie en Proces. Uitgangspunt is dat deze factoren tezamen de doelmatigheid van een ontwikkeltraject bepalen. Belangrijke beslissingen in software ontwikkel projecten - met inachtneming van de business doelstellingen - dienen genomen te worden met inachtneming van de juiste balans tussen deze drie dimensies.

Het bereiken van een zo hoog mogelijk resultaat op één dimensie is ineffectief, en geeft hoogstens een locale optimalisatie. Er ontstaat pas een evenwichtig bouwwerk als de drie peilers even hoog zijn. Zo heeft het nauwelijks zin om geavanceerd ontwikkelgereedschap naar binnen te kruien als het team de afgesproken werkwijze niet volgt. Het is water naar de zee dragen om een zwaar ontwikkelproces op te dringen aan een team dat de vereiste technische know-how mist. En iedereen die te maken heeft met problematiek rond platformontwikkeling of legacy systemen, weet wat er kan gebeuren als er een blinde vlek is voor de invloed van sociale factoren.



Knoppen
Als het gaat om productiviteitsverbetering, zijn er dus verschillende knoppen die de manager kan bedienen. Het generieke TOP concept verschaft een raamwerk voor de discussie welke ‘knop’ het meeste (blijvend) effect op het ontwikkeltraject zal sorteren.

Knop: 'Techniek'
Het inhoudelijk vakmanschap is de traditionele invalshoek in de software branche. Dit aspect is gerelateerd aan het vermogen van het team om het vereiste product te realiseren in technische zin. Van belang is hierbij het (cumulatieve) niveau van ervaring en kennis met betrekking tot de toegepaste ontwikkelomgeving. De kwaliteit van deze omgeving zelf is tevens een belangrijke voorwaardenscheppende factor. Naast opleiding en ervaring, laat het technisch vakmanschap zich tot op zekere hoogte aflezen aan de kwaliteit van bestaande code, designs en documentatie.

Knop: 'Organisatie/Mensen'
Hierbij gaat het om niet-technische (sociologische) factoren die mede bepalend zijn voor de doelmatigheid van de ingezette methoden, technieken en tools. Hier komt dus de menselijke factor in beeld. Naast de ‘soft skills' van software ontwikkelaars, wordt hierbij ook gedoeld op zaken zoals bedrijfscultuur, (informeel) organigram, wijze van aansturing en evaluatie, bevoegdheden, etc. Hierbij kan het gaan om bekrachtigende, positieve invloeden, maar ook om belemmerende, negatieve gedrags-patronen. Om deze zaken zichtbaar en meetbaar te kunnen maken, wordt o.a. gebruik gemaakt van een set van ‘organizational patterns en anti-patterns’, gegroepeerd in het z.g. VRAPS-model (Vision, Rhythm, Anticipation, Partnering en Simplification).

Knop: 'Proces'
Dit onderdeel heeft betrekking op de effectiviteit van de toegepaste (ontwikkel-)processen. Uitgangspunt hierbij is dat zonder een procesmatige aanpak elke software ontwikkelactiviteit van enige omvang geringe kans van slagen heeft. Dit aspect geeft dus aan in hoeverre de afgesproken ontwikkelprocessen wordt gevolgd. Daarnaast is de kwaliteit en meerwaarde van de toegepaste processen zelf ook een graadmeter. Bieden de gekozen processen de ontwikkelaars optimale ondersteuning bij hun primaire taken, of is het ‘procesdenken’ doorgeslagen?

Onzekerheid
Door het prominent in beeld brengen van de mens als bepalend onderdeel van het software ontwikkeltraject, wordt een link gelegd met de inherente complexiteit van hedendaagse, omvangrijke softwareprojecten. Deze, in snel tempo toenemende complexiteit noopt tot een nieuwe benadering van het maken van software. In het heersende paradigma overheerst de gedachte dat het ontwikkeltraject maakbaar is, indien we maar de juiste techniek, 'bewezen' methodiek en/of processen ontwikkelen en toepassen. Dit deterministische denkbeeld is hard aan vernieuwing toe: softwareprojecten zijn nooit volledig maakbaar en voorspelbaar. Elke poging om het traject 'volledig dicht te timmeren', is tot mislukken gedoemd - de hype van software fabrieken ten spijt. Het TOP concept vertelt ons niet alleen dat er een juiste balans moet zijn tussen Techniek, Organisatie en Proces, maar dat er ook rekening gehouden dient te worden met onzekerheid. In elk ontwikkeltraject zijn er onderdelen die zeker onder controle kunt (en moet!) brengen en houden - maar tegelijkertijd is er de (onvermijdelijke) onvoorspelbaarheid en blijkt de noodzaak om effectief met onverwachte zaken om te gaan. De inherente complexiteit van softwareprojecten trachten te bestrijden met het invoeren van alweer een nieuwe methodiek of een nog geavanceerder ontwikkelproces werkt dan vaak averechts. En juist het maken van dit onderscheid is voor projectleiders, maar ook voor architecten van groot belang. Anders kan het zaaien van orde resulteren in het oogsten van chaos. Het TOP concept ligt wat dit betreft ook in lijn met de Agile aanpak van software ontwikkeling.

Meerwaarde
Het TOP concept is gebaseerd op een mensgerichte benadering van software ontwikkeling, waarbij een plaats is ingeruimd voor de noden van zowel gebruikers als ontwikkelaars. Uitgangspunt is dat software systemen afgestemd dienen te zijn op eindgebruikers in plaats van andersom. Het concept omvat weliswaar geen ontwerprichtlijnen om dat tot stand te brengen, maar geeft wel een handvat voor het creëren van de juiste omstandigheden.
Hiermee wordt tevens voorkomen dat de ontwikkelomgeving een contraproductief keurslijf wordt voor het ontwikkelteam. Deze benadering schept de basis voor een significante verhoging van de (kwantitatieve en kwalitatieve) output van ontwikkelaars. Doordat de gemaakte systemen beter aansluiten bij de verwachtingen van alle belanghebbenden neemt het projectrendement en de productkwaliteit toe, en kan er aanzienlijk worden bespaard op rework en onderhoud.

 

Agile Architecting