Англійська для Devcontainer і Dev Environment Tooling
Освоєння словникового запасу для обговорення відтворюваних середовищ розробки, контейнерів розробки та інструментів інтеграції з вашою інженерною командою.
Відтворювані середовища розробки стали стандартним очікуванням інженерних команд, а словник навколо devcontainers, dotfiles і середовища парності постійно з’являється в розмовах про впровадження і обговореннях інфраструктури. Бути точним щодо цих термінів допомагає вам чітко пояснити, чому « це працює на моїй машині » більше не є прийнятною відповіддю.
Ключовий словник
** Devcontainer ** Середовище розробки у контейнері, визначене декларативно у файлах налаштувань, яке надає кожному розробнику ідентичний, відтворюваний набір інструментів, залежностей і параметрів незалежно від машини, на якій вони працюють.
- Приклад: « Нові інженери можуть відкрити сховище в devcontainer і почати робити внесок протягом декількох хвилин, без вручну встановлення жодної залежності. » *
Паритет навколишнього середовища Ступінь, у якому локальне середовище розробника відповідає виробничому середовищу (або іншому середовищу, наприклад, CI), зменшуючи клас помилок, які з’ являються лише у одному середовищі, а не в іншому.
- Приклад: « Ми поліпшили парність середовища за допомогою запуску точно такого ж базового штампу локально, у CI і у виробничому середовищі, замість трьох незначно різних конфігурацій. » *
Відтворюваність Властивість збірки або середовища, яка гарантує, що збірка або середовище поводитимуться однаково кожного разу, коли їх створюватимуть, незалежно від того, коли або на якій машині їх встановлюватимуть.
- Приклад: “Прикріплення версій залежностей у конфігурації devcontainer було ключовою зміною, яка дала нам реальну відтворюваність у команді.” *
Набор трения Перешкоди і затримки, з якими стикається новий член команди під час роботи у локальному середовищі, перш ніж він зможе зробити свій перший значний внесок. *Приклад: “Ми вимірюємо тертя при вступі на роботу, відстежуючи, скільки часу займає новий найманий працівник, щоб подати свій перший запит на витягування - це впало з трьох днів до менш ніж двох годин після того, як ми прийняли devcontainers.” *
** Дотфайли **
Особисті файли налаштувань (часто префіксовані крапкою, як .bashrc або .vimrc ), які налаштовують оболонку розробника, редактор і інструменти — іноді спільні і версійно контролювані, іноді строго особисті.
- Приклад: « Ми підтримуємо монтування особистих файлів-точек у devcontainer, тому люди можуть зберігати свої улюблені псевдоніми оболонки без впливу на спільний базовий штамп. » *
** Базове зображення ** Початковий штамп контейнера, на якому буде збудовано devcontainer або середовище CI, зазвичай, включаючи операційну систему і залежності ядра під час виконання.
- Приклад: « Ми стандартизували на єдиному базовому штампі для локальної розробки і CI, що виключило цілу категорію помилок « працює в CI, але локально не працює ». » *
** Після створення команди / галочка життєвого циклу ** Скрипт або команда, які виконуються автоматично у певний момент налаштування devcontainer, наприклад, одразу після створення, для встановлення залежностей або виконання початкового налаштування.
- Приклад: « Команда post- create встановить залежності проекту і автоматично створить локальну базу даних, отже, для нового співробітника не залишиться жодного кроку вручну. » *
** Дрейф (дрейф середовища) ** Поступове розходження між локальними середовищами розробників з часом, оскільки зміни ad-hoc накопичуються поза будь-якою спільною, версійно-контрольованою конфігурацією. Приклад: “Перед тим, як ми прийняли devcontainers, у нас був значний дрейф середовища - три інженери працювали над різними незначними версіями одного і того ж часу виконання, не усвідомлюючи цього.”
Звичайні фрази
** В обзорах коду: **
- «Ця конфігурація devcontainer прикріплює версію виконання, але крок встановлення залежностей не прикріплюється — це знову вводить саме той вид дрейфу, який ми намагаємося виключити»
- «Ми повинні пересунути цей крок вручну в post-create hook, щоб це відбувалося автоматично для кожного нового учасника, а не тільки для людей, які пам’ятають прочитати README.»
- «Базове зображення тут відрізняється від того, що використовується в CI — це, ймовірно, чому тест пройшов локально, але не вдалося в конвеєрі»
В стоячих позах:
- «Вчора я закінчив міграцію бази нашого devcontainer, щоб точно відповідати виробництву; сьогодні я перевіряю, що CI все ще проходить з оновленим зображенням»
- «Я заблокований на борту зворотного зв’язку — новий найманий вдарив проблему з дозволами в devcontainer, яку ніхто з нас не бачив раніше»
- «Я виправив post-create hook, так що тепер він автоматично запускає тестові дані, замість того, щоб вимагати вручну запуску скрипту після запуску контейнера.»
** У процесі впровадження або обговорення командних процесів: **
- “Скільки часу вам знадобилося, щоб отримати першу успішну локальну версію? Якщо це було більше 20 хвилин, це сигнал, що ми повинні поліпшити тут»
- «Ми прагнемо до справжнього паритету середовища, тому «це працює на моїй машині» повинно перестати бути значущою фразою в цій команді»
- «Давайте документувати кроки після створення чітко, так що кожен, хто розширює devcontainer знає, що вже відбувається автоматично, перш ніж вони додадуть щось нове»
Фрази, яких слід уникати
Сказав “це працює на моїй машині” як пояснення. Ця фраза стала добре відомим символом поганої парності середовища, і використання її серйозно сигналізує саме про проблему, яку вирішують devcontainers. Замість цього скажіть: «тут є різниця середовища — давайте дізнаємося, що відрізняється між моєю установкою і CI»
**Сказав “просто настроить его как мой” во время набора. ** Це створює неформальний, недокументований дрейф, а не відтворюваний середовище. Замість цього скажіть: « додамо цей крок до конфігурації devcontainer, щоб він був автоматичним для всіх, а не просто щось, що я пояснюю вербально. »
Скажите “средство обитания разрушено” без указания того, что разошлось. Замість цього скажіть: « у базовому штампі є невідповідність версії » або « післястворення hook завершилося невдачею » — точні мовні вказівки безпосередньо на те, що слід виправити.
Краткий справочник
| Term | How to use it |
|---|---|
| devcontainer | ”New engineers get a working devcontainer within minutes.” |
| environment parity | ”We improved parity by using the same base image everywhere.” |
| onboarding friction | ”Onboarding friction dropped once setup became fully automated.” |
| dotfiles | ”We support mounting personal dotfiles into the container.” |
| base image | ”CI and local dev now share the exact same base image.” |
| post-create hook | ”The post-create hook seeds test data automatically.” |
Ключеві моменти
- Розглядати « це працює на моїй машині » як діагностичний червоний прапор, а не пояснення — це сигналізує про певну проблему парності середовища, яку слід дослідити.
- Використовуйте парність середовища і відтворюваність як вимірювані цілі, і конкретно стежте за тертям під час впровадження (наприклад, часом до першого запиту на витягнення), щоб продемонструвати їх цінність.
- Пересунути інструкції щодо вручну встановлених параметрів до автоматизованих галужок циклу життя, замість того, щоб документувати їх як кроки, які людина повинна запам’ ятати і виконувати.
- Дрейф середовища накопичується тихо — описуйте його явно під час аудиту, чому локальні налаштування членів команди розходяться.
- Якщо щось не працює, називайте конкретну відмінність (версію базового штампу, помилку прив’ язки, невідповідність залежностей), а не просто скажіть, що середовище « не працює »
Розвиток мови: розробка мови для професійного використання
Початковий фокус цієї статті був на побудові міцного фундаменту в конкретній термінології навколо DevContainers, Docker і пов’язаних інструментів. Ми вже описали такі терміни, як « імідж », « Dockerfile », « віддалене розширення » і « базовий імідж ». Але давайте будемо чесними — розуміння * того, що * сказати — це лише половина битви. Для не рідних англомовних носіїв, особливо тих, хто переходить в професійне середовище розробки, оволодіння нюансами фразування і комунікації має вирішальне значення для ефективного співробітництва, успішних переглядів коду і плавного впровадження. Недостатньо просто знати, що «базове зображення» є початковою точкою; вам потрібно мати змогу сформулювати * чому * воно використовується, як це впливає на ваш робочий процес, і які потенційні проблеми можуть виникнути.
Одна з найпоширеніших областей плутанини виникає з рівня деталей, очікуваних в комунікації. Просте « Це виправляє ваду » не є достатнім, коли ви обговорюєте зміни з старшими інженерами або пишете описи запитів на збирання. Замість цього вам потрібно надати контекст і обґрунтування. Наприклад, уявіть, що ви отримали коментар перегляду коду, який виглядає так: « Розгляньте можливість додавання додаткових тестів модулів для цієї функції — на даний момент вона не має поширення ». Прямим перекладом може бути « Будь ласка, додайте тести ». Проте, більш професійною відповіддю буде « Я додав набір тестів модулів, які охоплюють основні функціональні можливості функції calculate_interest. Це вирішує проблему відсутності тестового покриття і забезпечує підвищену впевненість у стабільності цього модуля. Я також задокументував обґрунтування вибраного підходу до тестування в описі PR. » Ключовим є пояснення * чому * додаткові тести були необхідні — демонстрація розуміння і активного вирішення проблем. Аналогічно, при описі налаштування DevContainer, ви не просто скажете «Я використовую Node.js». Ви розробляєте: «Цей DevContainer використовує базовий образ Node.js 18 з ESLint і Prettier, налаштованим для послідовного форматування коду, забезпечуючи дотримання стандартів кодування команди»
Інший поширений сценарій включає в себе вирішення проблем в середовищі розробки. Припустимо, що у вас виникають проблеми зі створенням проекту всередині DevContainer. Просте “це не працює” не дасть вам далеко зайти. Замість цього, ви можете сказати: « Я стикаюся з помилкою під час кроку npm install — конкретно, « у дозволі відмовлено ». Я підозрюю, що це може бути через невідповідності у правах користувача в середовищі контейнера. Я перевірив файл Docker і перевірив, що користувач, який виконує процес збирання, має відповідні права доступу». Цей підхід демонструє методологічний підхід і підкреслює ваше розуміння потенційних причин.
Нарешті, пам’ ятайте, що чітке і коротке повідомлення має вирішальне значення під час документування налаштувань DevContainer. Під час створення опису PR для нового DevContainer ви можете написати: « Цей DevContainer надає відтворюваний середовище для розробки [Назва проекту] за допомогою Python 3. 9 і вимог, вказаних у requirements.txt. Він включає попередньо встановлені інструменти, такі як pip, flake8, і pytest, щоб забезпечити постійну якість коду і полегшити тестування. Контейнер налаштовано з виділеним обліковим записом користувача для покращення безпеки». Цей рівень деталізації забезпечує, що інші розробники зможуть легко відтворити ваше середовище і зрозуміти мету налаштування.
# Example: Running a Docker build command within a DevContainer using VS Code Remote - Containers extension
docker build -t my-app .