Как стать автором
Обновить

Комментарии 29

Одни пытаются завоевать мир, другие - сделать его лучше.
Упс... Простите, промазал... Хотел +1 поставить - получилось наоборот
:) Да ничего... лучше напишите, если не сложно, как относитесь к этим двум моделям. Просто интересно, может можно эффективно использовать модель сверху вниз - может, есть какие-то подходы правильной работы при такой стратегии? Интересно было бы узнать мнение хабролюдей :)
Пробовал и то и то. Действительно второй подход лучше. Но если есть четкие задачи. Касаемо работы с заказчиками и прочим рекомендую почитать про XP на agiledev.ru. Первый пример отпадет сразу же. Останется второе )
Мне почему-то казалось, что должны работать обе модели, но выполняться разными людьми:
1. менеджер берет проект, все раскладывает по полочкам и формулирует "ясные и четкие задачи"
2. кодер задачи выполняет
Если недостаточно данных для формулировки задач - это уже проблемма коммуникаций, надо трясти заказчика и выспрашивать все подробно. Или я не так понял первый подход?
Согласен, но это и есть реализация второго подхода. Когда есть такие люди (project manager-ы).
По личному опыту... Раньше работал именно с таким человеком, которому поступала просто инфа о том, что надо сделать, он это всё разбивал на части и предоставлял чёткую поэтапную работу. С другой стороны, работал в довольно крупной IT компании, в которой такой человек был, но все проекты предоставлялись к работе сотрудникам в первозданном (если можно так сказать :) ) виде - т.е. по первому подходу. Возможно, человек ждал проявления какого-то креатива... И это в некоторых моментах хорошо, но черевато проблемами, о которых я говорил выше... ИМХО :)
считаю этот комментарий максимально приближенным к правильному, имхо :
1) если не видеть картину в целом, то нет смысла разрабатывать "что-то там", что есть часть от целого. ведь в процессе разработки необходимо принимать решения, на которые влияет общая архитектура, цели и т.д.
2) как можно знать при подходе "снизу-вверх", что результат приближается к заказываемому?? т.е. "сейчас мы реализуем прикольную фичу, а потом подумаем зачем она нам нужна"?
3) часто заказчик сам слабо представляет себе "как оно должно работать". и понимание/видение картины в целом - избавляет от необходимости каждую мелочь уточнять с заказчиком.
4) согласен, что не обязательно каждый из разработчиком обязан "видеть картину целиком". но ведение проекта(управление/проектирование/управление требованиями) требует этого.
5) еще один "плюс" в пользу метода "сверху-вниз" - возможность на раннем этапе определить противоречие в архитектуре или выбрать наиболее оптимальное решение.
стараюсь не только в работе, но и в жизни применять модель с низу вверх, где конечный продукт есть моя ступень в социальной лестнице. вижу в этом больше практичности и результативности.
Кстати, да... О реализации подхода этого в жизни, наверное, стоит отдельно написать :) Пожалуй, тут сложнее даже, чем в работе. Потому что ты сам "заказчик" и "исполнитель". И очень часто хочется сразу конечного результата, а терпения/выдержки/усилий не хватает, чтобы дойти поэтапно до желаемого :(
".. захватить мир!" - Не однократно приходили заказчики которые спрашивали о сосдании потипу google, myspace, и т.д.
Приведите пожалуйста реальный пример, где бы смог примениться подход "снизу-вверх". У меня фантазии не хватает. А вот контраргументов против такого подхода - полно.
Например берем разработку клиент-серверного приложения, попробуйте по вашему алгоритму составить план, имея следующие "ясные и чёткие задачи":

  • создать БД
  • написать серверную часть
  • написать клиентскую часть
  • внедрить модуль безопасности
  • написать модуль администрирования
  • внедрить удаленное автообновление
  • создать дизайн интерфейса

    допустим, хотя бы половина задач удовлетворяют понятиям "ясности и чёткости" и началась их реализация. Каков риск, что при уяснении следующей задачи из списка не придется реинжинирить или переписывать предыдущие шаги?
Имел опыт работы в команде разработчиков, занимающихся созданием достаточно крупного и масшабного web-проекта. Почти все части работы приходили от project manager-а в виде презентации с детальным описанием буквально каждой страницы(читай - функциональности), иногда эти части даже поражали своей элементарностью (возникал даже вопрос - для чего так?), иногда были достаточно сложные кусочки проекта, занимавшие около недели рабочего времени... Такие части рассылались каждому человеку в команде, по завершению проекта, почти вся команда, смотря на готовый продукт про себя говорила "да, если бы нам сразу сказали, что реализовать придётся ТАКОЕ, возможно, поставили бы гораздо большие сроки или отказались от проекта вообще".

Я это к чему... Для всего нужен человек, смотрящий дальше, чем на один шаг. Как тут уже говорилось, обязательно должен быть человек (или группа людей), который бы мог продумать как можно лучше всю схему проекта (благо, сейчас для этого есть, в том числе, множество программных средств) и уже предоставлять чёткие инструкции непосредственно исполнителям работы.
В любом проекте и любом подходе может возникнуть ситуация, которую Вы описали. Но по моему мнению (основанному на собственной практике), второй подход имеет значительно меньше недостатков, чем подход "сверху-вниз".

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

  • Прожект менеджер

  • Тимлидер

  • Архитектор


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

А заранее все продумать все равно невозможно - обязательно либо будут неправильно интерпретированы пожелания заказчики, либо он передумает походу дела и попросит изменить функциональность.
Здесь и далее подразумевается, что планирование разработки начинается после утверждения ТЗ. Предвосхищая вопросы, ТЗ - это не лист A4, содержащий общее описание функциональности, а толмуд, написанный бизнес-аналитиками и согласованный с Заказщиком.
Если так - то да, вопрос этой темы вообще отпадает :) Это идеальный вариант развития ситуации :)
Лучше исполнителя не знает никто :) Но, если, условно говоря Вас спросят "когда сделаете сайт" или "когда сделаете регистрацию на сайте?" (условно говоря :)) на что легче и точнее будет ответить? :)
Это в вышеописанном ответе про прототипы. Пусть Заказщик пальчиком ткнёт на этап, где бы ему это понадобилось - в тот срок и будет. Есть одно маленькое "но" задач (новых фич) в этапе не должно быть больше трёх., поэтому приедтся что-то ему решить что передвинуть на другие этапы.
Легче, безусловно, на второй вопрос ответить. Просто если заранее ответить (для себя) на все такие вопросы, то и ответ на "когда сделаете сайт" трудностей не предоставит.
Перефразируя статью можно сказать, что SMART-цели лучше неопределенной постановки задачи (SMART = Specific – конкретные, Measurable – измеримые, Achievable – достижимые, Realistic – реалистичные, Time-bound - с обозначенным сроком). Обычно их формулирует pm, но если такового нету, то придется самому выступить в такой роли и разбить план захвата мира на более конкретные подзадачи.
Вот тут рассмотрена GTD в сравнении с другим подходом (сверху-вниз, в какой-то мере). Это одна статья в четырех сериях:

http://offline.computerra.ru/2008/717/34…
http://offline.computerra.ru/2008/719/34…
http://offline.computerra.ru/2008/720/34…
http://offline.computerra.ru/2008/721/34…
Не согласен. Подход "снизу вверх" как правило приводит к тому, что отдельные части проекта оказываются несостыковываемыми друг с другом и на перепланировку стыковок может уйти еще больше времени.

ИМХО, действительно правильный метод: подробное планирование и разбиение задач по принципу "разделяй и властвуй" сверху вниз, а затем реализация плана снизу вверх.
Да, при большой сложности и взаимозависимости частей проекта именно так и происходит. Я не знаю ни одного такого проекта, в котором Супер-Архитектор сумел разделить (спроектировать) систему так, чтоб потом новые связи оказывались возможными и не глючили.
Может быть, это специфика именно нашей компании - но это так. Waterfall ни разу не сработал, у наших заказчиков слишком короткие сроки и ресурсы :)
Всё проще. Успешное выполнение проекта в срок зависит не от того какую модель использовать, что применять и тд (хотя это влияет), а в большей степени от руководителя проекта, который должен иметь голову на плечах и хорошо осознавать что он делает, а если он осознаёт, то пусть делает так как хочет, хоть снизу-вверх, хоть сверху-вниз, хоть слева-направо.
ПО моделям непосредственно могу сказать что я успешно применял и ту и другую модель, но зачастую модель сверху-вниз всё-таки оптимальнее.
По-моему тут нечего спорить.

Когда есть задача: то она разбивается сверхну вниз, на части.

А выполнение ессно снизу вверх.

от декомпозиции к композиции.

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

Публикации