Deze blog is geïnspireerd op de Blockchain innovation conference (good job Vincent Everts!) vorige week in Amsterdam. Laatste spreker van de dag was fintech consultant David Birch die voor het restje publiek dat zich niet gek had laten maken door de code geel waanzin van het KNMI, ons “food for thought” meegaf. “Food for thought” over onze initiatieven om meer kids (meiden) te leren coderen op school. Nu ben ik zelf tech advisor, maar ook vader van een veertienjarige dochter die python leert, en ik merk dat ik er dit weekend nog over na liep te denken. Wat was de boodschap die David Birch ons meegaf?
Boodschap #1 : de software die we produceren is niet best.
Toegegeven, hij bracht de boodschap in de cryptocurrency community die nog volop aan het pionieren is en veel kinderziektes nog probeert te overwinnen. Blockchain software development is niet hetzelfde als een website bouwen of een .NET-programmaatje in elkaar knutselen. Als een website het niet doet of een formulier werkt niet lekker, kunnen we dat eindeloos blijven tweaken in SPRINTs totdat het wel goed werkt. In blockchain land hebben we het over een smart contract (code) dat, eenmaal deployed, niet meer aanpasbaar is en autonoom door blijft draaien tot in oneindigheid (* klopt niet helemaal, maar even voor het gemak). En helaas is dat in Blockchain land de dagelijkse praktijk. Er zijn talloze voorbeelden op de Ethereum blockchain van smart contracts met programmeerfouten (verkeerd adres, onvoorziene waardes, divide by zero, verkeerde condities, geen error afhandeling, etc.) die inmiddels honderden miljoenen dollar schade hebben opgeleverd over de afgelopen paar jaar. Laten we hopen dat Ton Elias het niet ontdekt want dan hebben we weer zo’n commissie.
Side note : Ik liep tegen dit artikeltje dat een pleidooi houdt voor een smart contract keurmerk. Blijkbaar is het hard nodig!
https://www.coindesk.com/how-ethereum-applications-earn-a-security-ratings/Overigens was volgens David Birch ook de hele trend rondom Agile & SCRUM een slecht idee voor smart contracts, maar die onzinstelling rechtvaardigt een hele blog dus die laat ik nog even liggen.
Boodschap #2 : AI produceert betere software dan de mens
Helder. Lees het onderstaande artikel maar eens (ook al twee jaar oud!). AI produceert met ML-algoritmes betere software dan menselijke developers. Dus alles wat je hoeft te doen is de AI op GitHub richten en heel veel learning loops later heeft het algoritme ons rechts ingehaald.
Het fameuze “Hello world”-voorbeeld kennen we allemaal. In Basic geprogrammeerd is dat twee regels:
10 print “Hello world”
20 End.
Hetzelfde programmaatje als smart contract in Solidity geschreven leidt tot 46 regels code.
pragma solidity ^0.5.0;
contract HelloWorld {
string defaultName;
mapping (address => string) public accounts;
constructor() public{
defaultName = ‘World’;
}
function getMessage() public view returns(string memory){
string memory name = bytes(accounts[msg.sender]).length > 0 ? accounts[msg.sender] : defaultName;
return concat(“Hello ” , name);
}
function setName(string memory name) public returns(bool success){
require(bytes(name).length > 0);
accounts[msg.sender] = name;
return true;
}
function concat(string memory _base, string memory _value) internal pure returns (string memory) {
bytes memory _baseBytes = bytes(_base);
bytes memory _valueBytes = bytes(_value);
string memory _tmpValue = new string(_baseBytes.length + _valueBytes.length);
bytes memory _newValue = bytes(_tmpValue);
uint i;
uint j;
for(i=0; i<_baseBytes.length; i++) {
_newValue[j++] = _baseBytes[i];
}
for(i=0; i<_valueBytes.length; i++) {
_newValue[j++] = _valueBytes[i];
}
return string(_newValue);
}
}
De conclusie is simpel : voor foutloze en robuuste code hebben we geen creativiteit nodig, maar discipline, binnen de lijntjes kleuren, geen ego’s en een grote dosis rationaliteit en nauwgezetheid. Geen wonder dat het algoritme het wint van de wispelturige mens die alsmaar zoekt naar nieuwe uitdagingen en afwisseling.
Naar een conclusie
Volgens David Birch kun je het werk van programmeurs vergelijken met het werken in de kolenmijnen van de vorige eeuw : it’s a shitty job. Maar omdat we de mijnen hebben gesloten, is de noodzaak om het er over te hebben verdwenen en zie je het vak ook niet meer op scholen terugkomen. En nu is de interessante vraag of diezelfde situatie ook van toepassing zou kunnen zijn op onze goed bedoelde initiatieven om kids te leren programmeren. It’s a shitty job en AI kan het beter. Waarom leren we onze kids programmeren als dat een skill is waarvan we weten dat AI het beter doet? Zou het niet verstandiger zijn om al vroeg op scholen te beginnen met onderwerpen als Innovatie, Creativiteit, Design Thinking, Ideation etcetera? En dan hebben we onze algoritmes wel om onze goede ideëen te vertalen naar code. Ik ga het vanavond maar eens bespreken met mijn dochter. Eens kijken wat zij vindt.