Як пояснити нетехнічній особі, чому завдання займе набагато більше часу, ніж вони думають? [зачинено]


60

Практично кожному розробнику доводиться відповідати на запитання з боку бізнесу на кшталт:
Чому для того, щоб додати цю просту контактну форму, потрібно 2 дні?

Коли розробник оцінює це завдання, він може поділити його на етапи:

  • внести деякі зміни в Базу даних
  • оптимізувати зміни БД для швидкості
  • додати HTML на передньому кінці
  • написати код сторони сервера
  • додати перевірку
  • додати клієнтський JavaScript
  • використовувати одиничні тести
  • переконайтеся, що налаштування SEO працює
  • впровадити підтвердження електронною поштою
  • рефактор і оптимізувати код для швидкості
  • ...

Це, можливо, важко пояснити людині, яка не є технічною, яка, як правило, усю задачу розглядає як просто з'єднання HTML і створення таблиці для зберігання даних. Для них це може бути 2 години MAX.

Тож чи є кращий спосіб пояснити, чому оцінка невисока для розробника?


15
Я підтримав ваше запитання, оскільки це найкраща відповідь на себе.
JohnFx

3
Саме так. Скажіть їм декетам один раз, а потім, можливо, вони зрозуміють специфіку ... Зробіть це один раз, і, можливо, наступного разу вони розберуться про деталі ...
Agile Scout


4
Ви думаєте, що важко пояснити це нетехнічним людям? Навіть технічні люди цього не розуміють!
congusbongus

1
Шляпати їх великою фореллю і кричати на них, щоб схилитися перед вашими технологічними можливостями, безумовно, веселіше, але я думаю, що кулі насправді є досить хорошою ідеєю.
Ерік Реппен

Відповіді:


26

Ви щойно це зробили у своєму питанні.

Розділіть завдання на окремі етапи та дайте оцінки для кожного з них. Це покаже, що ви розглядали всі варіанти та (сподіваємось) висвітлювали всі можливі випадки.

Якщо часові шкали занадто великі, то ви можете обговорити, які деталі (наприклад, підтвердження електронною поштою) у цьому випадку не потрібні конкретними даними, а не просто намагатися забити кварт у пінту.

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


3
Зазвичай я роблю це на крок далі і розміщую його в Microsoft Project. Це щось професійне, що вони можуть взяти до своїх начальників, і ви можете перерахувати час для кожного (бажано за години), а потім показати всі необхідні кроки. Їм набагато складніше сперечатися про окремі завдання, що займають 4 години і додають до тижня. Якщо у вас є перелічені завдання, які займають дні чи тижні, спробуйте розбити їх на більш дрібні завдання.
Даніель Кнудл

1
@Daniel - Я думаю, це залежить від того, наскільки "формально" вам потрібно отримати, але Проект (або його еквівалент) виглядає більш професійно.
ChrisF

Дійсно, я погоджуюся з тим, що формальності в деяких випадках більше, ніж потрібно. Вся справа в тому, який варіант отримує менше відштовхування назад і про те, наскільки далеко він повинен пройти по сходах. Особисто я використовую проект для планування домашніх справ .. lol
Daniel Knoodle

1
Звичайно, недоліком цього є те, що цей список стає зобов'язанням, і якщо щось перейде, ви отримаєте удар.
Енді

Що стосується коментаря @Andy, це одне, що насправді досить важко виправити. Один з головних способів зробити свідоме зусилля для його пом'якшення - це зменшити свої оцінки, але тоді ви ризикуєте: 1) Ви все ще недооцінюєте потрібний вам час, або 2) оцінки виглядають занадто довго, принаймні частково з підкладки. Це також питання, яке виникає в Scrum: розробники залишать багато місця в своїх оцінках щодо спринтів. (Ось чому я особисто віддаю перевагу Канбану.) Сподіваюся, існує якийсь спосіб вирішити ці два потенційні питання під час спілкування.
Panzercrisis

11

Перерахування завдань - це майже ідеально, але майте на увазі, що завдання, які мають інженер цілеспрямовані, мають дуже мало сенсу для нетехнічної людини. Наприклад, у наведеному вище списку я знаю, що "оптимізувати зміни БД для швидкості" можуть бути одні або кілька трудомістких завдань, які включають в себе профілювання коду, запуск його в пошуках повільних точок, перегляд його з експертами або перекидання через набір заздалегідь визначених тестів, характерних для продукту. І тоді у вас, мабуть, є кілька годин, якщо не днів, коли б’ють головою про свій стіл, поки ви намагаєтеся знайти спосіб зафіксувати занадто повільні ділянки.

Але ви, можливо, втратили управління проектом на слові "БД", якби не слово "оптимізувати".

