Время вдумчивого чтения ~ 30-45 минут
О Ценностной сетке¶
ВНИМАНИЕ!
Если хочешь за минуту уловить суть - переходи в краткое содержание, в котором собраны заголовки и ключевые фразы.
Чтобы глубже понять, о чём здесь на самом деле идёт речь, и чтобы было значительно проще начать применять Ценностную сетку, прочитай это введение целиком.
Корень проблемы¶
Разработка программного обеспечения — это сложный и многогранный процесс. Он включает в себя кучу аспектов, начиная с первичной идеи и заканчивая поддержкой готового продукта. В основе:
Команда: взаимодействие между разработчиками, тестировщиками, тимлидами и многими другими специалистами определяет, насколько успешно и гармонично будет идти работа. Умение внимательно слушать и эффективно делиться информацией, сотрудничать и решать проблемы в команде — важнейшая часть успешной разработки.
Технологии: языки программирования, библиотеки, фреймворки, всевозможные инструменты автоматизации и прочая инфраструктура. Правильный выбор технологий влияет на скорость разработки, стабильность, безопасность и масштабируемость ПО.
Процессы: различные подходы и методологии, которые помогают организовать работу команды, эффективно использовать ресурсы, минимизировать ошибки и быстрее адаптироваться к изменениям.
Они плотно переплетены и влияют друг на друга: технологии задают возможности и ограничения для процессов, процессы обеспечивают структуру и порядок работы людей, а люди, в свою очередь, принимают решения о выборе технологий и реализации процессов. Например, даже самые современные технологии могут быть неэффективны без чётко настроенных процессов и вовлечённой команды. Точно так же неправильные процессы или недостаток компетенций могут свести на нет потенциал технологий.
Но главный в этом процессе - Пользователь, для которого создаётся продукт, и проблема возникает там, где Пользователя в упор не замечают.
Альфа и Омега Ценностной сетки¶
Для понимания, что такое Ценностная сетка необходимо с определённого ракурса рассмотреть её ключевое понятие - Интерфейс.
Интерфейс — это форма коммуникации, способ взаимодействия различных систем, средство обмена данными.
Наглядный пример интерфейса находится прямо перед твоими глазами. Фишка в том, что в процессе разработки и поддержки, кроме конечного пользователя и создаваемого для него интерфейса, есть ещё целый ряд неопознанных интерфейсов, которые, несмотря на свою незамеченность, отражают суть понятия "Интерфейс" как никакие другие.
Этими необычными интерфейсами являются Языки. Они создавались и продолжают создаваться под универсальные или под узкие задачи, чтобы передавать информацию в абстрактной или конкретной, сжатой или более развёрнутой форме. Это относится и к языкам программирования, и к разговорным, математическим, музыкальным, химическим, знаковым, символьным и прочим языкам. У каждого из них есть свои правила, композиционные принципы, приёмы оформления, которые помогают выстраивать взаимодействие между пользователями интерфейсов с максимальной скоростью при сохранении качества.
Языки сами по себе являются Интерфейсами, и каждый Интерфейс - это Язык.
Когда разработчики изучают и запускают программы, когда они читают, пишут и правят код, всё, что они в сущности делают - это попеременно пользуются Интерфейсами и создают Интерфейсы. Через эту призму особенно заметно, в какой степени качества интерфейсов снова и снова влияют на разработчиков как на самых заядлых пользователей. То, насколько программный код и текст документации будут структурированными, ясными, чёткими и информативными, будет либо помогать разработчику, являясь удобным интерфейсом, либо сжирать его внимание, время и силы изо дня в день.
Так что же такое Ценностная сетка?¶
Ценностная сетка - это база знаний, своеобразная шпаргалка, классификатор всевозможных Интерфейсов, с ключевыми хотелками Пользователей, которые мы называем Функциями, и детальными описаниями всевозможных типичных сценариев использования каждой Функции, которые мы называем Историями. В Историях содержатся как исходные параметры сценария, так и набор условий, по которым можно проверить качество и работоспособность соответствующего Интерфейса, будь то веб-страница или же сам программный код, с помощью которого она была написана. Симптомы, по которым легко предположить, что условие может быть нарушено, называются Анти-паттернами. ЦС универсальна: не важно, о чём рассказывает ваша веб-страница, что конкретно делает ваша консольная программа, или какой алгоритм описывает ваш код - набор типичных ожиданий Пользователей будет схожим в рамках конкретного Интерфейса. И сама по себе Ценностная сетка - это тоже набор Интерфейсов.
Как устроена Ценностная сетка?¶
Теперь, когда ты узнал обо всех ключевых понятиях ЦС (Пользователь, Интерфейс, Функция, История), предлагаю познакомиться с ней на условном примере.
Скорее всего, тебе доводилось сталкиваться к популярным примером из уроков русского языка "Казнить нельзя помиловать". Одно маленькое решение может полностью поменять ход человеческой жизни, ведь палач, который будет читать записку, может быть недостаточно грамотным, не рассмотреть возможные варианты и поставить запятую наобум, а затем казнить невиновного или отпустить опасного преступника. Даже короткая записка на клочке бумаги - это тоже Интерфейс, в работе с которым его Пользователь (человек, который будет эту записку читать) ожидает от него (от записки как Интерфейса) доступности вполне определённых типичных Функций (хочется записку и прочитать, и понять). В зависимости от контекста (характеристик бумаги, чернил, почерка, языка, грамотности читателя) будут формироваться различные Истории, в которых Функции должны продолжать работать. Сценариев может быть много, но если Функция очень проста, то и История будет всего одна.
Вот схема Ценностной сетки для создания Интерфейсов Инструкций Палачу:
Интерфейс: "Текстовое сообщение"
Функция: "Прочитать и однозначно понять смысл текстового сообщения"
История: "Если палач грамотен"
Ситуация:
- Палач говорит по-русски
- Палач читает по-русски
- Палач хорошо знает грамматику и синтаксис русского языка
Старт:
- Записка у палача
Успех:
- Цвет чернил достаточно контрастирует с цветом бумаги
- Почерк чёткий и разборчивый
- Все слова написаны без ошибок
- Соблюдены все правила русского языка
- Смысл записки однозначен, его сложно трактовать неверно
- Палачу удалось прочитать записку целиком
- Палачу удалось понять изначальный смысл сообщения
История: "Если палач ограниченно грамотен"
Ситуация:
- Палач говорит по-русски
- Палач читает по-русски
- Палач плохо знает грамматику и синтаксис русского языка
Старт:
- Записка у палача
Успех:
- Цвет чернил достаточно контрастирует с цветом бумаги
- Почерк чёткий и разборчивый
- Все слова написаны без ошибок
- Соблюдены все правила русского языка
- Смысл записки однозначен, его сложно трактовать неверно
- Палачу удалось прочитать записку целиком
- Палачу удалось понять изначальный смысл сообщения
В дополнение к Интерфейсу текстовых сообщений, могли бы быть ещё Интерфейсы аудио- и видео- сообщений со своими наборами специфических Функций и Историй.
Как пользоваться Ценностной сеткой?¶
Представим, что автор записки использовал бы ЦС: проверяя своё сообщение на соответствие пунктам из раздела "Успех", и ставя себя на место палача, автор мог бы заметить, что пропустил запятую. Кроме того, автор мог бы обратить внимание, что даже при наличии запятой такой текст может быть неверно воспринят палачом, который, по необразованности, внимания на запятую может не обратить и сделать ударение на "Казнить" или "помиловать" по-своему. Как результат, автор мог бы переработать текст записки, убрать лишнее слово, в результате чего пропала бы пусть лишь потенциальная, но опасная двусмысленность. Воспользоваться ЦС мог бы не только автор записки, но и палач. Прочитав раздел "Ситуация", он мог бы узнать, что в русском языке существуют грамматика и синтаксис, мог бы поинтересоваться, что это такое, и понять, что в "Казнить нельзя помиловать" могут быть разные варианты трактовки. Пример, описанный выше, демонстрирует только базовую структуру ЦС. В некоторых случаях, кроме типа и вида Интерфейса может быть выбрана ещё и роль Пользователя, но затем всё так же будут идти Функции и Истории.
Для продолжения переходи в раздел "Начать пользоваться ЦС".