Не-разработчици: Ето защо оценката на софтуера е трудна

Работил съм в организации за софтуерно инженерство повече от 20 години. В един момент всеки разработчик на софтуер получава въпроса, от който се страхува.

„Колко време ще ви отнеме да изградите тази функция?“

Програмистът замръзва. Настъпва паника. Появяват се видения за бъдещето. Те не изпълниха оценката си, сега те са лошите хора. Ако бяхте добър разработчик, щяхте да го направите навреме. ЗАЩО сбъркахте? За разработчик на софтуер предоставянето на приблизителна оценка може да даде на някого въже, с което да ви обесят. Много разработчици са се научили да бъдат консервативни по отношение на своите оценки или да добавят подложки, за да им дадат малко място за мърдане.

За неразработчиците е трудно да разберат защо е трудно да се оцени времето, което ще отнеме дадена функция.

„Пишете код от години, трябва само да поставите малко текст на екрана, не може да е толкова трудно, нали?“

Разработчиците знаят, че има много неща, които могат да се объркат. Решението, което имат в ума си, може всъщност да не реши проблема адекватно. Възможно е да има грешки в софтуера, на който разчитат. Спецификацията може да се промени частично. Значително по-вероятно е оценката да е грешна, отколкото правилна.

Хората са гадни в оценяването на нещата. За да илюстрирате тази точка, ето тест, който можете да опитате у дома.

  1. Вземете тесте от 52 карти. Разделете тестето на произволно място.
  2. Поставете едната част от цепката с лицето нагоре, а другата половина с лицето надолу.
  3. Сега разпределете картите на масата и ги разбъркайте.
  4. Преценете за секунди колко време ще ви отнеме да ги сортирате в една купчина за всеки костюм (това е кратка задача, така че секундите са подходяща детайлност).
  5. Преценете колко време ще ви отнеме да сортирате всяка купчина костюми в числов ред за секунди.
  6. Запишете тези оценки, вземете хронометър и опитайте.

Харесвам тази задача поради няколко причини:

  • Това е задача с много предвидим краен резултат, така че няма спорове за това как изглежда „свършеното“.
  • Ако сте играли карти, вие сте правили това и преди. Трябва да можете да дадете приблизителна оценка.
  • Тук има променливи: колко карти са с лицето нагоре и с лицето надолу? Колко добре са смесени картите?

На теория имате цялата необходима информация, за да предоставите прогноза. А задачата е много по-проста от изграждането на софтуер. Когато провеждам този експеримент с хора, те са изненадани, че тяхната оценка обикновено е значително грешна. Ако стигнете до десет секунди, плюс или минус, се справяте доста добре. Ако изпълните тази задача втори път веднага, вероятно ще сте по-близо втория път. Може да стигнете в рамките на 10 секунди този път; дори и да го направите, вероятно не сте уцелили точния час. Така че следващия път, когато обсъждате прогнози, проявете малко съпричастност – те не са лесни и разработването на софтуер е значително по-сложно от сортирането на карти.

Тази оригинална публикация се появи с останалото оригинално съдържание за управление на http://reflectivemanagement.com/blog