Als ontwikkelaar werk ik bij een bedrijf* dat hoogwaardige transportproducten maakt voor diverse industrieën. Het betreft zowel maatwerk als standaard maten. Het bedrijf heeft twee vestigingen, enkele tientallen werknemers en een ontwikkelomgeving van 2 man, waar ik dus 1 van ben.
Het pakket is een 100% maatwerk client-server applicatie van eind 90-jaren. Sinds die tijd is het actief onderhouden en uitgebreid. Er is een diepe integratie met het productieproces. Klanten sturen hun orders via de mail. Deze mail wordt automatisch ingelezen, geparsed en daar worden opdrachten voor gemaakt die rechtstreeks vanuit het pakket naar de productiemachines wordt gestuurd. Die productiemachines sturen op basis daarvan weer de robots en plc's aan, maar dat ligt buiten ons werkgebied. Orders komen soms 's morgens binnen en moeten dan 's middags geleverd worden. Transporteurs kunnen inloggen in ons systeem en zo zelf zien wat ze moeten vervoeren.
Het pakket is gemaakt in een ontwikkeltaal die niet erg gangbaar is. De ontwikkelomgeving zelf werkt prima en is up-to-date, maar ontwikkelaars liggen niet voor het oprapen, vandaar dat met het idee gespeeld wordt het hele pakket op middellange termijn (5-10 jr) te vervangen door iets waar meer support voor is, zowel qua ontwikkelomgeving als ontwikkelaars. Het idee is wel om het maatwerk te laten blijven vanwege de integratie met het productieproces.
Het systeem werkt prima, maar onderhoud wordt wel 'een dingetje'. Wijzigingen die we door willen voeren duren steeds langer en zijn steeds moeilijker. We hebben het idee dat we een beetje vast beginnen te lopen in het pakket. Vandaar dat we op zoek zijn naar mogelijke oplossingen.
Een korte analyse levert het volgende op:
Wat zijn de opties? Ik heb een aantal opties op een rij gezet:
1. Shift-delete + restart
Sounds good, doesn't work. Probleem is dat we met zijn tweeën zijn en ook de dagelijkse ondersteuning moeten doen. Er is geen tijd om gezellig met zijn tweeën in een hok te gaan zitten en over een jaar met een goed pakket te komen.
2. Extra persoon erbij
Zou wellicht te regelen zijn. Probleem is dat die niet snel ingewerkt is en bovendien lastig te vinden. Daarnaast is dit op zich alleen symptoombestrijding omdat het probleem er niet wezenlijk door wordt veranderd. We hebben hooguit meer slagkracht om de problemen aan te pakken.
3. Opstellen documentatie
We zouden alle bedrijfsprocessen in kaart kunnen brengen middels een schema en dat aanvullen met welke programma's daarbij horen plus een uitleg van de achterliggende logica.
4. Code-isolatie
We zouden stap voor stap code uit het oude systeem kunnen halen en dat onderbrengen in aparte programma's waarbij de UI en de business logic gescheiden is, eventueel in micro-services. Tegelijk zouden we daar dan unit testen voor moeten maken.
5. Opschonen
Het pakket zou eens doorlopen moeten worden om ongebruikte zaken eruit te kunnen halen en te verwijderen. Dit zou een en ander wat behapbaarder maken. Programmatuur én database moeten we dan opschonen.
6. Migreren naar ander platform
We zouden ook nu al de migratie naar wat anders in gang kunnen zetten. We moeten er dan ook iemand bij hebben omdat we anders teveel beginnersfouten zouden maken. Bovendien zitten we nog vroeg in het proces waarin we bepalen naar wélke andere omgeving we dan toewillen.
Optie 3,4 en 5 lijken me het meest praktisch op korte termijn.
Hoe kijken jullie hier tegenaan, mis ik opties? Hoe is dit het beste aan te pakken?
* uit privacy voor het bedrijf laat ik de bedrijfsnaam even in het midden.
Het pakket is een 100% maatwerk client-server applicatie van eind 90-jaren. Sinds die tijd is het actief onderhouden en uitgebreid. Er is een diepe integratie met het productieproces. Klanten sturen hun orders via de mail. Deze mail wordt automatisch ingelezen, geparsed en daar worden opdrachten voor gemaakt die rechtstreeks vanuit het pakket naar de productiemachines wordt gestuurd. Die productiemachines sturen op basis daarvan weer de robots en plc's aan, maar dat ligt buiten ons werkgebied. Orders komen soms 's morgens binnen en moeten dan 's middags geleverd worden. Transporteurs kunnen inloggen in ons systeem en zo zelf zien wat ze moeten vervoeren.
Het pakket is gemaakt in een ontwikkeltaal die niet erg gangbaar is. De ontwikkelomgeving zelf werkt prima en is up-to-date, maar ontwikkelaars liggen niet voor het oprapen, vandaar dat met het idee gespeeld wordt het hele pakket op middellange termijn (5-10 jr) te vervangen door iets waar meer support voor is, zowel qua ontwikkelomgeving als ontwikkelaars. Het idee is wel om het maatwerk te laten blijven vanwege de integratie met het productieproces.
Het systeem werkt prima, maar onderhoud wordt wel 'een dingetje'. Wijzigingen die we door willen voeren duren steeds langer en zijn steeds moeilijker. We hebben het idee dat we een beetje vast beginnen te lopen in het pakket. Vandaar dat we op zoek zijn naar mogelijke oplossingen.
Een korte analyse levert het volgende op:
- De database bevat veel tabellen, indexen en velden die niet nodig zijn.
- Er is veel programmatuur die (dus) ook niet nodig is
- Er is redelijk veel dode code
- Er is redelijk veel dubbele code
- Veel zaken worden hard-coded afgehandeld
- Het pakket wordt soms misbruikt met oneigenlijke constructies (bv bij Valuta "controle" invullen en dan in de programmatuur afvangen dat er iets moet gebeuren dat niks met een valutacode te maken heeft)
- Er zijn teveel settings, vinkjes en toggles in het systeem om specifieke problemen op te lossen die programmatuur extra complex maken
- Programmatuur is naar de inzichten van nu te weinig opgeknipt; programma's van enkele duizenden regels code zijn geen uitzondering.
- Scoping van tabellen en variabelen is veel te ruim, zodat als je iets aanpast in een programma, je geen idee hebt wat de gevolgen er van zijn.
- Het pakket werkt voor een groot deel obv een framework uit 1995 dat nu hopeloos verouderd is en waar zelfs geen online documentatie van is
- Logic en UI zijn niet gescheiden
- Er zijn geen unittesten
- Er is zo goed als geen documentatie
Wat zijn de opties? Ik heb een aantal opties op een rij gezet:
1. Shift-delete + restart
Sounds good, doesn't work. Probleem is dat we met zijn tweeën zijn en ook de dagelijkse ondersteuning moeten doen. Er is geen tijd om gezellig met zijn tweeën in een hok te gaan zitten en over een jaar met een goed pakket te komen.
2. Extra persoon erbij
Zou wellicht te regelen zijn. Probleem is dat die niet snel ingewerkt is en bovendien lastig te vinden. Daarnaast is dit op zich alleen symptoombestrijding omdat het probleem er niet wezenlijk door wordt veranderd. We hebben hooguit meer slagkracht om de problemen aan te pakken.
3. Opstellen documentatie
We zouden alle bedrijfsprocessen in kaart kunnen brengen middels een schema en dat aanvullen met welke programma's daarbij horen plus een uitleg van de achterliggende logica.
4. Code-isolatie
We zouden stap voor stap code uit het oude systeem kunnen halen en dat onderbrengen in aparte programma's waarbij de UI en de business logic gescheiden is, eventueel in micro-services. Tegelijk zouden we daar dan unit testen voor moeten maken.
5. Opschonen
Het pakket zou eens doorlopen moeten worden om ongebruikte zaken eruit te kunnen halen en te verwijderen. Dit zou een en ander wat behapbaarder maken. Programmatuur én database moeten we dan opschonen.
6. Migreren naar ander platform
We zouden ook nu al de migratie naar wat anders in gang kunnen zetten. We moeten er dan ook iemand bij hebben omdat we anders teveel beginnersfouten zouden maken. Bovendien zitten we nog vroeg in het proces waarin we bepalen naar wélke andere omgeving we dan toewillen.
Optie 3,4 en 5 lijken me het meest praktisch op korte termijn.
Hoe kijken jullie hier tegenaan, mis ik opties? Hoe is dit het beste aan te pakken?
* uit privacy voor het bedrijf laat ik de bedrijfsnaam even in het midden.
... en gaat over tot de orde van de dag