Я щойно розпочав роботу з Scrum, і щось, здається, бракує. Я новачок у Scrum


23

Код - це повний безлад комбінації класичного ASP / ASP.NET. Скрам складається з нас, які латають великий безлад або вносять до нього доповнення. Ми всі занадто зайняті цим, щоб почати переписувати, тому мені цікаво ..

Де частина Scrum, в якій розробники можуть сказати, що цього достатньо, і вимагати, щоб їм було надано час, щоб почати велике перезапис? Ми здаємося в нескінченному циклі, який просто виправляє старий код "Stories".

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

То хто ж відповідає за те, щоб відбутися така велика зміна переписування? Розробники? Майстер Scrum?

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


20
Шам спритний знову піднімає свою потворну голову ... Багато компаній кажуть, що вони "спритні" і використовують "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'.

Час розробника - це гроші. Багато грошей. Я покинув компанію, яка планувала оновити їх інтерфейс понад рік тому і сподівалася, що прийняття scrum допоможе їм перестати крутити колеса. Що сталося? Той же ol 'той же ol'. Вони продовжували завойовувати нові функції, і "технічна заборгованість" не мала жодного ділового випадку, хоча половина написаного нами коду стала безглуздою з кожною ітерацією через те, що базова кодова база є повною застарілою безладністю. З того моменту, як я поїхав, на їхньому передньому кінці не змінилося жодної речі, і мене почали з цією метою повністю оновити. За два місяці, де я був там, я насправді не торкнувся лизати CSS чи JavaScript. Я просто возився з HTML та деякою старовинною системою шаблонів Java з кінця 1990-х.

Моя відповідь? Робіть все, що можете, але якщо інші розробники вже відмовилися і працюють пізно, щоб досягти спринтерських цілей, а не стверджувати більш практичні терміни та наполягаючи на тому, що борг за техніку насправді є блокуючим питанням, прийміть найгірше і почніть шукати нову роботу зараз. Ваші розробники або не в змозі, або заборонено повідомляти про свої проблеми, або бізнес занадто! @ # $ Ing короткозорий, щоб зрозуміти, скільки грошей вони витрачають.

Ігнорування цих проблем ВЖЕ завжди коштує дорожче. І не трохи більше, але багато більше. Мало того, що це смоктання рани на грудях, коли йдеться про час розвитку, але це також неминуче знизить рівень талантів, оскільки розробники, які краще знають та мають інші варіанти, уникнуть вашої компанії, як чума. Мій нинішній начальник - розробник І власник компанії. Є речі, які ми не будемо переписувати на користь того, щоб зосередитись на інших пріоритетах, але коли щось справді потребує рефактора через послідовний часопис, він отримує належний рефактор. І результати очевидні. Змінення та додавання нових матеріалів стає простішим та швидшим за допомогою декількох факторів. Те, що колись може зайняти години, може зайняти кілька хвилин за належної архітектури. Бізнес не любить цього чути, але для цього варто зупинити справи.

Scrum - це невдача в середовищах, де розробники не мають великої сили, IMO, тому що для типів бізнесу занадто легко бажати ігнорувати обслуговування та оновлення на користь пунктів кулі, які вони можуть ставити у своїх списках "успішних ініціатив", коли настає час оцінки. Вони завжди віддадуть перевагу своїм шкурам та потенціалу до просування на користь довгострокових, навіть коли це послідовно кусає їх у дупу, щоб ігнорувати ці проблеми.

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

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


Що стосується рефакторингу, то мені здається дивним, що люди не можуть "усвідомити", що рефакторинг - це постійна частина всього розвитку, а не те, що ти маєш на себе, коли проблема настільки погана, що ти не можеш багато зробити.
nicodemus13

1
Або у вас немає одиничних тестів. :) Однією з головних переваг блочного тестування є те, що воно дозволяє з упевненістю робити рефактор. Найбільша проблема хорошої практики - це те саме, що все - це вимагає дисципліни, і люди, як правило, вважають за краще лінуватися.
nicodemus13

