Tarkvara võib töötada aastaid ilma ühegi nähtava probleemita ja olla sellest hoolimata valesti üles ehitatud. Automaatsed testid õnnestuvad, kasutajad ei kurda ning igapäevane töö tundub toimivat. Ometi võib mõni harva esinev olukord tuua vea välja alles palju hiljem — hetkel, kui süsteem satub tingimustesse, mida keegi ei osanud ette näha.

Sellistes olukordades ei ole peamine raskus tavaliselt seotud süntaksi, programmeerimiskeele või konkreetse raamistikuga. Tegelik probleem on arusaamises — kui hästi mõistetakse süsteemi käitumist kihtides, mida arendaja ise ei ole loonud.

AI-assistendid muudavad arenduse kiiremaks ja mugavamaks, kuid samal ajal teevad nad lihtsamaks ka selliste muudatuste sisseviimise, mille sisemist loogikat ei mõisteta lõpuni.

Miks debugimine ei kao kuhugi

Just siin muutub debugimine keskseks oskuseks. Koodi kirjutamine ja veaotsing ei ole sama asi.

Debugimine tähendab:

  • oletamise asemel kontrollimist
  •  andmete liikumise jälgimist 
  •  komponentide tegeliku käitumise mõistmist 
  •  eelduste kinnitamist või ümberlükkamist 

Selle protsessi käigus tekib arusaam sellest, kuidas süsteem päriselt töötab — eriti olukordades, kus kõik ei lähe plaani järgi.

Kui koodi genereerimine muutub väga lihtsaks, võib kaduda ka see paus, mis varem sundis lahenduse üle sügavamalt järele mõtlema. Ja just selles pausis tekkis arusaam.

Arusaamise võlg vs tehniline võlg

Tehniline võlg on tuttav: kompromissid, mis toovad hiljem lisatööd.

Arusaamise võlg on ohtlikum ja vähem nähtav.

See tekib siis, kui:

  •  kood töötab 
  •  aga keegi ei oska enam täpselt selgitada, mida see teeb 

Varem oli see lõhe väiksem, sest arendajad kirjutasid suurema osa koodist ise ja mõtlesid otsused teadlikult läbi.

AI kasutamisel toimub midagi muud:

  •  lahendus pannakse kiiresti kokku 
  •  kontekst eksisteerib lühiajaliselt 
  •  ja seejärel kaob 

Tulemuseks on kood, mis on küll uus, kuid mille toimimine ei ole kellelegi täielikult selge.

Kui selliseid kohti koguneb, muutub kogu süsteem järjest raskemini mõistetavaks.

Kus on nüüd kitsaskoht?

Varem oli aeglane osa koodi kirjutamine.

Täna see enam nii ei ole.

Kitsaskoht on nihkunud arusaamisse.

Kui genereerimine on kiire, muutuvad oluliseks:

  •  koodi hoolikas lugemine 
  •  õigete küsimuste esitamine 
  •  muudatuste sidumine olemasoleva süsteemiga 

Paljud organisatsioonid mõõdavad endiselt:

  •  arenduse kiirust 
  •  testide tulemusi 
  •  deploy sagedust 

Need mõõdavad väljundit.

Aga mitte seda, kas keegi tegelikult saab aru, mis süsteemis toimub.

Kuidas probleem päriselt tekib

See ei juhtu ühe suure veana. See tekib vaikselt.

Tüüpiline muster:

  1.  tehakse muudatus 
  2.  testid lähevad katki 
  3.  AI aitab need uuesti tööle 
  4.  mõni eeldus jääb kontrollimata 

Ja siis kordub sama:

probleem → kiire parandus → väiksem arusaam → uus probleem

Kood töötab, aga arusaam laguneb.

Ja oluline: vastutus ei kao ka siis, kui kood on genereeritud.

Kuidas arusaamise võlga vältida

Esimene samm on lihtne, aga tihti vahele jäetud:

Sõnasta enne, kui delegeerid

Kui nõue ei ole selge, ei ole ka tulemus selge.
 Selge eesmärk vähendab valesid lahendusi.

Dokumenteeri “miks”, mitte ainult “mis”

Kood ei selgita:

  •  miks see otsus tehti 
  •  millised alternatiivid olid 

Seetõttu on vaja lühikest ja ajakohast dokumentatsiooni:

  •  arhitektuursed otsused 
  •  olulised eeldused 
  •  kokkulepped 

Mitte pikk dokument, vaid elav arusaam.

Küsi enne kasutuselevõttu

Iga olulisema muudatuse puhul peaks suutma vastata:

  •  kuidas see töötab 
  •  milliseid erijuhte arvestati 
  •  mida kaaluti 

Kui vastused on udused, siis arusaamist ei ole veel piisavalt.

Kirjuta osa koodist ise uuesti

See ei ole raiskamine.
 See on viis kontrollida, kas sa tegelikult mõistad.

Kui sa ei suuda seda uuesti kirjutada, siis sa ei oma seda lahendust.

Hinda oma arusaamist

Lihtne küsimus:

“Kas ma suudan seda kellelegi selgitada?”

Kui vastus on “mitte päris”, siis seal on arusaamise võlg.

Kasuta AI-d mõtlemiseks, mitte ainult genereerimiseks

AI-st on rohkem kasu siis, kui:

  •  küsid selgitusi 
  •  kontrollid eeldusi 
  •  võrdled lahendusi 

Pelgalt koodi genereerimine ei loo arusaamist.

Kokkuvõte

AI ei kao kuhugi. Küsimus ei ole enam selles, kas seda kasutada.

Küsimus on, kas sa mõistad seda, mida sa kasutad.

Tugevamad meeskonnad ei ole need, kes kirjutavad kõige kiiremini koodi, vaid need, kes:

  • mõistavad oma süsteemi loogikat
  •  suudavad otsuseid selgitada 
  •  hoiavad arusaamise ajakohasena 

Sest lõpuks ei muutu probleemiks see, et kood ei tööta.

Probleemiks muutub see, et keegi ei saa enam aru, miks see töötab.