Artificiële Intelligentie is al wel eventjes een Hot Topic. Wie dit niet integreert in zijn business processen lijkt niet meer goed mee te zijn, of dat gevoel wordt toch gegeven. Over dat punt kan menig discussie gevoerd worden, maar dat ben ik nu niet van plan. Vandaag wil ik graag stilstaan bij een van mijn favoriete implementaties van Artificiële Intelligentie. Namelijk de door AI ondersteunde IntelliSense van Visual Studio.
Omdat onlangs mij het bevoorrechte genot toekwam om een stel ‘mappers’ te schrijven, niet het meest sexy stukje werk dat iemand kan leveren. Ik denk niet dat iemand me daar gaat tegenspreken, of wel?
Het voelde dan ook een beetje magisch aan toen ik merkte wat de recentelijk toegevoegde AI voor mij deed. Door een overeenkomst in naamgeving wist deze namelijk welke velden ik met elkaar wou verbinden.
Klein, subtiel, maar 10 mappers later had het me wel een hoop tijd bespaard.
Nu zou het de slimme IntelliSense geen recht aan doen om mijn lof hierbij te staken. Laten we eens kijken wat er verder nog mogelijk is.
Op basis van je eigen code base is het mogelijk om een machine learning model te trainen. Als je daar niet meteen wild van wordt, dan leg ik je even uit waarom ik wel.
Binnen een team is het wenselijk dat de ontwikkelaars zo goed mogelijk dezelfde programmeerstijl aanhouden. Dit om het zo eenvoudig mogelijk te maken om elkaars code te begrijpen en eventuele fouten op te sporen.
Traditioneel gezien gebeurt dit door enkele regels af te spreken en de ontwikkelaars aan te sporen deze ook te volgen. Vervolgens moet er natuurlijk nog wel op toegezien worden dat dit ook gebeurt. Ofwel laat je dit automatisch verlopen (daar wijden we wel nog eens een blogpost aan) of je houdt dit in het oog door middel van code reviews.
Dit zie ik als actief werken, en persoonlijk ben ik meer fan van proactief werken. Bij actief werk steek je meer werk in iets dat op een proactieve manier al opgevangen zou zijn.
Het is hier dat deze feature zo prachtig ingrijpt. Als tijdens het schrijven van code de ontwikkelaar wordt aangeraden om de stijl van zijn team te volgen, dan gebeurt dit efficiënt en proactief.
Om deze efficiëntie niet te verliezen in het hertrainen van het model, heeft het team van Microsoft voorzien dat dit automatisch kan gebeuren in Azure DevOps binnen de omkadering van Continuous Integration.
Wat is het toch een mooie tijd om Software ontwikkelaar te zijn.
Nog een pareltje!
We werken Agile, refactoren komt als een tweede natuur voor ons en is een normaal onderdeel van het ontwikkelingsproces. Natuurlijk doen we dit zonder vrees want we hebben immers testen die heel onze code base op zijn voeten houdt.
Ok, dat zijn misschien al wel enkele niet overal even vanzelfsprekende aannames, maar ook hier wordt ons weer het gereedschap aangeboden om de consistentie waarmee we werken te verbeteren.
Het is namelijk menselijk om eens een stukje code over het hoofd te zien, zeker in de grotere projecten. Daarbij kan het dus zijn dat niet heel de code base even up-to-date is met de refactorings. Toch tot de IntelliCode begon bij te houden welke code je aanpaste en dit ging vergelijken met de rest van uw code base.
“IntelliCode refactorings suggested edit:”
Op basis van de semantische structuur van uw code kan Visual Studio dus nu herkennen waar je eventueel gelijkaardige refactorings zou willen doorvoeren. Je moet wel nog even bij Tools > Options > IntelliCode kijken of C# refactorings en C# refactorings prompt actief zijn.
Laat ons eerlijk zijn, menselijke fouten doen zich voor en daar gaat niet snel verandering in komen. Met de tools die ons worden aangeboden kunnen we hier steeds beter en sneller op reageren (of ze gewoon voorkomen). Ik juich dit alleszins toe, en ik denk niet dat ik daar alleen in ben. Met veel interesse ga ik op de voet blijven volgen waar het IntelliCode team nog mee gaat komen.