Слишком много контроля версий и ошибок отслеживания на изменение?


50

Я работаю в безумно CVS и Bugzilla-орехах.

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

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

Пример ситуации:

Чтобы исправить одну ошибку, сначала я получаю новую чистую виртуальную машину. Затем я создаю ветку для этого исправления ошибки, основанную на другой ветке, описанной в отчете Bugzilla. Я устанавливаю ветку на машину, настраиваю это. Я исправляю ошибку. Я проверяю это, оставляя это и машину для других, чтобы проверить с. Затем я должен зайти в программу контроля ошибок и объяснить, что я сделал, и написать контрольный пример со всеми шагами. В конце концов кто-то еще сливает это с выпуском.

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

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

Есть ли точка, в которой процесс мешает и становится самоцелью? Это даже инженерия?


8
Вы чувствуете себя плохо :( Есть ли у компании, где вы работаете, CMMI 3 и выше?
artjom

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

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

57
Это вопрос или сообщение в блоге?
Рей Миясака

31
Если программное обеспечение было системой управления для атомной электростанции, это не кажется необоснованным. Если для фан-страницы Facebook это кажется чрезмерным. Без контекста трудно сказать, является ли это неразумным или нет: есть проекты, для которых это не так, и другие, где это, безусловно, есть.
edA-qa mort-ora-y

Ответы:


89

Есть ли точка, в которой процесс мешает и становится самоцелью?

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

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

  • Яблоко (Apple I был создан 1 инженер, там были 3 мужчин в компании тогда).
  • Google (созданный первоначально 2 программистами).
  • Facebook ( 1 человек изначально).
  • Microsoft ( 2 человека, компания в 1975 году).

Можно легко сказать, что это просто выбросы, крайние исключения, и если вы делаете что-то серьезное, вам лучше стать крупной, устоявшейся корпорацией. Но этот список можно продолжить. И вкл. Это смущающе долго. Почти каждая современная крупная корпорация начинала как гаражный магазин, который делал что-то необычное. Что-то странное. Они делали это неправильно. Как вы думаете, они делали это в соответствии с процессом?


19
Мне интересно, есть ли доказательства для каких-либо претензий, которые вы предъявляете здесь? Вы основной источник (то есть исполнительное руководство)? Вы проводили или читали интервью с ними? Это очень интересно, как все виды ответов, говорящих "ДА! ПРЯМО!" Похоже, что они исходят от людей, которые никогда не были на стороне и, следовательно, не могли ручаться за точность. Я думаю, что для нас важно отличать ответы, которые на самом деле верны от тех, в которые разработчики (которые, как известно, анти-менеджмент) просто хотели бы верить .
Ааронаут

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

11
Что, на самом деле, вы не думаете, что легко набрать голоса, рассказав людям то, что они хотят услышать? Да, прямо скажу, я не очень уважаю мафию, которая поддерживает эти незаслуженные ответы. Я предполагаю , что я не могу винить людей , как вы за это абсолютный минимум , когда сообщество вознаграждает такое поведение, но тем не менее, я хотел бы люди , по крайней мере попытаться улучшить свои ответы , когда критикуют вместо упорно указывая на upvotes как оправдание.
Ааронаут

8
Вся вещь? «Некоторые люди» - какие люди? «Особенно менеджмент» - зачем предполагать, что они более склонны в это верить? «Религиозно представляйте» - как вы уверены, что их убеждения не основаны на фактах или логике? "Процессы производства продуктов?" - кто конкретно сделал это конкретное заявление и в каком контексте? «Переусердствовать процессам» - что именно это означает? «Бизнес в руках нескольких гиков» - до какой степени и как? «закрыть глаза / иллюзия контроля» - объясните? «Agile стартапы ... могут победить крупные, устоявшиеся корпорации» - вы утверждаете, что это не выбросы?
Аарона

7
@Aaronaught: Этот форум не является научной статьей. Никто, ни вы, ни я, не собираемся объяснять каждое отдельное предложение, которое он пишет. Вы только спрашиваете тех за этот ответ, потому что он вам не нравится. Видимо, это действует на нервы, но как насчет цивилизованных разногласий? Что касается стартапов , бьющих крупных корпораций, например , прочитать только два первых предложения описания продукта от этого: amazon.com/Radical-Innovation-Companies-Outsmart-Upstarts/dp/...
Йонас Pulakka

21

Компании обычно страдают от того, что я хотел бы назвать дилеммой Control-Flexibility. Чем меньше правил, структур и бюрократических накладных расходов, тем легче и быстрее выполнять задачи (это также веселее). Однако делать «плохие» вещи так же легко, как и «хорошие». Это означает, что у вас все хорошо, только если у вас есть квалифицированные сотрудники, которые совершают несколько некритических ошибок.

С другой стороны, если у вас много сотрудников с низкой или средней квалификацией и / или стоимость ошибок слишком высока (например, риск образования космического челнока в северном полушарии), компании склонны накапливать все новые и новые правила «и» процессы, чтобы попытаться свести их к минимуму.

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

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

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


17

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

Во всех других ситуациях накладные расходы убьют бизнес. Время двигаться дальше.


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

1
@Ponk, все одноразовые, хотя. Когда процессы определяют работу, и клиент уже принимает программное обеспечение, и деньги вкладываются, тогда все, и ничто больше не является критически важным. Зачем заботиться об инновациях в данный момент? Заказчику, вероятно, просто важно, что в любой момент у его поставщика есть обученная и готовая к работе команда разработчиков программного обеспечения, которая сможет выпустить новые функции менее чем за год. В то же время не важно, чтобы вы и команда достигли чего-то существенного, кроме иллюзии, что вы работаете.
maple_shaft

1
@maple: одна вещь становится избыточной. Во-вторых, если люди погибли из-за вашей маленькой опечатки, и в связи с потерей работы вы столкнулись с обвинениями в непредумышленном убийстве в течение нескольких лет тюрьмы. Это то, что я называю критически важным, и не так много программ, где вы сталкиваетесь с таким риском.
SF.

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

+1 за указание на то, что существуют ситуации (даже в программном обеспечении), что этот уровень контроля необходим.
riwalk

15

Этот вопрос действительно содержит два вопроса, которые необходимо решать отдельно:

Почему у некоторых команд строгий процесс разработки?

Простой ответ: потому что, если они этого не делают, ошибки случаются. Дорогостоящие ошибки. Это верно для разработки и для остальной части ИТ-сферы (системные администраторы, администраторы баз данных и т. Д.).

Это очень трудно понять многим разработчикам и ИТ-специалистам, потому что большинство из нас когда-либо работали только на одном из «крайностей» - либо крупные компании в стиле Fortune, имеющие как минимум дюжину разработчиков и строгие процессы, которым необходимо следовать, либо маленькие, микро-ISV или даже внештатные работы, где люди просто не плохо облажаются, или стоимость провала низкая.

Но если вы когда-либо видели компанию между этими этапами - даже компанию с яркими, талантливыми ИТ-специалистами - вы поймете опасность отсутствия какого-либо процесса или неполного процесса. Видите ли, общение между сотрудниками страдает от проблемы комбинаторного взрыва ; Как только вы достигнете уровня около 6-10 разработчиков в одной команде, основной причиной серьезных или критических дефектов будет не недостаток таланта или ноу-хау, а скорее недостаток общения.

Алиса спрашивает вокруг в понедельник утром и решает, что можно делать реконструктивные операции на туловище, потому что никто другой не работает над этой частью. Боб прибывает через час, вернулся из отпуска и полон энергии и решает, что он собирается реализовать новую важную функцию в той же области, и зачем беспокоиться о ветке, потому что никто так и не коснется этого кода? Таким образом, Алиса расплачивается за этот «технический долг», Боб реализует свою убойную функцию, которая была на заднем плане в течение 6 месяцев, и когда они, наконец, оба проверяют свой код (конечно, перед закрытием в пятницу!), Весь Команда должна остаться позади и попытаться преодолеть кошмарный ад конфликтов, которые продолжат жить как ошибки и регрессии в течение следующих нескольких недель.

Алиса и Боб оба отлично поработали над задачами кодирования, но оба они начали с плохого решения («что может быть худшего?»). Руководитель группы или руководитель проекта проводит их через вскрытие и составляет контрольный список, чтобы предотвратить это снова:

  • Регистрация должна быть ежедневной, чтобы минимизировать влияние конфликтов;
  • Изменения, которые займут значительно больше 1 дня, должны быть сделаны в филиалах;
  • Все важные задачи (в том числе не функциональные работы, такие как рефакторинг) должны быть правильно отслежены и назначены в трекере ошибок.

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

Конечно, оптимизация процесса похожа на оптимизацию производительности; следует обратной экспоненциальной кривой. Приведенный выше контрольный список может устранить 80% дефектов, но после его внедрения вы обнаружите, что на остальные 80% дефектов приходится что-то другое . В нашем вымышленном, но знакомом примере это могут быть ошибки сборки из-за наличия разных сред сборки, что, в свою очередь, связано с отсутствием стандартного оборудования, и разработчики используют библиотеки с открытым исходным кодом, которые обновляются каждые 2 недели.

Таким образом, у вас есть три варианта: либо (а) стандартизировать аппаратное обеспечение и строго ограничить использование сторонних библиотек, что является дорогостоящим и может значительно снизить производительность, либо (б) настроить сервер сборки, который требует сотрудничества со стороны группы sysadmin и разработчик, работающий полный рабочий день, чтобы поддерживать его, или (c) позволить разработчикам делать это самостоятельно, распространяя стандартную виртуальную машину и предлагая разработчикам использовать ее. Ясно, что (б) является лучшим долгосрочным решением, но (в) имеет лучший краткосрочный баланс надежности и целесообразности.

Цикл продолжается и продолжается. Каждая «политика», которую вы видите, обычно устанавливается для решения реальной проблемы. Как писал Джоэл Спольски еще в 2000 году (обратите внимание на совершенно другую тему, но, тем не менее, актуальную):

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

Если бы это было все, что происходило, также был бы знак "Нет змей"; в конце концов, никто не любит змей. И знак «Нет слонов», потому что они ломают стулья, когда садятся.

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

То же самое в большинстве (я не скажу, во всех) командах разработчиков программного обеспечения: такие политики, как «Вы должны добавить тестовый пример для каждого исправления ошибки», почти всегда указывают на то, что у команды исторически были проблемы с регрессиями. Регрессии являются еще одной из тех проблем, которые чаще всего связаны с нарушением связи, а не с некомпетентностью. Если вы понимаете политику, вы можете использовать легитимные ярлыки (например, мне пришлось исправить 6 небольших ошибок, но все они были в одной функции, поэтому я могу просто написать один тестовый пример для всех 9 из них).

Это объясняет, почему процессы там, но это не вся история. Другая половина:

Почему так трудно следовать процессу?

На самом деле это более простой вопрос: потому что команда (или ее руководство) сосредоточена на повторяемых результатах и минимизации дефектов (как указано выше), но не уделяла достаточного внимания оптимизации и автоматизации этого процесса.

Например, в исходном вопросе я вижу несколько проблем:

  • Система контроля версий (CVS) является наследием по сегодняшним стандартам. Для новых проектов он был почти полностью заменен Subversion (SVN), который быстро затмевается распределенными системами, такими как Mercurial (Hg). Переключение на Hg сделало бы ветвление и слияние намного проще, и даже в моем гипотетическом примере выше требование ежедневного принятия стало бы намного менее болезненным. Код даже не должен компилироваться, потому что хранилище является локальным; - на самом деле, более ленивые разработчики могут даже автоматизировать этот шаг, если захотят, настроив сценарий выхода из системы для автоматической фиксации изменений в локальном репозитории.

  • Не было потрачено времени на автоматизацию процесса виртуальной машины. Весь процесс получения, настройки и загрузки исходного кода / библиотек на виртуальную машину может быть автоматизирован на 100%. Это может быть автоматический процесс, который вы выполняете где-то на центральном сервере, пока работаете над исправлением ошибки на локальном компьютере (и используете только виртуальную машину для обеспечения чистой сборки).

  • С другой стороны, в определенном масштабе решение VM-per-developer становится глупым, и у вас просто должен быть сервер Continuous Integration. Вот тут-то и появляются реальные преимущества производительности, потому что это (в основном) освобождает отдельных разработчиков от необходимости вообще беспокоиться о сборках. Не нужно беспокоиться о настройке чистых виртуальных машин, поскольку сервер сборки всегда чист.

  • Формулировка вопроса («контрольный пример со всеми этапами») подразумевает, что происходит некоторое ручное тестирование. Это, опять-таки, может работать для небольших команд с относительно низкой рабочей нагрузкой, но не имеет смысла в более широком масштабе. Регрессионные тесты могут и должны быть автоматизированы; нет никаких «шагов», просто класс или метод, добавленный в набор тестов модулей / интеграции.

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

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

Если бы разработчики потратили неделю на отслеживание своего времени на все задачи, не связанные с кодированием, вы могли бы легко добавить это, показать руководству, что (например) инвестиции с нулевым капиталом, 100 человеко-часов в обновление до Mercurial устраните до 10 человеко-часов в неделю при разрешении конфликтов слияния, тогда это 10-недельное вознаграждение, и они почти наверняка согласятся на это. Та же идея с серверами сборки (CI) или улучшенным отслеживанием ошибок.

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


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

Выше часть выглядит достойной дальнейшего расширения.

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

У меня сложилось общее впечатление, что, если все сделано правильно, этот трюк может преодолеть довольно большое количество невежества и инерции руководства.

Хотелось бы отметить, что та компания, в которой нам (разработчикам) пришлось прибегнуть к такому подходу « сделай сам», была очень незрелой в IT-сфере. У более опытных поставщиков программного обеспечения я видел подобные вещи, которые в основном делали сами менеджеры. И, как правило, они были более продуктивными, чем мы, программисты. Гораздо продуктивнее.


9

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

Так что это может быть неизбежным злом.

С другой стороны, если для этого процесса нет никаких оправданий, кроме, возможно, отсутствия доверия со стороны руководства, вы должны попытаться поговорить с вашим менеджером и сказать ему, как вы можете сэкономить время (и, следовательно, деньги) для компании.

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

Но будьте готовы защитить свой аргумент, чтобы оправдать изменения.


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

2
Такие процессы, однако, предполагают, что текущая реализация не содержит дефектов. Наличие такого процесса, по сути, блокировка сломанного продукта - реальная опасность.
edA-qa mort-ora-y

1
«Никто в здравом уме не откажется от более быстрого и лучшего процесса, если он будет правильно объяснен». --- Я могу думать о множестве повесток дня, за которыми может следовать лицо, принимающее решения, если это утверждение не выполняется.

@kekekela, это зависит от того, как вы определяете «лучший» процесс. Как инженер-программист, я могу определить его как более эффективный, а менеджер проекта определит его как более эффективный.
maple_shaft

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

8

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

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


8

Дисциплина разработки программного обеспечения по своей сути "все о процессе", поэтому задаваться вопросом, "стал ли он" таким образом, является своего рода упущением.

В то время как большинство программистов скорее будут беспокоиться об абсолютном минимуме процесса, поскольку некоторые будут отстаивать гибкие методологии, даже если они не решают проблем, с которыми сталкивается их организация, для компании вполне возможно принять решение об использовании ». тяжелые "процессы по разумным деловым причинам, такие как" клиент требует этого ". Это обычное явление, если вашими клиентами являются компании из списка Fortune 500, университеты или правительственные учреждения. Награды от продажи этим клиентам могут быть достаточно большими, чтобы оправдать дополнительные издержки процесса.

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


1
+1 за "дисциплину разработки программного обеспечения". Это является дисциплиной, во всех смыслах этого слова.
Дэн Рэй

6

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

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


Проницательное наблюдение :) Я беру интервью.
Понк

