Luarea deciziilor este o parte inerentă a ingineriei. Acest lucru ar putea însemna alegerea unei baze de date, a unei cozi de mesaje sau a unei biblioteci CSV care va rula în producție împotriva datelor clienților. Când mai multe opțiuni sunt viabile, dar compromisurile diferă, aveți nevoie de o modalitate pragmatică de a restrânge câmpul. Scopul este de a decide rapid, logic și eficient. O strategie utilă este Această abordare vă ajută să restrângeți sistematic opțiunile până când alegerea devine clară.Obiectivul este de a arăta cum puteți obține rapid „forma” unei probleme, contururile brute ale spațiului soluției, fără o analiză exhaustivă a fiecărei opțiuni. Elimination by Aspects (EBA) Ce este eliminarea prin aspecte? Eliminarea prin aspecte este o heuristică de luare a deciziilor introdusă de psihologul Amos Tversky în 1972. Ideea de bază este de a reduce treptat o listă de alternative prin aplicarea unui criteriu (aspect) la un moment dat. Key characteristics of EBA: Aceasta înseamnă că o opțiune care eșuează un criteriu esențial este în afara, indiferent cât de mare este pe alți factori. Faceți efectiv o serie de decizii da/nu pe fiecare aspect, mai degrabă decât să comparați totul împotriva tuturor la un moment dat. Exemplu: Cumpărarea unei mașini de tăiat gazon cu EBA Pentru a ilustra procesul, să folosim mai întâi un exemplu non-software: cumpărarea unei mașini de tuns iarba. Tipul de mașină de tăiat: Este o mașină de călătorie, robotică sau împingătoare? Dimensiunea curții: Cât de mare este suprafața de care aveți nevoie pentru a tăia? Teritoriu: Trebuie să tăiați pe pante abrupte (15° sau mai mult)? Putere și întreținere: Preferați puterea motorului pe gaz sau electric (baterie / cablu)? Gama bugetară: Care este plafonul bugetului dvs.? Prin aplicarea secvențială a acestor aspecte, puteți reduce opțiunile de la mii la o mână. În esență, puneți mai întâi cele mai consecvente întrebări (acele care împart cel mai mult câmpul). EBA funcționează cel mai bine atunci când alegeți aspecte care maximizează câștigul de informații la începutul procesului. Am descoperit că ChatGPT Thinking/Pro, sau Gemini 2.5 Pro (ambele cu căutare pe web activată) au generat întrebări destul de bune în stilul EBA, solicitarea pe care am folosit-o a fost "Care sunt cele mai bune 5 întrebări pentru a-mi restrânge căutarea pentru grătar?" Exemplu: Selectarea unei biblioteci CSV Parser cu EBA Acum, să aplicăm EBA la o decizie de inginerie software. Să presupunem că trebuie să alegeți o bibliotecă de analiză CSV pentru un proiect. Iată cum ar putea arăta o strategie de eliminare după aspecte: 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: Am aplicat eliminarea prin aspecte la 200 de biblioteci npmjs etichetate cu "csv" prin atașarea tuturor celor 200 de citiri la un chat Gemini 2.5 Pro, iată cum le-am restrâns Am aplicat eliminarea prin aspecte la 200 de biblioteci npmjs etichetate cu "csv" prin atașarea tuturor celor 200 de citiri la un chat Gemini 2.5 Pro, iată cum le-am restrâns Rafinarea ulterioară a „descărcărilor de la server, nu ale utilizatorilor bazate pe browser” a redus opțiunile la 30. Acest proces iterativ a permis filtrarea din ce în ce mai specifică în funcție de funcționalitatea dorită. Dacă nu sunteți dispus să descărcați 200 de citiri (nu vă învinovățesc), invitația pe care am folosit-o pentru Gemini a fost "utilizarea eliminării prin întrebări de aspect pentru a-mi spune ce bibliotecă ar trebui să folosesc pe baza răspunsurilor mele la întrebările dvs. pentru a selecta o bibliotecă de analiză csv pe npmjs.org." și apoi m-a intervievat și a ales o bibliotecă pentru mine pe baza răspunsurilor mele. Beneficiile utilizării EBA în luarea deciziilor tehnice Utilizarea eliminării prin aspecte în deciziile de inginerie software oferă mai multe beneficii: Reduce suprasolicitarea: Concentrându-vă pe un criteriu la un moment dat, evitați epuizarea mentală de a cântări fiecare factor al fiecărei opțiuni simultan. Asigurați-vă că cerințele care trebuie îndeplinite: EBA vă obligă să identificați și să acordați prioritate cerințelor dvs. necontractabile. Proces transparent și defensibil: natura pas cu pas a ABE face ca procesul de luare a deciziilor să fie transparent. Reduce prejudecățile, promovează obiectivitatea: Deciziile pe criterii înainte de a se îndrăgosti de o anumită opțiune pot atenua prejudecățile genunchiului față de o tehnologie cunoscută sau "bright new". Avertismentele și limitările de care trebuie să aveți grijă Nici o tehnică de luare a deciziilor nu este perfectă. Țineți cont de aceste avertismente atunci când utilizați eliminarea prin aspecte: Non-Compensatory = No Trade-Offs: Deoarece EBA este non-compensator, o opțiune altfel mare va fi aruncată dacă nu reușește pe unul dintre criteriile alese. sfat: Alegeți cu atenție aspectele de eliminare și asigurați-vă că fiecare este într-adevăr un deal-breaker. Este de obicei înțelept să începeți cu cel mai înalt aspect de prioritate, în esență, să afirmați „dacă nu are X, nimic altceva nu contează” numai pentru X-urile cu adevărat fundamentale. Necesită criterii clare, măsurabile: EBA funcționează cel mai bine atunci când aspectele dvs. sunt bine definite. De exemplu, definiți scalabilitatea ca „trebuie să se ocupe de >10k solicitări/sec” sau securitatea ca „trebuie să nu aibă rapoarte critice de completare în ultimul an”, indiferent de contextul dvs. Poate să nu câștige un câștigător unic: Uneori veți trece prin lista dvs. de aspecte și totuși veți ajunge cu o legătură sau câțiva candidați viabili. Îmbrăcăminte Eliminarea prin aspecte este un instrument util în caseta de instrumente de luare a deciziilor pentru inginerii de software. Ori de câte ori vă confruntați cu o listă înfricoșătoare de tehnologii sau alegeri de proiectare, gândiți-vă în termeni de aspecte: aflați ce trebuie să aveți și începeți să tăiați opțiunile care nu verifică aceste casete. În lumea tehnologiei în mișcare rapidă, unde apar săptămânal noi biblioteci și cadre, această abordare vă poate ajuta pe dvs. și echipa dvs. să evitați paralizia analizelor și să luați decizii cu încredere. În cele din urmă, eliminarea prin aspecte nu va garanta o alegere perfectă (nici o metodă nu poate), dar vă va oferi un proces rațional, repetabil pentru a ajunge la o alegere bună care să răspundă nevoilor dumneavoastră.