Thursday, December 28, 2017

ИТ будни

ИТ будни

Копался в старых архивах и наткнулся на рассказ 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] Чтоб его перевернуло и прихлопнуло! Чтоб он икал, не переставая, до субботы, а в субботу помер! – такие пожелания посылал ВП. Нет, все-таки телепатии не существует, иначе многие программисты бы давно умерли.