2
Це чи вони - ще один подарунок від натовпу екстремальної кодування, який так само легко можна перетворити на інструмент, який дозволяє погану поведінку в інших руках. Автоматизовані тести корисні в ключових моментах, але я віддаю перевагу архітектурі звуку та запису в інтерфейсі, а не тестуванню.
Ерік Реппен

1
Я б сказав, що це те саме для чого-небудь, я особисто пишу тести, щоб допомогти визначити інтерфейс.
nicodemus13

1
Потім наступає біль усіх хитрощів, які слід повернути назад, оскільки є ті невеликі винятки, які, можливо, не вдається легко перехопити за допомогою початкового аналізу.
Король JB

33

Якщо ви справді робите Scrum, в чому я сумніваюся, власник продукту несе відповідальність за рішення про перезапис. Більшість випадків переписування не є хорошою ідеєю, btw, оскільки вона не створює нових функціональних можливостей, лише вводить нові помилки.

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

Я буду справді тупим ...

  • Ви відповідаєте за розробників у цій роботі?
  • Ви керівник проекту?
  • Скільки «пакетів» мають розробники у проекті?
  • Яке виправдання вашого бізнесу для переписування?
  • Що це стосується кодової бази, яка робить її абсолютно марною і не підлягає відновленню?

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

При будь-якій існуючій кодовій базі - незалежно від того, наскільки це стан поганий - власник, як правило, матиме значні інвестиції в продукт (и), який представляє код. З базою коду пов'язані як прямі, так і непрямі витрати, і перезапис часто є останнім, що ви хочете зробити як розробник програмного забезпечення, оскільки ви ризикуєте знецінити кодові активи та отримати таким чином меншу віддачу від усіх своїх попередніх зусилля.

Візьмемо для прикладу операційну систему Window. З кожною новою версією створено великий фрагмент коду, перенесений з попередньої версії. Іноді цілі бібліотеки та API перетягуються протягом декількох поколінь ОС. Чому? Тому що розробники знають, що ці елементи працюють, пройшли перевірку, були виправлені та виправлені, щоб запобігти проблемам із безпекою та пам’яттю, і тому, що вони коштували пекло великих грошей, щоб потрапити в цей стан. Ніхто не хоче викидати робочий код, коли він заробляє на них гроші, навіть якщо витрати на технічне обслуговування відносно високі, витрати на старт з нуля завжди будуть ще вищими, і в такій компанії, як у випадку з Microsoft, у банку є мільярди, які дозвольте їм починати спочатку, якщо хочуть, але вони не хочуть ' t тому, що вони хочуть максимально повернути свої інвестиції. Ваш роботодавець нічим не відрізняється від Microsoft, окрім дефіциту про наявність мільярдів готівкою, щоб кинути на проект.

Таким чином, код - безлад, і звучить так, що між різними сферами компанії існують комунікаційні та межові проблеми. Що ви можете зробити з вами з колегами?

Один із варіантів - просто продовжувати роботу в команді та сподіватися на диво в майбутньому. Напевно, це не дуже гарна ідея, і, ймовірно, лише посилить ваші розлади і стрес.

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

Ще кращим варіантом є організація як команда, а також забезпечити отримання когось на стороні з достатньою чисельністю, щоб вони могли зробити хороший випадок, щоб дозволити команді більше гнучкості планувати час для поліпшення бази коду. Мені все одно, наскільки зайнята компанія, або наскільки жорстким є графік роботи, завжди виникають випадкові «затишшя» в діяльності, які можна використати для притиснення до покращення або двох. Але ще краще, якщо поліпшення можна зробити, виконуючи інші завдання. Якби це я, я б погодився з менеджером і ознайомив їх з поняттями в деяких канонічних книгах, які читали розробники програмного забезпечення. Чистий кодце, мабуть, той, хто найбільше потребує вашої команди. Посадіть кілька насінин про те, як поліпшити код, і наведіть кілька прикладів того, що ви маєте на увазі. Хороший менеджер побачить значення додавання додаткових удосконалень до коду, особливо якщо ви зможете описати концепцію технічного боргу . Допоможіть вашому керівнику команди або менеджеру скласти хороший бізнес-приклад для поліпшення коду, і вони матимуть кращу мотивацію діяти на ньому.

