Я только начал работу со Scrum, и, кажется, чего-то не хватает. Я новичок в Scrum


23

Код представляет собой полный беспорядок комбинации классического ASP / ASP.NET. Схватка состоит в том, что мы исправляем большой беспорядок или вносим в него дополнения. Мы все слишком заняты этим, чтобы начать переписывать, поэтому мне интересно ...

Где та часть в Scrum, где разработчики могут сказать, что этого достаточно, и потребовать, чтобы им было дано время начать большую переписку? Мы находимся в бесконечном цикле просто исправления старого кода с помощью «Stories».

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

Так кто же отвечает за то, чтобы это большое изменение в переписывании произошло? Разработчики? Скрам Мастер?

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


20
Sham agile снова поднимает свою уродливую голову ... Многие компании говорят, что они "agile" и используют "scrum", хотя на самом деле они этого не делают.
Отредактировано

4
Вы не делаете Scrum

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

12
обязательная ссылка на блог Джоэла: joelonsoftware.com/articles/fog0000000069.html
marco-fiset

8
«<-insert разглагольствовать о нетехнических людях, которые говорят техническим людям, что делать здесь->» , руководство должно на 100% говорить техническим людям, что делать, поэтому они руководят и отвечают за бизнес , вот что они сделать лучше. То , что они 100% должны не делать это , говоря им , как это сделать, технические люди должны принять решение о том , как с технической точки добиться того, что они попросили сделать. Все остальное наивно !

Ответы:


7

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

We seem in an endless loop of just patching old code with 'Stories'.

Время разработчика - это деньги. Много денег. Я ушел из компании, которая планировала обновить их пользовательский интерфейс более года назад, и надеялась, что принятие схватки поможет им перестать крутить колеса. Что произошло? Тот же самый "тот же самый". Они продолжали прибегать к новым функциям, и у «технического долга» не было бизнес-кейса, хотя половина написанного нами кода теряла смысл с каждой итерацией, поскольку базовая кодовая база представляла собой полностью устаревший беспорядок. С тех пор, как я ушел, ничего не изменилось в их интерфейсе, и меня привлекли с целью полной реконструкции. За те два месяца, что я там провел, я не особо коснулся CSS или JavaScript. Я просто возился с HTML и какой-то древней системой шаблонов Java с конца 1990-х годов.

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

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

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

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

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


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

1
Или у вас нет юнит-тестов. :) Одним из основных преимуществ юнит-тестирования является то, что он позволяет вам с уверенностью проводить рефакторинг. Самая большая проблема с хорошей практикой - это то же самое, что и все - она ​​требует дисциплины, и обычно люди предпочитают быть ленивыми.
nicodemus13

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

1
Я бы сказал, что это то же самое, лично я пишу тесты, чтобы помочь определить интерфейс.
nicodemus13

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

33

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

http://blog.objectmentor.com/articles/2009/01/09/the-big-redesign-in-the-sky
http://www.joelonsoftware.com/articles/fog0000000069.html

Чтобы расширить на "переписать не хорошая идея":

Почти всегда лучше попробовать постепенное улучшение. Как Джаррод Робертсон написал в комментарии, найдите модуль, который нуждается в улучшении, станьте экспертом для этого модуля и напишите историю для следующего спринта по улучшению этого конкретного модуля. Объясните владельцу продукта, почему этот модуль нуждается в работе.


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

3
Некоторые беспорядки должны быть убраны. Цитирование статей Джоэла и утверждение о том, что переписывания редко даются без какой-либо статистики, которая в любом случае была бы сомнительной (потому что кто хвастается успешными переписываниями?), Не меняет этого.
Эрик Реппен

3
@ErikReppen Итак, когда ваша гостиная грязная, вы разрушаете дом и строите новый?
EricSchaefer

4
Если вы читаете его комментарии, он не говорит о гостиной. Вероятно, трудно сказать, где начинается одна комната, а другая заканчивается. И весь дом в огне.
Эрик Реппен

