De afgelopen weken hebben we een, voor ons doen, redelijk ingrijpend besluit genomen: we hebben een lopende sportmanager tijdelijk stopgezet omdat we niet konden garanderen dat het zonder technische ingreep verder correct kon verlopen.
De reden hiervoor was dat vanaf ronde 4 van dit F1-seizoen er fouten optraden in de puntentelling van team-onderdelen en daardoor in de stand van de meespelende gebruikers. Reparatie-acties door de redactie maakten dit erger, omdat het systeem er niet (correct) op rekende dat een niet-ontwikkelaar correcties zou uitvoeren. Chaos alom, en bij gebrek aan ontwikkelaar (Light heeft na jaren hard werk en steun en toeverlaat te zijn geweest enige tijd terug zijn taak als sporttechneut neergelegd) een lastige situatie om te verhelpen.
Dus ik ben erin gedoken. Ik speel zelf niet mee, en ken het spelsysteem dus ook niet. Het is gebouwd voordat ik me met sport of IT binnen FOK! bemoeide en ik ben nooit betrokken geweest bij de ontwerp- of bouwfase (de functie IT-admin bestond nog niet, ontwikkelaars deden alles uit zichzelf zonder toezicht). Documentatie was er nauwelijks, dus het werd een rondje bladeren door code en database-schema’s. Een ongetwijfeld bekend scenario, maar bijzonder ongewenst.
Omdat niet goed te achterhalen was hoe een ‘reset’ of ‘reverse’ van een ronde kon worden uitgevoerd, en omdat ik er geen vertrouwen in had (heb? mwah, had) dat de nog te komen speelrondes foutloos verlopen, wilde ik de situatie rigoureuzer verhelpen: het systeem miste een algehele hercontrole en -berekening, dus, zo besloot ik in mijn, ahum, wijsheid, dat die er dan maar moest gaan komen.
Een algehele hercontrole en -berekening is, in mijn ogen, een procedure die je moet kunnen uitvoeren op de huidige status van de database om de fouten die daarin zijn opgeslagen eruit te halen. Wat het in de basis doet is opnieuw beginnen: de punten gaan op nul, de budgetten gaan terug naar het startbedrag en alle gedane handelingen worden vervolgens herhaald totdat we zijn waar we moeten zijn: bij een correcte stand. Let wel: helemaal naar nul is dat niet. Immers: van enkele rondes zijn al uitslagen bekend en alle users hebben al een team samengesteld, hierin gewisseld, er punten voor gekregen, etcetera. Het is dus belangrijk om niet alleen de punten te herberekenen, maar ook om het budgetverloop (inclusief aankopen, verkopen, wisseltarief en het gewonnen budget door het aantal punten) correct te laten verlopen. Het einddoel is ervoor zorgen dat iedereen het aantal punten heeft dat hij of zij heeft verdiend, inclusief het bijbehorende budget, zodat het spel de rest van het seizoen weer correct verder kan worden gespeeld.
Om dat te bereiken heb ik me verdiept in code en database en ben ik gaan testen. Wat voor data krijg ik uit deze query? Wat gebeurt er als ik dat vergelijk met dit? Klopt het dat ik een correct puntenaantal voor deze motor krijg als ik dit en dat tegen elkaar houd? Dit alles is een proces van code analyseren, stukjes code schrijven en combineren met de bestaande codebase en de resultaten aan de sportredactie voorleggen ter controle. “Nee, dat budget is veel te hoog.” Oh, back to the drawing board dan maar.
Een lang proces, zoals je zult begrijpen. Code moet geschreven, getest en na controle herschreven worden en voorkomen moet worden dat er fouten optreden. En dat is waarom het allemaal zo lang duurde. Niet alleen omdat dit een lang proces is, maar ook omdat ikzelf qua takenpakket niet beperkt ben tot sport-ontwikkeling. Je zult begrijpen dat dit een situatie is die wordt veroorzaakt door een gebrek aan ontwikkelaars. Bovenstaand verhaal verklaart crystal clear waarom we dedicated ontwikkelaars nodig hebben. Die komen er ook. Zelfs deze week is het team uitgebreid met twee ontwikkelaars voor sport, en na een periode van code lezen kunnen zij ervoor zorgen dat sportliefhebbers ongestoord hun managerspellen kunnen spelen.
En die oude F1-managercode? Dit is de laatste keer dat we die gebruiken. Er zitten goede concepten in, en deze zullen in een nieuw functioneel ontwerp worden gegoten zodat we met een schone lei kunnen beginnen. Nieuwe managers, met minder bugs, betere controle van processen en uiteindelijk (het einddoel) meer spelpezier, dat is waar we op uit zijn.
Filed under: ontwikkeling | getagged: f1, sport
Oi oi oi… maar wellicht is het wel beter zo. Het hele gebeuren hing toch al een aantal jaar als een blok aan het been. Dedicated developers zijn dan wel erg fijn, maar zoals wel gebleken is, moeten ze ook wel goed embedded zijn in een organisatie. Zeker wanneer er zoveel mensen op vertrouwen is het toch fijn als er niet slechts één persoon is die aan de knoppen kan draaien
Hulde voor het verzette werk! (Nu de Tourmanager nog?)
Bedankt voor het verzette werk _O_
Goed werk, Peter.
Bedankt voor alle tijd en moeite die je er in gestoken hebt (zonder alle andere vrijwilligers hiermee tekort te willen doen).
De onderlinge strijd tussen mijn vrouw en mij kan weer verder (met onze teams dan).
Klinkt als een hels karwei…