09 Jun 2010 16:25

Выжимка из Getting Real by 37signals

http://gettingreal.37signals.com/ - оригинал
Книга о том как быстро и хорошо создавать продукт (применимо не только к программам или веб-сервисам).
Итак, выжимка ( или summary, кому как нравится)

* Getting Real -- это отказ от вещей, представляющих реальность (диаграммы, графики, схемы, стрелочки и модели) и создание реальной веши
* Getting Real -- это значит "меньше". Меньше массы, меньше программного обеспечения и его возможностей, меньше бумагомарания -- словом, меньше всего того, что является несущественным (а большая часть того, что, как вам кажется, критически важно, на самом деле таковым не является)
* Getting Real значит оставаться небольшим и шустрым.
* Getting Real начинает с интерфейса, с реальных экранов, которыми будут пользоваться ваши клиенты. Это позволяет получить правильный интерфейс до того, как вы создадите неправильную программу.
* Getting Real -- это итерации и снижение стоимости изменений, Getting Real - это запуск и постоянное улучшение. То есть подход, идеальный для веб-приложений.
* Getting Real -- это создание того, в чём нуждается клиент и исключение того, что ему не нужно.


Делайте меньше



* Меньше возможностей, разрабатывайте ПО для решения своих проблем
* Меньше опций и настроек
* Меньше структура компании
* Меньше встреч и абстракций
* Меньше обещаний

Финансируйте себя сами, деньги извне - план "Б"
Ограничения заставляют думать творчески.

Фиксируйте время и бюджет, делайте возможности гибче. Запускайте вовремя и согласно смете.
Расставьте задачи по приоритетам и делайте по этой очереди, пока не закончится время. Выпускайте версию.
Лучше сделать половину продукта, но качественно, чем недоделку.

Заведите себе врага. Чтобы увидеть кем не надо быть.
Не следуйте за лидером, расскажите другую историю.

Нет рутине. Чем меньше в вашем приложении рутины - тем лучше.
Приложение должно волновать лично вас. Не делайте его только изза денег. Это проявится.


Оставайтесь небольшими



Чем вы беднее, тем проще это изменить.
Чем вы меньше, тем проворнее.
Чем сложнее система, тем дольше/тяжелее её изменить.

Уменьшить размеры позволяют:
* решения, принимаемые по мере надобности
* многозадачность членов команды
* установка ограничений вместо попыток их преодолеть
* уменьшение программного обеспечения, меньше кода
* меньшее количество функций продукта
* маленькая команда
* простота
* открытые исходные коды
* открытые форматы данных
* свободная атмосфера, в которой легче признавать ошибки

Снизьте стоимость перемен.
Дешевые и быстрые перемены - секретное оружие малого бизнеса.
Непредсказуемость - один из принципов проворства.

Три Мушкетера - используйте команду из трех человек для версии 1.0
Начните с разработчиком, дизайнером, и человеком, - который разбирается в том и другом.

Принимайте ограничения. "Используй то что под рукою и не ищи себе другое"
Используйте их как преимущество. Пусть они ведут вас к творческим решениям.

Будьте собой. Будьте вызывающе правдивы о себе.
Дифференцируйте себя от больших компаний, будьте дружественнее и доступнее.


Приоритеты



В чём идея?
Явно и точечно определите видение для вашего приложения.
Что ваше приложение должно делать? Это действительно все?

Пренебрегайте деталями в начале. Работайте от большего к меньшему.
Да, успех и удовлетворение находится в деталях. Только не заморачивайтесь на них с самого начала.
Сделайте максимально просто и быстро. Используйте. Убедитесь что это работает. Усовершенствуйте, но позже.

Проблема тогда, когда это проблема
Не тратьте бесцельно время на проблемы, которых у вас еще нет

Работайте с правильными клиентами
Найдите основной рынок для вашего приложения и сосредоточьтесь исключительно на нем
Клиент не всегда прав. Найдите тех чья правота совпадает с вашей.
Ищите страстных клиентов, они будут проповедовать ваш продукт.