5
Вау, ковбой. Прежде чем мы просто сделаем общее заявление о том, что «переписать - это не очень хорошая идея», я думаю, нам нужно уточнить, что с правдой, что переход на новые технологии и адаптация к современным условиям важны для выживания ИТ вашего бизнеса. Если вы не примете новые (надеюсь, лучше) технологии и преимущества, которые они дают, ваши конкуренты будут. Это верно в отношении технологий в целом. Model-T был превосходным транспортным средством, но благодаря конкуренции и внедрению новых технологий автомобили много раз переписывались в гораздо лучшие машины, которыми мы сегодня управляем.
плоть

18

Я буду очень тупым ...

  • Вы отвечаете за разработчиков в этой работе?
  • Вы руководитель проекта?
  • Какую «долю» держат разработчики в проекте?
  • Каково ваше деловое оправдание для переписывания?
  • Что такого в кодовой базе, которая делает его совершенно бесполезным и невосстанавливаемым?

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

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

Возьмите операционную систему Windows в качестве примера. С каждой новой созданной версией был большой кусок кода, перенесенный с предыдущей версии. Иногда целые библиотеки и API переносятся через несколько поколений ОС. Зачем? Поскольку разработчики знают, что эти элементы работают, были протестированы, исправлены и исправлены, чтобы предотвратить проблемы безопасности и памяти, а также потому, что они попали в это состояние очень дорого. Никто не хочет выбрасывать рабочий код, когда он зарабатывает деньги, даже если затраты на обслуживание относительно высоки, затраты на запуск с нуля всегда будут еще выше, а в такой компании, как Microsoft, в банке есть миллиарды, которые позволяют им начать с самого начала, если они хотят, но они не т, потому что они хотят максимизировать свою отдачу от своих инвестиций. Ваш работодатель ничем не отличается от Microsoft, за исключением небольшого количества наличных денег на проект.

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

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

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

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

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


Нет, я не отвечаю Я разработчик, который профессионально программировал 12 лет и 7 лет .NET. Я участвовал во многих контрактах, и через некоторое время вы быстро почувствуете качество кода. Сколько стоит «кол»? Я не уверен, что вы подразумеваете под этим. Мы можем продолжать отключать, исправляя старый CLASSIC ASP, который сейчас чрезвычайно хрупок и занимает в 10 раз больше времени, чем если бы эти изменения были частью хорошей современной архитектуры. Бизнес оправдывает себя тем, что сайт в настоящее время рушится в работе из-за модуля, который, кажется, никто не понимает из-за высокого оборота
punkouter

Я не думаю, что вы понимаете, насколько плоха эта кодовая база. Кроме того, это не ракетостроение. Это CRUD 101. Это отображение формы, позволяющее пользователю заполнить ее, проверить и затем создать некоторые отчеты и PDF-файлы из данных. В основном это так. Но за 10 лет код был разбит на множество кусочков, это ужасно. За последние 12 лет я участвовал в примерно 20 проектах, и это, должно быть, худшая коллекция кода, которую я когда-либо видел, которая фактически используется в производстве ... Я хотел бы показать вам все
punkouter

Что я делаю для начинающих, так это нахожу в команде людей, которые увлечены кодированием и заинтересованы в том, чтобы, наконец, сделать это правильно. Нелегко найти этих людей из-за ... brucefwebster.com/2008/04/11/…
punkouter

16
@punkouter: я не думаю, что вы понимаете, что здесь делается; Кодовая база, являющаяся «плохой», не является экономическим обоснованием для переписывания. Страсть к написанию кода и желание все сделать правильно - это не бизнес-сценарий для переписывания. Дорогие производственные ошибки и сбои, а также потраченные месяцы на внедрение тривиальных, но важных новых функций - ЭТО обеспечивает экономическое обоснование для переписывания.
Майкл Боргвардт

1
@punkouter Ваша ссылка на описание феномена "Мертвого моря" также особенно уместна. Для бизнеса бесполезно терять знания из-за истощения, и очень важно вернуть себе все, что может. Вложение вашего времени во избежание потенциально дорогостоящего и ненужного переписывания имеет большую деловую ценность, чем потеря знаний и опыта. Поощрение более эффективной практики найма и решение проблемы с решением проблемы и совершенствование системы - это возможность для вас заработать немного славы и стать ценным активом для вашего работодателя.
С.Робинс