Я, як правило, висловлюю цей проект в управлінні проектами у перерахунку на великі кроки зі словами, які описують ризик з точки зору бізнесу. Взявши ваш список, я б зробив його таким чином, якби я спілкувався зі своїм управлінням проектами:

  1. По-перше, у цій справі є дві частини - веб-сторінка, яку бачить користувач, і сервер, який робить важкий підйом. Обидві частини повинні бути там, щоб ця функція працювала.
  2. Перша частина полягатиме у створенні веб-сторінки, яка має сенс для користувача (додайте HTML на передньому кінці, додайте JavaScript на стороні клієнта). Ключовим тут є те, що веб-сторінка повинна виглядати як частина цього продукту, вона повинна працювати в усіх браузерах, які ми підтримуємо, і повинна бути гладкою. Це те, що бачить користувач, тому якщо це виглядає погано, користувач подумає, що наш продукт поганий. Розробка цього, а потім його тестування займе X днів.
  3. Далі, під веб-сторінкою повинні бути речі, які виконують роботу. У цьому випадку це означає, що сюди вставити опис функції (карти для - внести деякі зміни в Базу даних, написати код сторони сервера, здійснити підтвердження електронної пошти, додати перевірку, використовувати тести на одиниці). Я не можу просто зібрати це разом. Якщо код розроблений і потім перевірений, ми ризикуємо заподіяти шкоду ВСІМ користувачам. Це означає, що проста нова річ може пошкодити репутацію продукту в усьому світі - навіть для користувачів, які не використовують цю особливість. Наша практика розробки охоплює це - ми робимо багато тестування, щоб переконатися, що цього не відбудеться, - але це означає, що я повинен запланувати вчасно, щоб перевірити це належним чином. Це займе у мене Y днів.
  4. Швидкість - це велика справа в нашому продукті. Якщо речі не відбудуться швидко, користувачі подумають, що продукт не є корисним. Тому після того, як я напишу всі ці матеріали, мені потрібно пройти роботу і переконатися, що це дорівнюють за рівнем продуктивності. Це велика справа в веб-речах - якщо люди бачать, що сайт стає повільним, вони швидко звернуться до іншого продукту, щоб задовольнити ту саму потребу, тому що насправді важко помітити різницю між повільними та зламаними. Така робота зазвичай займає Z днів (оптимізуйте зміни БД для швидкості, рефактор та оптимізуйте код для швидкості)

Я б уникну будь-якої оцінки, яка становить менше півдня. На деякому рівні їм доведеться довіряти, що ви знаєте, про що говорите. І якщо вони дійсно думають, що це буде лише 2 години, тоді запропонуйте їм посидіти з вами 2 години, поки ви пройдете їх через те, як виглядає 2 години в житті розробника SW - тоді робіть кодування 101 клас для приблизно 2 години, щоб показати, що саме потрібно враховувати, щоб навіть почати вирішувати проблему.

Найважливішими є такі речі:

  • Купуйте найбільше говорити про сприйняття покупців та використання продукту, ви переходите до того, щоб розмовляти їхньою мовою - мовою $$ - справа в тому, що якщо код зламаний разом, то ви зрештою втратите бізнес - якщо ні за цією функцією, а потім про деяку наступну особливість, коли погана практика розробки не дозволила розширити код.
  • Викладіть послідовність подій. Наступним нетехнічним питанням буде "якщо у нас буде більше розробників, ніж у вас, це станеться швидше? Якщо так, якщо на це знадобиться 40 годин, може 40 людей зробити це сьогодні вдень?" Відповідь, звичайно, - "НІ! ВИ ВІД ВАШОГО РОЗУМУ ??". Але це не найкраще. Найкраще те, що тут є логічна послідовність кроків. Реч B не може бути виконана, поки річ А не буде встановлена ​​(якщо ви не написали жодного коду, ви не можете реально оптимізувати або перевірити його ...). Все, що A і A 'можна було б зробити разом, тому, якщо вони зможуть пощадити цього розумного хлопця там, ви могли б поголити час з тижня до 4 днів, і якщо вони зможуть гарантувати приголомшливу підтримку тесту, то, ймовірно, ви могли б дістатися до 3 дні. Там '
  • Зосередьтеся на ризику і будьте готові сказати, що деякі ризики цього варті в цей час. Ось за що дітям хлопці платять великі гроші - з'ясовуючи, які ризики варто брати на себе. Наприклад, якщо швидкість виходу на ринок важить низьку ефективність, оскільки у вашої компанії є достатньо грошових коштів у руці, щоб в короткий термін створити смішну кількість серверів, то вам може бути запропоновано пропустити все це на кроці 4 (оптимізація коду / бази даних) ). Це їхнє право - лише ваша робота пояснити ризики, притаманні цьому рішенню.
  • Однак, якщо ви не довіряєте цим людям, отримайте підтвердження в письмовій формі - це не повинно бути конфронтаційним, лише швидкий електронний лист із повідомленням: «ось що я думаю, що ми обговорили, ось що я не роблю, ось ризикую. Я зараз це зроблю, тому повідомте мені, якщо ви не згодні ... якщо я не почую, ви припускаю, що це правильний шлях ". Враховуючи, що управління продуктами може бути центром короткострокової втрати пам’яті, це дуже корисно для всіх.

