При разработке продукта возникает много проблем, которые нужно решать. И проблемы бывают очень простые и очень сложные. Если первые может решить один человек, то вот вторые обычно решаются всеми по чуть-чуть.
Этот алгоритм призван помочь вам разделять сложные задачи, которые не может решить один человек, на множество маленьких, которые можно решать по-одиночке.
Алгоритм
- Что вы хотите получить? Установите цель
Например: Уменьшить время регистрации, ускорить отправку почты, ускорить установку приложения
- Представить, как программа должна выглядеть для того, чтобы выполнять поставленную задачу
Например: Простая и понятная форма регистрации, быстрый почтовый сервер, маленькое и быстро запускаемое приложение
- Ответить на вопросы: “Какие конкретно части нужно в программе изменить? Что нового добавить? Что удалить?”
Например: Убрать лишние 3 поля проверки пароля, отключить фильтрацию спама в исходящих письмах, убрать неиспользуемые иконки
- Расписать, что можно сделать прямо сейчас, а что только после чего-то
Например: Чтобы добавить кнопку “редактировать” нужно, чтобы была функция редактирования, но она должна знать, кто может редактировать, а кто не может
- Расставить задачи по порядку “можно сделать сейчас - в начало, нужно что-то сделать до этого - в конец”
- Каждое изменение теперь - задача, и её, скорее всего, можно так же разбить на маленькие подзадачи
- ОСТАНОВИТЬСЯ нужно, когда вы хотите изменить вещи, которые делали не сами. Лучше в такой момент обратиться к эксперту
Например: Нужно чтобы библиотека возвращала другое значение, браузер не блокировал всплывающие окна, уроки были в 2 раза короче, моторы были в 10 раз эффективнее.
Примеры
Чат
Текущая ситуация: есть ретро-чат для сисадминов (на чёрном фоне отображается зелёный логин и белый текст сообщения), написан на Python. Люди присоединяются к серверу (Python + Flask) с помощью отдельных программ-клиентов, регистрируются, заносятся в БД и могут писать в чате. В БД хранятся только пользователи: логин, пароль в безопасном виде и дата регистрации.
Проблема: новые пользователи не знают, кто является админом.
Большая задача: сделать так, чтобы админов не надо было запоминать по логинам.
Применяем алгоритм…
- Представляем: Человек сидит в чате пишет о котейках и при сообщении админа “прекратить флуд” осознаёт, что могут последовать репрессии.
- Что изменить: Добавить админам какие-то отличительные знаки, объяснить системе, кто из пользователей админ.
- Расставляем: Поскольку отличительные знаки расставляет сама система, то логичнее всего сначала рассказать ей how is how. Параллельно можно думать как именно админов отличать.
- Дробим ещё: Поскольку за саму систему отвечает программист, то пусть он сам думает как объяснять кто есть кто, так же нужно определить конкретно отличия и возможность улучшения данной фичи. Нельзя пропустить тестирование как часть задачи разработки, вдруг что-то пойдёт не так.
Получаем следующие задачки:
- Придумать отличительные знаки Admin пользователей (допустим это будет цвет логина)
- Исследовать хорошие цвета (самый хорошо заметный цвет - зелёный - уже занят, значит можно взять сочный синий цвет на красном фоне)
— Дизайнерско-исследовательские задачи закончились —
- Исследуем возможность того, что потом нужно будет кроме Admin сделать ещё и модераторов/vip/bot и так далее (ну скорее всего да, чат же делаем)
- Думаем, какой группе пользователей какое число соответствует (0 - обычный пользователь, 1 - админ)
- Добавляем в БД пользователям поле
group
в виде числа и изначально всем прописываем 0 при регистрации - Всем админам ставим значение
group
в 1 - В коде, отображающем сообщения в чате меняем цвет, в зависимости от
group
— Программистские задачи закончились —
- Провести тестрование решения (оказывается, что синий на красном совершенно не читается, и хочется вырвать глаза, и что были книжки по сочетанию цветов и теории цвета. Возвращаемся к задаче №2 с уже новыми знаниями о том, что малиновый так же хорошо виден на чёрном фоне, как и зелёный)
Сайт
Текущая ситуация: есть новостной сайт школы, на битриксе WordPress, который в автоматическом режиме показывает новости. Дизайн полностью свой, так как не оказалось шаблона, который бы отражал все цвета. А ещё заказу директора в правом нижнем углу обязательно должен был находиться герб школы с совёнком. Можно посмотреть новость, там уже есть комментарии и разные теги. При запуске проекта о свежести новостей никто не думал, так как публиковался только школьный совет: только уведомления о сборах и протоколы собраний.
Проблема: директор захотел также на сайте публиковать новости об олимпиадах и анонсы школьных мероприятий (“На следующей неделе сбор макулатуры!!!”). Из-за отсутствия даты, родители не смогли сориентироваться и с полной уверенностью, что уведомление задержалось на неделю из-за внутренней бюрократии, массово сдали макулатуру… досрочно.
Задача: Каким-то образом информировать пользователя о том, когда новость была опубликована.
Применяем алгоритм…
- Представляем: Пользователь читает новость, смотрит на дату, чтобы удостовериться в актуальности новости. Немного представив команда понимает, что не сходится в некоторых пунктах: Нужно ли время? Нужно название месяца или цифра? Год указывать полностью*
- Что изменить: Новости есть в главной ленте и на отдельных страничках “полного” просмотра, соответственно и там, и там должны быть отметки о публикации.
- Расставляем: Нужно провести интервью с пользвателями и узнать какой формат даты им будет понятен. После выполнения предыдущих задач можно уже и писать новый код. Ну и конечно же провести тестирование нового кода.
- Дробим ещё: После интервью у дизайнера может появиться понимание того, как оно должно выглядить, значит в исследование так же можно внести дизайн и прототипирование нового вида новостей. Программист же думает, что WP не сильно дураки делали и дату и так выводили, просто она не была реализована в необходимом дизайне сайта, поэтому он так же хочет исследовать документацию WP на предмет существующего функицонала.
Получаем следующие задачки:
- Узнать, какой формат удобен и понятен всем пользователям (
11 ноя. 2018 15:43
) - Определить место, где люди скорее всего будут искать дату публикации (после самой статьи)
— Исследовательско-дизайнерские задачки закончились —
- Найти в документации WP поле, отвечающее за время публикации (допустим
published
) - Сделать функцию, получающую на вход новость и выводящую время в нужном формате (“Зачем придумывать велосипед, если уже кто-то другой придумал?” - возникла мысль у программиста, когда он начал думать, как считать високосные года. Была взята готовая функция из интернета)
- Найти шаблон обрезанной новости, которая отображается на главной странице, и добавить под неё дату и время
- Найти шаблон полной новости, добавить в конец дату и время
— Программистские задачки закончились —
- Провести тестирование (оказывается, что многие даже не дочитывают новость до конца, а на фоне герба-совы дату и время никто не видит. Возвращаемся к задачке №2 зная, что можно поставить время и дату под заголовком, и людям, уже прочитавшим весь текст не надо крутить страницу вниз.)