~/blog/tag/craft
Vakmanschap
Over codekwaliteit, bewust bouwen en het vak van softwareontwikkeling.
Waar ik over schrijf
Vakmanschap is wat je niet kunt uitbesteden. De meeste stukken onder deze tag gaan daarover, geschreven in de tijd waarin de verleiding om uit te besteden groter is dan ooit.
Dit is de ruil die ik teams steeds zie maken. Ze grijpen naar een agent omdat hij sneller features oplevert. De features komen. De bugs komen mee.
De code-review wordt dunner omdat de diff er aannemelijk uitziet. Zes maanden later kan niemand in het team meer uitleggen waarom de auth-flow doet wat hij doet, en de laatste die het wel kon, is allang weg.
Het vak dat ik hier verdedig, is het deel dat niet in commit-snelheid zichtbaar is. Het is smaak, en het gevoel dat er iets niet klopt voordat je kunt benoemen waarom. Het is de bereidheid om code zorgvuldig te lezen, ook code die je niet zelf hebt geschreven. En het is de discipline om een fix die je niet begrijpt te weigeren.
Daar wordt niks van makkelijker als er een agent bij betrokken is. Eerder belangrijker. De pull request die je op instinct had gevangen omdat hij raar aanvoelde, is precies wat een agent op zelfverzekerde toon zal produceren. De lezer moet meer werk doen, niet minder.
Dat is de rode draad van deze stukken. Het model is een gereedschap. Het oordeel is van jou, en dat mag je niet neerleggen.
Het volledige argument, met alle stukken in samenhang, vind je in de gids Vakmanschap in het AI-tijdperk.
beste startpunten
- De prompt is geen spec
Het kaderstellende stuk. Een prompt bevat intentie, een spec bevat constraints. De meeste vakfouten zijn varianten op die verwarring.
- Beter code leren lezen: een oefenroutine
Het vak als spier. Een oefenroutine voor code lezen, want iedereen stelt de diagnose en niemand doet er iets aan.
- Je vindt de bug niet als je de code niet schreef
Het argument in zijn scherpste vorm. Je vangt alleen de bugs in code die je begrijpt. Het vak zit in het lezen, niet in het schrijven.
Waarom AI iedereen dezelfde naam geeft: 505 runs bij 19 modellen
Vraag een model om een naam voor je project en je krijgt de naam die het iedereen met een vergelijkbare opdracht geeft. Ik gaf 19 modellen tien naamopdrachten, van een game en een SaaS tot een fantasyheldin, 505 runs in totaal, en telde hoe vaak ze het eens zijn en hoeveel van hun favorieten al bezet zijn.
leesWat AI je team oplevert: meet dit in plaats van tokens
De token-scoreborden bij Meta en Amazon waren binnen weken weg, en een kleine proef met effort-niveaus laat zien waarom: verbruik en resultaat bewegen los van elkaar. Drie maatstaven die je niet verbetert door het model vaker iets te vragen, uitgewerkt voor een ontwikkelteam.
De upload kwam door de controle. De aanvaller ook.
Bricksforge controleerde of een upload een afbeelding was en liet daarna de browser bepalen waar de inhoud terechtkwam. De fout zat tussen twee stappen: een goede controle beschermde maar een deel van het proces.
Wanneer zijn developers overbodig?
AI hoeft geen complete developer te vervangen om je baan te kosten. Het hoeft alleen goedkoper te zijn dan een deel van het team. Er komen weer vacatures bij, maar vooral voor seniors, en in diezelfde maanden bleek hoe snel een bedrijf voor een kleiner team kiest.
- 69ongevraagde timestamps, van 83
Niemand vroeg erom: wat coding agents toevoegen als jij niet beslist
Drie dagen nadat ik de AI-tells van deze site weghaalde, wilde ik weten hoe ze er in code uitzien. Dus gaf ik 23 modellen dezelfde drie TypeScript-opdrachten, 266 runs, verdeeld over vijf harnesses. De meeste voegen velden toe waar niemand om vroeg, elke modellijn heeft een herkenbaar handschrift, en twee van de nieuwste GPT-modellen laten het datamodel zoals de prompt het beschreef.
De AI-tells op mijn site, en welke ik zelf koos
Afgelopen weekend ging een lijst rond met tien kenmerken waaraan je AI-gegenereerde UI herkent. Punt zeven, over fonts, beschrijft deze site precies, en de rest van het uiterlijk noemt Anthropic in zijn eigen design-skill een default. Door na te gaan bij welke onderdelen een reden op papier stond, kon ik mijn eigen keuzes scheiden van wat een agent had toegevoegd, en dat laatste is weg.
Er sloeg geen agent op hol
De voorzitter van de FTC zegt dat AI-agents gereedschap zijn, en dat de developer die de opdracht gaf aansprakelijk is. Over het gereedschap heeft hij gelijk, over de opdracht niet. De sporen van de aanval op Hugging Face laten een agent zien die veel meer deed dan de opdracht vroeg.
Acht rapporten, één meetlat: jureren bij een AI-safety sprint
Ik jureerde acht inzendingen bij de AI Incident Response Sprint van Apart Research. Lezen was het minste werk. Mijn meetlat van het eerste rapport tot het achtste op dezelfde hoogte houden vroeg om een instrument, en dat instrument betrapte me op drift.
- 92%lege catches met commentaar
Lege catch-blokken in AI-code: het commentaar dat je linter het zwijgen oplegt
AI-code slikt fouten in met catch-blokken waar alleen een commentaar in staat, en de aanbevolen ESLint-config laat ze juist dankzij dat commentaar door. Wat ik in mijn eigen repositories vond, waarom een model ze schrijft, en de regel die wel door het commentaar heen kijkt.
- 1.644commits zonder agent-trailer
Wie schreef deze commit? Git-attributie als een agent meewerkt
Ik ging op zoek naar de coding agent in 1.644 commits uit tien van mijn publieke repositories. Hij liet geen enkel spoor na. Wat de auteursgegevens wél herschreef, was de merge-knop.