CVS, с которой я могу жить, некоторые компании, с которыми я работал в LIED TO ME на собеседовании о том, что я буду работать с веб-службами WCF / RIA с Silverlight, вместо этого поместили меня в старое приложение Powerbuilder и все еще использовали VSS 6.
maple_shaft

1
аааааа, @maple_shaft, это жестко. Еще подумайте о том, что вы можете сказать великим детишкам ... Я работал над приложениями для энергетиков ...: D # life-fail
Anonymous Type

3

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

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

Кроме того, требования совместимости между «волшебными решениями» применяют разные филиалы компаний. В качестве примеров можно привести головные офисы, навязывающие централизованное управление источниками, удаленные серверы Outlook, а также правила или языки кодирования, которые могут не подходить для каждой проблемы.

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


+1 за попытку найти искорку в ужасном сценарии.
анонимный тип

3

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

В моей компании тоже есть «процесс» (но он очень прост). Но когда он мешает, я нарушаю правила и пропускаю шаги. Никто никогда не скажет мне ничего, пока я ничего не сломаю, используя ярлыки, потому что я получаю результаты.


2

Есть ли точка, в которой процесс мешает и становится самоцелью? Это даже инженерия?

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

  1. Похоже, вы были назначены на исправление ошибок, а не на архитектуру или дизайн.
  2. Похоже, ваши коллеги придумали ограниченные обходные пути (объединяя виртуальные машины с исправлением ошибок), чтобы сделать их более эффективными, и вы, похоже, не следуете их разумному примеру.

