donošenje odluka je sastavni dio inženjeringa. To može značiti odabir baze podataka, reda poruka ili CSV knjižnice koja će se pokrenuti u proizvodnji protiv podataka kupaca. Kada je nekoliko opcija izvedivo, ali se kompromisi razlikuju, potreban vam je pragmatičan način za sužavanje polja. Cilj je donijeti odluku brzo, logično i učinkovito. Jedna od korisnih strategija Cilj je pokazati kako možete brzo dobiti "oblik" problema, surove obrise rješenja prostora, bez iscrpne analize svake opcije. Elimination by Aspects (EBA) Što je eliminacija po aspektima? Elimination by Aspects je heuristika donošenja odluka koju je 1972. godine uveo psiholog Amos Tversky. Osnovna ideja je postupno smanjiti popis alternativa primjenom jednog kriterija (aspekta) odjednom. Key characteristics of EBA: To znači da je opcija koja ne uspijeva jedan bitni kriterij je izvan, bez obzira koliko je dobar na drugim čimbenicima. Učinkovito donosite niz da / ne odluka o svakom aspektu, umjesto da uspoređujete sve protiv svega odjednom. Primjer: Kupnja travnjaka s EBA-om Da bismo ilustrirali proces, prvo ćemo upotrijebiti ne-softver primjer: kupnja travnjaka. Vrsta Mower: Je li to vožnja-on, robotički ili push mlaznica? Veličina dvorišta: Koliko je velika površina koju trebate rezati? Teren: Trebate li rezati na strmim padinama (15° ili više)? Napajanje i održavanje: Da li preferirate napajanje plinskih ili električnih motora (baterija / žica)? Proračunski raspon: Koji je vaš proračunski plafon? U osnovi, prvo postavljate najposljednija pitanja (ona koja najviše dijele polje). EBA najbolje funkcionira kada odaberete aspekte koji maksimalno povećavaju dobivanje informacija rano u procesu. Otkrio sam da je ChatGPT Thinking / Pro, ili Gemini 2.5 Pro (oba s omogućavanjem web pretraživanja) generirala prilično dobra pitanja u stilu EBA-a, poziv koji sam koristio bio je "Koji su top 5 pitanja za sužavanje pretraživanja tračnika?" Primjer: Odabir knjižnice CSV Parser s EBA-om Sada, primijenimo EBA na odluku o softverskom inženjeringu. Pretpostavimo da morate odabrati knjižnicu za analizu CSV-a za projekt. Evo kako bi mogla izgledati strategija eliminacije po aspektima: Do a broad search filtered by your programming language to list all CSV parser libraries that could be relevant. This is your initial pool. Start with the Universe of Options: Immediately discard any libraries that look obviously unsuitable for production use. Suitability for Production: Apply a few must-have sanity criteria to the remaining list: Basic Viability Check: The library should at least compile/build or install cleanly. Compilation/Installation: While not a perfect metric, check if the library has at least a minimal level of adoption, for instance, a few hundred stars on GitHub or a decent number of weekly downloads on NPM/PyPI. Popularity/Community Usage: If there’s no README or documentation, that’s a huge red flag. Documentation: If it’s been out for a while, then there is more time for people to report the package being malicious, etc. When was the package published, was it yesterday? With a shorter list in hand, introduce more specific criteria based on your project’s needs: Feature and Performance Requirements: Do you need to parse very large CSV files or do streaming? Performance: Identify required features (e.g., does it handle quoted fields correctly? Can it parse into custom data types or handle different delimiters? Does it also support writing CSV, if you need that?). Features: Consider how the library handles malformed data or edge cases (like newline characters within fields, missing values, etc.). Robustness: Does the library drag in huge external dependencies or native modules? Dependencies: Is the library actively maintained? Maintenance: By this point, you’ve likely narrowed it down to a handful (or even a single) candidate that meets all your aspects. Final Selection: Primijenio sam eliminaciju po aspektima na 200 npmjs knjižnica označenih "csv" pričvršćivanjem svih 200 čitanja na razgovor Gemini 2.5 Pro, evo kako sam ih suznio Primijenio sam eliminaciju po aspektima na 200 npmjs knjižnica označenih "csv" pričvršćivanjem svih 200 čitanja na razgovor Gemini 2.5 Pro, evo kako sam ih suznio Daljnje usavršavanje za „stranicu na poslužitelju, a ne preuzimanje korisnika na temelju preglednika“ smanjilo je izbor na 30. Ovaj iterativni proces omogućio je sve specifičnije filtriranje na temelju željene funkcionalnosti. Ako niste spremni preuzeti 200 čitanja (ne krivim vas), poziv koji sam koristio za Gemini bio je "koristite eliminaciju po aspektima pitanja da mi kažete koju knjižnicu trebam koristiti na temelju mojih odgovora na vaša pitanja da odaberem knjižnicu CSV-a na npmjs.org." i onda me intervjuirao i odabrao knjižnicu za mene na temelju mojih odgovora. Prednosti korištenja EBA-e u donošenju tehničkih odluka Upotreba eliminacije po aspektima u softverskim inženjerskim odlukama nudi nekoliko prednosti: Smanjuje opterećenje: Fokusiranjem na jedan kriterij u isto vrijeme, izbjegavate mentalno iscrpljenost od težine svakog čimbenika svake opcije istodobno. Osigurava da su ispunjeni zahtjevi koji se ne mogu pregovarati: EBA vas prisiljava da identificirate i prioritizirate svoje zahtjeve koji se ne mogu pregovarati. Transparentni i odgovorni postupci: Korak po korak EBA-e čini vaš postupak donošenja odluka transparentnim. Smanjuje predrasude, potiče objektivnost: odlučivanje o kriterijima prije zaljubljivanja u određenu opciju može ublažiti predrasude koljena prema poznatoj ili "sjajnoj novoj" tehnologiji. Upozorenja i ograničenja za promatranje Nijedna tehnika donošenja odluka nije savršena. Imajte na umu ova upozorenja kada koristite eliminaciju po aspektima: Ne-kompenzacijski = Nema trgovanja: Budući da je EBA ne-kompenzacijska, inače velika opcija bit će izbačena ako ne uspije po jednom odabranom kriteriju. Obično je pametno početi s najvišim prioritetnim aspektom, u osnovi, tvrditi "ako nema X, ništa drugo nije važno" samo za istinski temeljne X-ove. Zahtijeva jasne, mjerljive kriterije: EBA najbolje funkcionira kada su vaši aspekti dobro definirani. na primjer, definirajte skalabilnost kao „mora se nositi s >10k zahtjeva/sek” ili sigurnost kao „mora imati nikakvih kritičnih izvješća o ispunjenju u posljednjoj godini”, što odgovara vašem kontekstu. Može ne donijeti jedinstvenog pobjednika: Ponekad ćete proći kroz svoj popis aspekata i još uvijek završiti s vezom ili nekoliko održivih kandidata. ako višestruke opcije preživljavaju sve vaše filtre, možete ih zatim prebaciti na usporedbu na sekundarne atribute ili čak napraviti dokaz koncepta s svakim. Okrcati se Eliminiranje po aspektima je koristan alat u alatnoj kutiji za donošenje odluka za softverske inženjere. Kad god se suočite s zastrašujućim popisom tehnologija ili dizajnerskih izbora, razmislite u smislu aspekata: utvrdite svoje obveze i počnite odrezati opcije koje ne provjeravaju te kutije. U brzo rastućem tehnološkom svijetu, gdje se nove knjižnice i okviri pojavljuju tjedno, ovaj pristup može pomoći vama i vašem timu da izbjegnete paralizu analize i donosite odluke s povjerenjem. U konačnici, eliminacija po aspektima neće jamčiti savršen izbor (ni jedna metoda ne može), ali će vam dati racionalan, ponovljiv proces da dođete do dobrog izbora koji zadovoljava vaše potrebe.