О, хлопче, це багато, якщо ти справді мав на увазі все, що трапилося з тобою!
ПОПЕРЕДЖЕННЯ . У багатьох пунктах нижче ви можете відчути, що я критикую вас, і що я хочу зробити вас відповідальними за помилки, а не враховувати зовнішні фактори. Я не. Просто ви не вказуєте багато деталей, і я просто надаю контрольні списки дій, які слід здійснити для того, щоб все не пішло. Я знаю, що я робив багато помилок (всі це роблять), і нам стає краще, лише якщо ми вчимося на них. І щоб вчитися у них, нам потрібно почати сприймати їх як помилки в першу чергу і приймати відповідальність за те, що пішло не так з нашого боку. Чорт, прийміть відповідальність за те, що пішло не так у чужих частинах, ви також можете навчитися цьому.
Ваш проект не вдався
Зараз ви не можете багато зробити, щоб пом'якшити це.
Однак ви можете зробити багато, щоб уникнути цього в майбутньому. Я б запропонував спробувати вдосконалити свої навички управління проектами та часом.
Одну з книг з найкращим співвідношенням ((дійсна порада) / сторінок), яку я прочитав на цю тему, хоча, можливо, і не найкращу, це Радік Управління радикальними проектами Роб Томсет .
Ви дійсно не вказуєте, що ваш проект провалився, але я б припустив поєднання того, що призвело до незбалансованості у звичайному трикутнику вартість / час / кваліфікація . Найважливіший фактор, на мій погляд, - керувати проектом та розробкою, завжди підтримуючи контакт як з вашими технічними суб'єктами (розробниками та тестерами), так і зі своїми зацікавленими сторонами. Занадто багато проектів не вдається, оскільки вони не слухають спонсорів або зацікавлених сторін і не підштовхують їх до участі в процесі.
Якщо вони не залучені, ви не можете знати, чого вони хочуть. Якщо ви не можете знати, чого вони хочуть, ви не можете його доставити. Якщо ви не доставите її, вони будуть незадоволені. Це невдача. Крім того, якщо ви не залучаєте своїх зацікавлених сторін, вони відключаються від реальності програмної інженерії, тобто вони не розуміють ваших проблем. Якщо вони часто контактують з вами, вони краще розуміють, з чим ви маєте справу. Вони зможуть зрозуміти, коли ти скажеш їм, що "маленька" функція [сміху] займе місяці. Вони можуть довіряти вашому плануванню краще, тому що допомогли побудувати його. Проект не може досягти успіху лише з "специфікаціями на початку, розробкою, тестуванням, доставкою в кінці". Це просто ніколи. Ви можете доставити те, що просили в специфікаціях,
Найголовніше - також зробити ретроспективу , і переконайтесь, що це не є его та не є грою на вину. Просто визначте проблеми.
Що ви витратили на кодування днів, ваша команда відхилила
Я був у цій ситуації. Знову ж таки, не так багато ви можете зробити, щоб пом'якшити це, крім:
- Зберігайте його в СКМ на потім.
- Можливо, спробуйте поступово просунути невеликі шматочки в основні кодові бази замість величезного рефакторингу.
Але знову можна зробити щось, щоб запобігти подібній ситуації:
- Чому це сталося? У чому причина відмови?
- Більшість випадків, коли я бачу, що це відбувається (і це теж було для мене), це означає, що розробник пішов сольно або в режимі кодування корів-хлопчик і створив речі, про які ніколи не вимагали. Код, який не випливає з вимог бізнесу, може бути химерним та «кращим», але часто марно витрачати час та гроші. Плюс це буде коштувати ще дорожче, якщо ви інтегруєте його, оскільки він знову потребуватиме тестування. Подумайте, як люди, які займаються вашими грошима: ви повинні бути ефективними і на цьому рівні.
- Чи задовольняла якість виготовленого програмного забезпечення? Чи відповідав він стандартам та умовам діяльності у вашій компанії?
- Ви періодично (і часто!) Звітували перед цим прямим керівникам? Ви час від часу обмінювалися з іншими розробниками команди? Якщо ні, вони нічого про це не знають, зараз це буде величезна витрата на оцінку та перегляд. Зрештою, НЕ враховує той самий час. Це як завжди намагатися відкласти чищення своєї орендної квартири, а потім намагатися прибирати її лише тоді, коли ви переїжджаєте: це безладна робота, вона виснажлива, це складніше, ніж це було б, якщо це робиться регулярно, і це часто не буде зроблено правильно.
- Ви виробляли тести? Одиниці тестів? Інтеграційні тести?
- Ваш код регулярно перевірявся в СКМ? Це було в іншій галузі? Чи потрібна була інша гілка чи це можна було зробити в стовбурі? Відкладення коду вчинення, як правило, є поганим знаком. Очевидно, що іноді тебе спокушає це зробити, але ти просто стріляєш собі в ногу.
Ніхто не слухає ваших ідей у вашій компанії
Ну, тут є два варіанти, і ми розглянемо обидва:
- У тебе ідеї були погані.
- Ви ідеї були гарні.
Почнемо припускати, що вони погані (знову ж, саморефлексія над цим і прийняття вашої ідеї було просто очевидним може бути складно, я знаю. Що ви робите, щоб змінити це?
- Чому ви придумали цю ідею? Яке обґрунтування ? Чи є реальна потреба у тому, що ваша ідея намагається подати до столу?
- Як ви придумали цю ідею? Ви робили це самостійно? Ви поділилися? Мозковий штурм? План? Прототип? (зробіть це в правильному порядку. Якщо це не вдасться в дорозі, тоді відмовтеся від ідеї, не продовжуйте. Або принаймні не у своєму робочому графіку.)
Ідеї - це лише ідеї. Якщо ви просто запропонуєте їх як ідеї, і вони будуть відкинуті, я не бачу, чому б ви почувались погано. Якщо ви поступаєте з ними, не повідомляючи про це нікого, а потім подаєте лише свої ідеї, і вони відхиляються, я, очевидно, відчуваю розчарування в той час. І ваші менеджери це роблять!
Припустимо, що ваші ідеї були хорошими:
- Чи була ваша презентація хорошою?
- Чи був ваш спосіб подання презентації хорошим? (Я розробник, я знаю, про що я говорю: ми бурхливі , зарозумілі , педантичні PITA, які завжди мають рацію і з якими важко працювати, тому що часто буває непропорційним егою ).
- Чи є у вас план його виконання? Ви думали про вартість та час? Ви думали, як це приносить користь користувачам / клієнтам? Ви думали, як це впливає на продажі? Чи думали ви, як робота над цією ідеєю може вплинути на інші проекти та пріоритети? Ви скажете мені: "навіщо мені робити все це? Вони - робота мого менеджера та маркетингових чи торгових команд ?!" За винятком випадків, ви намагаєтеся виконати частину всіх своїх робіт.
Шаблон дизайну, який ви запровадили із силою у вашій команді, створив безлад
- Чому ви ввели шаблон?
- Якщо це створило безлад, то, ймовірно, або:
- не був правильний зразок,
- не було реалізовано правильно,
- не було інтегровано правильно.
- Як ти це представив? Як саме ви визначаєте стан "безлад"?
- менш читабельний код?
- менш рентабельний?
- будівлі порушені?
- Існують різні види "безладу". Знання, що таке безлад , може допомогти зрозуміти, у чому стався збій, і якщо це була вина дизайну.
Також я трохи здивований самим підходом. Ви повинні були на самому справі натиснути на шаблон проектування бути введені? Це здається дивним. Візерунок вже є, або вам потрібно переробляти частину свого рішення відповідно до зразка. Ви не штовхати його , як ви б прийняття рамок або технологій (наприклад , люди штовхнуло дуже важко мати XML всюди, і тепер , як люди починають штовхаючи , щоб мати можливість написати HTML5 на їх обкладинці продукту у великих яскравих буквах).
Чому вам довелося натискати? Чому був спротив? Можливо, це було виправдано.
Чи змогли ви надати приклади того, що саме ця модель допоможе суттєво покращити базу коду (наприклад, зіставивши її із прикладом Refactoring to Patterns ).
Повністю поза тематичне зауваження, але це те, що я вперше подумав, коли читав заголовок питання, коли думав, що це стосується збоїв у програмному забезпеченні ... У мене було програмне забезпечення, яке реалізувало клас BlackHole для управління дуже особливим видом винятків в одному з компоненти. Це може здатися (і справді є) очевидно дивним і брудним злом, але саме називання було настільки чудовим, що ми всі оцінили його за досить класний спосіб впоратися з невдачею! :)