В 2002 году, когда я окончил колледж, а после краха доткомов было мало рабочих мест, я присоединился к сервисной компании, которая создавала программное обеспечение для своих клиентов на Java. Я должен был сидеть в офисе клиента (это была ветхая комната на электрической подстанции, оснащенной AC для обеспечения работы серверов), делясь стульями / компьютерами с другими парнями в команде. Другие инженеры (если я могу назвать их инженерами;) в группе, которые делали изменения в исходном коде ad-hoc, компилировали файлы и запускали их в производство.
- Нет способа выяснить, кто сделал какие изменения.
- Невозможно выяснить, почему были внесены какие-либо изменения.
- Невозможно перейти к предыдущей версии кода, если инженер не «вспомнил», что он изменил.
- Резервное копирование: копирование файлов с рабочего сервера, которые были заменены новыми файлами.
- Местоположение резервной копии: домашний каталог инженера, копирующего файлы на рабочий сервер.
Сообщения о выходе из строя рабочих серверов из-за неудачных попыток копирования файлов на сервер (пропущенный файл для копирования, потерянные резервные копии или копирование неправильных файлов или копирование не всех файлов) были встречены пожиманием плечами (о нет, это не так? посмотрим, что случилось; эй, кто изменил то, что недавно ...? ммм ...).
В течение этих дней, потратив несколько разочаровывающих дней, пытаясь выяснить, кто и за чем скрывается за кодом, я разработал систему для комментариев в списке в заголовке исходного файла, в котором подробно описано следующее:
- Дата внесения изменений
- Кто внес изменения
- Почему было сделано изменение
Два месяца спустя, когда список стал угрожать размеру исходного кода в файле, у менеджера появилась блестящая идея получить систему контроля версий исходного кода.
Мне никогда не приходилось помещать какие-либо комментарии в заголовки исходных файлов (за исключением уведомлений об авторских правах) в любой компании, с которой я работал. В моей нынешней компании все остальное в основном самоочевидно, если посмотреть на код или перейти к системе сообщений об ошибках, интегрированной с системой контроля версий исходного кода.