воскресенье, 27 марта 2011 г.

Проклятие аутсорсинга

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

Технологии работы аутсорсинговой и продуктовой компаний очень различны.

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

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

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

Как правило, в разработке продукта задействованы люди, являющиеся экспертами в разных областях знаний, разных специальностей, разных складов ума (гуманитарии и технари).

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

Каждый специалист занимается своим делом. Технология предоставляет чёткие критерии качества работы для каждого специалиста.

Попробую привести некоторые типовые ошибки, которые совершает команда, взявшись разрабатывать собственный продукт:


1) Разработка продукта для себя, а не для потребителя.

2) Отсутствие продуктового или игрового дизайна. Функции дизайнера продукта неявным образом передаются программистам или, что ещё хуже, заказчику (когда продукт целиком делается на заказ).

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

Фантазирование в отрыве от реальных технических или финансовых ограничений.

4) Непонимание целевой аудитории, отсутствие представления о сегменте рынка и регионе, на котором будет распространяться продукт.

5) Подсистемное мышление.

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

Неудержимый поток идей способен разрушить работу слаженной команды.

6) Смешение ролей: инвестора, директора компании, дизайнера и менеджера проекта. Менее критическое отношение к результатам своего труда.

Руководитель берёт на себя функцию дизайнера, но вместо дизайна сыплет идеи, оторванные от контекста, и затем, неявным образом, передаёт функции дизайна своим подчинённым: "Я тут всё основное уже придумал. Вам осталось только это запрограммировать".

7) Неопределённость платформы, под которую разрабатывается продукт.

Смена платформы в процессе разработки. Особенно страшно, если выбраны технологии, привязанные к платформе.

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

9) При наборе персонала: подмена поверки квалификации и работоспособности программиста проверкой умения решить какую-нибудь "креативную" задачу, как правило, очень далёкую от реальных производственных проблем.

10) И т.д. Буду рад вашим дополнениям.