13

Вот официальное определение команды разработчиков Scrum из официального руководства Scrum . Я подчеркиваю те части, которые касаются вас напрямую:

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

  • Они самоорганизуются. Никто (даже Scrum Master) не говорит команде разработчиков, как превратить бэклог продукта в приращения потенциально высвобождаемой функциональности;

  • Команды разработчиков являются кросс-функциональными и обладают всеми необходимыми навыками как команда, необходимая для создания продукта.

  • Scrum не признает никаких названий для членов команды разработчиков, кроме разработчика, независимо от того, какую работу выполняет человек; нет никаких исключений из этого правила;

  • Отдельные члены команды разработчиков могут обладать специализированными навыками и сферами деятельности, но подотчетность принадлежит команде разработчиков в целом; а также,

  • Команды разработчиков не содержат подгрупп, предназначенных для определенных областей, таких как тестирование или бизнес-анализ.

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

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

Если вам действительно нужно полностью переписать, вы должны решить проблему в Scrum Restrospective. Владелец продукта может в конечном итоге отменить проект и начать новый. Владелец продукта также единственный, кто может отменить спринт.


8
Команда несет ответственность за свой собственный беспорядок, но они не могут выбрать приоритет технического долга по сравнению с новыми функциями. Это решает владелец продукта. Просто после того, как ПО определило приоритет отставания, команда может решить, как его доставить. Они могут сказать «мы не можем предоставить функцию X без предварительного рефакторинга Y», но они не могут сказать «нет, извините, мы не добавим новые функции, пока не переписаем его с нуля».
Брайан Оукли

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

1
Это хорошо, но что если нам понадобятся новые серверы, новые базы данных, новое программное обеспечение, чтобы наши разработчики имели все инструменты, необходимые для переписывания? И как начинается перезапись, когда единственные «Истории» посвящены исправлению текущих проблем, а не концепции разрешения перезаписи?
punkouter

1
@punkouter: если вам нужно переписать, решите проблему в ретроспективе схватки. Затем владелец продукта возьмет на себя ответственность за отмену текущего проекта и начало нового.

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

8

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

Это нормально

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

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

Я согласен с другими, беспорядок в коде из-за разработчиков. Я уверен, что это предшествовало принятию SCRUM на многие годы.

Это не техническое решение или решение разработчика переписать, это бизнес-решение.

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

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

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

Доказательство - Profit способствует принятию бизнес-решений, чтобы избавиться от работающего программного обеспечения, а не OCD, необходимого для чистой базы кода

Если вы действительно можете показать доказательство , а не только теории , но трудно доказательство , что расходы Xдолларов на новые проекты повторной записи будет гарантированно сделать X * N долларов для бизнеса в Yпериод времени (где Nвысока и Yкороток), вы можете получить некоторую тягу от управления , Это очень маловероятный случай, который вы можете представить и доказать.

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


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

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

1
Аутсорсинг разработчиков - это проблема управления. Люди внутри знали лучше. Менеджменту нравилось делать вид, что он экономит кучу денег, нанимая 200 разработчиков, хотя на самом деле они могли бы справиться с 20 компетентными. Как и во многих реализациях Scrum, которые я видел, принятая стратегия была результатом некомпетентности, и разработчики, которые фактически были сотрудниками компании, не имели никакого контроля.
Эрик Реппен

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

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

7

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

Я предпочитаю подход, который Мартин Фаулер называет удушающей лозой . Внедрите новую функциональность (включая изменения в существующую функциональность), используя новый подход, но используйте существующее приложение как решетку, на которой могут расти новые функциональные возможности. Это дает вам лучшее из обоих миров: вам не нужно останавливать все, пока большая перезапись доводится до нюхательного табака, но вы получаете преимущество написания нового кода, использующего преимущества обновленных сред. Это определенно более сложный подход, чем начинать с чистого листа, и он может быть не таким привлекательным, но он приносит большую пользу бизнесу, чем избавление от всего, что есть, потому что оно устарело.


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

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

