Витягують запити місце для підготовки юніорів


11

У нас є концепція, що весь код у програмі "Запит на виклик" для майстра повинен бути готовим до виробництва. Це має сенс і є справедливим твердженням на мою думку.

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

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

АЛЕ, чи є запит на те, що нам потрібно надавати допомогу / навчання розробникам, і якщо так, то до якого рівня?

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

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

Хтось ще бореться зі спробами змусити розробників досягти мети "Мій запит на витяг повинен бути готовим до виробництва"?

Відповіді:


13

Ні. Запити на витяг не є місцем для навчання. Ваша команда має правильну ідею. PR означає: "Я думаю, що добре поїхати. Чи можу я отримати другий погляд на це, якщо я щось пропустив. Зрештою, я людина". І я підозрюю, що саме це робить ваш учень. Вони чесно вважають, що добре поїхати.

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


Дякуємо @RubberDuck. Пара програми - це відмінна ідея, і ми робимо її - сорта. Я підозрюю, що ми повинні робити це більше. Однак деякі належні показники чи інструменти для вимірювання того, чи одна з ваших «крапель» в океані неодноразово робить одні й ті самі помилки, допоможуть дізнатися, кому також потрібне програмування цієї пари. Я впевнений, що ця проблема загострюється у великих команд !?
Riaan Schutte

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

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

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

3
Це поширене оману @Andy. Хоча це просто неправда. Так, я знаю, що це протилежно інтуїтивно.
RubberDuck

9

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

Але це найкраще місце? Ось кілька причин, чому я б сказав:

  1. Якщо знадобиться кілька ітерацій перегляду коду, щоб вирішити фундаментальний недолік дизайну або масштабну проблему, тоді виникне сильна спокуса упустити з уваги більш незначні проблеми, згадані вище, через терміни або загальне виснаження з оглядом. В ідеалі команда була б досить стійкою, щоб протистояти цій спокусі, але, мабуть, найкраще не створювати ситуації, яка б до неї призвела.
  2. Огляд коду з великою кількістю коментарів не є чудовим досвідом для молодшого / нового розробника найму. Так, відповідати на зворотній зв'язок - це навичка, яку їм потрібно буде розвивати, але також правда, що розробники не завжди вміють тактовно реагувати на код, який їм не подобається.

Парне програмування та огляди дизайну є кращими місцями для більш масштабного зворотного зв’язку.

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

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


5

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

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

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


Дякуємо за вашу відповідь @ Karl-Bielefeldt Домовились, що певного навчання можна очікувати, але питання полягає в тому, наскільки це підходить, на якому рівні. Ваше твердження "... чи вони повністю готові чи потребують великої роботи". Я б сказав, що піар для опанування ніколи не потребує великої праці. Багато роботи передбачає недоліки дизайну, недоліки в реалізації, а не допомагають мені помітити те, що я пропустив. Однак я згоден і пережив, що "спроба змусити людей подавати ідеальні запити на тягнення весь час просто засмучує всіх".
Riaan Schutte

2

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

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

Отже, на ваше запитання про те, чи є запити на витягування місцем для тренувань юніорів, я мушу сказати, що не рідко виникають навчальні моменти під час них. Гей, вам доведеться зіткнутися з вашим першим конфліктом злиття, давайте перейдемо до цього після огляду. О, подивіться, ви не включили жодних тестових одиниць для свого DAO, ми відкладемо ваш огляд до того моменту, поки ми не зможемо охопити ці нові методи. Чому, на вашу думку, було б краще використовувати подвійні примітиви у цьому фінансовому розрахунку, ніж BigDecimals? Так, це не дуже рідко.

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

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

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

Код після цього закритий. Але тоді ми дозволяємо QA мучити це.


Дякуємо за вашу відповідь @ Майкл-Павич. Те, що ви говорите, відповідає дійсності для компаній, які мають окремий відділ контролю якості, або тестерів, які проводять його наступним етапом. Але коли розробники також є тестерами, PR супроводжує все - від розробки до тестування до злиття в майстер. У цьому робочому процесі код повинен бути готовий до виробництва після затвердження PR. Я припускаю, що питання також завантажене припущенням про те, який робочий процес ви використовуєте.
Riaan Schutte

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

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

2

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

Це моя відповідь після наданих відгуків і моє розуміння на основі отриманих відповідей та коментарів. Дякую всім.

Підсумок

  • Не сподіватися і не виконувати досконалі запити на биту, оскільки це стане лише розчаруванням для всіх учасників.
  • Але продовжуйте робити це нашою ціллю для ідеальних запитів.
  • Очікуйте деякої кількості співпраці / допомоги у запитах на тягнення. Зрештою, саме цього ви і запитуєте, створивши запит на витяг.
  • Якщо вона стає дещо значною мірою через недоліки дизайну чи недоліки в реалізації, проведіть час з цим розробником і зробіть кілька парних програмувань, щоб створити їх і наблизити код до мети . Це роль усіх старших розробників.
  • Юніорам знадобиться більше парних сесій програмування, ніж проміжні розробники. Тож очікуйте, що відповідні вимоги відображають цю вимогу.
  • Закликайте розробників до зустрічей із розробкою / впровадженням, перш ніж торкатися коду, щоб зменшити будь-яку переробку, виявлену в програмі "Затягування запитів".

1
Чудовий підсумок та відповідь. Я б зовсім не образився, якби ви дали собі галочку.
RubberDuck

Дякую @RubberDuck, але моє резюме не могло існувати без відповідей та коментарів кожного на моє запитання. Ура.
Riaan Schutte

0

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

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

Або, можливо, вам потрібно найняти молодшого заміну і звільнити того, хто не зміг цього розібратися?

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

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


Дякуємо за вашу відповідь @RibaldEddie, ми очікуємо, що розробники написали б тестові одиниці, перевірили вручну та переглянули власну роботу до того, що вони запевнятимуть, що цей код чудовий і як це їм залишилося, вони злили б його з головним, але отримають 2 рецензенти для перегляду та сподіваємось підтвердити це твердження. Ми не приймаємо жодної технічної заборгованості і повністю відходимо від виправлень на користь рішень. Тож очікується, що код відповідає цим вимогам.
Riaan Schutte

@Riaan хто рецензенти?
RibaldEddie

Будь-хто з технічних веде до юніорів. Зазвичай це один старший / проміжний рецензент, а також молодший / проміжний рецензент. (2 рецензенти)
Riaan Schutte

@ Riaan тоді з часом я б очікував, що молодші члени команди диференціюються. Ви зможете сказати, хто сумлінний, а хто малозначний. Я вважаю, що розробка програмного забезпечення зроблена добре, це діяльність, яка добре підходить до деталей, орієнтованих на деталі. Деякі люди, можливо, не зможуть зняти це. Вам потрібно буде вирішити, що з ними робити. Але в принципі слід очікувати, що розробники, які подають код, об'єднані, будуть впевнені, що він працює за призначенням і готовий до виробництва. Навіть якщо у вас є велика, вдосконалена команда з забезпечення якості, ваші розробники все одно повинні мати PR-код, готовий до виробництва.
RibaldEddie
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.