Dagelijks geven we veel uit aan het realiseren van softwareoplossingen. Organisaties zien kansen om zich te onderscheiden en digitaal te innoveren met maatwerk. Deze software wordt tegenwoordig ontwikkeld met low-code-app-, -data- en -integratieplatforms en aangeboden door cloudleveranciers. De praktijk leert dat we zo op nog grotere schaal onbruikbare oplossingen produceren. Waar gaat het mis?
Een berucht artikel, ‘Why software fails‘ uit 2005 beschrijft dit in detail. Het is treurig te zien dat er nog niet veel veranderd is in de afgelopen vijftien jaar. In deze opinie belicht ik twee van de belangrijkste redenen voor het falen van softwareoplossingen:
- Unrealistic or unarticulated project goals: de strategie, aanpak en doelstellingen zijn niet duidelijk geformuleerd
- Badly defined system requirements : de wensen en eisen voor de oplossing zijn niet goed in kaart gebracht
Beide redenen zorgen ervoor dat je er op een laat moment in het traject achter komt dat de software niet brengt waarvoor het eigenlijk bedoeld was – en kun je waarschijnlijk grotendeels opnieuw beginnen. Een dure grap dus.
Platformstrategie en aanpak
Het inzetten van een low-code-platform om daarop maatwerk te realiseren is een strategische keuze voor elke organisatie. Maar met het aanschaffen van het platform is maar een klein hobbeltje genomen. Met welk doel gaan we dit platform inzetten? Welke leidende principes hanteren we? Welke bedrijfsdoelen gaan we helpen behalen? Hoe past het in het applicatielandschap en hoe gaan we om met informatiearchitectuur? Hoe gaan we deze verandering binnen de organisatie managen? Hoe meten we het succes?
Bij veel organisaties zien we nog steeds dat de it-afdeling hier een leidende rol speelt, terwijl het allemaal om business-oplossingen gaat. De business wenst zich te onderscheiden van de concurrenten en wil digitaal innoveren. Om zo een groter marktaandeel te behalen of de marges te verbeteren. Het innoveren van business-processen en daarmee verregaande optimalisatie door te voeren is iets wat niet thuis hoort in de ‘systems of record’. Dat zijn vaak robuuste, administratieve applicaties die ook eigenlijk commodity zijn. Steeds vaker zijn dit saas-applicaties. Iedereen gebruikt dezelfde.
Waar je het onderscheid kunt maken is in het slim aan elkaar koppelen van deze applicaties en cloudservices. Door data te verzamelen en verrijken en nieuwe inzichten te vergaren. Door het inzetten van kunstmatige intelligentie. En op de persona’s gerichte maatwerk-apps, die precies doen waar de betreffende persoon in het deel van het bedrijfsproces behoefte aan heeft. En liefst zonder al te veel in- of over te typen. Laat de gecombineerde data het meeste werk voor je doen.
Fouten gemaakt in strategie en architectuur (business-, applicatie- en informatiearchitectuur) kunnen dure gevolgen hebben. Hoe eerder je in het software voortbrengingsproces fouten weet te vermijden, hoe goedkoper het is. Zoals in het bovengenoemde artikel zo mooi is verwoord: als je een breifout hebt gemaakt en daar pas veel te laat achter komt, kun je bijna helemaal opnieuw aan de trui beginnen. Daarmee gaat veel tijd en geld verloren.
Het belangrijkste onderwerp om tot een goede strategie, aanpak en doelstellingen te komen is om workshops met de juiste stakeholders te organiseren. Begin hierbij altijd met een workshop die bepaalt welke stakeholders er precies nodig zijn en zorg ervoor dat ze genoeg tijd beschikbaar hebben. Als dit niet zorgvuldig gebeurd, is de kans op falen verderop in het proces veel groter.
User centered design
Als je het aan de eindgebruikers van softwareoplossingen vraagt hoe dingen beter kunnen, weten ze het meestal wel. Of, denken ze het te weten. De kunst is om de juiste gebruikers bij elkaar te krijgen en er naast te gaan zitten tijdens het uitvoeren van hun werkzaamheden.
Maar daarnaast is het belangrijk om van proceseigenaren te weten te komen hoe processen nu het best gedigitaliseerd en geoptimaliseerd kunnen worden. Vaak wordt nog gedacht in oude oplossingen; ‘in het huidige systeem gebeurt het zo’. Een gebruiker is in principe maar een klein radertje in het geheel, en heeft vaak geen zicht op het grotere doel van zo’n proces en hoe dingen echt verbeterd kunnen worden. Om echt innovatieve functionaliteit toe te voegen. Om die klant echt beter te kunnen gaan bedienen.
Er wordt nog veel te vaak inside out gedacht. De echte why (de vraag achter de vraag) is moeilijk te achterhalen. Dat vergt creativiteit van de ‘user experience’ (ux) designer. Het draait tegenwoordig om customer-centric ux en niet meer om organization-centric ux (zie ook ‘How ux is transforming business’ in Forbes). En het vertalen naar goede requirements is echt wel een vak, waar dit soort mensen goed in getraind is en veel ervaring mee heeft. Het zijn vaak niet eens ’techneuten’. Door eerst de gebruikersinteractie en procesflows uit te tekenen en eventueel in een prototype te gieten, kan er al heel snel met eindgebruikers en proceseigenaren afgestemd worden of het aan de eisen en wensen voldoet. En of het inderdaad een verbeterd proces oplevert.
Eigenlijk begint daar het change proces al; iedereen moet worden meegenomen in dit optimalisatieproces. Met de ontwikkelaars in het devops-team wordt vervolgens besproken of het technisch haalbaar is. Voordat er ook nog maar een regel code geschreven is. Dit kan allemaal prima gecombineerd worden met een agile aanpak, waarbij er met elke sprint weer waarde wordt toegevoegd. Op deze manier is fail fast mogelijk, en kan het in de volgende sprint bijgestuurd worden. Zo wordt het realiseren van innovatieve software oplossingen goedkoper en krijg je echt precies wat bijdraagt aan de in de strategiefase bepaalde doelstellingen. Doelstellingen die uiteraard ook customer centric moeten zijn!
@jack, het kan jou niet vaag genoeg zijn, maar zoals Jan Schaefer al zei : “In gelul kun je niet wonen”.
In architectuur kun je geen data verwerken.
Jack,
In de filosofie is een systeem een geheel van denkbeelden die zijn gebaseerd op bepaalde grondbegrippen en grondgedachten. Voor de IT geldt min of meer hetzelfde voor het begrip systeem als het om een samenhangende set aan soft- en hardware componenten gaat. Betreffende de paden van systeemdenken, alleen het genie beheerst het pad van de chaos want ordening is de drugs voor de massa.
Samenhang alias een onderlinge relatie geldt ook voor de ‘betrokkenheidssystemen’ zoals ik uiteen zette in mijn reactie van 18 juni 2015 over de interpretatie van de wedstrijduitslag als een doelpunt afgekeurd wordt door een buitenspel situatie. We moeten nu onze bek houden als dit gebeurt maar over de kunst van communicatie heb ik al eens gezegd dat het meer is dan het gesproken of geschreven woord.
Eén plaatje zegt meer dan duizend woorden en ik denk dat betreffende het verwachtingsmanagement iedereen bekend is met het boomschommel-beeldverhaal. Minder bekend zijn de Wasgij-puzzels waar verbeeldingskracht de oplossing brengt en je iets anders krijgt dan verwacht. Falen is dan het nieuwe succes, welkom in 1984;-)
Oudlid, je eerste alinea is alvast scherp neergezet en correct. Eén van de bekendste systeemdenkers in het tijdperk van de Verlichting was Hegel, wiens dialectisch idealisme vervolgens door Marx werd omgebogen naar een dialectisch of historisch materialisme.
Nou raad jij niet welke filosoof met Zijn en Tijd in 1927 het architecturale denken in de filosofie heeft ingevoerd. En terecht is de existentiefilosofie (niet te verwarren met existentialisme!) daarna ook wel een verbeterd marxisme genoemd.
Overigens zijn er wel meer mensen te vinden met kritiek op het systeemdenken:
“Systeemdenken is wat mij betreft zo’n oude manier van denken die, wanneer de schaal zich vergroot, zal falen in de omgang met complexiteit. De digitale wereld is nogal conservatief in haar eigen grondgedachten, ook als er buiten haar eigen kringen al genoeg ander denken te halen valt. De digitale wereld denkt momenteel nogal van binnen naar buiten, om het maar even zo te zeggen. In alle bescheidenheid: we moeten die wereld een blikverruiming gunnen.”
Jack,
Over Sein und Zeit van situationeel bewustzijn hadden we in 2015 een discussie omdat we in een ander tijdperk leven dan Heidegger en Hegel. Van de verlichting naar een (digitale) verheffing zullen we maar zeggen hoewel we inderdaad kunnen spreken van neo-Marxisme. Want kennis als toegepaste intelligentie heeft een gebruikswaarde in de vorm van arbeid maar ook een ruilwaarde in de vorm van algoritmen. En betreffende laatste is het bewezen dat een computer veel beter kan ‘denken’ in 2 kleuren op een schaakbord met 64 velden dan de meeste mensen. Maar de berekenbaarheid in de complexiteitstheorie gaat niet om filosofie maar wiskunde, een andere wetenschap.
Oudlid, dat jij hier van Neomarxisme spreekt past geheel binnen je wetenschappelijke (en materialistische) instelling. Zoals bekend presenteerde Marx zijn theorieën als wetenschap en niet als filosofie. Onder het motto: de filosofen hebben de wereld alleen maar geïnterpreteerd; nu komt het erop aan haar te veranderen. En de latere variant hierop: “in geouwehoer kun je niet wonen” (zoals Dino terecht opmerkt).
Nu maakte het marxisme wel onderscheid tussen een materiële onderbouw en een geestelijke bovenbouw (het maatschappelijk zijn dat het bewustzijn bepaalt), maar het heeft nooit kunnen verklaren hoe het bewustzijn (en daarmee ook de menselijke vrijheid) uit de materie is voortgekomen. Op dat punt kan existentiefilosofie dus een verbeterd marxisme worden genoemd.
De situatie waarin een mens verkeert is veel meer dan alleen maar een weerspiegeling of reflectie van de manier waarop mensen hun bestaansmiddelen voortbrengen (de economische en materiële verhoudingen van een maatschappij); pak de piramide van Maslow er maar weer bij.
Met je wetenschappelijke blik op de feiten ga je voorbij aan de waarheid die hieraan vooraf gaat. Voordat je van alles gaat beweren over een ding – “iets van iets” zeggen ofwel het constateren van feiten – is het ding al verschenen. Deze oorspronkelijke waarheid noemt Heidegger Aletheia (On-verborgenheid). Met dit begrip zijn verbonden: zijn, waarheid, ware kennis.
https://nl.wikipedia.org/wiki/Aletheia
Je idee dat kennis kan worden vormgegeven met algoritmen is een miskenning van de menselijke transcendentie.
Een discussie die mooi aansluit bij bovenstaande (vanaf 12:35):
http://www.vpro.nl/programmas/tegenlicht/kijk/afleveringen/2019-2020/herover-je-data.html
“De digitale wereld kan wel degelijk weer menselijk worden” (42:45).
Piramide van Maslow is me bekend en daarom wees ik op het idee van Marx als het om het kapitaliseren van kennis gaat, je kunt als kok gaan werken of als schrijver van recepten als we kijken naar cognitive piramide. Denk dat het bewustzijn over het materiële welzijn de essentie bepaalde van het communistisch manifest, het verenigen van de proleten ging om een sociale revolutie. De ’trancendentie’ van Heidegger en Marx ging om het mobiliseren van de arbeiders als soldaten en de historie leert dat Duitse filosofen telkens een dure grap zijn.
Neo-Marxistische leer dat iedereen moet gaan studeren om zich te verheffen is prachtig alleen hebben we volgens economische leer van vraag en aanbod in de ruilmaatschappij meer aan de timmerlui die hebben leren ‘hameren’ dan filosofen die de spijkers er in proberen te ouwehoeren;-)
Waar ligt het probleem met software? In de taal.
Heb meer dan 30 jaar vanaf S38 tot en met IBM eServer in RPG en RPG Ile geprogrammeerd.
Ook +/- 10 jaar in Oracle PLsql
Was alsof ik lichtjaren teug ging in de tijd. Bij het begin van de oerknal.
Welke machine kan ook server zijn?
De IBM eServer.
Welke taal kan ook als PHP gebruikt worden?
RPG Ile.
Een machine moet een programmeurs omgeving hebben.
Wie heeft dat?
Visual Basic
IBM iServer.
Uitgebreide debugging mogelijkheden?
IBM eServer.
Moet programma’s compileren en bij fouten een lijst met fouten produceren.
Wie heeft dat? De IBM eServer.
Syntax checking terwijl je code intoets ?
Wie heeft dat?
Visual Basic
RPG Ile.
Met welke taal kan men zijn eigen gereedschap maken?
Met RPG Ile
DSPJRN
De eServer legt de mutatie vast in een journal, Welk system doet dat?
Heb een programma gemaakt waarbij je de journal entry’s op rubrieksnivo kunt zien
Als er een verschil is tussen de inhoud for en after, wordt dat aangeven
Kan een roll lforwards of backwards maken voor testen
Programmagenerator
1 regel met een paar parameters maak een compleet mutatie programma.
Lijst met subroutinestructuur. En nog meer.
De eServer met RPG Ile is de meest geavanceerde programmeurs omgeving. Maar IBM kan niet goed reclame maken.
Java en etc, zijn brabbel talen
Verschil maken tussen A en a leidt alleen tot fouten.
Het is een schande dat die brabbeltalen op school geleerd worden.
Als iedereen over zou stappen op de IBM eServer met RPG Ile ging de software ontwikkeling +/- 90% sneller.
Mijn ervaring met PLsql Oracle. Daar was dat allemaal niet mogelijk.
Heb een brief aan premier Rutte geschreven over de problematiek in softwareland.
Staat op:
http://www.hhsee.nl
Nu met pensioen.
Met vriendelijke groet,
Cor Olthuis