Принятие решений является неотъемлемой частью инженерии. Это может означать выбор базы данных, очереди на сообщения или библиотеки 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 читателей к чату Gemini 2.5 Pro, вот как я сузил их Я применил устранение по аспектам к 200 библиотекам npmjs с меткой «csv» путем прикрепления всех 200 читателей к чату Gemini 2.5 Pro, вот как я сузил их Дальнейшее усовершенствование для «серверной, а не браузерной загрузки пользователей» сократило выбор до 30. Этот итеративный процесс позволил все более специфическое фильтрацию на основе желаемой функциональности. Вы можете выбрать несколько ветвей параллельно, если вы не уверены, в каком направлении взять или пропустить вопросы. Если вы не хотите загружать 200 чтений (я не виню вас), просьба, которую я использовал для Gemini, была «использовать устранение по аспектам вопросов, чтобы сказать мне, какую библиотеку я должен использовать, основываясь на моих ответах на ваши вопросы, чтобы выбрать библиотеку аналитиков csv на npmjs.org» и затем он интервьюировал меня и выбрал библиотеку для меня на основе моих ответов. Преимущества использования EBA в технологических решениях Использование элементов устранения в решениях по разработке программного обеспечения дает несколько преимуществ: Сокращает перегрузку: сосредоточившись на одном критерии за раз, вы избегаете умственного выгорания, когда весите каждый фактор каждого варианта одновременно. Обеспечивает выполнение обязательных требований: EBA заставляет вас определить и выделить приоритеты для ваших невыгодных для переговоров требований. Прозрачный и защищаемый процесс: шаг за шагом EBA делает ваш процесс принятия решений прозрачным. Уменьшает предрассудки, способствует объективности: принятие решений по критериям, прежде чем влюбиться в конкретный вариант, может смягчить предрассудки в отношении знакомой или «блестящей новой» технологии. Предупреждения и ограничения, чтобы следить за Никакая техника принятия решений не является идеальной. Имейте в виду эти предостережения при использовании устранения по аспектам: Некомпенсационный = Нет торговых сделок: Поскольку EBA является некомпенсационным, отличный вариант будет выброшен, если он провалится по одному из выбранных критериев. Обычно разумно начинать с наиболее приоритетного аспекта, по сути, утверждать «если у него нет X, ничего другого не имеет значения» только для действительно фундаментальных X. Требует четких, измеримых критериев: EBA работает лучше всего, когда ваши аспекты хорошо определены. Например, определите масштабируемость как «должно обрабатывать >10 000 запросов/сек» или безопасность как «должно не иметь критических отчетов о выполнении за последний год», в зависимости от вашего контекста. Может не приносить уникального победителя: Иногда вы будете проходить через свой список аспектов и все равно в конечном счете с талией или несколькими жизнеспособными кандидатами.Если несколько вариантов выживают все ваши фильтры, вы можете перейти к сравнению их на вторичных атрибутах или даже сделать доказательство концепции с каждым. Вверх Вверх Устранение по аспектам - это удобный инструмент в инструменте принятия решений для инженеров программного обеспечения. Всякий раз, когда вы сталкиваетесь с пугающим списком технологий или дизайнерских выборов, подумайте по аспектам: выясните ваши обязательства и начните отрезать варианты, которые не проверяют эти поля. В быстро меняющемся мире технологий, где еженедельно появляются новые библиотеки и рамки, этот подход может помочь вам и вашей команде избежать паралича анализа и принимать решения с уверенностью. В конечном счете, устранение по аспектам не гарантирует совершенный выбор (ни один метод не может), но это даст вам рациональный, повторяемый процесс, чтобы прийти к хорошему выбору, который удовлетворяет ваши потребности.