Расширяйтесь позже
Не думайте о миллионе юзеров сейчас. У вас будет достаточно времени приспособиться.
Вам придется снова все переделать, так или иначе.

Делайте идейное программное обеспечение
Ваше приложение должно лавировать между потребностями.
Не пробуйте охватить всех, всегда найдётся достаточно людей которые поддержат вашу идею.


Выбор функций



Наполовину, но закончено
Создайте половину продукта, но законченный продукт
Начните с ядра и позвольте ему приобрести инерцию, затем можно добавлять функции и возможности на твёрдой основе.

"Это не имеет значения" - ответ на 99% запросов "почему такой функции нет"

Начните ни с чем
Сделайте добавление новых функций, трудно осуществимой задачей
Не будьте подпевалой. Пусть каждая функция и особенность доказывает, что ее надо оставить в живых.
Напомните клиенту: "Вам нравится наш продукт, потому что не делает 100 других вещей".

Скрытые затраты
Учитывайте скрытую цену новых функций и особенностей:
- изменить скриншоты
- изменить хелп
- изменить terms
- интегрировать с другими модулями
- добавить в навигацию

Для каждой новой функции от вас потребуется:
* 1. Сказать "нет".
* 2. Вынудить функцию доказать свое значение.
* 3. Если снова "нет", уже конец. Если, "да", продолжайте:
* 4. Сделайте эскиз экрана/интерфейса.
* 5. Спроектируйте экран/интерфейс.
* 6. Закодируйте.
* 7-15. Испытание, испытание, испытание, испытание:
* 16. Проверка текста помощи, возможно, его нужно изменить.
* 17. Обновите ознакомительный тур продукта (если необходимо).
* 18. Обновите маркетинговую копию (если необходимо).
* 19. Обновите условия обслуживания (если необходимо).
* 20. Проверка, на то, какие предыдущие обещания были затронуты.
* 21. Проверка, на то, как это воздействует на общую структуру.
* 22. Запустите.
* 23. Затаите дыхание.

Создавайте то, чем можете управлять.
Не давайте 7Гб пространства только потому что Гугл даёт.

Создавайте программное обеспечение для общих решений и поощряйте то, когда люди ищут собственные решения
Сделайте лучшую работу над основой проблемы - люди найдут свои пути в рамках вашей структуры.

Забудьте о запросах функций. Читайте, отбросьте, забудьте.
Пусть клиенты напоминают вам, что важно.
Также помните о видении продукта, клиент не всегда прав.

Спросите людей, чего они не хотят
Иногда лучшее что можно сделать для клиента - убрать какую-нибудь функцию

Процесс



Гонка в запуске программного обеспечения
Сделайте что-нибудь и идите быстро

Повторение и свобода.
Работайте итерационно.
Если вы знаете, что собираетесь переделать все снова, не нужно делать идеально при первой попытке. Это и есть свобода.

Перейдите от мозговых штурмов - к эскизам - к HTML - к кодированию

Избегайте настроек
Настройки - уход от пути принятия жестких решений
! Клиенты не должны думать о каждой мелочи, за это ответственны вы.
Сделайте жёсткий выбор, внедрите, если будут жаловаться - всегда можно подкорректировать (см. "Повторение и свобода")

Решения временны.
Признайте что ошибки есть и будут.
Только реализуйте возможность быстро исправлять свои ошибки.

Тестируйте в реальных условиях
Не нужно никаких бета-версий. Версия должна быть одной.

Сокращайте время
Разделяйте. Разделяйте большие проблемы/задачи на кусочки/шаги каждый из которых легко/быстро решить.
Один шаг - день или даже час. Не больше.


Организация



Единство
Не разделяйте лишний раз команду по специализациям, иначе теряется диалог

Единое время
Сделайте половину рабочего дня единым временем для работы всех. Избегайте любых перерывов и отвлечений в течение этого времени.

Встречи ядовиты
Никаких встреч. Воспользуйтесь почтой, мессенджером.
Если встреча нужна:
- максимум 30 минут, затем прерывайте по таймеру
- пригласите как можно меньше участников
- никогда не участвуйте во встрече без ясной повестки дня

