Mga nadagdag:
- Kakayahang baguhin ang hindi malinaw na mga kahilingan sa negosyo sa malinaw, masusubok na mga kinakailangan sa software at mga kwento ng user na may suporta sa AI
- Kakayahang ihambing ang mga kalamangan at kahinaan ng disenyo ng system, modelo ng data at mga desisyon sa arkitektura sa isang nakabalangkas na paraan sa AI
- Kakayahang kritikal na patunayan ang iminungkahing disenyo ng AI laban sa mga kinakailangan, scalability, at mga hadlang
Ang karamihan sa mga proyekto ng software ay nabigo hindi dahil sa masamang code, ngunit dahil sa hindi nauunawaang mga kinakailangan. Ang isang kahilingan sa isang pangungusap tulad ng "Hayaan ang mga user na mag-download ng mga ulat" ay nag-iiwan ng dose-dosenang mga tanong na hindi nasasagot: Sa anong format? Sino ang namamahala? Ilang records? Paano kung mabagal? Pagsusuri ng mga kinakailangan (pagsasalin ng isang kahilingan sa negosyo sa malinaw, masusubok na teknikal na pangangailangan) at disenyo ng software (pagbuo ng istraktura sa papel upang matugunan ang mga pangangailangang ito) ay ang yugto kung saan ang mga pinakamamahal na pagkakamali ay pinipigilan bago isulat ang code. Sa unit na ito, matututuhan nating gamitin ang AI bilang isang "kasosyo sa pag-iisip" sa yugtong ito: isang kasosyo na nagpapawalang-bisa sa kawalan ng katiyakan, nag-aayos ng mga opsyon, ngunit nasa iyo ang panghuling desisyon.
Ang AI ay gumagawa ng dalawang malalaking halaga dito. Una, ito ay nagtatanong ng mga tanong na iyong nilalaktawan; Dinadala nito sa ibabaw ang mga nakatagong pagpapalagay at mga gilid na kaso sa isang kahilingan. Pangalawa, mabilis nitong itinatala ang mga kalamangan at kahinaan ng isang desisyon sa disenyo. Ngunit iyon ang panganib: Ang AI ay magbibigay ng mga generic na rekomendasyon bilang "pinakamahusay na kasanayan" nang hindi lubos na nalalaman ang iyong konteksto (badyet, koponan, umiiral na sistema, legal na pagpilit). Trabaho mong salain ang payong ito laban sa sarili mong katotohanan.
Mga Konsepto: Kwento ng gumagamit: Isang maikling pangungusap na nagpapahayag ng pangangailangan sa anyo ng "... bilang, gusto kong magawa... dahil...". Pamantayan sa pagtanggap: Mga nasusubok na kundisyon na dapat matugunan para maituring na "tapos na" ang isang trabaho. Non-functional na kinakailangan: Mga kinakailangan na nauugnay sa "kung paano ito kikilos" sa halip na "kung ano ang gagawin nito", gaya ng bilis, seguridad, scalability.
Mula sa Malabong Kahilingan hanggang sa Masusubok na Kinakailangan
Ang isang mahusay na kinakailangan ay masusukat at mabe-verify. Hindi "hayaan ang system na maging mabilis", ngunit "hayaan ang mga resulta ng paghahanap na bumalik sa loob ng 500 ms". Narito ang isang hakbang-hakbang na paraan upang gamitin ang AI upang mabawasan ang kawalan ng katiyakan:
- Ibigay ang kahilingan kung ano ang nararapat at gawin ang tanong. Tanungin ang AI hindi para sa solusyon, ngunit una sa "ilista ang anumang hindi malinaw sa kahilingang ito bilang isang tanong."
- Ibigay mo ang mga sagot. Ikaw lang ang nakakaalam ng konteksto; Sagutin ang mga tanong ng AI gamit ang iyong tunay na mga hadlang sa negosyo.
- Isalin ito sa mga kwento ng gumagamit at pamantayan sa pagtanggap. Isalin ang nilinaw na pangangailangan sa mga masusubok na item.
- Magdagdag ng mga edge case at negatibong sitwasyon. "Walang laman na resulta", "hindi awtorisadong gumagamit", "masyadong malaking file" atbp.
Prompt sa pagkuha ng kalabuan: "Isasalin namin ang sumusunod na kahilingan sa negosyo sa isang kinakailangan sa software. Huwag ka munang magmungkahi ng solusyon. Una, kunin ang LAHAT ng kalabuan at mga nakatagong pagpapalagay na hindi nasasagot sa kahilingang ito bilang isang listahan ng mga tanong. Pagsamahin ang mga tanong sa ilalim ng mga sumusunod na heading: saklaw, user/awtoridad, dami ng data, pagganap, kundisyon ng error, seguridad. Kahilingan: 'Hayaan ang mga user na mag-download ng kasaysayan ng order'"
Kwento ng user + mga pamantayan sa pagtanggap: "Hatiin ang sumusunod na nilinaw na pangangailangan sa mga kwento ng user na sumusunod sa mga prinsipyo ng INVEST. Sumulat ng 3-5 masusubok na pamantayan sa pagtanggap para sa bawat kuwento (sa Given-When-Then na format). Magdagdag ng kahit 2 negatibong sitwasyon (hindi awtorisadong pag-access, walang laman na data). Kailangan: [isulat ang nilinaw na pangangailangan dito]"
Paghahambing ng mga Desisyon sa Disenyo sa AI
Ang disenyo ay isang pare-parehong trade-off: bilis laban sa flexibility, pagiging simple laban sa scalability? Inilalagay ng AI ang mga trade-off na ito sa isang mabilis na spreadsheet. Halimbawa, para sa feature na "magpadala ng abiso," maaari kang magdebate kung gagamit ng kasabay (ipadala kapag hiniling) o asynchronous (pila, ipadala sa background).
Prompt ng paghahambing ng disenyo: "Nagdidisenyo ako ng feature na 'magpadala ng abiso sa email sa user'. Paghambingin ang dalawang diskarte: (A) kasabay na paghahatid sa panahon ng kahilingan sa HTTP, (B) asynchronous na paghahatid sa background sa pamamagitan ng paglalagay nito sa queue ng mensahe. Gumawa ng talahanayan sa mga sumusunod na axes: oras ng paghihintay ng user, pagpapahintulot sa pagkakamali, pagiging kumplikado, gastos sa imprastraktura, ang kahirapan sa pagwawakas ng isang pangungusap sa kaso. Huwag kang magdesisyon para sa akin."
axis
kasabay na paghahatid
Asynchronous (pila)
Oras ng paghihintay ng user
Matagal (naghihintay ng padala)
Maikli (bumalik kaagad)
Pagpapahintulot sa kasalanan
Mababa (pumutok ang kahilingan kung sumabog ang pagpapadala)
Mataas (retry possible)
pagiging kumplikado
mababa
Katamtaman-mataas (imprastraktura ng pila)
Gastos sa imprastraktura
mababa
Kinakailangan ang mga karagdagang sangkap
Kung saan magkasya
Mababang volume, simpleng application
Mataas na volume, kritikal na paghahatid
Tip: Ang pagsasabi sa AI na "huwag magdesisyon para sa akin, ipakita lang sa akin ang mga opsyon at kundisyon" ay pinipilit kang mag-isip at binabawasan ang panganib na bulag na tumanggap ng isang mungkahi. Ang pinakamahusay na desisyon sa disenyo ay ang ginawa ng taong nakakaalam ng iyong konteksto (ikaw).
Mahina Prompt / Malakas na Prompt
MAHINA: "Magdisenyo ng database para sa sistema ng order." (Resulta: aling sukat, aling mga ugnayan, alin ang mga hadlang ay hindi malinaw; isang pangkalahatan, hindi makatotohanang pamamaraan.) MALAKAS: "Magmungkahi ng draft na modelo ng data para sa isang maliit na e-commerce. Mga Entidad: Customer, Order, Produkto, Item ng Order. Mga Limitasyon: maaaring maraming produkto sa isang order; ang presyo ng produkto ay maaaring magbago sa paglipas ng panahon, ngunit ang kasalukuyang presyo ay dapat pangalagaan; ~5000 ang dahilan kung bakit dapat mapanatili ang nakaraang order sa bawat araw. "Ipaliwanag mo na ikaw ang nagdesisyon. Tukuyin kung paano mo nalutas ang problema sa history ng presyo. Ibigay ito bilang isang listahan ng mga entity at field, hindi code."
Ang pagkakaiba ng isang malakas na prompt; scale (500 order bawat araw), panuntunan sa negosyo (dapat panatilihin ang nakaraang presyo) at ang gustong format ng output. Ang isang solong pangungusap tulad ng "Dapat mapanatili ang nakaraang presyo" ay ganap na nagbabago sa disenyo; Kung hindi mo ito tutukuyin, gagawa ang AI ng isang hindi tumpak ngunit mukhang makatotohanang diagram.
Mga Mini Case
Kaso 1 — Nakatagong palagay. Direktang kino-code ng isang team ang kahilingang "maaaring mag-upload ng larawan sa profile ang user." Ang isa pang koponan ay nagtanong sa AI tungkol sa kawalan ng katiyakan: "pinakamalaking laki? pinapayagan na mga format? hindi naaangkop na kontrol sa nilalaman? tanggalin ang lumang larawan?" Ito ay gumagawa ng 8 mga katanungan tulad ng. Nalaman ng unang koponan ang problema sa produksyon kapag napuno ng 20 MB na file ang server; Ang pangalawang koponan ay nilulutas ito sa disenyo.
Kaso 2 — Maling pagpapalagay ng sukat. Ang AI ay nagmumungkahi ng isang kumplikadong layer ng pag-cache para sa isang tampok sa pag-uulat. Kapag itinuro ng inhinyero na ang totoong data ay 30 ulat lamang bawat araw, pinapasimple ng AI ang mungkahi. Ang hindi pagtukoy sa sukat ay nagdudulot ng halaga ng hindi kinakailangang kumplikado; pagtukoy ay nakakatipid ng 2 linggo ng hindi kinakailangang trabaho.
Kaso 3 — Puwang sa pamantayan sa pagtanggap. "Ano ang mangyayari kung mabigo ang pagbabayad?" Dahil hindi kailanman tinanong ang tanong, mamarkahan pa rin ng isang sistema ng order ang order bilang "nakumpirma" kung sakaling hindi matagumpay na pagbabayad. Ang listahan ng mga negatibong senaryo na nabuo ng AI ay nakukuha ang puwang na ito; Pinipigilan ng 1 pamantayan sa pagtanggap ng linya ang totoong pagkawala ng pera.
Mga karaniwang pagkakamali
- Direktang pagpasa ng kahilingan sa code. Ang code na nakasulat bago malutas ang kalabuan ay mabilis na malulutas ang maling problema.
- Blindly pagkuha ng pangkalahatang "pinakamahusay na kasanayan" ng AI. Kung hindi mo tutukuyin ang iyong konteksto (scale, budget, team) ang rekomendasyon ay hindi gagana para sa iyo.
- Nilaktawan ang mga di-functional na kinakailangan. Kung ang bilis, seguridad at sukat ay hindi tinukoy, ang disenyo ay hindi kumpleto.
- Iniisip lang ang masayang senaryo. Ang mga negatibong sitwasyon tulad ng walang laman na data, hindi awtorisadong gumagamit, katayuan ng error ay dapat isama sa disenyo.
- Pagdelegasyon ng desisyon sa AI. Ang AI ay bumubuo ng mga pagpipilian; Ikaw ang magpapasya kung aling trade-off ang nababagay sa iyong negosyo.
Sa buod
Ang pagsusuri at disenyo ng mga kinakailangan ay ang yugto kung saan nahuhuli ang pinakamurang mga pagkakamali. Dito, bumubuo ang AI ng mga tanong na naghahayag ng kawalan ng katiyakan, nag-draft ng mga kwento ng user at pamantayan sa pagtanggap, at nagdidisenyo ng mga chart ng trade-off. Ngunit ikaw lamang ang nakakaalam ng konteksto; Trabaho mong i-filter ang mga rekomendasyon ng AI batay sa iyong sukat, badyet, koponan, at legal na mga hadlang at gawin ang panghuling desisyon. Ang disiplina ng "huwag gumawa ng desisyon para sa akin, ipakita sa akin ang mga pagpipilian" ay humahantong sa parehong mas mahusay na disenyo at mas malalim na pag-aaral.
Gawain ng aplikasyon
Pumili ng isang pangungusap na kahilingan sa trabaho mula sa iyong konteksto. Una, ilapat ang ambiguity prompt sa AI at sagutin ang mga tanong sa iyong tunay na mga hadlang. Pagkatapos ay isalin ang nilinaw na pangangailangan sa hindi bababa sa 2 kwento ng gumagamit at 3 pamantayan sa pagtanggap para sa bawat isa; Magsama ng hindi bababa sa 1 negatibong senaryo. Panghuli, lumikha ng talahanayan ng paghahambing para sa isang desisyon sa disenyo (kasabay/asynchronous, istraktura ng talahanayan, atbp.) at isulat ang iyong sariling desisyon sa 2 pangungusap.
checklist
- [ ] Inalis ko ang mga ambiguity bilang mga tanong bago ipasa ang kahilingan sa code.
- [ ] Ibinigay ko ang konteksto (scale, authority, performance, legal constraint) sa AI.
- [ ] Sinira ko ang mga kwento ng user sa masusubok na pamantayan sa pagtanggap.
- [ ] Nagdagdag ako ng kahit isang downside/edge scenario.
- [ ] Sinuri ko ang desisyon sa disenyo gamit ang trade-off table.
- [ ] Ginawa ko ang panghuling desisyon batay sa aking konteksto, hindi ko ito ipinaubaya sa AI.