Разумно ли просить инженера-программиста сделать CI вручную для компании?

Я работаю инженером-программистом в компании с устаревшей инфраструктурой сборки. Такие вещи, как непрерывная интеграция, практически невозможны. Мы не используем Git BTW.

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

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

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

Наконец, мой вопрос : как вы думаете, разумно ли спрашивать об этом инженера-программиста? Вы когда-нибудь встречали нечто подобное?

Отредактированный вопрос : как правильно заметили многие люди, мой первоначальный вопрос основан на мнении. Поэтому я изменю свой вопрос, чтобы на него можно было ответить. Если я категорически не хотел соглашаться на эту роль, есть ли какой-либо законный способ отказаться без ухода в отставку?

Это будет вашей единственной обязанностью или вы продолжите выполнять другую работу?
@ sf02 Я бы продолжил другую работу. Однако это занятие может легко занять весь день. В любом случае, я не думаю, что это актуально.
Мы также не используем Git. Мы используем SVN, что нас вполне устраивает. А ночные сборки я вводил сюда постепенно, шаг за шагом. Когда я начинал, у нас не было согласованного процесса сборки и развертывания. Теперь у нас есть. Перед настройкой среды сервера CI начните со стандартизации (локального) процесса сборки.
Голосование за закрытие, поскольку настойчивое требование спрашивающего получить мнение по этому описанию в сочетании с их отклонением предложений, описывающих, как инженер-программист, столкнувшийся с такой потребностью, может улучшить ситуацию, делает этот вопрос не практически решаемым, а скорее чисто запрещенным вопросом. мнения. Решение проблемы (и выполнение ее трудным ручным способом по мере ее развития) продуктивно, а споры о том, кто должен застрять с ее нерешенной версией, - нет.
@ChrisStratton Я думаю, что его также можно легко спасти, если OP спросит, что, я думаю, он действительно хочет спросить - должен ли он выполнять работу, и есть ли выход из этого, и вернуться к тому, что он считает задачами разработки программного обеспечения.
VTC: в нынешней формулировке этот вопрос не соответствует теме правил сайта. Если у вас есть актуальная проблема, в решении которой вы хотели бы получить нашу помощь, рассмотрите возможность пересмотра своего вопроса. Спасибо и добро пожаловать!
Забавно - есть куча результатов для репозитория RTC и непрерывной интеграции. Есть также несколько результатов, относящихся к Jenkins, который может быть не самым блестящим, новейшим или лучшим инструментом в блоке, но он все еще используется во многих местах и ​​выполняет свою работу.
@HorusKol На самом деле, я действительно не хотел вникать, почему это так сложно, поскольку это не имело отношения к вопросу. Процесс усложнился из-за остальной инфраструктуры.
В качестве опровержения вашего вопроса я бы предположил, что, хотя ваше отношение, кажется, состоит в том, что эта работа ниже вас, возможно, вы могли бы вместо этого увидеть в ней возможность. Быть тем, кто «управляет другими программистами и говорит им исправлять их ошибки», может быть очень сильной позицией, и (по иронии судьбы) это больше похоже на то, что это дает вам высокую степень контроля и владения конечным продуктом, а не просто занятость. . Не говоря уже о ценности, которую вы можете добавить, помогая другим исправлять ошибки, и о проблемах, которых вы научитесь избегать в своем собственном коде, наблюдая, как их делают другие люди.
Если вы работаете в Швеции или в шведской компании, вы можете использовать шведские законы, чтобы заставить компанию начать использовать DevOps.
Вы предложили автоматизировать процесс? Например, мы используем Jenkins, и он отправляет информацию о сломанной сборке по электронной почте супервайзеру и всем, кто коммитил код с момента последней сборки. Лично я был бы рад внедрить автоматизированный CI, но не делать это вручную. Вы предложили это, и что они сказали?
Да, это разумно, если вам разрешено автоматизировать процесс самостоятельно, и ваш работодатель дает вам на это полномочия. Кроме того, вы сказали, что не используете Git, но я надеюсь, что вы используете какую-то систему контроля версий. Это не обязательно должен быть Git.
Я сочувствую вам. На самом деле не имеет значения, считаем ли мы это разумным, вопрос в том, что вы хотите с этим делать? Какова ваша цель? Тогда мы можем вам помочь.
Как часто вы интегрируетесь. Целый день не кажется таким уж неразумным, если это один раз в неделю. Еще меньше, если у вас есть оставшаяся часть недели, чтобы улучшить инструментарий.

