Давно мы с вами не общались ... Но, думаю, вы меня поймете ... новый интересный
проект, куча энтузиазма и желания сделать его лучше чем предыдущий, не допустить
прошлых ошибок и наделать новых, вернуться домой и, не удержавшись, сесть за компьютер,
выискивая в инете статьи, которые возможно подскажут тебе, как делать все правильней
и лучше, ловить себя на том, что ложась спать ты прокручиваешь в голове список завтрашних
дел, а на следующий день тебе не терпиться побыстрее добраться до работы,
чтобы их завершить - вобщем все то, что бывает, когда интересным проектом занимается
команда, полная энергии и энтузиазма.
Э..э, я надеюсь, у вас не сложилось впечатление, что я днем и ночью сижу за компьютером
с красными до одури глазами, заваленный грудой одноразовых стаканчиков из под кофе?
Вовсе нет, со стаканчиками успешно борется наша уборщица, а за это время я дважды
выходил гулять на балкон, а однажды даже заглянул в МакДональдс попить диетической кока-колы с друзьями :)
На самом деле такой темп очень трудно выдержать без хорошего отдыха, так что были и фильмы
по вечерам (Пиратов я смотрел дважды, сначала в украинском, а потом в тщетной надежде
на лучшее - в руском варианте) и поездки за город с друзьями и шашлыками и даже
мои первые полеты на легком самолете (хоть бери и перечитывай Ричарда Баха) - первое
сваливание, первое "#@!, ручку от себя, скорость!", первая горка ("так, ручку слегка
на себя, когда скорость упадет до 65-и - достаточно резко от себя и разгоняешь где-то
до 130-и и ... я сама! ... хм, забыла сказать, за высотой тоже нужно было следить
...").
Ладно, что-то я увлекся, пора о деле. В последнее время у меня появилось большое
количество мыслей и вопросов, которые можно свести к одной простой фразе "как же
все-таки командам, разрабатывающим программное обеспечение, удается попадать в эти
желанные 16.2 %?" Если вы подумали "какие еще проценты?" - чуть ниже в примечании
вы поймете что я имел ввиду, а сейчас поговорим об одном из самых важных, хотя и
несколько философском вопросе ...
Куда уходит время
В какие города
И где найти нам средство
Чтоб вновь попасть туда
Оно уйдет неслышно
Пока весь город спит
И писем не напишет
И вряд ли позвонит
(почти из песни Аллы Пугачевой)
Куда уходит время
Знаете, сейчас эта слегка искаженная цитата очень напомнила мне замечательную фразу
Тома Демарко: "Есть тысяча и один способ потратить день зря и ни одного, чтобы вернуть
этот день обратно."
Все мы пишем планы. А потом они расходятся с действительностью. О да, конечно, мы
знаем вполне убедительные причины, почему так происходит. Постоянно меняющиеся требования,
материализующиеся риски, да просто банальные случайности - кто-то заболел, офис
остался без интернета, начался чемпинат мира по футболу (вот интересно, многие из
нас что-то планировали в день первого матча сборной Украины? И кому из них таки
удалось поработать, даже если они к футболу достаточно равнодушны ? Я, например,
об этом не подумал и все мои задачи пришлось аккуратно сдвигать - вот не получилось
у меня поработать, когда две третьи людей на фирме с пивом собрались в большой комнате
к телевизору, специально привезенном по этому поводу шефом на работу :)
Поэтому современные методологии так и говорят - да, планы будут меняться, да, этого
не избежать, просто нужно ставить процесс так, чтобы минимизировать потери и минимально
снизить стоимость внесения изменений в проект. Именно этой проблеме обязаны своим
появлением целое семейство
"agile" методологий
(XP - яркий тому пример), Microsoft-овский MSF раскололся на две ветви, Agile и Formal,
да что там, даже у тяжеловесного RUP появились agile направления, например
dX,
разработанный одним из авторов
Agile-манифеста
Робертом Мартином.
Но вот интересно, бывает так, что предварительные оценки оказались достаточно реальные,
требования если и менялись, то - не сильно (по крайней мере не приводили к переписыванию
доброй половины проекта), риски - минимальны (использовались проверенные технологии
и не было нестандартных задач), сотрудники здоровы и полны энергии, до следующего
чемпионата мира по футболу еще далеко, но ... уже которую неделю на совещаниях все
скептически улыбаются, услышав классическую фразу "Ну, в принципе все готово, осталось только ...",
а план все растягивается и растягивается, порой двукратно превышая первоначальные сроки ...
Из доклада "Хаос" компании Standish Group (статистика по 364 американским
компаниям и 23 тысячам проектов):
Только 16,2% проектов завершились в срок, не превысили запланированный бюджет и реализовали все требуемые функции и возможности;
52,7% проектов завершились с опозданием, расходы превысили запланированный бюджет, требуемые функции не были реализованы в полном объеме;
31,1% проектов были аннулированы до завершения. Для проектов, которые завершились с опозданием или были аннулированы до завершения,
бюджет среднего проекта оказался превышенным на 89%, а срок выполнения - на 122%.
|
Давайте поищем, куда же исчезает время, отведенное на работу?
Попытка первая: трудно искать черную кошку в темной комнате, особенно если ее там нет ...
Как вы думаете, сколько рабочих часов в 8-и часовом рабочем дне? Понятно что ответ
"восемь" слишком очевиден, чтобы быть правильным. Думаю вы уже догадались, что под
рабочими часами понималось то время, когда человек занят именно работой: кодирует,
пишет документацию, принимает участие в совещаниях ... Вторая попытка, итак, сколько?
Если вы смогли назвать цифру - примите мои поздравления, в вашей организации процесс
разработки поставлен очень хорошо. Ведь для того чтобы найти ответ, не достаточно
просто использовать какую-нибудь систему учета времени. Как правило, рассчитанные
по ней результаты идеально совпадают с нашим первым ответом - 8 часов. Странно?
Вовсе нет. Вам не кажутся знакомыми эти размышления:
- Черт, давно я время не заполнял! Прийдется ... Ого, неделя уже прошла ... ладно,
что там у нас? Понедельник ... Тогда у нас было совещание - ну, где-то час, потом
я занимался формой для предварительного просмотра. Хм, не мог же я ей оставшиеся
7 часов заниматься? А, точно, я же еще два change requests исправил! Вот, теперь
нормально, по часу на исправления, тогда на форму остается 5 часов - похоже. Вторник ...
Причем заметьте, это не попытка скрыть время, когда человек бездельничал. Вовсе
нет! Он действительно честно проработал понедельник и теперь абсолютно искринне
пытается разделить отработанные 8 часов на задачи, которые он решил. И даже если
вносить время каждый день, точнее становиться только список задач, идея обычно остается
прежней - прикинуть, как разделить между ними отработанные 8-мь часов.
Помните анекдот, синоптики предсказывают хорошую погоду, потому что оленеводы выгоняют
оленей на пастбища, а оленеводы выгоняют оленей, потому что следят по радио за прогнозами
синоптиков ...
Ты перекурить не хочешь? Сейчас, только кофе допью.
(из разговора)
Вспомните свой рабочий день. Вы разбираете почту и вам попадается пара писем от
знакомых. Пробежать и ответить на каждое - дело нескольких минут, так что вряд ли вы удержитесь
от желания узнать, что там такого опять придумала Ксюха или отложите, не просмотрев,
несколько присланных фотографий вчерашнего похода в Мегазону. Вы готовите кофе и
пока закипает чайник болтаете с друзьями. Вы вышли покурить, вы заглянули на новостной
сайт, ваш коллега спросил, какое время нужно употребить во
фразе отчета американскому заказчику, чтобы из нее было понятно что он чем-то занимался,
но вовсе не следовало, что можно спросить о конкретных результатах. В конце концов вам иногда приходится просто заглядывать в туалет.
И все это вполне нормально, мало того, за разговорами на кухне или в курилке часто решается такое
количество проблем, что это оправдывает бесплатный кофе и чай как приманку, выложенную там
для сотрудников :) И опять таки, вполне нормально, что при этом вы не сможете провести за работой все восемь часов.
Слушай, ты сейчас не сильно занят?
(из разговора)
- Привет! Слушай, ты сейчас не сильно занят?
- Ну-у, в принципе нет, а что?
- Да у меня тут данные в форму не выводятся, не знаешь, из-за чего это может быть?
- Хм, неакадемический ответ устроит?
- Типа "не мой сегодня день"? А другие варианты есть?
- Ну-у, тут думать нужно. Давай прикинем: ты метод "Select" у источника данных
вызываешь?
и т.д. и т.п.
Да, мы отвлекаемся, хотя это уже работа. Просто другая. Мы разбираемся с коллегами
с их проблемами, советуем что-то, иногда возникают срочные задачи и мы переключаемся
на них. И это тоже правильно - вы объяснили что-то соседу и сэкономили ему пару
часов времени. А завтра он посоветует что-то вам. Вы отвлеклись на возникшую проблему,
но иначе простаивало бы несколько человек.
Хорошо, итак в рабочем дне вовсе не восемь часов, тогда сколько? По статистике, в наиболее продвинутых компаниях
с жестко поставленным прцессом и направленной на это корпоративной культурой за
день работе отдается до 7-и часов. Это лучший результат. Том Демарко в своей культовой книге
"
Peopleware:
Productive Projects and Teams" приводит цифру 75%, то есть примерно 6 часов,
как пример хорошей организации. Хотя существует достаточно много организаций, где
на работу тратится 5, а то и 4 часа в день.
Знание этой цифры для вашей организации помежет вам создавать более реальные планы.
И не беда, что количество рабочих часов в какой-то конкретный день может отличаться
от нашего значения. Сегодня кто-то проработал меньше, завтра - больше, и в сумме
за большой период цифры все таки будут близки. А вот измерить рабочее время можно только
при правильном использовании системы его учета.
Поэтому очень важно убедить людей, что время нужно заполнять для того, чтобы удобнее
было следить, кто работает хорошо, а кто валяет дурака ... э-э-э, я хотел сказать
- чтобы потом точнее создавать будущие
планы, а значить облегчать жизнь им же самим, избегая авралов и постоянного ощущения того,
что времени катострофически не хватает ...
Итак, вывод первый: составляя планы, не забывайте, что даже при хорошем раскладе
в рабочем дне не восемь, а скорее всего лишь 6 часов, на которые вы можете рассчитывать.
Попытка вторая: Тунгусский метеорит
- Слушай, тут заказчик волнуется, говорит - сайт не грузится.
- Опять? Сейчас ... хм да, не грузится. Сейчас зайду терминалкой, посмотрю.
... Да что ж так медленно, а?!!
... Ну, давай, соединяйся ...
... Ура, не прошло и пол года. так, что у нас тут с сервисами?
... Странно, слетел, перезапускаем.
... Опять слетел. Да что ж это, ничего ведь не меняли! Или меняли? (задумчиво)
... Упс-с, черный экран, связи нет. Опять соединяться? Нажал на кнопку - и 5 минут
жди ответа, так полной флегмой станешь :(
... Ну, давай, соединяйся!
В результате оказалось, что у провайдера было видение и он решил выключить кондиционер
на площадке. И это в теперешнюю-то жару!! Так что в сервере что-то сгорело и с этим
чем-то предстоит еще разбираться ... (как вы догадались - этот пример вовсе не с
потолка :(
И опять мы отвлекаемся, хотя и это работа. От таких проблем никто не застрахован,
так что проблемы типа упавших серверов мы вряд ли сможем решить как-то кардинально. Это
бывает редко, но - все таки бывает. Все что мы можем сделать - это как-то
их минимизировать, например если сервера недоступны слишком часто, можно сменить
провайдера или поставить более надежную систему охлаждения. В любом случае, тут как никогда
уместен один из законов Мерфи "Планируя что-нибудь, отведите время на непредвиденные
ситуации, а затем - еще больше времени на непредвиденность самих непредвиденных
ситуаций".
Вывод второй: составляя планы, не забывайте включать туда запас по времени
для непредвиденных ситуаций. Обычно его вычисляют в процентах от общей продолжительности
проекта. Эти проценты сильно зависят от многих вещей, например насколько люди, занятые
в проекте, должны отвечать еще и за другие дела. Так что каждый пытается угадать
эти цифры сам, мне, например, вполне разумным кажется что-то около 5% (заметьте,
речь идет не о рисках, это отдельный вопрос, непредвиденные ситуации - это упавший
инет, пропавшее на день электричество, мертвый винчестер, администратор, забывший
настроить резервирование базы данных и прочие мелкие радости жизни).
Попытка третья: Атланты держат небо на каменных плечах ...
Еще одна дыра, куда может утекать время - это хаотичная поддержка. Наверное вам
знакома ситуация: вы написали приложение, выставили его заказчику, он начал его
использовать - все ок. Время от времени у заказчика возникают вопросы - он чего-то
не знает, сделал что-то неправильно и теперь не знает, как это поправить, он думает,
что у него проблемы с приложением, хотя на самом деле - это проблемы с интернетом
... или все таки с приложением? Да мало ли. Вопросы возникают не так уж часто, поэтому
тратить чье-то время на постоянную поддержку просто жалко. Да и работа это не самая
интересная и добровольцы находятся редко (представьте: "Слушай, у меня для тебя
есть интересная работенка. Помнишь, последние два года ты писал приложение для учета
израсходованных карандашей и затупленных точилок? Так вот, у пользователей время
от времени появляются разные интересные вопросы. Тебе посчастливилось стать нашим
живым щитом и провести остаток жизни, исправляя ошбки и меняя цвет кнопок с зеленого
на синий и наоборот! Хм, мыло? На кухне. Эй, а куда ты пошел с этой веревкой?!!").
Так что обычно заказчик звонит или пишет человеку, с которым он привык общаться
- например team-лидеру, product manager-у или бизнес аналитику чем несказанно их
радует.
Тут смогут помочь организационные мероприятия: все таки назначить человека, который
будет тратить часть своего времени на поддержку, ввести "приемные часы", когда можно
обращаться с подобными вопросами, разработать шаблон документа, который будет заполнять
заказчик для формализации процесса (поразительно, но когда для того чтобы задать
вопрос нужно потратить 10-15 минут на его оформление - поток вопросов катострофически
падает - бюрократия в действии!) и т.д. Все это сильно зависит от конкретной ситуации,
хотя общее все таки есть - заказчик всегда считает что его проблемы критичны по
времени и легко приходит в раздражение, заслышав слова "обратитесь в пятницу" или
что-то вроде этого ...Так что если у вас есть опыт решения подобных проблем - я
с радостью вас выслушаю.
Вывод третий: не пытайтесь закрывать глаза на проблему поддержки ваших
решений - неорганизованная поддержка будет серьезно выбивать из работы жертву, выбранную
заказчиком. Не надейтесь, что это разовые проблемы и еще чуть-чуть - и все уляжется.
Рано или поздно вам прийдется повернуться к врагу лицом и как-то организовать процесс,
смирившись с потерями времени и получив в замен какую-то предсказуемость.
Уф, опять близится полночь и Шахерезаде пора заканчивать дозволенные речи. Наш разговор
оборвался не закончившись - лишний повод вернуться к нему в следующий раз ....
Удачи вам, счастливо и - как всегда до следующей встречи!