Півколо (епізод 25; Розбиття та плутанина) Розмови OCTO!
Одним з моїх найпродуктивніших днів було викидання 1000 рядків коду.
Кен Томпсон

Ви знаєте, що це мрія. Ви йдете нескінченними та пишно оформленими коридорами цього особняка, переслідуючи дворецького в червоно-сірому костюмі, який знаходиться на відстані десь метрів від вас. Під ногами голосно скрипить лакована підлога. Ви хочете наздогнати дворецького і поговорити з ним, але боїтесь, що він помітить вашу присутність і обернеться у ваш бік. Дворецький продовжує свій шлях гігантськими кроками, коридор за коридором. На своєму курсі ти навряд чи встигаєш помітити повішення, сцени полювання, обрамлені позолоченим деревом, старомодні люстри. Дворецький нарешті зупиняється, відчиняє двері праворуч і заходить. Ви йдете за ним до входу у велику квадратну кімнату, посеред якої стоїть чоловік за письмом Людовика XV. Дворецький підходить до останнього і рукою в білих рукавичках простягає срібний піднос, вимовляючи тихим голосом:
- Ось винний, пане губернаторе.
Розчарований тим, що не можеш розібрати нічого цікавого, ти стоїш на п’єдесталі праворуч від тебе. Губернатор мовчки спостерігає за вмістом лотка: звичайним запобіжником, розміром не більше сигаретного фільтра, і почорнілим від вогню.
Ви втрачаєте рівновагу.
- Оаааааа !
- Ах, ти нарешті прокинешся. Це вже сім тридцять, для запису. Ваш смартфон не дзвонив. Більше батарей.
- Однак я підключив його до електромережі ...
- ГАРАЗД. Я мушу піти. Побачимось ввечері!
Ви кидаєтесь у ліфт. Ви просто порушили рішучість щоранку підніматися сходами, але це для вагомої причини, оскільки ви спізнилися. Не потрібно накопичувати затримки.
Ви заходите в кабінет і кидаєте в кантоннаду:
- Приходжу, вибачте за затримку, у мене не задзвонив будильник.
Джеремі каже, його очі прикуті до екрану:
- Не хвилюйся, ми не починали. Одрі поїхала перевіряти, чи приєднається до нас Марія.
Одрі повертається і каже:
- Вона не може, але вона залишила мені якусь інформацію, щоб поділитися.
Фарід запускає команду на своєму робочому місці та оголошує:
- Мені це добре, ми можемо почати.
Джеремі підключає свій ПК до проектора. Він каже:
- Попереджую вас, я не робив слайдів, я просто зібрав інформацію у текстовий файл.
Задня стінка повністю чорна, за винятком фризу з маленьких яблучно-зелених символів.
Фарід запитує:
- Джеремі, ти можеш збільшити розмір шрифту, будь ласка, це нерозбірливо.
- ГАРАЗД.
Налаштовуючи відображення файлу огляду iteration.txt, Єремія висловлюється нейтральним тоном основних моментів за останні чотири тижні:
- Дванадцять "зроблених" історій, порівняно з п'ятнадцятьма історіями, розпочатими на початку місяця.
- На сьогодні не виявлено помилок у прийнятті (але випробування все ще тривають, Клавдія повинна виконати їх до кінця тижня).
- 25% збільшення рефакторингу комітів по всій базі коду.
- Збільшення обсягу тестового коду на 35% з тієї частини коду, яку ми модифікували для виконання матеріалів.
Одрі бере слово:
- Зі свого боку, Марія підтверджує, що історії, які проходять тести, добре відповідають потребам, і що, швидше за все, змін у останню мить не буде. Вона також хоче підкреслити реакцію, яку ми виявили на проблему, з якою стикалися у виробництві минулого четверга. Це для важливого клієнта, і він оцінив наше втручання, аж до того, що згадав про це у Twitter.
Джеремі коментує:
- Ну ось новий випадок Стокгольмського синдрому. Клієнт дякує нам за те, що ми взяли його дані в заручники протягом двох годин, і цілує нас в обидві щоки.
Одрі:
- Можливо, він розуміючий замовник. Можливо, він сам розробник або в родині є хтось, хто працює розробником.
Ви втручаєтесь:
- Або він порівнює цей досвід із досвідом іншої події, що стосується програмного забезпечення, гіршого за наше.
Фарід зазначає:
- У будь-якому випадку, це завжди добре брати. І тоді це показує, яким чином ми можемо покращити ситуацію.
Одрі продовжує:
- До речі, Марія хотіла знати про підхід програмування натовпу. Вона та Жан-Бернар більше не говорили про це, але було б цікаво отримати резюме від команди, на випадок, якщо тема знову з’явиться в CoPil.
Джеремі переміщує курсор вгору до редактора і відповідає:
- Чесно кажучи, я не думаю, що термін програмування "натовп" є ані доречним, ані дуже репрезентативним.
- Не в цьому питання, - сказала Одрі.
- Ти правий.
Ви помічаєте:
- У будь-якому разі, якщо ми хочемо повірити в те, що проголошується в цьому звіті про ітерації, я думаю, що нас можуть похвалити за спробу підходу. Що ви скажете з цього приводу ?
Посередині стіни синій прямокутник, що містить повідомлення: Замінити лампу (# 74)
Фарід сміється:
- Проектор не в порядку. Це він говорить.
Ти кажеш:
- Сподіваюсь, у нас є запасні світильники, або ми можемо їх швидко отримати.
Ви запускаєте свій браузер у пошуках внутрішньої сторінки, яка стосується заміни матеріалів.
Джеремі вставляє нові рядки у верхню частину документа, щоб текст з’являвся під синім прямокутником. Він шепоче:
- Або ми можемо використати весь залишок місця, тобто між рядками 1-12 та 18-30 ...
Одрі нетерпляча:
- Добре. Ми закінчили ретро? Бо у мене зустріч, яка починається через 10 хвилин.
Фарід запитує:
- Щодо відсотків на рефакторинг та тестовий код, чи маємо ми цифри за попередні місяці для порівняння ?
Єремія відповідає:
- Ми маємо дані лише за минулий місяць. До цього періоду всі здійснюють з різною частотою, і про дії рефакторингу у звіті не повідомляється. Що стосується модульного тестування, ви могли виконувати вправу протягом попередніх місяців, але обсяг тестового коду на той момент був практично незначним. Наприклад, якщо ви подивитесь версію, яка вийшла у виробництво рік тому ...
Джеремі обирає версію в диспетчері джерел та встановлює її на своєму комп’ютері. На стіні відображається перша сторінка файлу з ім'ям CoreBusinessLayeredManager .
Кімната не на одному рівні з рештою будівлі, вона більше не спілкується з нею. Це якийсь середній поверх, мабуть, великий, як ангар, майже в повній темряві. Перегородки різної висоти, які, ймовірно, повинні починатися від стін, довільно і безладно ділять простір. Сформовані таким чином відсіки порожні, за винятком кабелів - десятки кабелів - які безперешкодно перекривають перегородки, утворюючи, таким чином, полотно, що поширюється на всю поверхню ангару на півдорозі. У деяких відсіках все ще є кабелі, прокладені на підлозі або все ще намотані на їх золотник.
Ви ставите себе, не ставлячи запитання вголос, що могло спонукати створення класу, виставленого на стіні, а також принципи, якими керувався його дизайн.
Даремний простір, гарячково розвинений за порадою неправильно зрозумілого архітектора, якому ми в підсумку надали значення, бо він був там на шляху.
Єремія зазначає:
- Код цього класу, наприклад, не виконується жодним модульним тестом. Я це знаю, бо запустив інструменти калькулятора охоплення тестів. Але навіть без розрахунку охоплення, просто підраховуючи кількість тестів, присутніх у відповідному класі тестів ...
- Тобто в цьому випадку нуль перебиває Одрі.
- ... Точно, Джеремі продовжує, ми можемо з більш ніж достатньою точністю виміряти надійність коду, про який йдеться.
Фарід запитує:
- Який сенс писати одиничні тести з цього класу? Вона служить лише люком.
Ви запитаєте:
- Яка користь від написання самого класу ?
Фарід дивиться на вас здивований:
- Передати посуд, звичайно.
Джеремі відбивається на запитання Фаріда:
- У цьому проблема такого вимірювання. Вона розповідає вам лише те, що було підраховано. Вона не говорить вам, чи те, що ви порахували, є правильним, доречним чи зайвим, або навіть відверто неправильним.
Ви хотіли б повернутися до цього класу більш докладно. Ви запитаєте:
- Чому ви взагалі пишете модульні тести на коді, який пишете? ?
Одрі бере м'яч на льоту:
- Особисто я пишу модульні тести, щоб переконатися, що код робить те, що, на мою думку, повинен.
- Іншими словами, це спосіб висловити свій намір.
- Саме так.
- Який намір коду, який був написаний у цьому класі ?
Група мовчить.
Джеремі намагається відповісти:
- Звичайно, цей клас вже не відповідає решті дизайну ...
Фарид перебиває:
- Але тепер, коли він тут, і його використовують, і ви бачите, що він не тестувався, це як би знижує середнє значення. Чи означає це, що нам слід писати непотрібні тести, лише щоб отримати хороші цифри ?
Одрі встає і підходить до дверей, кажучи:
- Звичайно, ні. Ми тут, щоб виробляти програмне забезпечення, яке працює, а не створювати хороші цифри. я мушу йти.
- То що ми робимо з цим кодом? Ми все одно не можемо його видалити !
Джеремі спокійно сказав:
- Я не знаю точно, що робить код, але я впевнений, що якщо ви видалите його, не роблячи нічого іншого, програма не працюватиме.
Фарід робить висновок:
- Тож, якщо ви сумніваєтесь, я пропоную нам зберегти його як є. Якщо буде час, ми напишемо тести пізніше. Одрі, перед тим, як піти, що ти скажеш ?
Одрі обертається і на мить дивиться на код, що розкинувся навколо синього прямокутника на стіні.
Вона робить висновок:
- Ми впевнені, що код робить саме те, що повинен? Ні. Чи точно ми знаємо, що повинен робити код? Більше немає. Але з якоїсь незрозумілої причини ми без цього не можемо обійтися. Це історія проекту. Побачимося!