Вземането на решения е присъща част от инженерството. Това може да означава да изберете база данни, опашка за съобщения или библиотека CSV, която ще работи в производство срещу данни на клиентите. Когато няколко опции са жизнеспособни, но компромисите се различават, имате нужда от прагматичен начин да стесните полето. Една полезна стратегия е Този подход ви помага систематично да стеснявате опциите, докато изборът стане ясен.Целта е да покажете как бързо можете да получите "формата" на проблема, грубите контури на пространството за решение, без изчерпателен анализ на всяка опция. Elimination by Aspects (EBA) Какво представлява премахването по аспекти? Елиминирането по аспекти е евристична система за вземане на решения, въведена от психолога Амос Тверски през 1972 г. Основната идея е постепенно да се намали списъкът на алтернативите, като се прилага един критерий (аспект) наведнъж. Key characteristics of EBA: Това означава, че опцията, която не изпълнява един основен критерий, е изключена, без значение колко е голяма по отношение на други фактори. Вие ефективно вземате поредица от "да" / "не" решения за всеки аспект, вместо да сравнявате всичко срещу всичко наведнъж. Пример: Купуване на мелница с EBA За да илюстрираме процеса, нека първо използваме пример, който не е софтуер: закупуване на тревна машина. Тип на мелницата: това е езда, робот или бутален мелница? Размер на двора: Колко голяма е площта, която трябва да нарязвате? Терен: Трябва ли да режете по стръмни склонове (15° или повече)? Енергия и поддръжка: Предпочитате ли захранването на газовия двигател или електричеството (батерия / проводник)? Бюджет: Какъв е бюджетният ви таван? Чрез последователно прилагане на тези аспекти, можете да намалите опциите от хиляди до няколко.По същество, вие задавате най-последователните въпроси първо (тези, които разделят полето най-много). EBA работи най-добре, когато изберете аспекти, които максимизират придобиването на информация в началото на процеса. Открих, че ChatGPT Thinking / Pro или Gemini 2.5 Pro (и двете с разрешено търсене в мрежата) генерират доста добри въпроси в стила на EBA, поканата, която използвах, беше "Кои са топ 5 въпроса за стесняване на търсенето на тревата ми?". Пример: Избор на CSV Parser библиотека с EBA Сега нека приложим EBA към решение за софтуерно инженерство. Да предположим, че трябва да изберете библиотека за анализиране на CSV за проект. Ето как може да изглежда стратегия за елиминиране по аспекти: 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: Приложих елиминирането по аспекти към 200 npmjs библиотеки, маркирани с "csv", като прикрепих всички 200 readmes към чат на Gemini 2.5 Pro, ето как ги стесних Приложих елиминирането по аспекти към 200 npmjs библиотеки, маркирани с "csv", като прикрепих всички 200 readmes към чат на Gemini 2.5 Pro, ето как ги стесних По-нататъшното усъвършенстване на „изтеглянията на потребители от сървъра, а не от браузъра“ намали избора до 30. Този итеративен процес позволи все по-специфично филтриране въз основа на желаната функционалност. Ако не сте готови да изтеглите 200 четения (не ви обвинявам), препоръката, която използвах за Близнаци, беше "използвайте отстраняването на въпроси по аспекти, за да ми кажете коя библиотека да използвам въз основа на моите отговори на вашите въпроси, за да изберете библиотека на csv-анализатор на npmjs.org." и след това ме интервюира и избере библиотека за мен въз основа на моите отговори. Ползите от използването на EBA в технологичните решения Използването на елиминиране по аспекти в решенията за софтуерно инженерство предлага няколко предимства: Намалява претоварването: като се съсредоточите върху един критерий наведнъж, избягвате умственото изгаряне от претеглянето на всеки фактор на всяка опция едновременно. Уверете се, че трябва да са изпълнени: EBA ви принуждава да идентифицирате и да поставите приоритет на вашите неизгодни изисквания. Прозрачен и защитим процес: Етапният характер на ЕБО прави процеса на вземане на решения прозрачен. Намалява предразсъдъците, насърчава обективността: Решаването на критерии, преди да се влюбите в даден вариант, може да смекчи предразсъдъците на коляното към позната или „блестяща нова“ технология. Предупреждения и ограничения за наблюдение Никоя техника за вземане на решения не е перфектна.Имайте предвид тези предупреждения, когато използвате елиминиране по аспекти: Non-Compensatory = No Trade-Offs: Тъй като EBA е не-компенсационна, в противен случай страхотен вариант ще бъде изхвърлен, ако се провали по един от избраните критерии. Обикновено е разумно да се започне с най-висок приоритет аспект, по същество, твърдят "ако тя няма X, нищо друго няма значение" само за наистина фундаментални X. Изисква ясни, измерими критерии: EBA работи най-добре, когато вашите аспекти са добре дефинирани. например, дефинирайте мащабируемостта като „трябва да се справяте с >10 000 заявки/сек“ или сигурността като „трябва да нямате критични отчети за изпълнение през последната година“, независимо от контекста ви. Може да не донесе уникален победител: Понякога ще преминете през списъка си с аспекти и все още ще завършите с мач или няколко жизнеспособни кандидати.Ако няколко опции оцелеят всичките си филтри, можете да преминете към сравняване на вторични атрибути или дори да направите доказателство за концепция с всеки от тях. Опаковане на Елиминирането по аспекти е полезен инструмент в инструментите за вземане на решения за софтуерни инженери.Всеки път, когато се сблъсквате с плашещ списък от технологии или дизайнерски избори, помислете по аспекти: разберете вашите задължителни неща и започнете да изрязвате опции, които не проверяват тези полета. В бързо развиващия се технологичен свят, където всяка седмица се появяват нови библиотеки и рамки, този подход може да помогне на вас и вашия екип да избегнете парализата на анализа и да вземате решения с увереност. В крайна сметка, елиминирането по аспекти няма да гарантира перфектен избор (нито един метод не може), но ще ви даде рационален, повтарящ се процес, за да стигнете до добър избор, който отговаря на вашите нужди.