Er was ooit een bedrijf dat zo marktleider was in zijn business dat de bedrijfsnaam de soortnaam werd. Dit bedrijf verkocht heel nuttige apparaten en het geld klotste tegen de plinten. Echter, de software van die apparaten was steeds doorontwikkeld en intussen onbeheersbaar. Voor de buitenwereld stond het bedrijf jarenlang praktisch stil, en intussen werd de markt goeddeels ingepikt door appbouwers, die apps waren niet zo goed en handig maar daar werd tenminste wel aan door ontwikkeld. Het bedrijf werd niet meer geroemd als powerhouse van techniek. Waar was dit mis gegaan?
Later sprak ik iemand die vertelde dat hij in die tijd hoofd was van het testteam bij dat bedrijf en trots was zijn poot stijf gehouden had, dat de nieuwe software aan de buitenkant eerst moest doen wat de oude deed en dan mochten er nieuwe features komen, anders kon hij het niet testen. En daar was de oorzaak van die vertraging!
Het bedrijf heeft intussen wel kastjes met zijn nieuwe software op de markt en die oogt niet zoals de oude, sommige features zijn nog steeds niet terug, maar mij als klant maakt het niet uit. Beter ter halve gekeerd dan ten hele gedwaald, laten we maar zeggen.
De les van de dag: Als je opnieuw begint met de software voor je product moet je niet krampachtig vasthouden aan je oude feature pakket. Dat is de manier om veel vertraging op te lopen.
Oplossing: Je kan opnieuw bouwen van je software niet zien als een puur technische activiteit, het is ook een businessvraagstuk!
Management weet gewoonlijk niet wat het betekent als de engineers klagen dat de software unmaintainable is. Wat ze wel kunnen begrijpen is dat de oorzaak dat elke ontwikkeling zo lang duurt, niet ligt aan je ontwikkelaars. (als je inderdaad goede hebt) maar dat elke kort genomen bocht sinds dag 1 van de ontwikkeling nu als een loden gewicht achter ze sleept.
Het is altijd een hels karwei om puur voor refactoring budget te krijgen. Echter je hebt een veel beter verhaal als je met de business kant van je bedrijf kan gaan zitten en een nieuwe productlijn kan maken met een aantal features die ze graag willen zien en verbeteringen die nooit in de oude software hadden gekund, en dan ruil je dat in voor de features die je dan (tijdelijk) laat vallen.
Zeker als je een software product hebt, is het niet onoverkomelijk om twee productlijnen te verkopen, de oude waar bijna niks meer aan gebeurt en de nieuwe waar alle spannende nieuwe dingen wel in kunnen. De vaste klanten die verknocht zijn aan de oude features blijf je lekker versie 1 verkopen…
Het is niet moeilijk maar je moet er wel aan denken. Daarom moet je mensen hebben die mee kunnen praten op het snijvlak van business development, architectuur en marketing.