Находите и празднуйте маленькие победы
Выпустите что-нибудь сегодня. Долгие, затянутые циклы разработки - убийцы мотивации.
Спросите себя: "Что можно сделать и выпустить за 4 часа?". Затем сделайте это.


Персонал



Нанимайте меньше. Нанимайте позже.
Добавляте медленнее, чтобы двигаться быстрее. (см. "Оставайтесь небольшими")

Проверяйте
Назначайте потенциальным работникам испытательный срок

Не по словам, а по делам
Ищите потенциальных работников среди разработчиков проектов с открытым кодом, так вы проверите:
- качество работы
- воззрения
- уровень увлечённости
- умение довести дело до конца
- умение работать в коллективе

Нанимайте эрудитов
Быстро обучающиеся универсалы лучше закостенелых авторитетов

Неподдельный энтузиазм
Берите счастливых середнячков, а не разочаровывающих гуру. Берите того, у кого есть энтузиазм.

Мастер Слова
Нанимайте хороших писателей. Это не просто грамотные люди, это те кто умеют донести суть.


Создание интерфейса



Сначала - интерфейс
Создавайте дизайн интерфейса до того как начнете программировать
Бумага - html - реальные экраны

Дизайн от эпицентра
Начинайте с самого важного на странице и двигайтесь вширь

Три состояния программы
Делайте дизайн для обычного, пустого(!), и ошибочного состояния страницы.

Создавайте ожидания, продумав то, какой опыт получит пользователь при первом запуске
Отвечайте на основные вопросы тех, кто пришёл первый раз:
- Что это за страница?
- Что я сейчас делаю?
- Как будет выглядеть заполненный экран?

Защищайтесь
Продумайте дизайн для нештатных ситуаций. Это ваш "оборонительный дизайн"

Содержание важнее целостности
То, что имеет смысл "здесь", может потерять его "там".
Давайте людям то, что имеет смысл. Уместность лучше тупой последовательности.

Дизайн интерфейсов - это копирайтинг
Каждая буква имеет значение. Говорите на языке аудитории. Скажите главное, не более.

Объединяйте настройки с основным интерфейсом. Два интерфейса - лишняя работа.


Код



Меньший объем программы
Каждый раз, когда вы увеличиваете объем кода, сложность программы возрастает экспоненциально!
Переформулируйте сложную задачу в простую, которая требует намного меньше кода.
Возможно это будет не точно такая задача - это нормально.

* Меньшим объемом программы легче управлять.
* Меньший объем программы - меньше кода, а это значит
* Меньше скучной работы по сопровождению (и более счастливый персонал).
* Меньший объем программы снижает стоимость изменений - так что вы можете быстрее адаптироваться к обстоятельствам. Вы можете менять свои решения без того, чтобы менять мегабайты кода.
* Меньше кода - меньше ошибок.
* Меньше кода - меньше техподдержки.

Поощряйте контрпредложения от программистов.
Пишите только тот код, который вам нужен, и не более того.
Нет кода более гибкого, чем отсутствие кода!

Оптимизируйте для счастья
Выбирайте инструменты, которые заинтересовывают и стимулируют вашу команду
Счастливый программист - продуктивный программист.

Говорит код
Слушайте, когда ваш код сопротивляется. Замечайте, когда появляется более простой путь.

Разберитесь с долгами
Расплачивайтесь по долгам вашего кода и дизайна. Регулярно выделяйте время на это.
Зачистите код, приведите в порядок дизайн страницы.

Открытые двери
Выпустите данные в мир через RSS, API и т.п.
Не пытайтесь запереть ваших клиентов.


Слова



В функциональной спецификации нет ни грамма функциональности
Не составляйте функциональных спецификаций
Функциональные спецификации
* это фантазии
* это как средство умиротворения
* создают лишь иллюзию соглашения
* заставляют вас принимать наиболее важные решения именно тогда, когда у вас меньше всего информации
* ведут к перегруженности функциями
* не дают вам развиваться, меняться и пересматривать

