Программистам

И ещё в ту же тему (предыдущих двух постов).

Когда работал программистом, довелось оказаться в новом дизайнерском проекте и ознакомиться с процессом: обзор рынка, план высокого уровня, план пониже, план тестирования, дизайн документы в разных вариациях... в общем, мрак! Однако, это и есть западный подход к работе. Как бы наши русские коллеги не похихикивали надо всей этой писаниной с заявками на то, что всё можно сделать и так... как бы не возмущались... А документация нужна. В конце концов, достаточно съездить в ту же Канаду, чтобы понять, что такой передокументированный стиль работы обеспечивает надёжную преемственность. Поэтому у "них" всё стоит и развивается. А у "нас" всё падает, сгнивает... и с полной самоотверженностью и стахановским подрывом перестраивается вновь и вновь. "Разрушить до основания и построить заново..." — или как там?

Короче, я тоже скептически относился ко всем этим документам. А особенно скептически потому, что многие из них свалились на мои хрупкие плечи. Но нытьё тут — ясно дело — было бы бесполезным. Поэтому хотелось как-то обосновать для себя эту работу, чтобы не делать её через "нехочу". И знаете, обосновал!

Методом от противного. Душан всё наседал: "Пишите документы!" А мы писали код. И тогда я решил доказать ему, мол, сейчас всё брошу и буду писать эти твои дизайны...

Всё бросил, открыл Ворд и начал тупо компоновать текст, рыться в других документах, проверять в коде, искать места, функции, классы, в которые надо что-то добавить для реализации той или иной фичи.

И каков же итог?

(точнее, промежуточные результаты): стал замечать, как здорово в голове накапливается информация о системе в целом. От самых низкоуровневых процессов, через обычно почти невидимую операционную систему, к тому, что было сделано предыдущими поколениями разработчиков.

Программировали-то мы IP-телефонию (на всякий случай)...

В общем, Душан ничего не заметил, а я сам себе доказал нужность предварительного исследования кода, системы, идеологии и т.п.

Потом всегда так и делал. Прежде чем начать исправлять ошибку в коде или писать новые функции, брал чистый листок, ручку и изучал всё, что происходит вокруг этой ошибки или места, куда надо впихивать новый код, до тех пор, пока не становилось кристально ясно, что делать непосредственно с кодом.

Собственно, таким образом, сначала писал документ о решении задачи с указанием исправленных файлов и функций, а затем уже принимался за реализацию этого исправления.

(Дело в том, что в большинстве случаев процесс идёт с другого конца: чуть ли не методом тыка нерабочее место в коде начинает подбиваться какими-то клиньями, заплатами, временными опорами... В итоге, в удачных обстоятельствах ошибка исправлена... фича работает, как просили. Затем, при написании солюшн-текста идёт поиск исправленных мест (только бы ничего не упустить!). При этом довольно трудно, порой, объяснить, почему было сделано именно так, и почему это работает. А, вот, при составлении тест-плана нередко обнаруживается, что многое недоделано... В некоторых условиях телефон ведет себя неадекватно или просто виснет... И тогда всё по-новой: заплатки-проверки.)

***

Как обычно, введение затянулось. Основная мысль была такая, что пост "Ставка" оказался чем-то вроде обосновательного документа. За ним было исследование необходимых инструментов. Вчера вечером накидал в блокноте алгоритмы... Псевдокод, который надо будет вставить в уже готовые процедуры. И всё... Теперь осталось написать, отладить (уже почти всё отлажено на бумаге) и получать результаты... Отвечать на поставленные вопросы и получать подтверждения уже готовых ответов 🙂 (предыдущий пост). Успехов мне!

Запись опубликована в рубрике Без рубрики. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.