ТРИЗ для ИТ. Ищем нестандартное решение сложной задачи при помощи алгоритма
Как найти выход из тупика в решении задачи, будь то разработка ПО, дизайн или управление бизнесом? Одно из решений — ТРИЗ (теория решения изобретательских задач). О том, что это за инструмент и как его применять, рассказала Елена Редколис — специалист по внедрению ТРИЗ. По базовому образованию Елена — информатик-экономист, а в последние годы она внедряла ТРИЗ в крупных промышленных корпорациях, таких как РУСАЛ и En+Group
Как и для чего появился ТРИЗ
ТРИЗ (теория решения изобретательских задач) — это советская разработка, созданная в 50-60-х годах 20 века. ТРИЗ вырос из потребностей в развитии промышленности. В те времена надо было меняться, строить технологические процессы, создавать оборудование и выпускать новые продукты. Но не всегда обычным инженерам хватало смекалки, чтобы сделать что-то действительно новое.
Бессистемный перебор вариантов в поисках лучшего технологического решения отнимает много времени
Создатель ТРИЗ, инженер и патентовед Генрих Альтшуллер решил помочь изобретателям и ускорить их работу. Он выдвинул идею: неизбежно можно создать что-то новое, если действовать по алгоритмам. Чтобы открыть их, Альтшуллер и большая команда его коллег-учеников, изучили более 40 тысяч патентов. Анализ объяснил, как талантливые люди создавали свои изобретения и решали технологические проблемы. На этом основан ТРИЗ.
ТРИЗ показывает короткий путь к наилучшему решению
ТРИЗ не только для заводов и машин
ТРИЗ был создан для решения инженерных задач на производстве, но применяется во многих сферах, например, в ИТ или бизнесе. Это методология, которая занимается изменением продуктов или процессов. Продуктом может быть, например, программный код, программная оболочка или физический продукт, который продаётся в магазинах. Ну а процесс — это бизнес-процесс или технология.
ТРИЗ уместно применять, когда существующие продукты не нравятся пользователям или если процессы не устраивают производителя, например, затратны по времени и ресурсам. Методология основывается на трёх основных постулатах, которые мы рассмотрим.
Постулат ТРИЗ №1. Системы циклично развиваются по законам
Продукт или процесс в ТРИЗ рассматривают как систему. И первый постулат ТРИЗ в том, что эта система развивается по законам.
Законы были известны ещё до ТРИЗ и обобщены в теории автоматического управления и других дисциплинах. Но ТРИЗ систематизировала эти закономерности и разработала алгоритмы для практического применения. Так, например, закон динамизации говорит о том, что сначала создается что-то примитивное и монолитное, а потом оно становится гибким и адаптивным.
«Эволюция» от табуретки к креслу мешку: на каждом этапе добавляется всё больше возможностей для регулировки
Например, сначала появляется монолитная деталь из металла, а затем — шарнирная. Представим, табурет с простыми ножками и офисный стул, у которого есть много сочленений: регуляция спинки, подлокотников. Далее это что-то гибкое и обволакивающие, как кресло-мешок.
Точно так же в ИТ гибкость и адаптивность растут по мере развития системы. Например, в пользовательском интерфейсе мы добавляем дополнительные «вишенки», чтобы персонализировать его под пользователя.
История циклична, и зная, на каком этапе находится система сейчас, можно предсказать, как она будет развиваться дальше.
Постулат ТРИЗ №2. Повышение идеальности
Второй постулат ТРИЗ — система развивается в направлении повышения своей идеальности. Что же такое «идеальность»? ТРИЗ исходит из того, что мы создаем продукты и процессы, чтобы облегчить себе жизнь. Например, человек придумал автомобиль, чтобы не ходить пешком на большие расстояния.
Идеальная система по ТРИЗ — это та, которой нет, но которая при этом работает. Она занимает максимально мало пространства, требует мало времени на обслуживание и незаметна для пользователя.
Развитие платёжных средств согласно вектору идеальности: деньги занимают все меньше ресурсов в пространстве, а их обращение происходит быстрее
В каждом проекте ТРИЗ мы ищем, какими параметрами система описывается в пространстве и времени и сколько ресурсов она тратит. Например, какая вычислительная сложность алгоритма, сколько она требует ресурсов на стороне железа. Пользовательские интерфейсы становятся более дружелюбными. Для пользователя это один клик по кнопке, но за ним стоит большая работа на программной стороне и на стороне железа. И мы стремимся затрачивать как можно меньше этих ресурсов — не просто мечтаем об идеальности, но и ищем её: определяем параметры и пытаемся целенаправленно улучшить их.
Постулат ТРИЗ №3. Развитие через техническое противоречие
Развитие системы возможно только если вскрыть противоречие в ней. Противоречие — это конфликт двух параметров или интересов. Если речь идёт про инженерную систему, то конфликт двух параметров. Если это бизнес-задача, то это может быть конфронтация интересов двух человек.
Например, нам надо обработать массив информации и выгрузить отчеты с определенным данными. Чем больше этот массив, тем больше времени нужно затратить на работу. Тогда возникает выбор: делать много отчетов с низкой проработкой или делать хороший отчет, но получать их меньше в единицу времени. Это конфликт качества проработки и времени, отведенного на работу.
Повышение уровня проработки снижает производительность. Верно и обратное: чем больше производительность, тем больше страдает детализация
Другой пример. Нам нужно выполнить расчёт, и у нас ограниченное количество ресурсов на стороне ПО. Из-за этого мы можем получить расчет с точностью до трех знаков после запятой, а нам нужно больше. Для решения нужен другой алгоритм или другие инженерные мощности — это конфликт.
Путь к совершенствованию системы лежит через разрешение таких конфликтов, или противоречий. И для этого в ТРИЗ предусмотрены специальные инструменты, собранные в Таблице устранения противоречий.
Таблица устранения противоречий — инструмент для поиска нестандартных решений
Когда специалисты по ТРИЗ анализировали патенты, они выделили параметры, которые конфликтуют друг с другом. Например, точность расчёта и сложность алгоритма. А затем определили, какими приёмами изобретатели чаще всего устранили подобные конфликты — всего это 40 «ходов».
Все данные собрали в Таблицу устранения противоречий. В строках таблицы описано, какой параметр нужно изменить, а в столбцах — какой параметр ухудшается при изменении. На пересечении строк и колонок указаны возможные решения: раздроби, объедини, сделай гибким, сделай большую часть работы предварительно. Это абстрактные советы — иногда шутят, что они похожи на карты Таро.
Фрагмент таблицы приемов устранения технических противоречий. На пересечении колонок и строк указаны номера приёмов, которые можно использовать для разрешения конфликта
Дальше решения нужно приземлить на свой контекст: разобраться в процессе. Например, если совет «вынести общее», определить, что именно в задаче общее, а что частное и что нужно вынести. Это бывает сложно, но результаты, как правило, необычные. Так, люди могут решать задачу из медицины, а найти решение в строительстве, потому что там был похожий системный конфликт.
Поделюсь примером, как с помощью ТРИЗ мои коллеги решили задачу из сферы UX/UI и разместили больше информации для пользователей, не усложнив интерфейс.
Как дать пользователям больше информации, если размер экрана ограничен. Нестандартное решение с помощью ТРИЗ
Любой платёжный терминал имеет экран, ограниченный по размеру, и мы заложники этих размеров. Банковские провайдеры требовательны к информативности в описании своих услуг. Им нужно уместить много разной информации: про кредиты, вклады, специальные условия. Возникает противоречие: чем больше информации на экране, тем сложнее её найти. Чаще всего это проблему пытаются решить иерархией, то есть вложенностью кнопок. Например, пользователь нажимает кнопку «Про вклады» и видит внутри подпункты. Но это неудобно: порой приходится преодолеть четыре-пять уровней вложенности, чтобы найти нужное.
Коллеги сформировали противоречие: конфликт между количеством информации и её доступностью. Затем они воспользовались таблицей с приёмами устранения противоречий.
Сначала хотели делать всплывающие подсказки о том, что находится в каждой категории — не всегда по названию одной кнопки можно определить, что за ней. Но это вновь приводило к конфликту — всплывающие превью тоже занимают место на экране, и пользователям неудобно читать такие тексты. Тогда попробовали разносить информацию в пространстве: что-то оставлять на экране банкомата, некоторые уведомления присылать по SMS.
В итоге нашли ещё одно решение — использовать смартфон. Смартфоны есть у большинства из нас. На экран смартфона можно перенести вспомогательную информацию, например, в виде пуш-уведомлений.
В чем преимущества такого решения? В ТРИЗ стараются использовать те ресурсы, которые уже есть, чтобы они не отнимали много пространства и времени. Но обычно в жизни поступают не так. Надо новое приложение — разработчики начинают писать код. Хотя сейчас стали чаще использовать готовые наработки. Если есть что-то, что может сослужить полезную службу, это надо использовать.
Не надо увеличивать размер банкомата, чтобы на нём поместились не три, а четыре кнопки. На это будут потрачены деньги, так как диагональ экрана вырастет.
Полезные материалы про ТРИЗ
Основы ТРИЗ можно узнать из книги её основателя Генриха Альтшуллера «Найти идею: введение в ТРИЗ — теорию решения изобретательских задач». Книга рассказывает о ТРИЗ на примерах инженерных задач 60-80 годов. Но сейчас специалисты адаптировали ТРИЗ и под другие сферы. Вот некоторые из материалов.
2. Матрица Дарелла Манна. Матрица содержит дополнительные тематические категории — проектирование, производство, поставка и другие. Материал включает в себя таблицу и книгу с описанием и распространяется только платно.
3. Монография о развитии объектно-ориентированных языков программирования в подходе ТРИЗ. Авторы — Виктор Бердоносов и Алёна Животова.
Много материалов по ТРИЗ можно найти в других, том числе открытых, источниках. А я готова ответить на ваши вопросы в комментариях. Буду рада помочь разобраться в ТРИЗ всем, кто хочет с пользой применять её в работе.