Як зупинити позолочення та просто задовольнитись випуском робочих розробок [закрито]


29

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

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


7
Визначте позолоту. Для мене, позолочення - це додавання непотрібних речей (по-худорському, створення відходів, таких як непотрібна функціональність, занадто багато документації або документація, що не додає вартості). Здається, ви не додаєте речі, які не потрібні, а просто витрачаєте час на рефакторинг, а не на витягування нових робочих продуктів.
Томас Оуенс

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

Що думає твій начальник?
JeffO

Відповіді:


22

Найкращий - ворог досить доброго.

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


2
Дякую Давидові, що мені дуже нагадує відповідну цитату, яку я прочитав нещодавно: "Ідеальний - ворог зробленого".
Енді Боускілл

1
Оскільки оригінал є французькою мовою (Вольтер), трохи важко сказати, яка версія є "правильною" - якщо ніхто не написав її французькою мовою, тобто.
Девід Хаммен

24

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

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

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

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


Дякую, Бернард, хороша порада. Так, це також підкреслює час і витрати порівняно з якістю відключення кінцевої продукції.
Енді Боускілл

@AndyBowskill, у мене це те саме питання, що і ти. Як ти зараз?
datasn.io

14

Позолочене програмне забезпечення

Перший раз, коли я побачив золото, що використовується як опис програмного забезпечення, було в статті Баррі Бума, де він дав наступну першопричину:

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

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

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

Талант для боксу в часі

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

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

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

Швидкий і брудний або ризикований прототип?

У мене був менеджер, який вимагав виконання завдань певним чином.

Швидке і брудне, але справа краси.

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

Що ми можемо пожертвувати, щоб відповідати нашому часовому вікні?

У першій главі Роз'яснення екстремального програмування , друге видання, Кент Бек розповідає про те, що потрібно швидко рухатись. Його відповідь полягає в тому, що "ви робите лише те, що вам потрібно зробити, щоб створити цінність для замовника".

Ризик

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

"Ризик - основна проблема розробки програмного забезпечення"

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

Психічність достатності

Бек обговорює ресурси в контексті розповіді про гірських людей та лісових людей та вводить концепцію, що називається "менталітет достатності". У контексті вашої ситуації він запитує: "Як би ви це зробили, якби у вас було достатньо часу?" Саме ця перша глава, доступна як попередній перегляд книг, може забезпечити багато їжі для роздумів про те, як XP (та інші Agile методи) думають про обмеження, як час.

Примус може бути симптомом, а не хворобою

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

Критика та конкуренція

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

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

У нашому світі роботи кожна людина в команді також повинна конкурувати з іншими. Трохи шизофренічно вірити в те, що є команда, яка ділиться роботою та славою за досягнення, але потім використовувати щорічний процес управління продуктивністю, який винагороджує 20% своїх членів, карає або виганяє 10% або більше членів, і робить вигляд, що більшість 70% робить все можливе без стимулів. Я думаю, що це великий слон у приміщенні WRT, що пропагує командну роботу, і для посилання на історію Кента Бека це свідчить про глибокі культурні зв’язки із тим, що є гірськими людьми.

Шлях вперед

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

Лідери можуть робити кроки в правильному напрямку, роблячи моделювання бажаної поведінки, як відверта розмова про власні проблеми (а не чужі), пропонуючи та слідкуючи за допомогою діалогу про те, як команда може перейти на стиль Agile Marine (тобто немає чоловіка залишити). Не всі в команді мають однакові здібності. Може бути доречним вивчити парування членів групи або призначення завдань і ролей, які можуть підкреслювати взаємодоповнюючі сили людей, які беруть участь у цьому. Планування зростання або відновлення навичок повинно бути корисною частиною роботи як для керівника, так і для підлеглого, але повинно відбуватися рано і часто бути ефективним.


Приємна, детальна відповідь. +1. Знову "але має статися рано": Восени, тому я використаю американську спортивну аналогію. Уявіть, чи футбольна команда працювала як типовий бізнес із щорічними оглядами працівників. "Ми знижуємо вашу зарплату на 50%. У першій грі ви пропустили три легких вилову. У наступних чотирьох іграх ви не отримали свою гру до другої чверті, а ваш біг був непридатним протягом усього сезону." Раз на рік критики приносять більше шкоди, ніж користі. Немає такого поняття, як конструктивна критика, якщо це вже пізно в майбутньому.
Девід Хаммен

Нерозривне посилання на гірських людей та лісових людей.
Wildcard

7

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

Або ви можете розробити новий навик, крім програмування, який потрібно виконувати у неробочий час, який (зрештою) задовольняє те, що робота не може надати. ;)


Ласкаво просимо і дякуємо за те, що ви написали своє перше повідомлення на програмі Stack Exchange. Будь ласка, розглядайте введення подальших запитань як коментарі до цього питання, а не як відповідь. Ви можете дізнатися більше про критерії написання високо оцінених питань та відповідей та отримати значок, прочитавши faq на сайті programer.stackexchange.com/faq
DeveloperDon

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