Що значить «Нам потрібно більше часу»??

Ми, як технарі, приділяємо мало часу розмов про комунікації, управління проектами та пріоритизації. Це ті навички, які перетворюють хорошого програміста в відмінного інженера. Сьогодні я збираюся сфокусуватися на одному з аспектів управління проектами, в якому ми очевидно погані мистецтві оцінки термінів.

image

Якщо є сумніви в тому, що це дійсно необхідний навик, згадайте цей жахливий, але часто задається питання: «Як багато часу це займе?». Навіть якщо ви супер-Agile і не вірите в дедлайни, будьте впевнені, що хто-небудь зламається під тиском і видасть дату, до якої і буде прив'язана ваша команда. І коли ця дата настане, а ви не будете готові до запуску, ваш менеджер буде злитися, тому що через вас вона буде виглядати нерозумно; відділ продажів буде злитися, тому що вони обіцяли найважливішим замовникам продукт вже сьогодні; і ваша команда теж буде злий, тому що вони працювали п'ять вихідних поспіль намагаючись вкластися у неможливий дедлайн. Так що давайте уникнемо всього цього і створимо план, придатний до життя.

Для прикладу я хочу запропонувати вправу, яке я запозичив з курсу «Intro to Development» від Microsoft. Мета – оцінити час фарбування кімнати. Це той тип вправи, який не вимагає якихось специфічних знань про якійсь системі.

Тепер, перш ніж скролл вниз, подумайте і напишіть свою оцінку — скільки часу піде на те, щоб пофарбувати кімнату? Не пропускайте цю частину – важливо записувати свої думки, щоб стежити за їх еволюцією.



image

Готове?

Я сподіваюся ні, тому що ви навіть ще не знаєте деталей завдання! Почніть з запиту специфікації та завдання уточнюючих питань.

Вихідні вимоги
  1. Кімната велика? 12' x 10' x 10', сама звичайна кімната.
  2. У вас вже є матеріали для фарбування? Немає.
  3. У кімнаті багато меблів? А дверей, вікон і дрегих штук, які треба виключити з процесу фарбування? Так, ви отримаєте фотографії.
  4. Якого кольору кімната зараз, і в який колір її будуть фарбувати? Зараз вона кольору жабеняти Керміта, і ми хочемо пофарбувати в світло-жовтий.

Навіть така, здавалося б, просте завдання може вимагати купу уточнень. Окей, почнемо спочатку. Запишіть вашу кращу оцінку, перш ніж читати далі.

image

Ready?

Розбиваємо на завдання
  1. Підтвердіть всі вимоги. Потрібно бути впевненим, що всі згодні саме на цей колір, і збираються фарбувати одні і ті ж стіни. (5 хвилин)
  2. Дізнайтеся, як фарбувати кімнату, якщо ви ще не знаєте. Ви швидше за все проясніть багато важливих питань про грунтовки, і як довго потрібно чекати перед нанесенням наступного шару. Повторно уточніть будь-які неясності у замовника – може, ви тільки що дізналися, що фарба розрізняється ще й за ступенем блиску. (15 хвилин)
  3. Складіть список покупок і придбайте всі необхідні матеріали: фарбу, валики, лотки для фарби, пензлики, спецодяг, etc. (2 години)
  4. «Запрототипируйте» вашу роботу на невеликій ділянці кімнати щоб бути впевненим, що оригінальний колір не проступає під новим. Це може зберегти багато часу якщо, наприклад, ви не думали, що знадобиться грунтовка, а вона знадобилася (10 хвилин на покраску, 2 години на висихання)
  5. Зніміть зі стін картини, штори, кришки вимикачів. Відсуньте меблі, і накрийте її чим-небудь. І підлога теж, особливо якщо потрібно фарбувати стелю. (30 хвилин)
  6. Вимийте стіни і огляньте їх на предмет наявності тріщин або нерівностей. Вам знадобиться все це виправити перед фарбуванням. (1 година)
  7. Захистіть всі, починаючи з плінтусів, від крапель фарби. Заклейте малярським скотчем всі краї (вікон та дверей, наприклад). (1 година)
  8. Загрунтуйте кімнату. (1.5 години)
  9. Дайте грунтовці висохнути. (30 хвилин, якщо починати фарбування з тієї ж точки, де починали ґрунтовку)
  10. Відмийте від грунтовки все обладнання, необхідне для фарбування. (20 хвилин, але можна робити це і поки фарба сохне)
  11. Нанесіть фарбу. (2 години)
  12. Уберитесь. (30 хвилин)