Это просто факт, что в любом конструктивном начинании, которое требует большого количества людей, некоторые люди занимаются разработкой, а большая группа «получает» выполнение. Извините, но вы во второй группе.

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

Большинство ваших жалоб в основном звучит так: «Я не хочу тестировать ни до, ни во время, ни после разработки!» Давайте разберем ваши шаги, пункт за пунктом.

  • Чтобы исправить одну ошибку, сначала я получаю новую чистую виртуальную машину. Тестовая среда
  • Затем я создаю ветку для этого исправления ошибки, основанную на другой ветке, описанной в отчете Bugzilla. - Вы дублируете среду, в которой была обнаружена ошибка ... как это неразумно?
  • Я устанавливаю ветку на машину, настраиваю это. Я исправляю ошибку. Я проверяю это - основной процесс разработки
  • ... оставив его и машину для других, чтобы проверить. - Ваша команда по слиянию, вероятно, хочет, чтобы она могла проверить исправление, если слияние идет на юг.
  • Затем я должен зайти в программу контроля ошибок и объяснить, что я сделал - если вы в магазине, который этого не делает ... почему вы вообще отслеживаете ошибки?
  • и напишите контрольный пример со всеми шагами. - Я могу ошибаться, но, похоже, это направление, в котором все «крутые дети» все равно идут
  • В конце концов кто-то еще сливает это с выпуском. - И несколько из вышеперечисленных шагов для облегчения их работы

