О, парень, это много, если ты действительно имел в виду, что все случилось с тобой!
ВНИМАНИЕ : Во многих из приведенных ниже пунктов вы можете почувствовать, что я вас критикую, и что я хочу привлечь вас к ответственности за неудачи, а не учитывать внешние факторы. Я не. Просто вы не предоставляете много подробностей, а я просто предоставляю контрольные списки действий, которые нужно предпринять, чтобы убедиться, что все идет не так, как надо. Я знаю, что я сделал много ошибок сам (все делают), и мы только поправляемся, если мы учимся на них. И чтобы учиться у них, мы должны начать воспринимать их как ошибки в первую очередь и брать на себя ответственность за то, что пошло не так с нашей стороны. Черт возьми, возьми на себя ответственность за то, что пошло не так в чужих частях, ты также можешь извлечь из этого уроки.
Ваш проект провалился
Не так много, что вы можете сделать, чтобы смягчить это сейчас.
Однако вы можете сделать многое, чтобы избежать этого для воспроизведения в будущем. Я бы посоветовал попытаться улучшить свой проект и навыки управления временем.
Одна из книг с лучшим соотношением ((действительный совет) / страниц), которую я читал по этому вопросу, хотя, возможно, и не самая лучшая, это « Радикальное управление проектами» Роба Томсетта .
Вы на самом деле не указываете, в чем ваш проект провалился, но я бы предположил, что комбинация вещей привела к дисбалансу в обычном треугольнике затраты / время / качество . Самый важный фактор в моих глазах - это руководить проектом и разработкой, поддерживая постоянную связь как с техническими игроками (разработчиками и тестировщиками), так и с заинтересованными сторонами. Слишком много проектов терпят неудачу, потому что они не слушают спонсоров или заинтересованных лиц и не подталкивают их к участию в процессе.
Если они не вовлечены, вы не можете знать, чего они хотят. Если вы не можете знать, чего они хотят, вы не сможете это сделать. Если вы не доставите его, они будут несчастны. Это провал. Кроме того, если вы не привлекаете своих заинтересованных лиц, они не связаны с реальностью разработки программного обеспечения, а это означает, что они не понимают ваших проблем. Если они часто общаются с вами, они лучше понимают, с чем вам приходится иметь дело. Они смогут лучше понять, когда вы скажете им, что «маленькая» функция [смеха] займет месяцы. Они могут доверять вашему планированию лучше, потому что они помогли построить его. Проект не может быть успешным только с «спецификациями в начале, разработкой, тестированием, доставкой в конце». Просто никогда не бывает. Вы могли бы доставить то, что просили в спецификации,
И самое главное, сделайте ретроспективу и убедитесь, что это не эго, а не игра с обвинениями. Просто определите проблемы.
То, что вы потратили дни на кодирование, было отклонено вашей командой
Я был в такой ситуации. Опять же, вы мало что можете сделать, чтобы уменьшить это, кроме:
- Держите это в SCM на потом.
- Возможно, постарайтесь постепенно вводить мелкие фрагменты в основную базу кода вместо огромного рефакторинга.
Но есть и другие вещи, которые вы можете сделать, чтобы предотвратить такую ситуацию:
- Почему это произошло? В чем причина отказа?
- Большую часть времени, когда я вижу, как это происходит (и это также относится ко мне), это означает, что разработчик пошел в одиночку или в режиме кодирования «мальчик-корова» и создал вещи, которые никогда не просили. Код, который не исходит из требований бизнеса, может быть причудливым и «лучше», но зачастую это пустая трата времени и денег. Плюс, это будет стоить еще больше, если вы интегрируете его, так как потребуется повторное тестирование. Подумайте, как люди, которые дают вам деньги: вы должны быть эффективны и на этом уровне.
- Было ли качество производимого программного обеспечения удовлетворительным? Соответствует ли оно стандартам и соглашениям, действующим в вашей компании?
- Вы периодически (и часто!) Сообщали об этом руководителям? Вы случайно обменивались с другими разработчиками команды? Если нет, то они ничего об этом не знают, им потребуется огромное время, чтобы оценить и проанализировать это сейчас. Это не относится к тому же времени в конце. Это все равно, что пытаться отложить уборку в квартире, а затем убирать ее только тогда, когда вы выезжаете: это дерьмовая работа, она утомительна, сложнее, чем если бы она делалась регулярно, и часто этого не происходит правильно.
- Вы производили тесты? Единицы испытаний? Интеграционные тесты?
- Ваш код регулярно проверялся в SCM? Это было в другой ветке? Нужна ли была другая ветка или это могло быть сделано в транке? Откладывание кода подтверждения обычно является плохим признаком. Очевидно, что иногда у вас возникает соблазн сделать это, но вы просто стреляете себе в ногу.
Никто не слушает ваши идеи в вашей компании
Ну, здесь есть 2 варианта, и мы рассмотрим оба:
- Твои идеи были плохими.
- Вы были хорошими идеями.
Давайте начнем предполагать, что они плохие (опять же, размышляя над этим, и принять вашу идею было просто плохо, я знаю, может быть трудно). Что вы делаете, чтобы изменить это?
- Почему вы пришли с идеей? Каково обоснование ? Есть ли реальная необходимость в том, что ваша идея пытается донести до стола?
- Как вы пришли к этой идее? Вы сделали это самостоятельно? Вы поделились? Мозговой штурм? Строить планы? Прототип? (делайте это в правильном порядке. Если по пути не получится, откажитесь от идеи, не продолжайте. Или, по крайней мере, не в своем графике работы.)
Идеи - это только идеи. Если вы просто предложите их как идеи, и они будут отвергнуты, я не понимаю, почему вы будете расстраиваться из-за этого. Однако, если вы действуете на них, не уведомляя никого, и ТОЛЬКО отправляете свои идеи, и они отклоняются, очевидно, я чувствую разочарование в то время, которое потрачено впустую. И ваши менеджеры делают, чтобы!
Предполагая, что ваши идеи были хорошими:
- Была ли ваша презентация хорошей?
- Был ли у вас хороший способ представить презентацию? (Я разработчик, я знаю, о чем говорю: мы сварливые, высокомерные , педантичные PITA, которые всегда правы и с которыми трудно работать из-за часто наших непропорциональных эго ).
- Есть ли у вас план по его реализации? Вы думали о стоимости и времени? Думали ли вы, как это приносит пользу пользователям / клиентам? Вы думали, как это влияет на продажи? Вы думаете, как работа над этой идеей может повлиять на другие проекты и приоритеты? Вы скажете мне: «Зачем мне все это делать, это работа моего менеджера и отдела маркетинга или продаж ?!» За исключением прямо сейчас, вы пытаетесь выполнить часть своей работы.
Шаблон дизайна, который вы с силой применили в своей команде, создал беспорядок
- Почему вы представили шаблон?
- Если он создал беспорядок, то, вероятно, либо:
- был неправильный образец,
- не был реализован правильно,
- не был интегрирован правильно.
- Как ты это представил? Как именно вы определяете состояние «беспорядок»?
- менее читаемый код?
- менее ремонтопригодны?
- сборки сломаны?
- Есть разные виды "беспорядка". Знание того, что это за беспорядок , может помочь узнать, в чем был сбой, и был ли это недостаток шаблона проектирования.
Кроме того, я немного удивлен самим подходом. Вы должны были действительно настаивать на представлении шаблона проектирования? Это кажется довольно странным. Шаблон уже существует, или вам необходимо провести рефакторинг части вашего решения в соответствии с шаблоном. Вы не продвигаете его так, как если бы вы приняли внедрение фреймворка или технологии (например, люди очень настаивали на том, чтобы повсеместно иметь XML, и теперь, как люди начинают настаивать на возможности писать HTML5 на обложке своего продукта большими яркими буквами).
Почему вы должны были подтолкнуть? Почему было сопротивление? Может быть, это было оправдано.
Можете ли вы предоставить примеры того, как этот конкретный шаблон поможет существенно улучшить вашу кодовую базу (например, сопоставив ее с примером рефакторинга для шаблонов ).
Это совершенно не по теме, но это то, о чем я впервые подумал, когда прочитал название вопроса, так как думал, что оно касается сбоев программного обеспечения ... У меня было программное обеспечение, в котором реализован класс BlackHole для управления совершенно особым видом исключений в одном из компоненты. Это может показаться (и действительно является) явно странным и грязным хаком, но само наименование было настолько превосходным, что мы все оценили его как довольно крутой способ справиться с ошибкой! :)