Ответы (7)

В целом разумно? Это необходимо. Что-то, что вы хотите взять на себя? Под вопросом.

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

Одно дело, если это проверочная задача, чтобы увидеть, сможете ли вы управлять командой. Если вы хотите получить повышение в компании, то идите и сделайте это. Но вас используют как замену управлению, инструментам и базовому тестированию. Многим наплевать, так что вот швабра.

Такое ощущение, что это не имеет ничего общего с процессом разработки программного обеспечения.

Это происходит только потому, что компания использует людей для того, что уже давно делают машины.

Вот что вам нужно решить:

Если вы остаетесь на длительный срок, выполняйте задание и пытайтесь использовать CI, даже если это не сработает. Трудно избежать, если вы не планируете уехать в течение нескольких месяцев.

Если вы можете легко уйти без каких-либо последствий, просто проявите некомпетентность в этом, и вам назначат кого-то другого. Опыт в этом будет означать, что они заставят вас делать это больше, и вы потратите еще меньше времени на разработку. Потратьте время на очистку старого доброго резюме.

Горькая Правда. Чем лучше вы убираете чужое дерьмо, тем чаще они заставляют вас это делать, потому что другие люди не могут даже убирать свое собственное дерьмо.
Это похоже на какую-то унылую, устаревшую, ужасно неэффективную версию проверки кода. Такие компании меня пугают, особенно если они хранят конфиденциальные данные.
@ Нельсон, если вы не хотите быть высокооплачиваемым консультантом по спасению проектов, это кажется мрачным существованием.
@MatthewGaiser, если компания слишком дешева для более высокого персонала QA, они все равно не будут платить за консультанта. Они просто обанкротятся.

Считаете ли вы, что разумно просить об этом инженера-программиста?

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

Вы когда-нибудь встречали нечто подобное?

Много раз. И что я сделал, так это взял на себя ответственность за качество и внедрил автоматические проверки, которые будут кричать на владельца неработающего кода. Это ваш шанс проявить себя и вместо того, чтобы жаловаться на отсутствие CI, на самом деле внедрить его.

Такие вещи, как непрерывная интеграция, практически невозможны.

Я не куплюсь на это ни на секунду. Если человек может просматривать журналы и отправлять электронные письма людям, то и сценарий может. Начните с малого, с чего-то очень простого, например, линтинга каждого коммита или просто проверки того, собирается ли он, и наращивайте оттуда. Это процесс, и, очевидно, вы теперь ИТ, чтобы начать его.

Мы используем очень экзотическую систему управления версиями, из-за которой очень сложно сделать то, что вы говорите. Документации и поддержки очень мало. В любом случае, никто не позволит мне это сделать, потому что это будет означать, что мне придется заниматься DevOps полный рабочий день.
@FilipMinx мы уже перешли от невозможного к очень сложному, это бесконечный прогресс за 28 минут. Я не уверен, какой ответ вы ищете здесь, после прочтения некоторых ваших комментариев, если речь идет о том, как выполнить фактическую интеграцию, здесь это не по теме. Если это «как я могу выйти из этого задания», измените свой вопрос и задайте его.
Я никогда не спрашивал, как сделать какую-либо интеграцию или как внедрить CI. Я всего лишь спросил мнение о том, разумно ли это спрашивать у инженера-программиста.
@FilipMinx Мнение, каким бы полезным оно ни было, не по теме на этом сайте. Итак, вам нужно четко определить, какой вопрос вы задаете - Тимотеуш предлагает два варианта, но, возможно, ваш вопрос может быть другим; но не для мнений.
@FilipMinx Что вы считаете «очень экзотическим»? Что-то выращенное дома? Вы просто имеете в виду не-git? Если это коммерческий продукт, я думаю, что есть очень хороший шанс, что у кого-то здесь есть опыт работы с ним, будь то просто старый (rcs, cms, svn), коммерческий (AccuRev, Perforce) или и то, и другое (ClearQuest). Если у него есть интерфейс командной строки, его можно написать в сценарии.
@FilipMinx Не спрашивайте ни у кого разрешения. Даже не думай об этом. Гораздо проще попросить прощения, и гораздо проще сделать это , когда у вас есть работающая система. Независимо от того, насколько экзотичен ваш SVC, вы все равно можете импортировать исходный код в локальный репозиторий git, даже если вам нужно поместить его в задание cron. Затем ваш CI может оформить заказ, как обычно.

