Agile, Programming

Nieuwe features in software: hoe beslis je welke je bouwt? #Agile

Nichtje had zichzelf getekend in de brief

Ik heb een site gebouwd, en ik bouw daar nog aan, waarin ik de brieven van de familie Schwartze archiveer en documenteer. Vooralsnog ben ik zelf de enige gebruiker van de site. Ik had kunnen beginnen met een site en een API en een database met alle functionaliteit die ik kon bedenken. Dat was veel werk, en dan had ik in de loop van de tijd veel moeten veranderen wegens voortschrijdend inzicht.

Dus ben ik minimaal begonnen: met alleen een database waarin ik data heb ingevoerd met SQL. Die database heb ik geconverteerd naar een netjes gestructureerde database, op basis van wat ik inmiddels over de content had geleerd. Toen wilde ik een overzicht van alle brieven, dat heb ik gemaakt met ReactJS. Brieven hebben afzenders en ontvangers, die wil ik documenteren, dus heb ik daar features voor gemaakt. Minimalistisch, maar wel functioneel.

Nu ben ik in het stadium dat ik de toekomstige bezoekers van mijn site in het vizier heb, en ik kan allerlei functies en features bedenken die ze misschien handig vinden. Maar dan ben ik daarmee maanden aan het programmeren terwijl ik ook de content nog compleet moet maken. Ik kan ook niets meer bijprogrammeren en me concentreren op de content, maar dan maak ik steeds meer work-arounds wegens missende features. Wat ik dus doe is het volgende: iedere keer als ik een nieuwe feature bedenk, dan programmeer ik die niet, maar verzin een work-around met de bestaande software. Pas als ik voor de derde keer die feature zou willen gebruiken, bouw ik ‘m erbij. Dan weet ik inmiddels ook meer in detail wat die feature moet doen.

Als voorbeeld: een brief heeft één afzender, degene die de brief schrijft. Maar soms is er een briefje van tante waar een nichtje een velletje heeft bijgevoegd: dan zijn er twee afzenders. Dat hoeft niet per se zichtbaar te zijn in de database, als tante de afzender is, is het duidelijk genoeg. Totdat ik voor de derde keer twee brieven in één envelop had, toen heb ik alles zo gemaakt dat je meerdere afzenders kunt hebben voor één brief. Hetzelfde gebeurde voor de ontvangers: tante schrijft een brief aan de drie nichtjes.

Ik wilde kunnen zoeken in de brieven, dus heb ik met Apache Lucene een zoekfunctie gemaakt op de content van de brieven. Wat ik nog niet heb is een zoekfunctie op afzenders of ontvangers in de database. Ik blader alfabetisch door de brieven om iemand te zoeken. Dat wordt nu hinderlijk, dus ik ben nu op het punt een zoekfunctie te maken voor afzenders en ontvangers en locaties en dergelijke.

Ik werk dus efficient: ik besteed minimale tijd aan het bouwen van de web site en de API en wat daarbij hoort zodat ik maximaal tijd heb voor de inhoud, waar het tenslotte om gaat. Als ik inhoud af is, en ik er een boek over heb geschreven, dan heb ik tijd om de features toe te voegen die ik zelf nu niet nodig heb maar die voor bezoekers van de site handig zijn. Zodat als het boek verschijnt, ook de site optimaal is.

Deze aanpak klinkt simplistisch, maar ik denk wel dat je ieder project zo zou moeten doen. Je verzint met z’n allen de absolute bare bones structuur van je applicatie of web site, en je bouwt dat. Dan gaan gebruikers aan de slag en pas als ze een feature echt missen, dan bouw je die erbij. Je backlog krijgt dus een extra column: “aantal verzoeken”. Pas als tien gebruikers een feature in de praktijk node missen, bouw je die erbij. Niet met toeters en bellen, maar alleen de minimale feature waar gebruikers of klanten om hebben gevraagd. Is er dan een toeter of een bel die ze nog missen, dan gaan ze vanzelf piepen en bouw je de toeter of bel erbij.

Taalblog

Hét cliché van de biograaf

“Thérèse Ansingh wordt op 19 juli 1883 in Amsterdam geboren als jongste dochter van het echtpaar Ansingh-Schwartze”.

Foei, wat een akelig cliché. Ik kan me voorstellen dat een biograaf zoiets een keer schrijft vanwege de vlotte schrijfstijl of om origineel te zijn. Maar Ansingh wordt niet geboren, ze ís geboren, 137 jaar geleden, in 1883. Waarom moet iedere biograaf mijn hersens in de knoop slaan met zo’n cliché?