Отже, давайте відвернемося від покраскни на хвилину, щоб повернутися в світ і відзначити кілька схожих моментів.

Деякі з цих кроків можуть здатися безглуздими. Двічі перевірити колір? Але якщо упустити щось з деталей при складанні специфікації, ви можете витратити багато часу на створення того, що не потрібно нікому. Найдрібніша відмінність у специфікації («Ой, ви хотіли водостійку, різних відтінків і на одній стіні?») може дорого коштувати в майбутньому, в даному випадку – практично подвоюючи початкові терміни.

Без досліджень чи прототипу, ви можете витратити купу часу даремно. Упустити фреймворк, який робить саме те, що вам потрібно, наприклад. А потім покаже прототип, що документація фреймворку нахабно брехала, і він насправді вам не підходить! Якщо прототип був простим і дешевим, ви тільки що врятували себе від витраченого на спроби впровадження фреймворку часу.

Далі, якщо не розбити завдання на декілька маленьких шматків, ви можете пропустити які-небудь важливі моменти. Наприклад, якщо ви забули, що меблі треба відсувати, у вас може не виявитися напарника, щоб зрушити ці гігантські книжкові шафи.

image

Та найголовніший фактор точності оцінки часу – був у вас такий досвід раніше, чи ні. Навіть з довгим і дорогим дослідженням важко дізнатися, скільки шарів фарби знадобиться на цій конкретній стіні, яка у вас швидкість фарбування, або як вологість в кімнаті впливає на час висихання. Фактично, якщо ви вже робили такий проект, ви можете пропустити кроки з першого по четвертий. Але якщо ж ні, вас постійно будуть дивувати речі, про які ви забули, і ваша первісна оцінка часу буде все далі від реальної. Це означає, що більш-менш правдоподібні терміни з'являться лише після виконання пункту 4. Все, сказане до цього моменту, буде простий здогадкою, про який можна потім пожалкувати, так що найбезпечніший спосіб – це сказати «Я не знаю, але зможу сказати через кілька днів».

ГАРАЗД, повернемося до фарб. Ми оцінили проект приблизно на 12 годин. Це все?

Нуу… кроки з грунтовкою і фарбуванням явно менш детальні, ніж інші. Змиріться, ви все ще не знаєте як буде реалізована ця частина, і всі оцінки – знову ж здогадки. Застосовуючи принципи вище, спробуємо ще трохи заглибитися.

  1. Підготуйте фарбу, змішавши всі у великому відрі. Налийте трохи в лоток. (15 хвилин)
  2. Пофарбуйте краю пензликом, не забуваючи про кути, і пропускаючи все, що не повинно бути жовтим. Якщо у вас іде 3 хвилини на півтора метра плінтуса, а всього його 65 метрів, то все займе близько двох годин. Плюс 20 хвилин на повзання вгору-вниз по сходах. І якщо у вас немає сходи, добре б додати в список покупок. (нехай буде 2.5 години)
  3. Один рас вмочивши валик у фарбу, ви швидше за все зможете покрити ділянку стіни від підлоги до стелі з шириною валик за кілька проходів, так що на секцію в півтора метри швидше за все удет хвилин десять. (1,5 години)
  4. Ваш «прототип» підкаже, скільки шарів фарби знадобиться. Це може значно збільшити загальний час, так що це теж треба брати до уваги. (Помножити на число шарів, враховуючи чинник часу висихання)

Ви також знайдете, що грунтовка не сильно відрізняється від фарбування, так що збільшуємо ще в два рази.

Отже, в разі лише одного шару, виходить 15 годин. Фуух, це дійсно набагато більше, ніж ми припускали спочатку! І на всякий випадок додамо ще трохи часу на всякі раптовості, на зразок необхідності встановлення сітчастого фільтра. Так що округлимо до 17 годин. Все, починаємо фарбувати, так?