Також недостатньо сказати, що "код неприхований". Вам потрібно заохочувати своїх колег практикувати кодування чистим весь час та використовувати чисту техніку кодування, щоб заохочувати трохи прибирати вгору. У мене є невеликий плакат, який я роздруковую і вішаю зі стіни свого офісу щоразу, коли беруся на нову роботу. Там написано: "Завжди прагніть залишити код трохи красивішим, ніж ви знайшли". Прямо біля нього я додаю ще одну, яка говорить "Лілії не потрібно позолотити". Вони обидва служать нагадуванням мені, що я завжди повинен намагатися вдосконалити те, що знаходжу, але уникати просто позолочення однієї проблеми з іншою. Масивні переписування часто є найгіршим різновидом «позолочення», оскільки вони часто робляться з неправильних причин. Впевнений, що абсолютно нова версія продукту може бути виправданою в якийсь момент,


Ні. Я не відповідальний. Я дев, кодував 12 років професійно і 7 років .NET. У мене було багато контрактів, і через деякий час ви швидко можете відчути якість коду. Скільки "ставка"? Я не впевнений, що ти маєш на увазі під цим. Ми можемо продовжувати підключатись, виправляючи старий CLASSIC ASP, який зараз надзвичайно крихкий, і це займе 10 разів більше часу, ніж якби ці зміни були частиною хорошої сучасної архітектури. Виправдання бізнесу полягає в тому, що сайт зараз завершується виробництвом через модуль, який, здається, ніхто не розуміє через високий оборот
пунктур

Я не думаю, що ти розумієш, наскільки погана ця база коду. Крім цього, це не ракетна наука. Це CRUD 101. Це відображає форму, дозволяє користувачеві заповнити її, перевірити, а потім створити з даних деякі звіти та PDF. Це, в основному, це .. Але за 10 років код був роздроблений на стільки peices його жахливо. Я був частиною близько 20 проектів за останні 12 років, і це має бути найгіршим зібранням коду, який я бачив, який фактично використовується у виробництві ... Я б хотів, щоб я вам все
показав

Що я роблю для початківців - це знайти людей, які є в команді, які мають певну пристрасть до кодування та зацікавлені бути частиною остаточного отримання цього права. Знайти цих людей непросто через ... brucefwebster.com/2008/04/11/…
punkouter

16
@punkouter: Я не думаю, що ви розумієте сенс, який тут робиться; База коду, яка є "поганою", не є діловою справою для перезапису. Пристрасть до кодування та прагнення виправити не є справою для переписування бізнесу. Дорогі помилки у виробництві та відключення та потрібні місяці для впровадження тривіальних, але важливих нових можливостей - ТОМІ надають бізнес-справу для переписування.
Майкл Боргвардт

1
@punkouter Ваше посилання на опис явища "Мертвого моря" також особливо влучне. Для бізнесу не має значення втрачати знання через виснаження, і дуже важливо повернути те, що він може. Вкладення вашого часу, щоб уникнути потенційно дорогого та непотрібного переписування, має більшу цінність для бізнесу, ніж втрата знань та досвіду. Заохочення кращої практики найму та підняття проблеми вирішення проблеми та вдосконалення системи - це можливість для вас заробити трохи кудо і стати цінним активом для вашого роботодавця.
S.Robins

13

Ось офіційне визначення команди розробки Scrum з офіційного Посібника з Scrum . Я наголошую на частинах, які стосуються вас безпосередньо:

Команда з розробки складається з професіоналів, які виконують роботу над доставкою потенційно звільненого приросту продукту "Готово" в кінці кожного спринту. Приріст створюють лише члени Команди розвитку. Команди розвитку розробляються та уповноважені організацією організовувати та керувати власною роботою . Отримана синергія оптимізує загальну ефективність та ефективність роботи Команди розвитку. Команди розробників мають такі характеристики:

  • Вони самоорганізуються. Ніхто (навіть майстер Scrum) не повідомляє Команді розробників, як перетворити Блокування продукту на Збільшення потенційно звільненого функціоналу;

  • Команди розробок є багатофункціональними, з усіма навичками роботи команди, необхідних для створення продукту Збільшення продукту;

  • Scrum не визнає титулів для членів Команди розвитку, окрім розробника, незалежно від роботи, яку виконує особа; з цього правила немає винятків;

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

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