Я согласен. Но, как сказал Ив (и не уверен, что все это слышат). В настоящее время существует коллекция из примерно 9 отдельных веб-приложений, половина из которых представляет собой классический ASP, а другая половина - разные формы ASP.NEt. Все используют совершенно разные способы обработки доступа к данным и т. Д. Итак, единственный способ сделать то, о чем идет речь, это подделать интерфейс, чтобы он выглядел так, как будто новый код является частью старого кода ... так что да, может быть ... но тогда есть база данных .. Одна таблица имеет 400 полей!
punkouter

Мне любопытно. Что представляет эта таблица? Это худшее, что я слышал с тех пор, как увидел i ++; йоЗотеЬЫпд (я); повторялось более десятка раз в каком-то коде, который вылился из разорванного тега JSP.
Эрик Реппен

5

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

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

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


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

6
@punkouter: если причины, по которым вы хотите переписать, носят чисто технический характер (т. е. не стоят деловых денег), то у вас НЕТ достаточных причин для переписывания.
Майкл Боргвардт

@MichaelBorgwardt: Вы говорите, что каких-либо технических причин для переписывания чего-либо недостаточно? Это принципиально неправильный подход, если я вас правильно понимаю. Одна вещь, которая постоянно действует мне на нервы, - это нормальный подход хозяин / раб, когда «бизнес» определяет все, что делает «ИТ» или любой другой отдел. Это верно только в определенной степени. У ИТ есть свои собственные требования, которые являются внутренними и не решаются бизнесом - это то, чего обычно не хватает, и приводит к неинженерному, не пригодному для использования программному обеспечению.
nicodemus13

1
@ user12355 Как я уже видел, Майклс считает, что если он не потеряет деньги, это не принесет им денег, тогда не будет никакого случая. Если они не теряют деньги, переписывание стоит им денег. Деньги, которые нельзя вернуть. Разработчик мог бы привести пример «этот код отстой», но если он не сможет доказать финансовую выгоду для своего работодателя, он никогда не получит зеленый свет, чтобы переписать, если они не сделают это самостоятельно.
Рог

1
@ user12355: Технические причины, безусловно, достаточны для истории пользователя. Их не обязательно достаточно, чтобы продвинуть эту историю в верхнюю часть списка и поместить ее в спринт.
Адам V

4

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

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

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

Кстати, это не совсем проблема Scrum, и я не предлагаю решение, специфичное для Scrum. Это касается разработчиков, берущих на себя ответственность за код.


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

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

3

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

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


Как я уже упоминал. Нет никакого пути вперед с коллекцией из 6 сайтов Classic ASP + 4 сайтов .net 1.1, которые все объединены в один сайт. Все кодируются разными людьми по-разному.
punkouter

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

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

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

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

2

Ты спросил:

Где та часть в Scrum, где разработчики могут сказать, что этого достаточно, и потребовать, чтобы им было дано время начать большую переписку? Мы находимся в бесконечном цикле просто исправления старого кода с помощью «Stories». Таким образом, вещи управляются нетехническими людьми, которые, кажется, не хотят настаивать на переписывании, потому что они не понимают, насколько плохой стал кодовый базис ..

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

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


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

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

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

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

1
Я согласен, разборки отвратительны для работы с техническими долгами. Но я не согласен с основанием исходного вопроса. На самом деле он задавал вопрос об отношениях между работодателем и работником, но только что упомянул скрам в этом вопросе. Это как если бы я спросил: «Как христианин, какой лучший способ сделать Энчиллада?». Это не богословский вопрос; вопрос о кулинарии, даже если я допустил ошибку, думая, что мои религиозные предпочтения актуальны.
Питер Ланге

1

Я чувствую твою боль, но не уверен, что это имеет отношение к Scrum. Решение о том, следует ли переписывать код, не зависит от процесса разработки.


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

1

Чего ждать?

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

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