door: Maarten Sikkema - gepubliceerd op 17-3-2010
Innoveren, standaardiseren en automatiseren
Macaw ontwikkelt IT-oplossingen op basis van de nieuwste Microsoft Server technologieën. De meeste van onze klanten laat het koud hoe wij dat doen: wat telt is het resultaat. Toch horen wij ook wel eens van klanten dat een aantal technische zaken beter gaan dan eerdere ervaringen. Waarom, dat blijft meestal in het midden. Wat is nu ‘het geheim’ van de smid?
Vijf jaar geleden zijn we begonnen met de ontwikkeling van een eigen ’ontwikkelstraat‘. Aanleiding was een groot intranet project voor een internationale producent van consumentengoederen en voedingsmiddelen, op basis van SharePoint 2003. Het team van dat project was gegroeid naar tien ontwikkelaars en er ontstonden grote problemen met de ontwikkelomgeving. Het kwam regelmatig voor dat ontwikkelmachines, waarop een scala aan software geïnstalleerd was (onder andere Visual Studio en SharePoint), plotseling niet goed meer wilden werken. De configuratie van alle software op die systemen was met de hand gedaan en de beste manier om problemen te verhelpen was om alle software opnieuw te installeren, dit zou ongeveer een halve dag extra werk in beslag nemen. Dat hielp de productiviteit en voorspelbaarheid in het project natuurlijk niet, dit moest anders worden aangepakt.
De oplossing werd gevonden in een nieuwe inrichting van de ontwikkelomgeving, in combinatie met een andere werkwijze. In plaats van centrale componenten (zoals databases) te delen over het hele team werd ieder werkstation volledig zelfstandig ingericht. Het automatisch installeren van de oplossing werd centraal gesteld: zowel op de werkstations als op de testen productieomgeving moest het mogelijk zijn om met enkele commando’s een schone, actuele en werkende omgeving te creëren, waarbij alle instellingen automatisch goed werden gezet. Een ’continuous build‘ cyclus leverde na iedere opgeleverde wijziging in de code een nieuwe versie op van alle software die na test en acceptatie met één commando in productie kon worden genomen. Het intranet project kwam hiermee weer op snelheid en groeide uit tot een intern succes. Met ongeveer 45.000 gebruikers was het één van de grootste SharePoint implementaties van die tijd. De ervaringen uit dit project gaf ons een aantal basisideeën die we in een Solutions Factory wilden onderbrengen, zoals:
Een ander project dat rond die tijd speelde was een project voor een adviesbureau, waarin database technologie een grote rol speelde. In dit project moesten 150 verschillende Microsoft Access databases uit verschillende landen worden samengevoegd tot één centrale, op SQL Server gebaseerde, oplossing. Toen de omvang en complexiteit van dit probleem echt duidelijk werd, leek het project onhaalbaar. Er moest gezocht worden naar een veel productievere manier van database en .NET ontwikkeling. Deze werd gevonden door de database met hetzelfde proces te ontwikkelen als de software: Continuous Database Integration. In dit proces wordt de database geheel opgebouwd vanuit scripts en iedere ontwikkelaar werkt met een eigen kopie; wijzigingen worden via een continu build-en-test proces gedeeld binnen het team en geïnstalleerd op de test en productieomgevingen. Ook hier was het automatiseren van het ontwikkel- en installatieproces de sleutel tot succes.
In 2007 werd duidelijk dat de inzichten en werkwijzen uit de eerder genoemde projecten eigenlijk binnen ieder project toegepast zouden moeten worden. Het inrichten van de benodigde ontwikkelstraat vroeg echter veel tijd en specialistische kennis, wat in kleinere projecten vaak niet beschikbaar was. Ook zagen wij de oplossingen veranderen. Microsoft Server technologieën zoals SharePoint, SQL Server en BizTalk boden bij elke volgende versie meer functionaliteit en aanpasbaarheid. Klanten vroegen oplossingen die steeds meer gebruik maakten van de kracht van deze producten. Dergelijke oplossingen bevatten minder maatwerksoftware en kunnen dus gemaakt worden in minder tijd en met minder kans op fouten.
Maar ondanks de voordelen bleef het ontwikkelen van IT-oplossingen vrij duur en moeizaam. We beschikten over de nieuwste technologie en over kundige, gedreven specialisten. Wat weerhield ons er nog van om dat potentieel snel en optimaal te benutten - in elk project? Wij zagen drie hoofd-‘symptomen’:
Onze werkwijze was dus te kenmerken als individueel handwerk. Dit gold overigens niet alleen voor Macaw; het is nog steeds ‘the state of the industry’. Dóórbreken Om door dit prestatieplafond heen te breken begonnen we met de ontwikkeling van de Macaw Solutions Factory. De insteek richt zich op een continu proces:
De Solutions Factory bestaat uit templates, tools, infrastructuur en documentatie, voor het bouwen en onderhouden van oplossingen op basis van Microsoft Server technologieën zoals .NET, SQL Server, SharePoint en BizTalk. De Solutions Factory wordt bij aanvang van een nieuw project als softwarepakket geïnstalleerd op de eerste ontwikkelmachine, waarna met hulp van wizards de initiële code structuur kan worden opgezet en het continue build- en deploymentproces kan worden ingericht. Elk team krijgt zo het laatste en beste van Macaw ‘in a box’ mee. Geïntegreerde, gecondenseerde ervaring, klaar voor gebruik. Innovaties die voorheen alleen haalbaar waren voor de grootste projecten met de beste mensen, zijn hiermee zelfs bereikbaar geworden voor eenmansprojecten. Features als automatisch virtuele ontwikkelomgevingen installeren, broncode baselines genereren, Continuous Database Integration, automatische packaging, automatische deployment, automatische validatie tegen code en architectuur standaarden, een consistente en heldere implementatiestructuur en templates gebaseerd op up-to-date best practices, zijn beschikbaar voor elk team.
De grootste waarde van een standaard is niet hoe die er precies uit ziet, maar dat je er één hebt die passend, eenvoudig en herkenbaar is, en die je consistent toepast. In de Solutions Factory zijn vanuit die gedachte innovaties en best practices geïntegreerd tot standaarden. Deze standaarden zijn gebaseerd op algemeen bekende Microsoft guidance. De standaarden in de Solutions Factory concentreren zich op de oplossingsarchitectuur en op de implementatie- en deploymentstructuur. Standaardisatie op deze gebieden levert veel waarde op omdat juist daar voor een gegeven vraagstuk vaak veel gelijkwaardige maar verschillende oplossingen mogelijk zijn. Zo wordt willekeurige en kostbare variatie voorkomen. Hierdoor wordt de overdracht van kennis - van oplossingen èn van technologieën – sneller en minder afhankelijk van personen die die kennis ‘in hun hoofd’ hebben.
Twee jaar terug moest een team van ons een SharePoint oplossing bouwen. De teamleden waren goede .NET developers, maar geen van hen had ervaring met SharePoint development. Normaal gesproken is dit een ‘recipe for disaster’, maar door gebruik van de Solutions Factory kon het team toch op tijd, binnen budget en zonder beginnersfouten de gewenste oplossing leveren. Hoewel de Solutions Factory zeker geen vervanging is voor kennis van de Microsoft technologie waarmee gebouwd wordt, is gebleken dat de leercurve aanzienlijk verkort wordt. Nog een voorbeeld: bij een klant in de financiële sector worden momenteel interne developers met een niet-Microsoft technologie achtergrond geholpen om een vlotte en goede overstap te maken naar development op Microsoft SQL Server BI en Microsoft BizTalk Server. Zij worden snel ‘op het goede been gezet’ zodat er kostbare lessen vermeden worden die vaak pas geleerd worden, nadat een oplossing opgeleverd is.
IT-dienstverleners leven van de verkoop van diensten en die diensten bestaan over het algemeen uit ’uren‘ die worden geleverd door ’consultants‘. De waarde van deze dienstverlening berust helemaal op de kwaliteiten van de medewerker die, als het goed is, door training en ervaring ’on the job” met de tijd groeit. Maar de waarde blijft beperkt tot de individuele kwaliteit en het is aan onze opdrachtgever of project manager om deze om te zetten in een oplossing voor de organisatie. Als specialistische kennis op een deelgebied ontbreekt, moet worden teruggegrepen op minder goede oplossingen, of dreigt het risico op vertraging door een kostbaar ’on the job‘ leerproces. Dankzij de Solutions Factory kunnen we meer leveren dan de som van individuen: een visie op moderne software ontwikkeling en dienstverlening met de kracht van onze hele organisatie.