image

Неа, все ще немає!

Зовнішні фактори
Так, ми оцінили, скільки часу піде на фарбування. Але це не те, що всі хочуть знати. Вони хочуть знати, скільки пройде часу до того, як кімната буде пофарбована. Це тонка, але важлива відмінність. Коли я питаю про баг, добре чути, що ви можете накодить фікс за годину, але те, що мені дійсно треба знати – це що у вас до наступного тижня не буде часу цим займатися, так що латку я отримаю через тиждень плюс одна година! Факт того, що я технічно спитав тільки про час на створення виправлення, може бути помічений лише інженером. -_-

Так що ми втрачаємо? Перерви на умивання та їжу, випадкові переривання, і війну пріоритетів. Робота може бути затримана купою проблем, очікуваних і несподіваних. Може сьогодні потрібно закінчити раніше, тому що день прання, або сталося щось раптове. Як взагалі можна щось передбачати в разі такої невизначеності?

Відповідь – багато буферного часу, доданого на основі попереднього досвіду. Можна розрахувати множник для своїх оцінок порівнюючи оригінальний естімейт для кожної задачі і час, реально витрачений на неї. Так як кожен проект відрізняється від попереднього, такий спосіб не дасть фантастичної акуратності. Але такий множник, застосований до оцінки часу всього проекту може покрити всі, включаючи ваш природний оптимізм, збільшилася кількість мітингів і час на прокрастинацию в інтернеті.

Я не буду вдаватися в деталі, тому що на цю тему вже є докладна стаття від Joel Spolsky Evidence Based Scheduling. Хоча такий метод може здатися довгим, відстеження таймшитов хоча б для пари проектів може серйозно поліпшити ваші оцінки. Також як і всі інші навички, цей теж вимагає часу і зусиль.

Перехоплюючи погані оцінки
Все вищенаписане добре в тому випадку, якщо вас попросили оцінити час. Але, як програмісту, оцінка до вас зазвичай приходить вже в готовому вигляді разом з проектом. Може бути дедлайн був встановлений маркетингом, тому що вони хочуть получть це до Різдва, або менеджером, якому потрібна дата для координації з іншими командами, у яких теж є свої дедлайни. Або конкретних термінів немає, але з блиском в їх очах можна сказати від Певних Очікуваннях. Суть в тому, що якщо ви вважаєте, що терміни нереалістичні, про це треба сказати.

В ідеалі кожен інженер повинен бути здатний оцінити свою частину роботи самостійно, без прив'язки до виданого кимось планом. Можна легко переконати себе що можна зробити проект за два тижні, або просто сильно не заморочуватися з приводу цього строку, поставленого менеджером. Можна зрозуміти, що все погано, тільки коли ви візьметеся за реальну роботу.

Дійсно важливо старанно оцінити терміни як можна раніше і обговорити всі нереалістичні дедлайни. Просто пам'ятайте, що коли ви опираєтесь погано поставленим термінами, ви не Деббі Даунер, яка бореться проти магічного світу, де ви закінчуєте проект до Різдва і все чудово. Такого світу не існує. Ви просто віддаєте перевагу світ, в якому всі шукають компроміси між датою і набором функцій, щоб досягти мети, світу, в якому дедлайни переносяться або на догоду їм приноситься величезний шматок функціональності. Якщо ваш тимлад або PM ніяк не купляться на це, направте їх на статтю Evidence Based Scheduling.

Так, звучить так, як ніби у нас багато роботи. Але я можу вас запевнити – для будь-якого важливого проекту акуратна оцінка термінів може дозволити уникнути купи неприємностей. Сподіваюся, у вас тепер є більше інструментів для кращої оцінки проектів.

Примітка перекладача. Не можу втриматися від цитування відомої у вузьких колах формули :)
Часто запитують, вирішив один раз написати. Термін виконання проекту за Бобуку-Бацеку, формула від 2008 року: pic.twitter.com/EkoRw04vy8  bobuk (@bobuk) August 25, 2015

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.