понедельник, февраля 18, 2008

Результаты опроса "Что важнее для успеха в разработке ПО"

Опрос закончился. Приняло участие 88 человек. Итак в чем же, по мнению сообщества, роются секреты успешной разработки софта?
65 (73%) человек отметили хорошую постановку задачи.
59 (67%) человек выделили важность хороших программистов
42 (47%) человека (менее половины) верят в важность хорошего менеджмента
39 (44%) человек отмечают архитектуру
34 (38%) человек считают важными тесты
10 ((11%) человек отметили важность методологии.

В результате важность перечисленных аспектов распределилась следующим образом:

Согласно общественному мнению секрет успеха прост. Надо взять хороших программистов, толково объяснить им поставленную задачу и половина успеха уже у вас в кармане. Для полной уверенности в том, что все пойдет как надо, можно поставить на проект хорошего менеджера. Если не забыть про архитектуру и тесты, то успех будет полным. А методология, это штука из разряда nice to have, главное чтоб работать не мешала :)

Что я хочу сказать от себя. Меня определенно радует сфокусированность подавляющего большинства (73%) на требованиях. Ну а мои личные предпочтения распределились следующим образом:
1. Хороший менеджер, и менеджмент в целом. Мне, как человеку техническому, потребовалось определенное время (годы) для того, чтобы осознать, техническое совершенство продукта несмотря не на что играет в достижении успеха важную но все же вторичную роль. Проект - это в первую очередь управление, без него даже самый совершенный код останется бесполезными килобайтами на жестком диске.
2. Хорошая постановка требований. Требования - это наше все. Нельзя создать хороший софт не зная точно, что он должен делать.
3. Хорошая архитектура. Технический аспект важен. но всего лишь на третьем месте.
4. Хорошие программисты. Программисты нужны :) Причем нужен хотя бы один, способный обеспечить выполнение пункта 3. Не более того. Есть очень малое число проектов. для которых действительно нужны выдающиеся программисты.
5. Хорошее тестирование. Без тестирования невозможно выпустить хороший продукт. Это как воздух, без воздуха нельзя жить, но никто не говорит о роли воздуха в достижении счастья.
6. Хорошая методология очень важна. Но методология определяется менеджементом (извините за некрасивое слово). Методология - это стиль управления. Не столь важно какой будет стиль, главное чтобы управление было эффективным.

P.S. Диаграма построена при помощи Google Chart API

2 комментария:

Elena Makurochkina комментирует...

С нетерпением ждала окончания голосования и озвучивания позиции автора ;)

Извиняюсь за вредность, но вторым пунктом шла "Хорошая постановка задачи", а не "Хорошая постановка требований". Это же совсем разные вещи. Требования - это то, что хочет от системы заказчик. Над выработкой требований работают представители заказчика и исполнителя. Постановка задачи - это тех. задание - внутренний документ, который разрабатывается "верхним звеном" исполнителя и переводит описательные требования заказчика в функциональное описание системы. Требования - это что хотим получить, Постановка Задачи - как это будет реализовываться.

Фактически ситуация, когда требования=постановке задачи, может быть только при разработке коробочного продукта, когда и заказчиком и исполнителем является одна и та же команда.

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

Sergey Rozovik комментирует...

"Партия и Ленин
- близнецы братья.
Мы говорим - Ленин,
подразумеваем - Партия.
Мы говорим - Партия,
подразумеваем - Ленин"
(с) В. Маяковский.
"Анализ требований и постановка задач" - это вштамповано в мозги русскоязычной компьютерной братии старыми советскими ГОСТами.
Слова бывает и путаются, сейчас перечитал свой пост - "постановка требований" - это конечно бессмыслица :-\ Но надеюсь, что все поняли. Речь идет об анализе требований. А какая может быть постановка задач без нормального анализа требований :)
По поводу agile и постановок. В некотором смысле в agile существует самая настоящая постановка задач. Есть заказчик, который говорит "хочу форму, чтоб регистрировать продажи, и отчет еще хочу..." - вот тебе и задача. Ну, утрировано, конечно...