Laten we afspreken dat we in een biografie, groot of klein, voortaan gewoon de voltooid tegenwoordige tijd gebruiken, zoals het hoort. “Thérèse Ansingh is in 1883 in Amsterdam geboren. Ze was de jongste dochter van Clara Schwartze en Edzard Ansingh”. Dat klinkt toch deftig genoeg? En als iemand het dan een keer anders doet, laat dan niet alle biografen gelijk denken “oh, dat is mooi geschreven zo, dat ga ik ook doen” want dan hebben we weer een nieuw akelig cliché. Laten we de akelige clichés overlaten aan de TV-sportverslaggevers, die maken onze hersenen al genoeg in de knoop.

Blog

Mondkapjes?

Gisteravond in Op1 op NPO1 werd druk gediscussieerd over mondkapjes. Het kabinet heeft ze een paar uur eerder niet verplicht gesteld, terwijl iedere leek ervan overtuigd is dat ze verplicht moeten zijn. De presentatoren en gasten aan tafel droegen geen mondkapjes. Ze zaten met z’n tienen in een niet zo kleine maar ook niet zo grote ruimte, een uur lang naar elkaar toe te ademen. Er was ongetwijfeld ventilatie, maar ik zag geen kleding wapperen dus het was bescheiden ventilatie. Ze ademden naar elkaar toe, en omdat uitgeademde lucht iets warmer is dan de kamertemperatuur stijgt die uitgeademde lucht boven de tafel op, om langs het plafond en dan langs de wanden weer naar beneden te gaan. Richting tafel, richting mensen. Als één van de mensen aan tafel besmet was geweest, dan was de kans zeer groot geweest dat de meeste aanwezigen besmet waren geraakt, niet omdat ze te dicht bij elkaar zaten maar omdat ze een uur lang samen aan tafel zaten. Maar ze droegen geen mondkapjes.

Een supermarkt is heel anders dan een studio. In de supermarkt kom je meer mensen tegen, maar je komt ze maar één of twee keer vluchtig tegen, in het voorbijlopen, je houdt afstand, het besmettingsgevaar is klein. Ik ben er vrij zeker van dat als er een besmet persoon rondloopt in de supermarkt, je kans om besmet te raken klein is. Je bent immers maar één of twee keer, of nul keer, heel even bij zo iemand in de buurt. Toch is iedereen ervan overtuigd dat het kabinet mondkapjes in supermarkten verplicht moet stellen.

Ik stel voor dat iemand gedegen onderzoek gaat doen naar het besmettingsgevaar op allerlei locaties. In supermarkten, in vergaderkamers, in kerken en theaters, op de markt, op het terras, in het OV, overal. Dat onderzoek heeft twee onderdelen: onderzoek in de praktijk, op basis van informatie waar mensen daadwerkelijk met covid-19 besmet zijn, en onderzoek met modellen en metingen in het laboratorium.

Immers, als we weten waar mensen wel besmet raken en waar mensen niet besmet raken, kan het kabinet goed beleid maken waar mondkapjes en eventuele andere beschermingsmaatregelen effectief en dus gewenst zijn, en waar niet. Nu heb ik het idee dat het natte vingerwerk is, deels gebaseerd op andere argumenten dan medische of anderszins wetenschappelijke argumenten.

En ja, ik denk dat de studio veel groter was dan het zichtbare deel dus dat het risico kleiner was dan ik hierboven schets. De Op1 studio staat voor mij model voor iedere vergader- of andere ruimte waar mensen langere tijd samen zijn en praten. Om die reden zou Op1 best het goede voorbeeld mogen geven en mondkapjes dragen, als iedereen dat zo graag wil.

Art History

Briefje van Marius

Marius Bauer schreef een briefje aan Jacoba Surie, datum onbekend. Surie was één van de Amsterdamse Joffers, Bauer was getrouwd met Jo Stumpff, ook een Joffer, hoewel ze pas na de dood van haar man serieus ging tekenen en schilderen. Zo waren de tijden: zorgen voor je man gaat voor je eigen werk en je eigen leven. Je kon als schilderes in die tijd maar beter niet trouwen denk ik. Surie was ook niet getrouwd, ze deelde 36 jaar een huis en atelier met Ans van den Berg, ook een Amsterdamse Joffer. Van den Berg had les gehad van Jo Stumpff.