Кто-то другой, находящийся перед вами, очевидно, выполняет сортировку ошибок, чтобы убедиться, что найденная ошибка не исправлена ​​в другом выпуске или не исправлена ​​в более позднем выпуске (для этого и нужны тестовые случаи).

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


2

Интересно. У вас есть тестеры? Они должны делать что-то из этого. Я один, и там, где я работаю, у нас есть достойное решение.

Для функционального дефекта, как вы объясняете, наш процесс выглядит следующим образом:

  1. Я проверяю дефект в виртуальной машине (либо сообщаемый клиентом, либо во время моего поискового тестирования, либо ж / д)
  2. Ошибка найдена / repro'd.
  3. Я создаю ошибку. Ошибки включают в себя:
    • Полное воспроизведение, от момента установки до момента обнаружения ошибки.
    • Ссылка на снимок виртуальной машины (если я думаю, что это понадобится для разработчика ... Я все равно сделаю снимок, на случай, если они об этом попросят).
    • Информация о системе, любые специальные настройки, которые мне нужно было сделать.
  4. Эта ошибка присваивается разработчику. Пока они работают над исправлением I:
    • Создать тестовый набор
    • Написать (или преобразовать) ручной тест в автоматический тест

Затем я жду разрешения и помогаю разработчику любым способом, который им нужен. Когда это возвращается как решено, я:

  1. Запустите автоматический тестовый пример и ручную версию (иногда), чтобы подтвердить исправление.
  2. Закройте ошибку.

