Beslutningstagning er en iboende del af ingeniørarbejde. Det kan betyde, at du vælger en database, en meddelelsesreje eller et CSV-bibliotek, der vil køre i produktion mod kundedata. Når flere muligheder er levedygtige, men kompromisser adskiller sig, har du brug for en pragmatisk måde at indsnævre feltet på. En nyttig strategi er Målet er at vise, hvordan du hurtigt kan få "formen" af et problem, de grove konturer af løsningsrummet, uden udtømmende analyse af hver mulighed. Elimination by Aspects (EBA) Hvad er eliminering af aspekter? Elimination by Aspects er en beslutningstagning heuristik introduceret af psykolog Amos Tversky i 1972.Kernen ideen er at gradvist reducere en liste over alternativer ved at anvende et kriterium (aspekt) ad gangen. Så du flytter til det næste kriterium, og så videre, indtil du er tilbage med en håndterbar shortlist eller endda en enkelt vinder. Key characteristics of EBA: Det er en iterativ, ikke-kompensatorisk proces. Dette betyder, at en mulighed, der fejler et væsentligt kriterium, er ude, uanset hvor stor den er på andre faktorer. Du træffer effektivt en række ja/nej-beslutninger om hvert aspekt, i stedet for at sammenligne alt mod alt på én gang. Eksempel: Køb en græsplæneklipper med EBA For at illustrere processen, lad os bruge et ikke-software eksempel først: købe en plæneklipper. Type Mower: Er det en ride-on, robot eller push-klipper? Yard Size: Hvor stort er det område, du har brug for at skære? Terræn: Har du brug for at skære på stejle skråninger (15° eller mere)? Strøm & Vedligeholdelse: Foretrækker du gasmotor eller elektrisk (batteri / ledning)? Budget Range: Hvad er dit budget loft? Ved at anvende disse aspekter sekventielt, kan du skære mulighederne ned fra tusind til en håndfuld. I det væsentlige stiller du de mest konsekvente spørgsmål først (de, der deler feltet mest). EBA fungerer bedst, når du vælger aspekter, der maksimerer informationsindtjening tidligt i processen. Jeg fandt, at ChatGPT Thinking/Pro, eller Gemini 2.5 Pro (begge med web-søgning aktiveret) genererede ret gode EBA-stil spørgsmål, den opfordring jeg brugte var "Hvad er de 5 øverste spørgsmål til at indsnævre min plæneklipper søgning?". Eksempel: Vælg et CSV Parser-bibliotek med EBA Lad os nu anvende EBA til en software engineering beslutning. Antag, at du skal vælge et CSV-analysebibliotek til et projekt. Her er, hvordan en eliminering-af-aspekter-strategi kan se ud: 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: Jeg anvendte eliminering af aspekter til 200 npmjs biblioteker tagget med "csv" ved at vedhæfte alle 200 readmes til en Gemini 2.5 Pro chat, her er hvordan jeg indsnævrede dem Jeg anvendte eliminering af aspekter til 200 npmjs biblioteker tagget med "csv" ved at vedhæfte alle 200 readmes til en Gemini 2.5 Pro chat, her er hvordan jeg indsnævrede dem Yderligere forfining for "server-side, ikke browser-baserede bruger downloads" reducerede valgmulighederne til 30. Denne iterative proces tillod mere og mere specifik filtrering baseret på ønsket funktionalitet. Hvis du ikke er villig til at downloade 200 læsninger (jeg bebrejder dig ikke), var den opfordring, jeg brugte til Gemini, "bruge fjernelse af aspekter af spørgsmål for at fortælle mig, hvilket bibliotek jeg skal bruge baseret på mine svar på dine spørgsmål for at vælge et csv parser-bibliotek på npmjs.org." og så interviewede det mig og valgte et bibliotek for mig baseret på mine svar. Fordele ved at bruge EBA i teknologiske beslutninger Anvendelse af eliminering-af-aspekter i software engineering beslutninger tilbyder flere fordele: Reducerer Overwhelm: Ved at fokusere på et kriterium ad gangen undgår du den mentale udbrændthed ved at veje hver faktor af hver mulighed samtidig. Sikrer, at kravene er opfyldt: EBA tvinger dig til at identificere og prioritere dine ikke-forhandlingsmæssige krav. Transparent og forsvarlig proces: EBA's trinvise karakter gør din beslutningsproces gennemsigtig. Reducerer fordomme, fremmer objektivitet: Beslutning om kriterier, før du bliver forelsket i en bestemt mulighed, kan mindske knæ-jerk fordomme mod en velkendt eller "skinnende ny" teknologi. Advarsler og begrænsninger at holde øje med Ingen beslutningsteknik er perfekt. Hold disse advarsler i tankerne, når du bruger eliminering af aspekter: Ikke-kompensatorisk = Ingen handel: Fordi EBA er ikke-kompensatorisk, vil en ellers stor mulighed blive kastet ud, hvis det mislykkes på et valgt kriterium. Det er normalt klogt at starte med den højeste prioritet aspekt, i det væsentlige, hævde "hvis det ikke har X, intet andet betyder noget" kun for virkelig grundlæggende X'er. Kræver klare, målbare kriterier: EBA fungerer bedst, når dine aspekter er veldefinerede.F.eks. definere skalerbarhed som "må håndtere >10k anmodninger/sek" eller sikkerhed som "må ikke have kritiske fuln rapporter i det sidste år", uanset hvad der passer til din kontekst. Kan ikke give en unik vinder: Nogle gange vil du gå gennem din liste over aspekter og stadig ende med en bund eller et par levedygtige kandidater. Hvis flere muligheder overlever alle dine filtre, kan du derefter skifte til at sammenligne dem på sekundære attributter eller endda gøre en proof-of-concept med hver. Wrapping op Eliminering af aspekter er et nyttigt værktøj i beslutningsprocessen for softwareingeniører.Når du står over for en skræmmende liste over teknologier eller designvalg, tænk i aspekter: Find ud af dine must-haves, og begynd at skære af muligheder, der ikke tjekker disse bokse. I den hurtigt bevægende teknologiverden, hvor nye biblioteker og rammer dukker op hver uge, kan denne tilgang hjælpe dig og dit team med at undgå analytisk lammelse og træffe beslutninger med tillid. I sidste ende vil eliminering af aspekter ikke garantere et perfekt valg (ingen metode kan), men det vil give dig en rationel, gentagelig proces for at komme til et godt valg, der opfylder dine behov.