Не рождайте мёртвых документов
Уберите ненужное бумаготворчество, если это не воплотится во что-то реальное.

Расскажите короткую историю
Пишите рассказы, а не описывайте детали

Пользуйтесь обычными словами
Вставьте настоящий текст вместо lorem ipsum
Делайте, как ваши клиенты - и вы станете их лучше понимать.

Очеловечьте ваш продукт
Какой у вашего продукта тип личности?


Цена и регистрация



Бесплатные образцы
Раздавайте что-нибудь бесплатно.
Предлагайте бесплатную версию с ограниченными возможностями. Миниатюрные порции.
Создайте пару бесплатных программ и используйте их для продвижения основной.

Легко войти, легко выйти
Сделайте регистрацию и отказ простыми и безболезненными.
Максимально короткая регистрация!

"Закрыть мой аккаунт" - это ссылка, ясная как день, на странице управления профилем пользователя.
Создайте условия чтобы люди могли получить свои данные если решат уйти. Например экспорт в XML.
Это критический фактор, потому что давая людям власть над их информацией, вы создаете доверие.

Избегайте долгосрочных контрактов, платы за подключение, штрафов за прерывание и т.д.
Не придумывайте всякие "фокусы" чтобы получить побольше денег. Зарабатывайте их.

Подсластите пилюлю плохих новостей предварительным сообщением и особыми условиями для "дедушек"
Если увеличиваете цены или ужесточаете лимиты - сообщите заранее + существующим пользователям дайте мораторий.


Продвижение



Выпуск в голливудском стиле
Чтобы спровоцировать разговоры и ожидание, выпускайте программу в стиле Голливуда:
1 - Анонс (teaser, буквально: дразнилка - прим. перев.) + сбор емейлов для оповещения
2 - Предварительный показ (скриншоты, тур, идеи и принципы, бета-приглашения)
3 - Выпуск.

Мощный сайт для продвижения, поместите:
* Обзор: Расскажите о приложении и его достоинствах.
* Экскурсия: Покажите пользователям различные свойства.
* Скриншоты и видеоролики: Покажите, как выглядит программа и как ею пользоваться.
* Манифест: Объясните философию программы и идеи, лежащие в ее основе.
* Примеры: Приведите примеры из жизни, иллюстрирующие возможности программы.
* Отзывы: Отзывы пользователей, обзоры, пресса и т.д.
* Форум: Предложите место, где члены сообщества пользователей смогут помогать друг другу.
* Цены и регистрация: Заполучите пользователей как можно быстрее.
* Блог: Блоги освежают ваш сайт: помещайте туда новости, советы и т.д. (Твиттер?)

На волне блогов
Блоги могут быть зачастую эффективнее, чем реклама (и, кстати, они невообразимо дешевле)

Начинайте рекламировать как можно раньше
Распространите слухи и получите подписчиков как можно скорее
Выберите домен, повесьте логотип и, может быть, одно-два предложения, описывающие, что будет делать ваше приложение. И пусть вам оставляют свои адреса.

Продвижение через обучение
Поделитесь знаниями с миром
Платите вперед, помогайте другим - получайте продвижение и признание.

Пища функциональности
Они этого жаждут - дайте же им скорее.
Небольшие команды идут на шаг вперед, когда дело касается воплощения новых идей в программы.

Следите за логами
Изучайте свои логи, чтобы следить за дискуссиями
Узнайте это, а затем дайте другим почувствовать ваше присутствие.
Оставьте комментарии в этих блогах. Поблагодарите людей за ссылки.

Продажи в процессе
Предлагайте возможности апгрейда в самом приложении
Расскажите, что вы уберете барьеры, если они перейдут на следующий уровень.

На крючке названия
Дайте вашему приложению легко запоминающееся название
Но не заморачивайтесь. Выберите имя короткое, яркое, запоминающееся - и вперед.


Поддержка



