Offshore ontwikkelen
Elk bedrijf kan offshore software uitbesteden, maar alleen een goed geleid bedrijf kan ICT uitbesteden snel en doelgericht doen. Bij slecht georganiseerde bedrijven kan offshore ICT uitbesteden de problemen bij conversie software alleen maar uitvergroten. Tegelijk bewijst de praktijk dat men niet mag verwachten dat interne managers van meet af aan beschikken over specifieke deskundigheid over bijvoorbeeld conversie software die past bij een complex traject als offshore software ontwikkeling. De juiste inzet van ervaren externe specialisten kan echter zorgen voor organisatorische balans en verankering van expertise binnen de eigen onderneming.
Offshore is meer dan een eenmalige klant-leverancier relatie, het is een relatie die zijn grootste voordelen oplevert op de lange termijn. De gouden regel is zoveel mogelijk offshore te doen, laat ze niet alleen programmeren, maar laat ze ook specificaties uitwerken, ontwerpen, tests uitvoeren en test data maken. Hierdoor groeit namelijk de kennis offshore, en hoe groter de kennis daar is, des te eenvoudiger zijn ze aan te sturen vanuit de eigen organisatie.
Houd er ook rekening mee dat een offshore bedrijf zich in zekere zin spiegelt aan onze organisatie. Wanneer onze organisatie onvoorspelbaar gedrag vertoont, zal ook ons offshore bedrijf onvoorspelbaar worden. Anders gezegd; als we de offshore mensen niet respecteren, zal men ook ons niet respecteren.
Het is de primaire taak van het management inshore en offshore om gezamenlijk een vertrouwensrelatie met duidelijke doelstellingen op te bouwen. Alle inspanningen moeten we derhalve richten op het vergroten van wederzijds vertrouwen:
Offshore is een leerproces, we moeten leren hoe we deze projecten en ICT kosten moeten beheersen. Offshore projecten moeten slagen.
Er wordt veel geschreven over de selectie van offshore projecten, maar in de praktijk kost het weinig moeite één of meerdere projecten te selecteren die we extern kunnen uitvoeren. Het eerste project is dan ook meestal een uitbreiding of vervanging van een bestaand systeem.
Als groot bedrijf is het zinvol met meerdere offshore bedrijven in zee te gaan. Hierdoor versnelt namelijk het leerproces. Best Practice, het houdt de offshore systeemontwikkeling bedrijven scherp en bovendien hun prijsstelling concurrerend.
Beginnende offshore bedrijven zijn charmant, maar het is beter dat ze hun ervaring bij een andere klant opdoen. Dus selecteer een systeemontwikkeling bedrijf met een track record. Ervaren offshore bedrijven hebben meestal een groter probleemoplossend vermogen dan beginnende bedrijven, men heeft ervaring met grote Westerse bedrijven. Bij deze selectie is het volgende van belang:
Veel offshore bedrijven hebben een onduidelijke structuur. Men heeft bijvoorbeeld in Europa een intermediair of verkoop organisatie met onduidelijke taken en bevoegdheden. Bij bedrijven met een offshore tak zijn we vaak een vragende partij. Men is tevens afhankelijk van de medewerking van zusterbedrijven of het moederbedrijf. Hoe groter het software bedrijf, over hoe meer schakels dit kan lopen.
Een heel belangrijk punt is hoe eenvoudig de communicatie bij software ontwikkeling verloopt met de mensen die het werk moeten uitvoeren. Gaat dit eenvoudig, snapt men meteen wat er moet gebeuren, stelt men relevante vragen?
En weten we zeker dat dit één van de mensen is die het werk gaan uitvoeren of leiden, of is het slechts een intermediair?
Een offshore bedrijf moet beschikken over systemen? voor:
Tijdverschillen en bereikbaarheid zijn in het begin niet zo belangrijk. Maar op een gegeven moment kan dit een onoverkomelijke barrière worden met aanverwante problemen.
In Rusland is er twee uur tijdverschil, maar alle kantoren beginnen twee uur later dan normaal. Dus met het westelijk gedeelte van Rusland is er in de praktijk geen tijdverschil.
Er is met India en China vooral aan het begin van de dag directe communicatie mogelijk. Gezien vanuit het offshore land betekent dit echter dat alle vragen moeten wachten tot het eind van de dag.
Gezien vanuit Europa betekent dit eveneens dat alle problemen die na 9 respectievelijk 11 uur gebeuren, pas de volgende dag in behandeling kunnen worden genomen.
Een offshore contract afsluiten met een offshore bedrijf over offshoring software systeemontwikkeling in een niet westers land is tijdverspilling. Alleen met westerse bedrijven is het zinvol een juridisch sluitend contract af te sluiten, deze contracten kunnen we wel afdwingen. Maar dan in de praktijk ook alleen maar als het Westerse bedrijf het offshore bedrijf controleert.
Als we niet in de luxe verkeren met een controlerend westers bedrijf een contract af te sluiten is de enige mogelijkheid om in begrijpelijke taal te communiceren wat we precies verlangen.
Maak makkelijk leesbare afspraken en spreek die rechtstreeks (!), punt voor punt door met de manager offshore. Deze krijgt dan tegelijk een goed idee over de cultuur van de klant, waar we de nadruk op leggen, en wat we minder belangrijk vinden.
Offshore leent zich uitstekend voor fixed price ontwikkeling. Dit heeft bijkomende voordelen van hogere kwaliteit, lagere prijs en minder meerwerk achteraf. Zowel opdrachtgever als offshore bedrijf worden gedwongen, voordat iets wordt ontwikkeld, eerst specificaties te maken.
Ga nooit akkoord met een offshore bedrijf dat capaciteit beschikbaar wil stellen voor een aantrekkelijk uurtarief, en projecten primair op nacalculatie wil uitvoeren. Door de ruime vraag en geringe aanbod proberen de laatste tijd sommige offshore bedrijven de klant hiertoe te verleiden. Met behulp van prachtige termen als ‘dedicated offshore centre’. ‘manage their work as if it are your own employees’ verkoopt men dit op een commerciële manier. Houd er rekening mee dat men soms veel meer uren op kantoor aanwezig is dan in Europa, maar dat dit niet altijd productief is. Programmeurs kunnen nu eenmaal gedurende langere tijd niet meer dan 40 uur per week effectief werken.
Maar er is ook een harde financiële reden dat we nooit akkoord moeten gaan. Nee, het grote lek zit er niet in dat er met een vork wordt geschreven. Dat is iets dat men offshore niet snel zal doen, en dat hoeven ze ook helemaal niet te doen.
Het grote lek is dat men bij nacalculatie de langzaamste programmeurs op onze projecten inzetten. En de betere programmeurs zetten ze in voor andere klanten, die wel zo slim waren om alleen fixed price te willen werken.
Voor ondersteuning na oplevering kunnen we een Service Level Agreement (SLA) afsluiten. In een dergelijke Agreement regelen we wat de reactietijd op ondersteuning en gewenste wijzigingen is, en hoeveel mensen in principe beschikbaar moeten zijn om deze ondersteuning uit te voeren. Deze kunnen, als er geen werk is andere taken uitvoeren, dus we moeten nooit de volledige kosten vergoeden van de beschikbare capaciteit. Een kostenvergoeding is echter noodzakelijk, want als er een probleem is, of we willen een wijziging uitvoeren, dan moeten we wel prioriteit krijgen.
En ook hier geldt: nooit wijzigingen op nacalculatie laten uitvoeren, maar altijd op basis van vooraf opgegeven vaste prijs.
De loonkosten van offshore bedrijven stijgen jaarlijks met een behoorlijk percentage. Het offshore bedrijf zal dan ook geregeld zijn prijzen moeten verhogen. Neem in het contract op dat we dan het contract kunnen opzeggen.
Regel natuurlijk het intellectueel eigendom. Dat hoort bij de opdrachtgever, en moet geregeld worden overgedragen. Sluit om deze reden contracten af volgens het Nederlands Recht, dan weet we waar we aan toe zijn.
Als in een project componenten van derden worden ingezet, wat extra licentie kosten tot gevolg heeft, moet het offshore bedrijf vooraf toestemming vragen. Als het essentieel is, regel dan via een Escrow regeling de toegang tot de sources van de componenten. De kosten van Escrow worden dan altijd door de opdrachtgever gedragen.
De medewerkers offshore – en vaak ook het? eigen personeel – kunnen juridische documenten niet lezen, en gaan ervan uit dat het niet op hen slaat. Zorg daarom altijd voor leesbare werkafspraken voor offshore personeel en eigen personeel. Deze moeten niet te lang zijn, want niemand kan alle regels van een 50 pagina’s lang document operationeel in zijn hoofd houden. Wees duidelijke en beknopt, en beschrijf alleen de hoofdlijnen.
In de werkafspraken moeten we een evenwicht vinden tussen vertrouwen en controle.
Eerst is het nuttig twee misverstanden te noemen rondom functionele specificaties inshore en offshore:
Een gouden regel bij het maken van specificaties is dat we alle specificaties moeten vastleggen. Op dit punt heeft offshore zijn grootste voordeel: Van het ver weg zitten en van het nadeel van indirecte offshore communicatie wordt een voordeel gemaakt.
Van essentieel belang – dit kan niet genoeg benadrukt worden – is alle mondelinge en telefonische afspraken ook te bevestigen per e-mail. Breng hier vanaf het prilste begin de nodige discipline in.?
Het kan nodig zijn de medewerkers te trainen in het maken van specificaties. Het gaat hierbij niet om het aanleren van techniekjes (als UML) of een methode (als Prince2), maar om inhoudelijk te herkennen wat goede specificaties zijn, en hoe deze te beschrijven.
Offshore specificaties moeten minimaal bevatten:
Complete specificaties komen tot stand bij een interactief samenspel tussen inshore en offshore.
Inshore specificaties moeten net voldoende zijn om offshore verder te werken. Te veel specificaties kosten uren van inshore medewerkers, te weinig specificaties leiden tot teveel communicatie over en weer.
Natuurlijk kunnen we in theorie alle specificaties inshore maken, het hele systeem kunnen we inshore maken. Maar dit heeft een aantal voor- en nadelen:
Als onderdeel van het toekomstige systeem is een functie gemaakt voor het beheer van de gegevens van tabel A.
Elders in de specificaties is al beschreven hoe de database in elkaar zit, en hoe ongeveer een standaard invoer scherm eruit ziet.
Inshore is nu één regel genoeg: “Functie beheer gegevens tabel A”.
Voor het doen van een prijsopgave weet nu het offshore bedrijf voldoende.
Na opdracht kan men offshore een nadere beschrijving maken: een lijst met alle velden die moeten worden getoond, compleet met validatie en aanwijzingen voor zoeken. Een tekstuele beschrijving is echter voldoende, we hoeven geen plaatjes te maken.
In dit voorbeeld hoeven niet ook nog een technisch ontwerp te maken, de functionele beschrijving is voldoende om met de juiste tools aan het werk te gaan.
Na goedkeuring van de opdrachtgever kan de functionele beschrijving dan ook direct worden omgezet in een programma. Men maakt een user interface, en deze test het Offshore bedrijf intern.
Na eerste aflevering checkt men inshore of alles werkt zoals de bedoeling was, en zo niet kan men het nog aanpassen.
Waarom mag men offshore nu niet meteen beginnen met programmeren? De reden is voortschrijdend inzicht. Tijdens het detailleren van het Functioneel ontwerp kunnen zowel inshore als offshore medewerkers erachter komen dat een veld is vergeten. Dit wordt dan alsnog toegevoegd aan de database en user interface. Het is natuurlijk nauwelijks extra werk als dit extra veld wordt toegevoegd tijdens de Functionele Fase. Als het echter pas ontdekt wordt na aflevering is het veel meer werk in de user interface, op zijn minst moeten velden worden herschikt, en soms moeten hele user interfaces gesplitst worden naar meerdere schermen.
Wees er zeker van dat specificaties de juiste specificaties zijn:
Ontwerptechnieken als rapid prototyping, extreme programming en agile development kunnen worden gebruikt. Maar door de hoge interactie die hierbij nodig is, ligt het niet erg voor de hand.
Wel kunnen ideeën uit deze methoden met succes offshore worden ingezet:
Het is op het eerste gezicht verleidelijk om offshore medewerkers inshore te detacheren, en hun te laten zorgen voor de communicatie. Natuurlijk kan dit in het begin voor een paar weken nuttig zijn. Op permanente basis heeft inshore detachering echter een aantal nadelen:
Natuurlijk willen de meeste offshore bedrijven dit graag, Het traint hun medewerkers, waar nog voor betaald wordt ook. Het geeft de mogelijkheid zich dieper te nestelen in de organisatie van de opdrachtgever, het geeft de mogelijkheid om onmisbaar te worden. En op een gegeven moment is het offshore bedrijf echter nog de enige organisatie die begrijpt hoe de systemen werken.
Het is belangrijk de ervaringen in één project te verspreiden in de organisatie. Anders gaat men overal het wiel opnieuw uitvinden.
Ook van belang is, dat de inshore en offshore medewerkers elkaar persoonlijk kennen, en leren elkaar te respecteren. Zorg ervoor dat beide partijen elkaar regelmatig bezoeken. Bij dit proces is een deskundige begeleiding noodzaak.
Resumerend zijn hier de belangrijkste zaken:
Klik hier voor het oorspronkelijke artikel op managementkennisbank.nl.
Discussieer mee op LinkedIn.
Mogelijk is dit een vertaling van Google Translate en kan fouten bevatten. Klik hier om mee te helpen met het verbeteren van vertalingen.