Бывало у Вас так, что после запуска программы уходит сотрудник, который с ней работал долгое время? Или возникает необходимость доработать программу, но никто уже не помнит как она устроена?
Продолжение Вы знаете: все начинают лихорадочно вспоминать что это за программа, как она работает, где что хранится и откуда берется ну и т.п.
Согласитесь, такие ситуации происходят с завидной периодичностью и встречаются сплошь и рядом.
Если по программе нет нормальной документации, то восстановить её внутреннее устройство бывает очень и очень трудно. А иногда это даже выливается в серьёзные ошибки или полную остановку процесса.
Поэтому хорошим тоном является как минимум создание простых инструкций по использованию (которые для быстроты можно заменить, например, на скринкасты).
Однако есть один момент, на который мало кто обращает внимание.
Давайте рассмотрим его на конкретном примере...
Представьте, что Вы сделали справочник городов России, который используется, например, при регистрации на Вашем сайте.
Всё работает отлично, но проходит год-пол года и названия многих городов меняются (это совершенно реальная ситуация — названия населенных пунктов меняются постоянно).
Как Вы об этом узнаете? Что будете делать, когда обнаружите это?
А что потом? Суп с котом?
Будете ждать пока пользователи не начнут слать Вам гневные письма с вопросами куда Вы дели их город? Вряд ли Вы в этом заинтересованы, верно?
Поэтому недостаточно просто сделать справочник. Нужно ещё предусмотреть, что с ним будет потом, после запуска в эксплуатацию.
Причём эта часть оказывается неожиданно важной и довольно трудоемкой. Но делать её надо обязательно!
Давайте доведем пример со справочниками до конца и продумаем процедуру их обновления.
Обновить справочник можно двумя путями: автоматически и вручную.
Конечно, выгоднее всего обновлять автоматически, но часто этого бывает недостаточно.
Представьте, что источник, откуда Вы берете список городов, сломался — перестал обновляться или на нём произошла ошибка.
Если ошибку ещё можно как-то обнаружить (например, автоматически высылать письма админам), то прекращение обновления не обнаружишь никак (ведь ошибки нет, но при этом информация не обновляется)
Поэтому правильнее выделить специального человека, который будет в курсе дел по этому справочнику и сможет определить, что он не соответствует действительности.
Ого! Задача разрастается.
В обязанности этого человека следует внести периодическую проверку справочника, а еще лучше добавить задачу ему в календарь и написать инструкции, что делать, когда обнаружена проблема.
А чтобы через год вспомнить как работает справочник, стоит записать о нём информацию в вики: как работает модуль, где и как хранится информация в системе, кому идут письма, ссылка на ТЗ, что за человек нужен для его поддержки и каковы его обязанности.
Получился полноценный бизнес-процесс.
Итоги
Как видите, недостаточно просто написать и запустить программу.
Обязательно продумайте, что будет происходить с Вашей программой дальше: как ей будут пользоваться, как поддерживать её в актуальном состоянии и как действовать в нештатных ситуациях.
Обычное возражение на это: недостаточно времени. Да, времени действительно всегда недостаточно, однако подумайте, сколько времени Вы потеряете потом, когда нужно будет что-то срочно предпринять. Поверьте, потери будут гораздо выше и дороже, чем сейчас, когда программа только что создана.
Попробуйте вместо текстовых инструкций делать видео-скринкасты — это быстрее и проще.
Если Вы хотите сделать законченный продукт и проявить заботу о своих пользователях и коллегах по работе — продумывайте то, что будет после того, как Ваша программа начнёт работать.
Просто сделайте небольшой чек-лист и используйте его для каждой своей программы.
И успехов в работе!
Комментарии (6)
dyadyaSerezha
30.09.2015 16:32+1Все это замечательно, но годы и годы работы в больших и долгих корпоративных проектах говорят обратное — никто ничего не делает и никаких людей не выделяет. Все делается по реактивному принципу — то есть, как реакция на конкретные проблемы. Нет жалобы от клиентов — нет проблемы. А если есть проблема, то исходного кода вполне достаточно — таково мнение начальства. Ибо нефиг тратить время и разводить писанину — дел невпроворот!
Кстати, о справочнике городов. Буквально сегодня был на сайте Почты России и искал там ближайшие отделения. Нашел парочку и пошел в ближайшее. Пришел, а его там просто нет, а есть какой-то небольшой склад. То есть, огромная фирма с громадным бюджетом не может обновить инфу о своих собственных же отделениях в Москве на своем собственном сайте! А вы тут нам о молочных реках с кисельными берегами. ;)varenich
30.09.2015 16:38По-моему, Ваши слова как раз и подтверждают основную идею статьи :-)
А то, что приходится выбирать между временем и «законченным решением», то это всегда так, независимо от размера компании.
Тут личное дело каждого как он поступит, пойдёт на поводу у начальства или докажет ему, что оно потеряет больше времени потом, если не сделает необходимую вещь сейчас.
Более того, в проект обычно закладывается время и ресурсы на подобные работы.dyadyaSerezha
30.09.2015 18:17-1пойдёт на поводу у начальства
То есть? Если я не «пойду на поводу», меня просто уволят. И правильно сделают, кстати. :)
Более того, в проект обычно закладывается время и ресурсы на подобные работы.
Более того, проект обычно занимает в 2-3 раза больше ресурсов и времени, чем планировалось. А тут новые дела стопкой накапливаются, уже не до «рюшечек». ;)
А то, что лучше быть богатым и здоровым, так это ж и так понятно. В-)
ServPonomarev
Если посмотреть на диаграмму жизненного цикла продукта, то там не только разработка и сопровождение, но и утилизация. Подумайте, как вы будете выводить продукт из эксплуатации, как конвертить базы и прочая, и прочая.
Тогда появится настоящий системноинженерный подход.
varenich
Согласен