software ontwikkelen
Pairing en theoriebouwen
Waarom zou je aan pair programming doen? Dan doen twee mensen het werk van één, dat is toch vreselijk inefficiënt! – Die zienswijze veronderstelt dat het doel van programmeren is om een werkend programma te produceren. Maar een werkend programma maakt nog geen goede software. Goede software is soft: eenvoudig aan te passen naar veranderende eisen en wensen.
Theoriebouwen (een schets)
Wat is programmeren? Een voor de hand liggend antwoord is: een programma schrijven. Wie tekst oplevert die door een compiler kan worden omgezet naar machine-instructies, die kunnen worden uitgevoerd om een bepaald doel te bereiken – die programmeert. Programmeren wordt in deze schets gekenmerkt door het opgeleverde eindproduct: het programma.
Uitrollen, vlak voor de demo
“Ik vind dat we niet meer uit moeten rollen vlak voor een demo,” zei een collega, “dat vond ik nogal spannend.” Liever had hij zichzelf nog wat extra tijd gegeven om zekerheid te krijgen dat de wijziging niet onbedoeld dingen stuk had gemaakt. Ik begrijp het sentiment van waaruit deze opmerking ontspringt. Maar het is in mijn beleving de verkeerde diagnose van de situatie.
Borrelpraat #2
Hij dronk cola, ik een biertje – maar verder zitten we op één lijn. Het duurde niet lang voordat het over de zoekindex ging – altijd die verdomde zoekindex. “Dat is al vanaf het begin een pijnpunt,” bekende ik. “En ik ben zelf onderdeel van het probleem geweest.”
Zoek en gij zult vinden
Soms duurt het ruim vier jaar voordat je eraan toekomt – maar: dotkarl kent nu eindelijk de mogelijkheid om blogs te doorzoeken. Woohoo!
Gaan we snel genoeg?
Sinds kort ben ik in van team gewisseld. Sinds die wissel mag ik mezelf met recht full stack developer noemen. Ik ben verantwoordelijk voor de back-end, de front-end – de database, de infrastructuur, security – de requirementsanalyse, de tests… Je kunt je voorstellen: het kan even duren voordat een (ogenschijnlijk) eenvoudige feature afgerond is. Af en toe maakt een knagend schuldgevoel zich dan ook meester van me: gaan we snel genoeg?
Feature branches belemmeren een beter begrip van koppeling
Laatst brak een kleine wijziging aan de back-end – die we zo snel mogelijk richting de testomgeving hadden gebracht – functionaliteit aan de front-end. Voor mijn collega was het een ideale gelegenheid om zijn bias voor Gitflow bevestigd te zien. “Dit zou nooit gebeurd zijn als we van feature branches gebruik hadden gemaakt!” concludeerde hij. – En niet onterecht, want het apart houden van de wijziging in kwestie zou de functionaliteit op testomgeving inderdaad intact hebben gehouden.
Wie is er bang voor adapterfuncties?
Adapters zijn een bekend ontwerppatroon in de softwareontwikkeling. Toch kwam deze oplossingsrichting niet onmiddellijk bij me op toen ik een stuk code in onze zoekindex begon te refactoren (om van de oorspronkelijke schrijver nog maar te zwijgen!). In plaats daarvan gaven onze eerste pogingen er blijk van koste wat kost te willen blijven werken met de “standaard”-functies. – Waarom?
Het ontologische argument
Onlangs pairde ik met een nieuwe collega. We hadden een refactortaak opgepakt om wat ondoorgrondelijke code rondom onze zoekindex te versimpelen. Ergens halverwege die refactorslag zei hij iets wat mijn aandacht trok.
Een kleine stap voor de code...
Toen een collega van me laatst vastliep op het omschrijven van wat authenticatielogica, sprong ik graag bij. Ik wist immers wat de juiste weg voorwaarts was: heel veel heel kleine stapjes. Maar zo simpel bleek het toch niet te zijn…