Таким чином, Команда з розвитку несе відповідальність за свій власний безлад і повинна вирішувати його сам, не вимагаючи від кого-небудь поза команди.

Включіть час кожної майбутньої оцінки технічної заборгованості та переконайтесь, що якість програмного забезпечення, яке ви постачаєте, є найкращим.

Якщо вам справді доведеться виконати повне перезапис, ви повинні вирішити цю проблему в Scrum Restrospective. Власник продукту може врешті скасувати проект та розпочати новий. Власник продукту також єдиний, хто може скасувати спринт.


8
Команда несе відповідальність за власний безлад, але вони не вибирають пріоритет технічної заборгованості перед новими можливостями. Саме власник продукту вирішує це. Це просто те, що після того, як ПП визначився з пріоритетом відставання, команда може вирішити, як його забезпечити. Вони можуть сказати, що "ми не можемо поставити функцію X без попереднього рефакторингу Y", але вони не можуть сказати "ні, вибачте, ми не додамо нових функцій, поки не перепишемо її з нуля".
Брайан Оуклі

6
@BryanOakley: Переписування з нуля - це не те, що я пропоную. Я пропоную поступово скорочувати технічну заборгованість у міру того, як група розробників працює у відповідних сферах. І я також пропоную їх оцінити відповідно.

1
Це добре, але що, якщо нам потрібні нові сервери, нові бази даних, нове програмне забезпечення для того, щоб у нас розробники мали всі інструменти, необхідні для перезапису? І як починається перезапис, коли єдині "Історії" стосуються виправлення поточних проблем, а ніколи про концепцію дозволу переписувати?
пунктур

1
@punkouter: якщо вам доведеться переписати, вирішіть проблему на ретроспективі scrum. Тоді Власник продукту візьме на себе відповідальність скасувати поточний проект та розпочати новий.

5
Не вважайте, що рішення про перезапис - це «правильне» лише тому, що саме воно найбільше сподобається чортам. Іноді є вагомий бізнес-привід для надання функцій зараз, навіть якщо це збільшить технічну заборгованість.
DJClayworth

8

Коли ви це описуєте, я мушу сказати, що я не бачу нічого спільного зі SCRUM, або ваша команда з розробки продуктів наразі є проблемою .

Це нормально

Те, що ви описуєте, - це нормальна ентропія бази коду. У вашому випадку команда, ймовірно, починала далі від ідеалу, але все-таки кожна база коду зрештою стає великим балом грязі .

У абсолютно ідеальному сценарії « зеленого поля» все, що ви можете зробити, - це починати далі від абсолютної ентропії та рухатися до неї повільніше.

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

Це не технічне рішення або рішення розробника про перезапис, це бізнес-рішення.

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

Якщо є справжній діловий випадок , не просто махаючи рукою; "Код - це безладдя, яке я хочу розпочати на" зеленому полі ", тому що саме цього я хочу" , тоді керівництво розважатиметься за рахунок переписування, враховуючи повернення цієї інвестиції.

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

Доказ - Прибуток примушує бізнес-рішення викидати робоче програмне забезпечення, а не певну потребу OCD для чистої бази коду

Якщо ви дійсно зможете показати доказ , не просто теорію, а твердий доказ того, що витрачання Xдоларів на переписування на зеленому полі буде гарантовано ЗАПРОБИТИ X * N долари для бізнесу у Yчасові рамки (де Nвисокий і Yкороткий), ви можете отримати деяку тягу від управління . Це дуже малоймовірний випадок, який ви можете представити і довести.

Інакше просто потрібно з цим розібратися, це реальність. Всупереч вашим твердим твердженням, що без цього грандіозного непорочного переписування абсолютно немає шляху вперед, я б покладав гроші, що 5+ років від теперішньої кодової бази, на яку ви скаржитеся, все ще працюватимуть і працюватимуть десь, надаючи комусь функціональність та цінність довгий час ви покинули компанію.


