Ajastin yöllisen ajon ja peruin sen samana päivänä
Toistuva taulukkotyö näytti täydelliseltä ajastettavalta automaatiolta. Testiajo kertoi, miksi se kannatti jättää pyynnöstä ajettavaksi, ja minkä kysymyksen jokaiselle ajastukselle kannattaa esittää.

Testiajo meni läpi ilman yhtään virheilmoitusta. Sen jälkeen taulukossa oli rivejä, joita siellä ei pitänyt olla.
Taustalla on tilanne, joka on melkein joka yrityksessä: Samaa tietoa pidetään kahdessa tiedostossa. Toisessa työ tapahtuu ja luvut päätetään, toisesta kaikki muut lukevat ne. Kun luku on lopullinen, joku siirtää rivin tiedostosta toiseen. Se on käsityötä, se toistuu ja se on aina myöhässä. Juuri sellaisen työn haluaa antaa koneelle, ja minä ajastin siitä yöllisen ajon.
Mitä testiajo oikeasti teki
Ajoin synkan ensin testinä, enkä suoraan ajastuksena. Se lisäsi taulukkoon rivejä, jotka olivat siellä jo.
Syy oli yksinkertainen. Skripti tunnisti jo olemassa olevan rivin sen nimen perusteella, ja osa nimistä oli siistitty käsin sen jälkeen, kun ne oli kirjoitettu. Nimen keskelle oli lisätty yksi sana, jotta rivi olisi ihmiselle selvempi. Koneelle siistitty nimi on uusi tuote. Tämä on tavallinen bugi ja korjattavissa.
Ongelma ei ollut bugi vaan siivous
Kaksoiskappaleet oli saatava pois, ja siinä kohtaa työ pysähtyi. Rivin poistaminen on juuri se toimenpide, joka vaatii ihmisen: Kumpi kahdesta rivistä on oikea, ja viittaako toiseen niistä jo jokin muu. Automaatio ei suostunut poistamaan rivejä itse, vaan kysyi ensin. Se oli oikea päätös.
Vasta siinä huomasin, mitä olin ollut ajastamassa. Synkka ei poistanut mitään. Se vain lisäsi rivejä, ja juuri siksi se oli huono ajastettava: Sen virheet syntyvät lisäämällä, mutta ne siivotaan poistamalla. Yöllinen ajo osuu vuorokauden ainoaan hetkeen, jolloin kukaan ei ole vastaamassa siihen kysymykseen.
Samassa aineistossa oli vielä toinen muistutus. Yhdellä rivillä tiedostot olivat aidosti eri mieltä: Tuotekoodi kertoi yhtä kokoa, toisen tiedoston nimi toista, ja hinta kuului sille toiselle. Oikea toimenpide oli jättää luku kopioimatta ja nostaa asia esiin. Ajastettu ajo olisi kopioinut jonkin luvun, ja se olisi näyttänyt päivien ajan valmiilta.
Mitä tein toisin
Ajastus jäi pois, tehtävä ei. Synkka ajetaan pyynnöstä, ja tulos katsotaan samassa istunnossa. Niin 37 lukittua riviä siirtyi kerralla, ja se yksi ristiriitainen rivi jäi odottamaan päätöstä sen sijaan, että se olisi täytetty arvauksella.
Toinen muutos oli pienempi: Rivin tunnistus ei enää nojaa nimeen, jota ihmiset parantelevat, vaan koodiin, jota kukaan ei siisti. Sama kysymys kannattaa esittää joka kerta, kun tekoälyn käyttöönottoa suunnitellaan toistuvaan työhön.
Kokeile tätä omaan ajastukseesi
Ennen kuin laitat toistuvan työn kellon varaan, vastaa yhteen kysymykseen ja kirjoita vastaus ajastuksen viereen: Miten yksi ajo perutaan?
- Yhdellä napilla tai palauttamalla edellinen versio. Ajasta rauhassa.
- Ajamalla uudelleen oikeilla tiedoilla niin, että tulos korvautuu. Ajasta tämäkin.
- Käsin, rivi riviltä, päättämällä kumpi kappale on oikea. Tätä ei ajasteta. Tämä ajetaan pyynnöstä, kun joku on katsomassa.
Ja se huomio, joka minulta meni ohi: Lause "se ei poista mitään" ei ole turvallisuusominaisuus. Se kertoo vain, mihin suuntaan sotku kasaantuu.