Вполне разумно попросить вас или любого другого разработчика быть этим человеком. Неважно, раздражает эта задача или расстраивает, всегда есть задачи, которые попадают в эту категорию.

Это также ваш шанс начать внедрение среды CI. Мои предложения:

  • начните с настройки сервера сборки; если нет реальной машины для сборки, вы можете начать на своей собственной машине. Я рекомендую www.jenkins.io, так как есть плагины для всего, и вы найдете учебник или инструкции почти для каждой задачи.

  • постепенно добавляйте дополнительные функции на сервер сборки, например модульные или интеграционные тесты, покрытие кода, анализ кода, упаковка/развертывание и т. д.

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

На самом деле все это у нас есть. За исключением того, что мы используем очень экзотическую систему управления версиями. Ни о ком вы никогда не слышали. Все это не мешает людям вносить критические изменения. На самом деле компания работает над миграцией на git, но это занимает много времени. У меня очень специфическая роль, и никто не собирается ставить меня во главе DevOps.
@FilipMinix - держу пари, я слышал об этом.
@Filip Minx: Serena Dimensions/PVCS или ClearCase?

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

Мой вопрос: почему CI невозможна для вашей компании? По крайней мере, что, если вы напишете (или попросите других написать) модульные тесты для их кода, чтобы убедиться, что их код правильный, и автоматически запустите эти тесты перед развертыванием? Есть ли у вас один человек (или группа людей размером O(1) относительно вашей организации размером O(n)), ответственный за развертывание? Этим людям можно поручить запустить модульные тесты перед развертыванием и отклонить сборку, если тесты не пройдены. Это похоже на выполнение CI вручную, и это лучше, чем ничего (это определенно далеко от идеала, но это лучше, чем то, что у вас есть сейчас).

Насколько велика ваша власть в этой компании и насколько руководство готово выслушивать опасения разработчиков? Если бы вы пришли к руководству и сказали: «Это неустойчиво, слишком много проблем, и никто их не исправляет, наше программное обеспечение постоянно ломается», что бы они сказали? Не могли бы вы расставить приоритеты, по крайней мере, исправить существующие проблемы и добавить модульные тесты, по крайней мере, для этих исправлений, чтобы убедиться, что они не присутствуют в регрессии? И можете ли вы привлечь руководство к наказанию разработчиков, которые отказываются придерживаться этой практики? Вы должны встретиться с руководством (или, по крайней мере, с человеком, который предлагает вам взять на себя эту роль) и задать им эти вопросы.

Что касается управления кодом, вы сказали, что не используете Git, но у вас есть репозиторий. Есть много компаний, которые используют альтернативы Git, такие как Subversion, и прекрасно работают. Если у вас нет веской причины использовать именно Git, это не особенно важно.

Причина, по которой мы должны соглашаться с «кем-то», заключается в том, что «всем» все равно. Инженеры часто не проверяют, не сломали ли что-нибудь их коммиты. Я даже не виню их. Мы работаем над многими потоками одновременно, и иногда вы просто забываете. Вот почему вам нужен автоматизированный инструмент, чтобы предупредить вас. Мы используем RTC как репозиторий, у которого нулевая интеграция с современными инструментами. У меня нулевая мощность. Компания понимает необходимость этого и активно работает над улучшением ситуации, но из-за огромной системы это очень сложно.
@FilipMinx В очень большой системе трудно однозначно идентифицировать один за другим, если ваша фиксация что-то сломала. Вот почему вы проводите модульное и интеграционное тестирование, потому что ваше тестирование должно охватывать ваши распространенные варианты использования, и если они не нарушены, то ваша фиксация, вероятно, в порядке. Если вы выполняете модульное и интеграционное тестирование своего кода, ответственность за то, чтобы эти тесты не выдавали ошибок, должны лежать, по крайней мере, на первоначальных разработчиках, рецензентах кода и специалистах по развертыванию. Если вы не проводите тестирование сейчас, начните делать это как можно скорее.