1
це не означає, що розробники не користуються якоюсь системою контролю версій всередині себе, незалежно від того, я б сказав, що це все ж відповідальність розробників дбати про себе та свої найкращі інтереси незалежно. У вашій солом'яній людині ці 200 дияволів не зробили того, що потрібно було зробити, керівництво не поклало рушницю в голову і заборонило їм самі встановлювати систему контролю версій.

3
Messy Кодові бази ніколи не є прямим результатом управління, оскільки управління ніколи не відповідає безпосередньо за написання коду. Це так просто. Управління несе відповідальність за те, що розробники розробляють не менш ідеальне робоче середовище, але відповідальність за вирішення таких проблем, як відсутність контролю версій, завжди покладається на тих, хто виконує фактичну роботу.
Пітер Ланге

1
Аутсорсинг розробників - це проблема управління. Люди зсередини знали краще. Керівництву подобалося робити вигляд, що вони економлять навантаження грошей, наймаючи 200 дев, коли вони насправді могли би зробити чудово з 20 компетентними. Так само, як і багато реалізацій Scrum, я бачив, прийнята стратегія була результатом некомпетентності, і нічого, не зважаючи на розробників, які насправді були співробітниками компанії.
Ерік Реппен

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

3
Я також хотів би додати, що нерозумно не робити своїх дияволів прихильними до бізнес-цілей. Я ніколи не розумів, чому люди так намагаються приховувати цей матеріал від людей, які фактично визначають поведінку їхнього продукту. Знаючи довгострокові цілі компанії, насправді можна повідомити про те, як ви розробляєте додаток. Також, чорти, принаймні хороші, вирішують проблеми. Постійно вони вирішують проблеми. Деякі з нас передбачують і вирішують їх достроково в головах або, принаймні, залишають потрібні двері відкритими в нашому коді.
Ерік Реппен

7

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

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


Це може бути складно, якщо існуюча база достатньо безладу. Він говорить про безліч застарілих систем asp.net зовсім різних авторів, щільно з'єднаних разом для одного і того ж проклятого сайту. Самі веб-форми - це чудовисько, і я впевнений, що це в поєднанні.
Ерік Реппен

О, я ніколи не говорив, що це буде найпростіший маршрут ... але він більш приємний для зацікавлених сторін. Крім того, переглядаючи це один раз, сподіваємось, ви переконаєтесь, що коли сьогоднішнє і найбільше стане завтра застарілим, простіше його припинити.
Майкл Браун

Я згоден. Але, як сказав Іве (і не впевнений, що всі є). Що зараз існує колекція з дев'яти окремих веб-додатків, половина яких - класичний ASP, а інша половина - різні форми ASP.NEt. Всі, використовуючи абсолютно різні способи обробки доступу до даних тощо. Отже, єдиний спосіб зробити те, про що говорять, - це підробити інтерфейс користувача, щоб виглядати, що новий код є частиною старого коду .. так, так, можливо, але тоді є база даних .. Одна таблиця має 400 полів!
пунктур

Мені цікаво. Що являє собою ця таблиця? Це найгірше, що я чув, відколи я бачив i ++; doSomething (i); повторювався більше десятка разів у якомусь коді, який випливав із розбитого тегу JSP.
Ерік Реппен

5

Де я і як ми працюємо, це те, що ми б робили: Напишіть нову історію та передайте її власнику продукту, який потім вирішить, як визначити її пріоритетом. Прикладом може бути: "Як розробник продукту X, я хотів би переписати код у цій галузі, щоб майбутня розробка була більш ефективною", то критерії прийняття повинні відповідати наступним чином: Re write / refactoring x щоб було краще таким чином.

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

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


Тож чорти можуть писати «історії» та подавати їх? Проблема полягає в поясненні причин для перезапису занадто технічних, щоб їх вирішити ... Все, що я можу сказати, - "Поточний код важко керувати і ламається" ..
punkouter

6
@punkouter: якщо причини, які хочуть переписати, суто технічні (тобто не коштують ділових грошей), то у вас немає достатньої причини для переписування.
Майкл Боргвардт