TL; DR: Если у вас нет тестеров, тогда вам нужны некоторые. Если у вас есть, то они не «делают свое дело».


2

Том ДеМарко:

... Моя ранняя книга по метрикам ... самая цитируемая строка - это первое предложение: "Вы не можете контролировать то, что не можете измерить". Эта строка содержит настоящую правду, но я все больше чувствую себя неловко от ее использования. В цитате (и в самом деле в названии книги) подразумевается, что контроль является важным аспектом, возможно, самым важным, любого программного проекта. Но это не так.

... чем больше вы сосредотачиваетесь на контроле, тем больше вероятность того, что вы работаете над проектом, который стремится дать что-то относительно незначительное.

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

Программная инженерия: идея, чье время пришло и ушло?


Разве это не очевидно? Зарабатывать деньги. Грязные сексуальные деньги.
maple_shaft

1

«Затем я создаю ветку для исправления этой единственной ошибки»

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


1

Я думаю, что большая часть процесса может быть автоматизирована , так что создание виртуальной машины и ветки (включая компиляцию кода, настройку отладчиков и т. Д.) Было сделано за вас до того, как вы начали работать над ошибкой.

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

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


0

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

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

CVS или любая другая система управления конфигурацией - это неплохо. К сожалению, то, как он используется, даже не зная его цели, вызывает такую ​​боль в! @ # $ Для всей организации.

Чтобы быстро понять, что такое Agile, прочитайте книгу Venkata Subramaniam «Практика гибкого разработчика». Это красиво написано на понятном языке.

Желаю тебе удачи!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.