ИТ будни
Копался в старых архивах и наткнулся на рассказ 2006 года, который вроде бы собирался послать в "Компьютерру".
Проходят те времена, когда каждого «компьютерного» человека, будь то системный
администратор или архитектор или тестировщик называли программистом – просто
потому, что он сидит перед компьютером и работает не в Word и не в Excel.
Но, к сожалению, не совсем эти времена прошли,
и потому человеку, который отвечает за разработку проекта, нужно иметь в виду
не только правильный процесс разработки, но и трудности, которые станут на его
пути.
О документации
- Сначала мы должны написать техническое
задание, - сказал Ведущий Программист (ВП) и выжидательно замолчал.
- Не понял, -нахмурился Большой Босс (ББ), - Я
что-то непонятно объяснил? Вы должны разработать эту _простую_ программу по
печати накладных до конца месяца! Или это слишком сложная здача для _Вас_?
- Нет, задача понятная, но ведь нужно
согласовать формат со складом! – попытался объяснить ВП.
- Какой такой формат?! Вот вам ксерокопия
накладной, которую девочки сейчас в Excel делают – тут 10
строчек. Что еще Вам нужно? – начал закипать ББ.
- Я имел в виду формат файлов обмена, тут
нужен XML, и идентификаторы накладных должны соответствовать складским
ведомостям! Мы должны согласовать это с филиалами и нашей 1С. Нужно зафиксировать единый формат обмена и всем его
применять! – попытался протестовать ВП.
- Мне тут Ваши бумажки и форматы-морматы до
фени! Языка нет, чтобы договориться с бухгалтерами? Мне нужно чтоб это работало
до конца месяца, ЯСНО?! А форматы потом оформите, в свободное время!
----------
Через месяц. ВП программист был в отпуске, и
его замещал простой программист (ПП).
- Мне звонили со склада, они не могут
обработать заявки - накладные, говорят, печатаются на отсутствующие на складе
товары! – Большой Босс был явно недоволен.
- Дык… Эта.. Ну у нас там отдельная база, и
репликация не полная по остаткам…, попытался объясниться ПП.
- Не грузить меня вашими компьютерными
заморочками!!! Исправить к завтрему!!!!
Через 2 недели.
ВП сидит, смотрит в хранимую процедуру и
пытается понять, почему резервы не снимаются во время – кто же лазил в коды?.
Звонит телефон.
- Да, СанПалыч… Да, все исправим до завтра…
Да, вычистим все и по новой занесем… ну, до завтра может не успеем (трубка
раскаляется и вибрирует, ВП отстраняет ее, через минуту). …Да, конечно, все
сделаем.
Звонит по телефону: - Дорогая, это я. Сегодня
опять аврал, извини, приду рано.. утром…
О системах контроля версий
Субботнее утро. ВП вышел на работу, чтобы установить
новый вариант системы.
Испив кофе, он радостно предвкушает:
- Ну, сейчас сделаю checkout, соберу релизец и
запущу. К обеду буду дома…. Тэкс, что за hell? Исходники не
компилятся!
Так, смотрим… Опа! Это, Федор (наш новый ПП)
вчера закоммитил ВЕСЬ проект!!!
Эхо испуганно замолчало, потрясенное
количеством новых и очень злых слов, которые высказал ВП, набирая на мобильном
номер Федора:
- ФЕДОР!!!! Ты зачем поменял и закоммитил весь
проект?! Он не компилится теперь! Что ты там делал?!!!
- Эта… Я отформатировал его.. Там такой клевый
плагин есть, можно все отформатировать разом….
- !!!!
Да, уволить бы Федора, предварительно оторвав
руки… Но он же племянник Ларисы Михайловны, главбуха… Ну ладно, от
форматирования проект не должен сломаться… Смотрим логи…
Проклиная Федора, закоммитившего 800 файлов (Черт!
Неоднократно!!!) в релизную ветку проекта, ВП пытался найти работающую версию.
Наконец, перелопатив кучу бранчей, ему удалось собрать релиз к позднему вечеру…
воскресенья.
О коммуникациях
- Все, сказал ВП и грозно оглядел простых
программеров (ПП). – Теперь все запросы на фичи и багрепорты будем
регистрировать в News-группах. ПП промолчали.
Через 3 дня, вернувшись из командировки, ВП
заглянув в форум и обнаружил там 5 сообщений от ПП и два флейма – один про
блондинок, другой по брюнеток.
Сначала было расстроился, но потом стал
думать, почему тестовых сообщений меньше, чем программистов.
- Федор, а ты почему не послал сообщение «Test» в форум
разработчиков?
- Какой форум? Это у Экслера что ли? Или на
нонайме? Ща в ЖЖ спрошу где самый клевый форум… А! Вспомнил – на скл.ру… А Вы там
под ником Мимопроходящий, да?
О контроле за выполнением
- …итак, господа, мы вводим автоматическую
систему контроля за исполнения заданиями. - ВП был серьезен как никогда и был
настроен «построить» всех своих
подчиненных (даже Федора!) и заставить их работать. – За просроченные задания
будем наказывать материально!
Через месяц были сорваны 100% задач. Ну,
частично из-за того, что Федор заразил вирусом все компьютеры разработчиков, переслав
им письмо в вложением с «клеевой программой», которая демонстрировала красивые
картинки и параллельно стирала файлы с нечетным количеством байт. Частично
из-за того, что сроки ВП поставил с небольшим запасом, а ББ срезал эти запасы и
даже больше…. Ну и в основном из-за того, что пришлось срочно править два
десятка отчетов в связи с изменившимся законодательством.
Оставшись перед перспективой оштрафовать весь
отдел с собой во главе (и, возможно, получить 7 заявлений на увольнение, ведь
программисты сейчас везде нужны, даже Федор что-то про какой-то банк бормотал),
ВП предпочел получить головомойку единолично и впредь более осторожно
относиться к контролю за выполнением.
О тестирование
- Почем программа еще не внедрена? – грозно
вопрошал ББ.
- Она нуждается в тестировании! Там же
наверняка есть ошибки! – объяснял ВП.
- Какие ошибки?!!! Почему пишите программы с
ошибками?!!! Я Вам за ошибки плачу что ли?!!! – ярился ББ.
- В любой программе есть ошибки! Есть даже
теорема об ошибках в сложных системах. Это неизбежно, поэтому нужно
тестирование!
- Ну, ладно. Быстро исправьте ошибки и
внедряйте!
- Так мы не знаем, где ошибки. Нужны тестеры…
- Сами тестируйте! У тебя 7 бездельников
сидят, сами написали, сами пусть и тестируют!
О инструментах
- СанПалыч, вот тут инструментик есть, очень
помогает в разработке объектной схемы, и реляционную схему базы данных
позволяет анализировать, - ВП старался воспользоваться хорошим настроением ББ и
«выбить» деньги на покупку Togehther.
- Хороший инструмент, говоришь? – ББ был
благодушен.
- Да, очень хороший! Паттерны проектирования
там зашиты, реверс инжиниринг. Вот, в Компью**** пишут, что он на 50% позволит
ускорить работу по проектированию!
- Может купим два и ваc уволим всех, пусть 100% работы
делает? – ББ попытался сострить. – Ну ладно, выпиши 200 долларов в бухгалтерии
и купи дисков сколько надо, я ж понимаю….
- Но, СанПАлыч, вообще-то на пиратских дисках
его нет.… А так он стоит пять тысяч долларов…
- СКОЛЬКО?!!!!
О проектировании
ВП третий час сидел над схемой БД. Глаза его
были красны, волосы взъерошены, вокруг громоздились горы окурков и стоял
остывший недопитый кофе (3-я кружка, а может и
4-ая).
ВП пытался понять, как в главную таблицу
движения на складе добавить корректные ссылки на 2 новых склада.
Когда его предшественник [1]
писал первую версию программы 5 лет назад, склад был только один, и перспектив
расширения не предвиделось. Теперь в таблице было около миллиона записей, густо
переплетенных ссылками (причем почти все без внешних ключей, так как предшественник
не был в курсе основ реляционных СУБД).
Теперь ВП стоял перед перспективой разработать
специальный конвертер, разобрать существующие данные и перелить в правильную структуру…. Или
добавить еще два поля и воспользоваться патентованной китайской технологией Copy-paste.
Нет, ВП был очень хороший специалист, с
красным дипломом и без пяти минут кандидат наук, и поэтому он пошел за еще
одной кружкой кофе, успокаивая себя, что в жизни надо все делать правильно, и
вообще надо бы протрясти всю местную систему и переписать все к чертовой
матери.
Воодушевленный такими мыслями, он подошел к
окну и заметил в песочнице несколько детей, и неожиданно вспомнил, как вчера его
дочка проснулась рано и увидела его, собирающегося на работу и спросила: «Мама,
а это папа или уже другой дядя?». И принял решение.
-Да, СанПалыч, все сделали, склады подключили,
можно работать! – бодро рапортовал ВП на следующее утро, мысленно прикидывая,
что к тому времени, как база данных «упрется рогом» в технические ограничения,
он уже здесь работать не будет…
О внедрении экстремального программирования
Дневник
20 марта – начали использовать экстремальное
программирование! Ура!
21 марта – замучили вопросы пользователей,
почему мы все сидим вдвоем за компьютерами, и можно ли забрать «лишние» компьютеры.
23 марта – Федор подрался с Василием в
процессе отладки – не поделили мышь.
25 марта – завершили первую итерацию, отметили.
ЭП – великая вещь!
26 марта – непонятно, кто написал этот
отвратительный код? Почему проект не компилируется? И как же хочется пить! Или
выпить?
29 марта – объявили день рефакторинга. Никаких
новых фич - весь день занимаемся только улучшением кода.
30 марта – доделываем рефакторинг, похоже,
должно получиться очень красиво, особенно новые фабрики объектов – вау!
1 апреля – хорошо, что есть CVS, а то бы
вовек не разгребли этот рефакторинг, и получился бы не День Смеха, а День
грусти. Кстати, итерацию вроде завершили.
5 апреля – пришел заказчик, показали ему
прототип. Скорая приехала быстро, сказали, что инфаркта нет, просто переволновался.
7 апреля – читали новые требования заказчика,
много думали.
9 апреля – нормально, прорвемся, еще одна
итерация позади. Федор и Василий отказались работать за одной машиной – Василий
обозвал Федора латентным гомосексуалистом, еле их разняли…
11 апреля
- весна то какая!
13 апреля – была пятница, запускали
регрессивные тесты, было страшно. Не знал, что бывает столько ошибок.
14 апреля – напряглись, но все исправили.
Вроде итерация кончилась?
19 апреля – на пятиминутном совещании стоя все
молчали.
1 мая – слава богу, выходные начались! Забыть,
все забыть!!!
Вместо заключения
К сожалению, организовать процесс разработки можно
только в компаниях, где у ИТ задач есть _понимающий_ куратор на уровне не
меньше, чем заместитель директора.
Без высококвалифицированных разработчиков,
тестировщиков, без необходимых инструментов (как программных, так и
«железных»), без организационных полномочий молодые подрастающие лидеры могут
только тренироваться.
Конечно, позицию компаний, живущих за счет
обычной бизнес-деятельности (а не разработки ПО), тоже можно понять – их
интересует только обеспечение работы компании, а не «правильность» этого
вспомогательного процесса.
Но что же дать - ведь именно так закаляется
сталь!
[1] Чтоб его перевернуло и прихлопнуло! Чтоб он икал, не переставая, до
субботы, а в субботу помер! – такие пожелания посылал ВП. Нет, все-таки
телепатии не существует, иначе многие программисты бы давно умерли.