@MichaelBorgwardt: Ви хочете сказати, що будь-яких технічних причин ніколи не вистачає для того, щоб щось переписати? Це принципово порушений підхід, якщо я вас правильно зрозумів. Одне, що мені постійно на нерви - це звичайний підхід майстра / раба, що «бізнес» визначає все, що робить «ІТ», або будь-який відділ. Це справедливо лише певною мірою. ІТ має свої внутрішні вимоги, які не визначаються бізнесом - це одне, чого зазвичай не вистачає і веде до непроектованого, непридатного програмного забезпечення.
nicodemus13

1
@ user12355 Як я вже бачив, Майклз зазначає, що якщо він не втратить їх грошей, він не заробить їх гроші, значить, ніколи не буде справи. Якщо вони не втрачають гроші, переписування коштує їм грошей. Гроші, які неможливо повернути. Розробник може зробити випадок "цей код відстойний", але якщо вони не зможуть довести фінансову вигоду для свого роботодавця, вони ніколи не отримають зелене світло для переписування, якщо вони не зроблять це самостійно.
Ріг

1
@ user12355: Технічні причини безумовно достатні для історії користувача. Їх не обов'язково достатньо, щоб ця історія просунулася до початку списку та розмістилась у спринті.
Адам V

4

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

Однак; зміна якості коду від однієї ітерації до наступної є рішенням розробника. Якщо ви дозволяєте знизити якість коду, ви додаєте технічну заборгованість, щоб зараз виконати сподівання власника продукту. Що ви можете зробити, це почати брати на себе відповідальність за написаний код і переконатися, що він покращує базу коду, а не навпаки. Тепер це означає, що ви втратите швидкість, оскільки ви постійно зменшуєте обсяг технічної заборгованості, а власник продукту точно буде розчарований. Ви можете спробувати пояснити, що, прагнучи догодити, ви дозволили якості коду погіршитися, і тепер ви вживаєте заходів для виправлення цієї проблеми.

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

До речі, це не суто питання Scrum, і я не пропоную рішення, специфічне для Scrum. Йдеться про розробників, які беруть право власності на код.


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

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

3

Розробники несуть відповідальність за повідомлення світу про поточний стан кодової бази. Це може статися під час щоденної суперечки, ретроспективи чи просто неофіційно. Це може здатися очевидним, але якщо ви чітко не висловите, що це за безлад і скільки часу ви витрачаєте через це, ніхто ніколи не помітить. Майстер Scrum, як правило, несе відповідальність за передачу інформації на технічну службу та людей, відповідальних за проект, і переконання їх у тому, що потрібно зробити, а потім сприяти реалізації рішення командою.

Як зауваження, велике переписування чуб - IMO не обов'язково є правильною відповіддю на подібну проблему. Однак, розроблені розробниками з існуючою базою коду, невеликі вимірювані кроки на шляху до більш чистої архітектури часто є кращою ідеєю, оскільки ви можете побачити прогрес, виправдати свою роботу, регулярно демонструючи досягнення та продовжуючи процес впровадження нового користувача історії паралельно, на відміну від того, щоб загубитися в нескінченному, монополізованому макіяжі.


Як я вже згадував. Зібрання 6 класичних ASP-сайтів + ​​4 .net 1.1 сайтів, об'єднаних в один сайт, немає ніякого шляху. Всі кодуються різними людьми по-різному.
пунктур

Я майже впевнений, що база коду буде рухатися вперед, щоб перефразувати доктора Іана Малкома з парку Юррасик "Я просто кажу, що менеджмент, е ... знаходить спосіб" .

Це може пройти в найближчі роки, але різні смаки застарілих .нет-сайтів, щільно з'єднаних між собою, в ці роки, швидше за все, не просунуться.
Ерік Реппен

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

Безперебійний імпульс вперед - це, як правило, корінь проблеми в першу чергу в моєму досвіді. Біль починається тоді, коли очікувані повороти не зменшуються, поки вони все ще глухо звучать проблеми архітектури і думають, що Scrum кожні два тижні магічно розробляє нові комплекти повноцінних можливостей, не посилюючи проблему. Я не кажу, що ми не повинні насторожуватись бажанням вирвати речі, якщо ми не можемо придумати альтернативи, які вирішують потоки часу, з якими ми стикаємось, але я бачив принаймні два дуже хороших випадки для великих капітальний ремонт у моїй кар’єрі.
Ерік Реппен