Це коли було б непогано мати можливість улюблені відповіді.
Panzercrisis

9

Існує приказка: "Ти не можеш помістити десять фунтів (лайно) в п'ятифунтовий мішок". Ваше завдання полягає в тому, щоб показати, що завдання становить десять фунтів, і вони просять мати його в п'ятиграмовий часовий проміжок.

Єдине, чого вам не вистачає, - це оцінка часу. Покладіть оцінку часу на кожне завдання та покажіть, як усі ці речі складаються разом із оцінкою, яку ви надаєте. Не дозволяйте жодній оцінці перевищувати 4 години. Якщо у вас є якесь завдання, де ви говорите "день" або "10 годин", то розбийте його на більш дрібні підзадачі.

2h make some changes to Database
2h add front end HTML
   write server side code
     4h input validation
     4h database inserts
2h add validation
2h add client side javascript
   use unit tests
     2h client-side tests
     3h server-side tests
2h make sure SEO is setup is working
2h implement email confirmation
2h optimize DB changes for speed
2h refactor and optimize the code for speed

Тепер у вас є деталізований рахунок витрат. Всі говорили, що це до 27 годин роботи.

Тепер ви можете показати це своєму клієнту і сказати: "Це те, що потрібно зробити, з вартістю кожного". Вживайте слово "вартість", оскільки час - це вартість, а керівництво розуміє витрати. Поясніть, що ви, можливо, зможете відкинути дві задачі на оптимізацію наприкінці, але вони матимуть негативний ефект у дорозі, і вони становлять лише 15% від загальної оцінки.

Також переконайтесь, що ви реально пояснюєте, що ваші години / день. Наприклад, якщо вас закликають підтримувати технічну підтримку чи підтримувати бази даних чи будь-що інше, врахуйте це у вашій оцінці. Не кажіть "Ну, я можу робити 7,5 годин на день хорошого кодування", тому що ви, мабуть, не можете. Це, мабуть, більше схоже на 5 або 6.

Тоді, головне, відстежуйте свій прогрес. Скажіть, що ви можете робити 5 годин на день кодування. Тоді ви повинні мати можливість зняти перші два завдання (на моєму прикладі) у понеділок, закінчити третє та розпочати четверте у вівторок тощо. Складіть контрольний список, який показує це, щоб ви могли показати їх у середу, коли вони завітають, і сказати: "Як ви все ще будете робити до кінця п’ятниці?"

Дивіться мої слайди для моєї бесіди Попередження кризи: Оцінка проекту та відстеження, яка працює, що я давав в OSCON кілька років тому. Подивіться на слайд 21 «Планування тижня». Також є зразкова діаграма швидкості .


5
П’ять-шість годин хорошого кодування на день? Повинно бути приємно!
ДАЙТЕ МОЕ правильне ДУМКА

1

Запитайте їх:

Як би ти це зробив? Які модулі ви змінили б? Скільки рядків коду? Які наслідки для безпеки? Будь-які зміни в схемі бази даних? Якщо ви внесете будь-які зміни в БД, на скільки файлів впливає? Скільки часу потрібно було додати останню форму? Яке середнє значення (середнє арифметичне) для додавання форми? Що було найдовше? Я підрахую, це займе на одну хвилину менше, ніж найдовше. Якщо ви не знаєте, скільки часу знадобилося для додавання останніх N форм, то ця оцінка гарантована лише в одному порядку.


1
Вони здаються мені пасивно-агресивними.
Енді

Ні, це сократівський метод.
SnoopDougieDoug

-2

Я міг би сказати вам, щоб пояснити їм, що їх програмне забезпечення - це як 100-тонна машина з 10 000 різних деталей, значна частина яких з'єднана складними способами. Вміщення 1-дюймового шматка в цю машину вимагає певної інженерії, щоб вона не зламала машину, АЛЕ краща відповідь:

Якби у вас була краща архітектура коду, чи зробили б такі завдання такі легкі? І відповідь полягає в тому, що більшість програмних команд не є хорошими архітекторами (адже вони просто не накопичили багато загальних, архітектурних шаблонів або вони не є господарями проблемної області достатньо, щоб передбачити кожну проблему), і вони не завжди хороші інженери , тому вони не відчувають впевненості в оцінці чи обіцянках.

Як і у 20-му столітті, щоб зібрати гарну архітектуру та інженерне будівництво великих будівель, інструменти для інженерії програмного забезпечення просто не потрапили до мейнстріму. Вони розробляються: потрібен новий спосіб мислення. Дивіться Zen Code на wiki.hackerspaces.org/Hacking_with_the_Tao.


це, здається, не пропонує нічого суттєвого щодо питань, викладених та пояснених у попередніх 5 відповідях
18.08.17
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.