Почувствуйте эту боль
Сокрушите стены между разработкой и поддержкой
Не передавайте техподдержки телефонному центру или сторонней организации. Осуществляйте ее сами всей командой.

Нулевое обучение
Используйте встроенную систему помощи и списки часто встречающихся вопросов, чтобы ваш продукт не требовал справочников или тренингов
Стремитесь создать продукт, не требующий обучения. Как? Делайте всё проще.

Отвечайте быстро
Быстрое время ответа на запросы к техподдержке должно быть главным приоритетом - это способ выделиться на фоне конкурентов.
Отвечайте на 90% запросов в рабочее время в течение получаса и пользователи будут в восторге.

Трудная любовь
Будьте готовы сказать "нет" своим пользователям
Отказывайте на запросы, в необходимость которых вы не верите. Любите свой продукт.

Люди хотят помогать друг другу
Используйте форум или чат, чтобы пользователи имели возможность помогать друг другу

Публикуйте ваши неудачи
Выпустите плохие новости и уберите их с дороги.
Если что-либо пошло не так, расскажите людям сразу и сами. Даже если они не заметили.
Хорошие новости, с другой стороны, выпускайте медленно. Растягивайте удовольствие себе и другим.


После выпуска



Выпустите обновление через 30 дней после релиза.
Это показывает движение, даёт новую волну обсуждениям в блогах,
Кроме того мысли об обновлении дают сконцентрироваться на наиболее важных модулях.

Продолжайте выпуск сообщений
Покажите, что ваш продукт живет - продолжайте блог продукта после выпуска
Что туда можно включить:
* Частые вопросы
* Как работать с программой
* Советы и решения
* Новые функции, обновления, исправление ошибок
* Разговоры/пресса

Еще раз, не бойтесь держать тон дружественным и личным. Не пытайтесь выглядеть как большая компания.

Не бета, а лучше
Не используйте "бета" в качестве козла отпущения
Если вы сами не уверены в вашей версии, то как клиенты могут быть в ней уверены?
Возьмите на себя ответственность за то, что вы выпускаете. Назовите это новой версией.

Не все ошибки в программе созданы равными
Разделите ваши ошибки по приоритетам (и даже проигнорируйте некоторые из них)
Что можно сделать прямо сейчас, чтобы помочь наибольшему количеству пользователей?
Часто добавление новой функции может быть более важным, чем исправление существующей ошибки.

Переждите шторм
Подождите, пока страсти улягутся, перед тем как действовать.
24-48 ждите пока пользователи отреагируют на изменения. Только потом решайте возвращать ли всё обратно.
Помните также, что отрицательные реакции почти всегда звучат громче, чем положительные.

Не отставайте от соседей
Подпишитесь на новости о ваших конкурентах
Это всегда мудро - следить за передвижениями противника

Остерегайтесь монстра разбухания
Более зрелый - не значит более сложный.
Модель подписки в веб-сервисах:
вам не нужно продавать новые версии путем добавления всё новых и новых свойств, нужно только обеспечивать текущий сервис, значимый для пользователей.

Двигайтесь по течению
Будьте открыты для новых путей и изменения направлений
Примите мысль, что ваша первоначальная идея могла быть не самой лучшей.
Будьте серфером. Наблюдайте за океаном. Смотрите, где образуются большие волны, и соответственно корректируйте курс.

Заключение



Заводите моторы

Воплощение.
Разница между вами и всеми остальными в том, как хорошо вы воплощаете. Успех достигается именно безупречным воплощением.
Главное - сохранять равновесие. Если вы гнетесь слишком далеко в каком-то направлении - вы на пути к падению.

Люди. Вам нужны люди, страстно любящие свое дело.

Больше, чем просто программы
Подход Getting Real применим не только к построению сетевых программ:
- силы особого назначения "Альфа", "Зелёные береты"
- iPod/iPhone

Comments

the_Smart_Dog
the_Smart_Dog 09 Jun 2010 21:01
Думаю, кодэрам будет полезно
osa
osa 09 Jun 2010 21:59
подход годится не только для кодинга :)
Back to Top