2

Ти запитав:

Де частина Scrum, в якій розробники можуть сказати, що цього достатньо, і вимагати, щоб їм було надано час, щоб почати велике перезапис? Ми здаємося в нескінченному циклі, який просто виправляє старий код "Stories". Таким чином, справи ведуться нетехнічними людьми, які, схоже, не бажають вимагати перезапису, тому що вони не розуміють, наскільки погана база коду.

Оскільки хтось і менеджер, і розробник, найпростіша відповідь на ваше запитання полягає в тому, що немає жодної участі в Scrum, чи будь-якій іншій методології, або в будь-якому бізнес-сценарії, де розробник має достатньо сил сказати, і вимагає переписати. Багато людей тут висловлювали хороші, вагомі аргументи, щоб пояснити, чому переписування часто є поганими ідеями, та пояснити, як зміни можуть бути і повинні бути здійснені поступово, спритно. І я з усіма погоджуюся.

Але підсумок ще простіший. Ви не приймете такого рішення, ВСЕ. Ви працівник, і єдине рішення, яке ви дійсно приймаєте, - це «чи я продовжуватиму працювати над цими ашатами, чи знайду нову роботу, яка боїться мого шаленого майстерності». Ваша нова робота також не дозволить вам прийняти це рішення, але принаймні ви відчуєте, що контролюєте свою долю, переходячи з роботи на роботу.


1
Якщо я читаю тут між рядками правильно, це здається, що ви трохи гірко ставитеся до своєї нездатності втриматися на новоприйнятих. Якщо я не помиляюся, чи вважали ви, що нові наймачі, чиї навички насправді потребують достатнього попиту на них, коли вони не люблять працювати у вашій компанії, є єдиними неконстантами в рівнянні?
Ерік Реппен

1
Навіть близько не. Насправді співробітники мого відділу були зі мною вже кілька років. У мене практично немає перевертання. Я намагаюся зазначити, що в кінцевому підсумку в будь-якій компанії, в будь-якій галузі, яка робота виконує працівник, повністю залежить від особи, яка підписує зарплату, а не працівника. Єдине рішення, яке повинен прийняти працівник, включаючи мене, коли мій начальник звертається з проханням, - це зберігати чи не підтримувати стосунки з працівником. Оригінальний плакат запитав, коли він, як працівник, дістає диктувати розвиток. Відповідь ніколи.
Пітер Ланге

Тоді що було з характеристикою "страх мій скажений"? Цей хлопець - досвідчений розвідник. І я можу вам сказати з мого досвіду подібних ситуацій, що проблема, про яку він говорить, - це не лише питання того, щоб хотіти речі своїм шляхом, а насправді триваючої катастрофи, яка одночасно робить усіх нещасними і коштує свого роботодавця набагато більше в марних збереження часу та талантів, ніж вони, мабуть, усвідомлюють.
Ерік Реппен

1
Тому що я ілюстрував помилковість основного аргументу, коріння якого в його (у психологічному розумінні). Це не питання про те, наскільки він кваліфікований. Це не питання про те, наскільки зіпсований код. Це не питання про те, що може зробити для нього методологія розвитку. Це питання про владу. Повноваження приймати рішення у відносинах працівника покладається на роботодавця. Єдиною силою, яка вирішує працівник, є скасування відносин, коли вони стають занадто сильними.
Пітер Ланге

1
Я погоджуюсь, Scrum - паршивий за справу з технічними боргами. Але я не згоден з приводу основи початкового питання. Він насправді задавав питання стосунків роботодавця / працівника, але лише згадував про це питання. Начебто я запитав: "Як християнин, що найкращий спосіб зробити Енчіладу?". Це насправді не богословське питання; це питання щодо приготування їжі, навіть якщо я помилився, вважаючи, що мої релігійні уподобання є актуальними.
Пітер Ланге

1

Я відчуваю ваш біль, але не впевнений, що це стосується Scrum. Рішення про перезапис коду не залежить від процесу розробки.


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

1

Чекати, що?

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.