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