Dank voor het plaatsen van de link naar goed leesvoer! Heel herkenbaar, zowel voor een securityman als iemand die eisendocs geschreven heeft, als programmeur (ik heb veel geprogrammeerd, vooral beroepsmatig).
Jammer alleen dat het stuk nauwelijks over security gaat maar vooral over bugs die zich zonder opzet manifesteren. En als dat al een probleem is (en dat is het), dan zijn secuity bugs, die een aanvaller (vaak kosten noch moeite sparend) vindt en uit weet te buiten, een veel groter probleem. En vormen dus een bedreiging voor onze steeds verder digitaliserende samenleving.
Programmeren is gewoon hartstikke leuk. Het is verslavend, net als puzzelen (en dan heb ik het niet over de huidige stackoverflow copy/pasters). Ik voel me een uitvinder als ik programmeer en de code doet wat het moet doen, en helemasl als de code niet doet wat het niet moet doen. Maar beroepsmatig vond ik het vaak niet leuk meer omdat ik er, volgens mijn werkgever, te lang over deed (zorgen dat code niet doet wat niet moet maar niet gedocumenteerd is noemen sommige werkgevers "goldplating", en het woord "perfectionisme" kwam in menige beoordeling voorbij). Dat komt omdat ik van robuuste code houd met fatsoenlijke input validation. Heus niet in elke functie, maar wel uitzoeken waar dat het beste kan en bij elke wijziging (vooral als collega's er tussendoor aangezeten hadden) checken en fixen indien nodig (wat er aan input binnenkomt wijzigt vaker dan je wilt, en dat kan tot diep in je code consequenties hebben). Maar als mijn snellere collega's weer eens bugs geïntroduceerd hadden en de oorzaak niet konden vinden, wisten mijn werkgevers mij weer wel vaak te vinden (ook puzzelen, maar spaghetti ontwarren frustreert wel eens). Ze hadden zich veel geld en boze klanten kunnen besparen.
Requirements schrijven vind ik veel minder leuk dan programmeren (maar is financieel vaak weer wel aantrekkelijker). Gedetacheerd liep ik er ook tegen aan dat projectleiders zo snel mogelijk functionele eisen op papier willen hebben. "Prima als ze niet allemaal/helemaal SMART zijn" (waarbij de S niet voor "secure" staat maar voor "specific" en de rest -uit Wikipedia- voor measurable, achievable, relevant en time-bound). "Zet er maar gewoon in dat het systeem aan OWASP en ISO 27001" (klok en klepel) "moet voldoen en klaar is Kees". Kijk maar eens in tenderdocs voor een willekeurig ICT project en je snapt wat ik bedoel.
En meestal is het zo dat, nadat het systeem met allerlei dependencies naar third party libraries en/of ingebakken third party conponenten geleverd is, er geen afspraken blijken te zijn gemaakt wie lekken en security updates van alle spulleboel (ook third party dus) in de gaten houdt, registreert, updates maakt en test - en vooral en wie dat moet betalen. Daarbij komt dat de leverancier binnen de kortste keren over is op een ander "framework du jour" en eerder betrokken programmeurs van project of werkgever wisselen, waarmee kennis razendsnel verdampt. Als er later, om welke reden dan ook (nieuwe Java versie bijv.), flinke wijzigingen doorgevoerd moeten worden, gebeurt dit vaak door mensen die totaal geen overzicht hebben op alle mogelijk betrokken systeemdelen, laat staan het hele systeem.
Het is een wonder hoeveel er goed gaat (of lijkt te gaan).