Вы новый сотрудник? Если это так, то это может быть обряд посвящения или форма дедовщины, так сказать. Вы получаете самую низкую работу и продвигаетесь вверх, если останетесь.

Моя мысль: это не что-то большое. Я бы просто сказал, что это, вероятно, высокая позиция, если они заставят вас выполнять эту задачу. Скорее всего, вы оказались в таком положении, потому что другой парень хочет делать «крутые вещи».

Что, я думаю, тебе следует сделать: уйти сейчас, пока ты впереди. Я не уверен, почему люди на этом форуме советуют людям оставаться и пытаться что-то изменить. Мы не работаем на НАСА, решая мировые проблемы или медицинские устройства. Есть множество других профессий, которые предлагают сложные роли, не требующие убеждения людей делать что-то правильно. Спросите любого члена АА, каков первый шаг к решению проблемы алкогольного опьянения, и он скажет вам, что вы должны признать, что у вас есть проблема и вам нужно ее решить. Если на вашем рабочем месте не хотят признавать, что у них есть проблема, и упрямо ее видят, то вы точно не станете «тем парнем», который это сделал. Вам не нужно работать над новейшей, супер крутой структурой, и вам не нужен какой-то отличный процесс CI для выпуска продуктов. Люди делают это с 80-х годов с большим успехом, и не требуется несколько дней, чтобы подготовить релиз и выяснить, кто что сделал. Были ночные сборки за десятилетия до GIT или чего-то еще, что мы видим сегодня. Простая ветвь или тегирование прекрасно подходят для большинства выпусков SVN. Если ваше рабочее место настолько дезорганизовано, что не может этого сделать, я бы сказал, что не стоит оставаться на месте.

Достойный аргумент в пользу героизма может быть сделан, если они собираются получить повышение, имеют долю в компании или если это была разовая чрезвычайная ситуация, но это регулярная запланированная работа по уборке, которая явно нежелательна, поскольку кого-то нужно было попросить об этом. сделай это.
@MatthewGaiser Мало того, что коллеги регулярно передают неработающий код в SVN. Так что, если вы обновите svn, вы можете потратить целый день на выяснение того, что сломалось и почему, а затем обратиться к этому человеку. Делает работу жесткой и жесткой, чем то, что указано в ОП. Я предполагаю, что когда ваши коллеги выполняют другие задачи, они могут игнорировать вас в течение нескольких дней или даже недель, прежде чем вернуться, чтобы что-то исправить. Затем, когда вы выпустите, вы снова будете страдать от неработающего кода и черт его знает чего.
Фиксация неработающего кода делает это проблемой уровня управления. Очевидно, их нельзя беспокоить.

Вы вряд ли получите много сочувствия от этой группы. Многие из нас начинали еще до того, как CI стала чем-то особенным. Наш «CI» состоял из двух парней, вручную проводивших тесты в течение 3 недель. Многие из нас постепенно автоматизировали подобные проблемы в течение многих лет. Это можно сделать, и это можно сделать на низовом уровне, но это медленный процесс.

Наша небольшая команда настроила собственный CI-сервер еще до того, как у нас появился «официальный». Наш успех в эксперименте вместе с другими командами — это то, как мы смогли убедить руководство профинансировать официальный эксперимент.

У меня был свой личный репозиторий git поверх нашей «экзотической» VCS, когда у нас были проблемы с постоянными неработающими сборками, подобными тому, что вы описываете. Это позволило мне убрать сломанные изменения из моей стабильной ветки, когда мне нужно было выполнить работу. Мой успех и успех других в такого рода экспериментах — одна из причин, по которой мы сегодня официально используем git.

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

  • Да, встречал что-то подобное
  • Я предполагаю, что вы используете другой контроль версий, чем git
  • Мой совет: меняйте постепенно. Сначала разберитесь с худшим. Как правило, людей можно убедить измениться
Проблема с переключением с " a very exotic versioning system", как описывает это OP в комментарии, заключается в том, что они, вероятно, потеряют свою историю коммитов и не смогут воссоздать предыдущие сборки. (тем не менее, я все еще твердо убежден, что они должны это сделать - перейти на SVN (git, если нужно) и представить Дженкинса. В противном случае наймите кого-то менее квалифицированного и научите их тому, как (я помню, когда "мастер сборки" был работа); но не тратьте на это время разработчика на регулярной основе.