Хоча я погоджуюся, що це невдача управління, це також збій з вашого боку. На цьому етапі це буде дуже важко виправити, тому деякі з того, що вам потрібно вийти з цього, - це впоратися з майбутніми проектами.
По-перше, потрібно наполягати на вимозі базового документа на початку проекту. Це не повинно бути вигадливим або формальним, але ви не можете успішно будувати що-небудь, поки клієнт не вкаже, що очікується. Якщо у вас цього немає в письмовій формі, шанси клієнта бути задоволеними кінцевим результатом - приблизно 0%. Тож це критично важливо. Ваша робота також шукати неоднозначності в цьому документі та якомога швидше їх усунути. Коли ви стикаєтесь з одним із них і не знаєте, як його інтерпретувати, не гадайте, що ви думаєте, що це означає, переконайтеся, що ви та клієнт знаходитесь на одній сторінці про те, що це означає. Так, це означає більше спілкування з людьми і більше зустрічей і менше кодування. Але для вияснення незрозумілої вимоги потрібно набагато менше часу, ніж неправильне кодування, а потім доведеться перекодувати її. Крім того, вам часто доводиться надавати їм повторне кодування безкоштовно, і це не добре для компанії, в якій ви працюєте.
Далі ви кажете їм, скільки часу потрібно виконати, і що встановлює термін. Ви ніколи не приймаєте термін, який базується на чому-небудь іншому, ніж на кількість годин, які знадобляться для виконання робіт для задоволення вимог. Якщо ви це зробите, ви знову будете маршем смерті. Покажіть їм, як не можна виконати термін, докладно пояснивши години, які це займе. Ви не можете помістити 200 годин часу на розробку в тиждень лише з одним розробником, незалежно від того, скільки клієнт цього хоче. У той момент, коли граничний термін є нерухомим, ви запитуєте, які елементи слід перенести на наступну ітерацію.
Не забувайте, що час розробки складає лише невелику частину проектного часу, коли ви робите кошторис проекту. Вам також доведеться враховувати зустрічі та комунікації електронною поштою / телефоном, тестування, розгортання, документацію, фізичну настройку серверів, робочих станцій, програмного забезпечення. Крім того, плануючи термін, ви можете лише припускати, що у вас є 6 годин на день, а не 8. Це враховує відпустку, побоювання, час хвороби, неминучу затримку (наприклад, коли вам довелося чекати, коли вони отримають вам дозволи в мережі тощо), навчання, робота, не пов'язана з проектами (розклади часу, зустрічі з персоналом тощо). Однією з найважливіших причин, чому люди не дотримуються своїх термінів, є те, що вони роблять припущення, що вони будуть робити лише розробку і працювати щодня на 8 годин. Це просто не реалістичне припущення.
І кожного разу, коли вони додають ще одну деталь, ви кажете їм, скільки часу пройде і на скільки додаткова робота змістить термін. Ви не просите перенести крайній термін, ви кажете їм, що рухається через нову вимогу. Тепер ви повинні пройти через свого менеджера для цього, але це, перш за все, ваша відповідальність, щоб переконатися, що ваш менеджер знає щоразу, коли вимоги будуть змінені і скільки це додасть проекту. Переконайтесь, що все це написано в письмовій формі, щоб ви могли захистити себе, якщо виникне потреба.
Далі, не дозволяйте собі зловживати робочими 11-годинними днями та вихідними. Це нормально в коротких спуртах (менше 1 тижня кожні півроку або близько того), але в довгостроковій перспективі це просто не прийнятно. Втомилися люди кодують повільніше, і вони роблять більше помилок. Ви можете зробити більше, працюючи з більш високою якістю, регулярно працюючи на 8 годин, ніж регулярно 11 годин. і вихідні дні.