Bauer had een schetsje getekend op die brief, ik denk van een tekening of ets waaraan hij werkte. Surie heeft dat schetsje van de brief geknipt en bewaard, en erop geschreven “Schetsje van brief, die ik van M. Bauer ontving. J. Surie”.

Ik kreeg dat schetsje bij een houtskooltekening van Bauer die ik op een veiling heb gekocht. Of eigenlijk, het schetsje was de reden dat ik die tekening heb gekocht.

Blog

Corona-doden of privacy

Toen er voor het eerst sprake was van een corona app, in het weekend van de “appathon”, schreef ik wat stukjes hoe je volgens mij een goede corona-app maakt. Sindsdien zijn er meer dan duizend doden gevallen en is er nog geen corona-app die op grote schaal besmettingen voorkomt. Ik vind dat jammer.

Je kunt een app maken die effectief detecteert wie in de loop van een week bij jou in de buurt is, dicht genoeg en lang genoeg om je te besmetten. Dus als een persoon van de GGD te horen krijgt dat hij of zij besmet is, kan zo’n app binnen vijf minuten alle mogelijk besmette contacten een bericht sturen “je bent mogelijk besmet” en automatisch een afspraak plannen voor een test. Je krijgt dan een berichtje “je wordt vanmiddag om 3 uur bij de GGD verwacht voor een corona-test”. Dan hoeft de GGD geen bron- en contactenonderzoek meer te doen want mensen worden getest voordat dat onderzoek gestart is.

Maar zo is het niet gegaan. Onder invloed van “privacy experts” is de app die er is gemaakt een dermate slap aftreksel van wat zou kunnen dat die app geen bijdrage gaat leveren aan het bestrijden van corona. En omdat de GGD en de laboratoria nu onvoldoende capaciteit hebben om te testen en contact-onderzoek te doen, ligt effectieve bestrijding van corona een beetje stil. Ik vind dat jammer.

Privacy expert zeggen “met een app weet de overheid waar je bent”. Dat weet de overheid toch wel. “Met een app weet de overheid of je besmet bent met corona”. Is dat erg? Is het juist niet goed als de overheid onmiddellijk weet wie besmet is met corona?

“Met zo’n app gaan winkeliers en caféhouders mensen weigeren die besmet zijn met corona”. Ehm, is dat juist niet prima? Wie corona heeft moet thuisblijven en niemand ontmoeten, dat is de essentie van het bestrijden van de pandemie. En dat geldt dan niet alleen voor daadwerkelijk besmette mensen, maar ook mensen die “mogelijk besmet” zijn. Die moeten zich dan afzonderen totdat ze zijn getest. De privacy experts vinden dat dat een eigen keuze is van mensen, dat iedereen het recht heeft om ook als je mogelijk besmet bent, gewoon rond te lopen en anderen te besmetten. Men vind privacy belangrijker dan het voorkomen van ernstig zieken en doden.

“Ik vind mijn privacy erg belangrijk”. ‘Tuurlijk. Vandaar dat je facebook op je telefoon hebt zodat een tech bedrijf, en overheden en bedrijven wereldwijd, je in detail de hele dag kunnen volgen. Je hebt Google Maps op je telefoon, zodat tech bedrijven weten naar welke supermarkt je gaat. Je gebruikt Whatsapp, zodat Facebook en de Amerikaanse overheid precies weten met wie je wanneer hoe lang contact hebt. Je gebruikt Tiktok, zodat Chinese tech bedrijven en dus de Chinese overheid nog meer van je weten dan westerse overheden en tech bedrijven. Belangrijk hoor, die privacy.

En je hoeft niet eens zelf apps te installeren om je privacy te laten schenden. Ik heb geen Whatsapp, maar Whatsapp weet wel wie mijn telefoonnummer hebben, ze kennen dus al mijn vrienden en kennissen en familie. Als mijn vrienden mij via Whatsapp een SMS sturen, dan weet het hoofdkantoor van Facebook dat ook. Hetzelfde geldt voor alle andere apps die toegang hebben tot je adresboek. Mooi hoor, dat ik geen Whatsapp of LinkedIn-app heb om mijn privacy te beschermen.

Ondertussen klaagt iedereen over de economie die slecht gaat, de werklozen door corona, de horeca die ten onder gaat, bars die niet open mogen en evenementen die niet door mogen gaan terwijl het aantal corona besmettingen inmiddels weer oploopt. De GGD loopt vast met bron- en contactonderzoeken, de testcapaciteit blijkt zwaar onvoldoende, het bestrijden van corona loopt achter de feiten aan, maar een app die echt werkt, nee, dat willen we niet. Dan liever corona.