Ieguvumi:
- Spēja atšķirt, kur AI nodrošina reālu ātrumu programmatūras izstrādes dzīves ciklā un kur lēmums un atbildība paliek inženiera ziņā
- Spēja pielietot trīsslāņu inženierijas disciplīnu, kas pārbauda katru kodu un dizainu, kas izveidots, veicot apkopošanu, testēšanu un pārskatīšanu.
- Iegūstiet ieradumu notīrīt kontekstu, lai izmantotu AI, nekopīgojot konfidenciālu pirmkodu, akreditācijas datus un klientu datus.
Aplūkojot datorinženiera dienu, aina ir līdzīga vairumā komandu: biznesa pieprasījuma izpratne, projektēšana, koda rakstīšana, sveša koda lasīšana, atkļūdošana (process, kurā tiek noskaidrots, kāpēc programma darbojas nepareizi, un to labošana), testu rakstīšana, dokumentācijas sagatavošana, koda pārskatīšana un sapulču apmeklēšana. Citiem vārdiem sakot, laiks, kas veltīts reālam "inženieru spriedumam", tas ir, vai risinājums ir pareizs, drošs un ilgtspējīgs, tiek saspiests atkārtotā darbā. Šeit tiek izmantots mākslīgais intelekts (īsumā AI; programmatūra, kas strādā ar tekstu un kodu ar lielu valodas modeli). AI nepieņem lēmumu jūsu vietā; Tas sagatavo jūs lēmuma pieņemšanai, izveido koda skeletu, sašaurina kļūdu un nostāda priekšā izstrādātu melnrakstu. Visā šajā modulī AI pozicionēsim nevis kā “automātisko programmētāju”, bet gan kā disciplinētu pāru programmēšanas partneri, kura rezultāti tiek apkopoti, pārbaudīti un pārskatīti katru reizi.
Šajā pirmajā daļā mēs noskaidrojam trīs lietas. Kādos programmatūras izstrādes dzīves cikla posmos (posmās, ko programmatūra iziet no idejas līdz ražošanai: analīze, projektēšana, kodēšana, testēšana, izvietošana, uzturēšana) AI rada reālu vērtību; kādi lēmumi ir stingri jāpaliek inženiera ziņā; un kāda ir pārbaudes un konfidencialitātes disciplīna, kas jums jāievēro, to darot. Ja šis jumts nav pareizi uzstādīts, paņēmieni turpmākajās vienībās var kļūt bīstami; Jo programmatūras kļūda vienlaikus sasniedz miljoniem lietotāju un var pārvērsties par drošības ievainojamību.
Jēdzieni: Halucinācijas: AI pārliecinošs metodes, bibliotēkas, API vai uzvedības izdomājums, kas patiesībā neeksistē. Konteksts: ievade, ko sniedzat AI (kods, kļūdas ziņojums, prasība, ierobežojumi). Verifikācija: izvades pārbaude neatkarīgā veidā (kompilācija, testēšana, dokumentācija). Šie trīs jēdzieni ir visa moduļa pamats.
Kuros uzņēmumos ir AI paātrinātājs, kādos uzņēmumos tas ir riskants?
Programmatūras darbi rezultātu ziņā ir divējādi. Vienā galā ir atgriezeniski, zema riska sagatavošanas darbi; No otras puses, ir grūti atgriežami uzdevumi, kas nonāk ražošanas vidē un var izraisīt datu zudumu, drošības ievainojamības vai pārtraukumus. AI vērtība mainās atkarībā no tā, kur šajā spektrā atrodaties.
biznesa veids
AI ieguldījums
Inženiera loma
Koda skelets / katla plāksne
Ātra atkārtotas struktūras ģenerēšana
Loģikas un malu statusa kontrole
atkļūdošana
Hipotēze un iespējamo cēloņu saraksts
Reprodukcija un pamatcēloņa apstiprināšana
kontroldarbu rakstīšana
Testa uzmetuma un scenārija izveide
Nozīmīga apgalvojuma un darbības jomas pārbaude
pārstrukturēšana
Refaktoringa priekšlikums
Uzvedības uzturēšana, izmantojot testēšanu
Dokumentācija
Pirmais projekts un struktūra
Pareizības pārbaude pret kodu
Arhitektūras/drošības lēmums
Iespēju saraksts, plusi un mīnusi
Galīgais lēmums un atbildība
Noteikums ir vienkāršs: AI izvades risks ir vienāds ar bojājumiem, kas radīsies, ja šī izvade radīs kļūdu. Nepareiza mainīgā nosaukuma ierosināšana ir nekaitīga; Nepareiza autentifikācija (pārbaude, vai lietotājs patiešām ir tas, par ko viņš uzdodas) padara visu sistēmu neaizsargātu. Tāpēc pirmais jautājums, kas jāuzdod pirms izvades izmantošanas, ir šāds: "Kas notiek, ja tas ir nepareizi, un kas un kad to pamana?"
Uzmanību: AI rada tekošu un pārliecinošu kodu. Plūsma negarantē precizitāti. Valodas modelis var ticami radīt funkcijas nosaukumu, kas faktiski neeksistē, nepareizu parametru secību vai pat nedrošu modeli. Programmatūrā tas nepaliek uz papīra; Tas apkopo, palaiž un eksplodē ražošanā.
Lēmumi, kas jāatstāj inženiera ziņā
Dažus lēmumus nekad nevajadzētu pilnībā automatizēt; rada tehniskus, juridiskus un ētiskus riskus:
- Ražošanas apstiprināšana: koda izlaišana ražošanā un atbildība par to.
- Drošība un arhitektūra: dārgi lēmumi, piemēram, autentifikācija, autorizācija, šifrēšana un datu modelis.
- Licence un autortiesības: saražotā koda izmantošana komercproduktā un atbilstība licencei.
- Darbs ar konfidenciāliem datiem: Darījumi ar klientu datiem, pirmkoda noslēpumiem un identitātes informāciju.
Brīdinājums: pat ja mākslīgais intelekts saka "šis kods ir drošs un gatavs ražošanai", tā pieņemšana bez drošības pārbaudes, koda pārskatīšanas un apstiprināšanas reālā slodzē ir nepieņemama. Darbā, kas ir svarīgs drošībai, mākslīgā intelekta izvade nekad neaizstāj kompetenta inženiera apstiprinājumu; Jebkurš rezultāts, kas noved pie lēmuma pieņemšanas, pirms ieviešanas ir neatkarīgi jāpārbauda un jāapstiprina pilnvarotajam inženierim.
Pārbaudes disciplīna: trīsslāņu kontrole
Izmantojiet trīs vadības līmeņus, lai AI izvadi izmantotu kā vecākais recenzents, nevis akli. Šis ir pamata reflekss, ko mēs atkārtosim visā modulī.
- Kompilācija un statiskā pārbaude: vai kods patiešām tiek kompilēts/palaists? Vai ir veida kļūdas, neizmantoti mainīgie, neeksistējošas API? Ko saka statiskās analīzes rīks (rīks, kas pārbauda kodu, to nepalaižot)?
- Neatkarīga reproducēšana (testēšana): palaidiet kodu, izmantojot mazas, zināmas ievades, un pārbaudiet, vai iegūstat gaidīto rezultātu. Izmēģiniet malas gadījumus (nulle, nulle, negatīvs, milzīgs).
- Avota verifikācija: katra API, bibliotēkas versija un valodas funkcija, ko izmanto AI, ir jāpārbauda oficiālajā dokumentācijā.
Verifikācijas uzvedne (atvieglo izvades pārbaudi): "Uzskaitiet VISAS ārējās bibliotēkas, metodes un valodas līdzekļus, ko izmantojat savā kodā. Katrai no tām norādiet, kurā versijā tas ir pieejams, un atzīmējiet to ar "jāpārbauda no dokumentācijas". Neveidojiet nevienu API, par kuru neesat pārliecināts; ja neesat pārliecināts, skaidri ierakstiet "nav pārliecināts". Uzskaitiet arī visus adrešu gadījumus kā atsevišķus gadījumus."
Kritizējiet savu koda uzvedni: "Skatieties kritiski uz tikko uzrakstīto kodu, piemēram, vecāko inženieri, kurš jūs nolīga. Norādiet konkrētus vienumus zem šiem trim virsrakstiem: (1) loģikas/malas reģistra kļūdas, (2) drošības riski, (3) veiktspējas vai lasāmības problēmas. Katram vienumam ierakstiet "kāpēc ir problēma" un "Ieteikts labojums". Neatrodiet problēmu, sakiet, ja nav problēmu. lai to izgreznotu."
Vāja uzvedne / spēcīga uzvedne
VĀJS:"Uzrakstiet man lietotāja autentifikācijas funkciju."(Rezultāts: nav skaidrs, kura valoda, kura kārtula, kura kļūda; vispārējs kods, bieži vien nedrošs vai ārpus konteksta.)STRONG:"Rakstiet Python 3.11 e-pasta validācijas funkciju. Ievade: virkne. Izvade: True, ja derīga, pretējā gadījumā nepatiesa. Noteikumi: nepieciešama tukša virkne ārēja bibliotēka Nepatiesa, DONOT RUSE. Piecu paraugu pārbaude zem funkciju pievienošanas bloka: derīga, tukša, bez “@”, dubultā “@”, satur tikai atstarpes.
Atšķirība ir kontekstā. Spēcīga uzvedne; Tajā ir iekļauta valoda, versija, ievades-izejas līgums, ierobežojumi un testa prasības. Šī vienīgā disciplīna ievērojami samazina halucināciju un nedrošā koda risku.
Mini futrāļi
1. gadījums — izdomāta metode. Izstrādātājs dzird no AI, ka datumu bibliotēkā ir metode, ko sauc par date.addBusinessDays(5), un tā ir izskaidrota pārliecinošā veidā. Apskatot dokumentāciju, viņš redz, ka tādas metodes nav, pareizais veids ir manuāla cilpa. Halucinācijas tiek fiksētas, pirms tās nonāk ražošanā, veicot 10 minūšu pārbaudi.
2. gadījums — malas stāvokļa zudums. AI rada funkciju “aprēķināt vidējo”; Tas darbojas, pārbaudot ar 1000 datu rindām. Tomēr, ja saraksts ir tukšs, tas dod dalījumu ar nulli kļūdu. Tā kā inženieris pievienoja tukšo ievades testu, viņš redz un izlabo kļūdu, pirms tā tiek aktivizēta. Vienas malas stāvokļa pārbaude novērš ražošanas trauksmi pulksten 3:00.
3. gadījums — privātuma risks. Eksperts gatavojas publiskā rīkā ielīmēt failu ar faktisko datu bāzes savienojuma virkni un API atslēgu. Atceras iestādes politiku; Tas aizstāj noslēpumus ar <REDACTED>, samazina kodu līdz reprezentatīvam piemēram un pieprasa to. Tādējādi viņš saņem palīdzību 5 minūšu laikā, taču viņa identitātes informācija neiznāk.
Princips darbam ar slepeno kodu un identitātes informāciju
Programmatūras jutīgākā daļa; pirmkoda noslēpumi, identitātes informācija (API atslēga, parole, marķieris) un klienta/personas dati. Pamatprincips: sakopt pirms dalīšanas, jautājiet tikai problēmas būtību ar reprezentatīvu piemēru, ja iespējams.
Anonimizēts uzvednes modelis: "Šajā funkcijā ir kļūda. Es aizstāju faktisko biznesa loģiku un slēptās konstantes ar reprezentatīvām vērtībām (API atslēga, tabulu nosaukumi, lauku nosaukumi vispārīgie). Problēma: ievadē X tiek parādīta kļūda Y. Vienkārši atrodiet loģikas kļūdu šajā reprezentatīvajā kodā un izskaidrojiet laboto versiju. [reprezentatīvais kods]."
Padoms. Ja šaubāties, veiciet šo testu: "Vai manai organizācijai varētu rasties problēmas, ja es to uzrakstīšu publiski forumā?" Pat ja atbilde ir neskaidra, vispirms notīriet to. Atiestatīšana vienmēr ir lētāka nekā vēlāk meklēt noplūdi.
Biežas kļūdas
- Izvades izmantošana bez kompilēšanas/testēšanas. “AI uzrakstīja” nav attaisnojums; Katrs koda fragments tiek pārbaudīts, to palaižot.
- Pieprasījumu veikšana bez konteksta. Ja valoda, versija, ievade-izeja un ierobežojumi nav norādīti, kods kļūst vispārīgs un bieži vien nedrošs.
- Kopīgojiet konfidenciālu informāciju bez domāšanas. API atslēgu, paroli un klienta datus nedrīkst atbrīvot, ja tie nav notīrīti.
- Jauc precīza valoda ar precizitāti. Jo pārliecinošāk AI runā, jo uzmanīgākam jums jābūt; Pārliecināts tonis nav pierādījums.
- Lēmuma pieņemšanas deleģēšana AI. Lēmums par ražošanu, drošību un arhitektūru paliek inženiera ziņā; AI ražo tikai materiālus.
Rezumējot
AI paātrina atkārtotas un laikietilpīgas programmatūras darba daļas: skeleta kodu, testa uzmetumu, kļūdu samazināšanu, dokumentāciju. Tomēr lēmums un atbildība paliek inženierim. Katrai izvadei ir jāiztur trīs kontroles slāņi (kompilēšana/statiska, testēšana, avots). Uzvedņu rakstīšana ar kontekstu un slēptās informācijas notīrīšana ir divi galvenie ieradumi, kurus mēs atkārtosim katrā šī moduļa vienībā. Izmantojot AI ar disciplīnu, jūs iegūstat ātrumu; Lietojot to bez disciplīnas, ražošanā tiek izmantotas kļūdas un ievainojamības.
Lietojumprogrammas uzdevums
Izvēlieties nelielu kodēšanas uzdevumu no sava darba vai iedomāta projekta (piemēram, validācijas funkciju). Vispirms uzrakstiet vāju uzvedni un iegūstiet izvadi. Pēc tam izmantojiet šīs vienības jaudīgo uzvednes modeli: pievienojiet valodu/versiju, ievades-izejas līgumu, ierobežojumus un pārbaudi. Novietojiet abas izdrukas blakus un uzrakstiet atšķirību. Pēc tam apkopojiet robusto izvadi un pārbaudiet to ar vismaz trim malas gadījumiem (nulle, nulle/negatīvs, negaidīts formāts) un atzīmējiet, ko jūs atradāt, kurā testā.
kontrolsaraksts
- [ ] Uzvednei pievienoju valodu, versiju un ievades-izvades līgumu.
- [ ] Es uzrakstīju "Neizdomājiet, pastāstiet man, ja neesat pārliecināts" un tvēruma ierobežojumu.
- [ ] Es apkopoju/izlaidu kodu, pārbaudīju, vai nav statisku brīdinājumu.
- [ ] Es testēju ar vismaz trim malām.
- [ ] Es pārbaudīju izmantotās API no oficiālās dokumentācijas.
- [ ] Es notīrīju visus slepenos kodus/akreditācijas datus vai izmantoju uzņēmuma rīku.
- [ ] Es apstiprināju, ka lēmums par laišanu ražošanā un drošība paliek cilvēka ziņā.