bash.im ithappens.me zadolba.li
8779

Буря в песочнице

Я просто обалдеваю с некоторых программных решений.

Задача: обеспечить параллельную разработку новых возможностей у одного и того же программного продукта.

Решение: «песочницы». Одну папку исходного кода дублируют множество раз, по числу групп разработчиков, создавая так называемые версии. Каждая группа разработчиков мучает свою версию, ковыряясь в ней, как детишки в песочнице, и не пачкает чужие версии, то есть не мешает остальным группам. Перед релизом все версии, которые успели достичь половой зрелости и продемонстрировали хотя бы 15 минут стабильной работы, сливают в одну, её называют основной, выжигают на компакт-дисках и продают клиентам. После чего отдел тестирования начинает бегать кругами и орать, потому что две разные группы ковырялись в одних и тех же файлах, а слияние выполнялось левой ногой через правое ухо, и теперь не работают ни код первой группы, ни код второй, а грузовики с дисками уже выехали в магазины.

Итак, одновременно существуют несколько десятков версий. Разработчики занимаются своими малопонятными делами и время от времени вносят забагованный исправленный код в одну из «песочниц». Еженощно на всех «песочницах» бежит регрессия, а следующим утром ещё не проснувшиеся разработчики получают сто пятьдесят шаблонных сообщений электронной почты уровня «особой важности» с результатами тестирования для каждой версии и со стандартным заголовком: «А-а-а-а, мы все умрём, регрессия упала по ТВОЕЙ вине, а ну быстро исправляй свои баги». До сих пор всё хорошо.

Раз в какое-то время эти «песочницы» нужно изменять. Добавить, убрать, переименовать. Для этого используется доморощенная программа, написанная для своего удобства студентом-первокурсником в свободное от занятий фигнёй время и доведённая до ума тремя поколениями мудрых специалистов. Опций там на самом деле всего две («добавить „песочницу”» и «удалить „песочницу”»), поэтому переименование реализовано просто и красиво: старая «песочница» удаляется, создаётся новая, и разработчикам рассылается сообщение: «Из-за технических проблем мы потеряли весь код в такой-то версии; если вы вносили туда изменения, внесите их вот в такую-то версию, пожалуйста».

Пока всё ещё неплохо, да? Подождите, сейчас начнётся самое весёлое.

Рассылать сообщения вообще всем работникам — идея, конечно, благая, но будет проще и правильнее рассылать сообщения только тем, кто уже вносил код в эту конкретную «песочницу». Сделать это просто и легко: все внесения кода в «песочницу» есть, они выстроены в красивую таблицу, авторы изменений указаны отдельной колонкой, и есть специальная галочка «сообщить авторам изменений об удалении». Если отметить галочку, скрипт вытащит имена из таблицы и отправит каждому автору персональное извещение.

То есть у нас классическая двухходовка: во-первых, вытащить все имена авторов изменений из таблицы и что-то с ними сделать; во-вторых, удалить всю таблицу изменений.

Так вот, вы в жизни не догадаетесь, в каком порядке выполняются эти два шага.