Codebase Ownership: English for Staff Engineers and Tech Leads (англійською)

Learn the English vocabulary staff engineers and tech leads use when owning modules, managing technical debt, and setting standards.

Introduction

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

Власник компанії Codebase Vocabulary

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

  • “Оскільки я є власником модуля розпізнавання, будь- які запропоновані зміни до циклу життя токенів або керування сеансами будуть перевірені мною на архітектурну відповідність перед їх об’ єднанням.” *

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

  • “Ми відклали 20 відсотків нашого Q3 потужності, щоб сплатити борг в обліку послуг - поточний рівень інцидентних квитків з цієї області є нестійким.” *

** Підтримувати якість ** — Активно підтримувати стандарти бази коду протягом часу, а не лише в момент початкового розроблення. Це включає перегляд внесків, забезпечення дотримання конвенцій, виявлення регресій і активне позначення областей, де якість погіршується.

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

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

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

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

“Ми намагаємося дотримуватися конвенцій за допомогою комбінації передзатверджувальних гачків, нетипових правил ESLint і зворотного зв’ язку від перегляду коду — написати посібник зі стилю не достатньо, якщо ніхто не перевіряє його відповідність.”

** Перегляд коду ** — Систематичне перевірка змін коду одним або декількома інженерами перед тим, як ці зміни будуть об’ єднані в головну гілку. На рівні персоналу, перегляд коду не просто про ловлення помилок - це інструмент для навчання шаблонів, забезпечення стандартів і підтримання архітектурної цілісності.

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

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

“Ми витратили два спринти на переробку служби сповіщень, щоб отримати правильну модель домену - вона не додала ніяких функцій, спрямованих на користувача, але скоротила час для додавання нового типу каналу з двох тижнів до двох днів.”

** Запис архітектурного рішення ** — Зазвичай скорочується до ADR, запис архітектурного рішення є коротким документом, який містить важливе архітектурне рішення, контекст, який його мотивував, розглянуті варіанти і обґрунтування вибраного підходу. ADR створюють тривалий запис того, чому кодова база має таку форму, як вона є.

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

Власність як практика, а не титул

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

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

Недоліки: Недоступність для непрофесійних користувачів

Однією з областей, де багато інженерів-працівників борються, є пояснення роботи з власниками кодової бази нетехнічним зацікавленим сторонам. Сказавши “Я сплачую борг в службі розрахунків” може не приземлитися з менеджером продукту. Формування його як «ми зменшуємо ризик майбутніх інцидентів і скорочуємо час для додавання нових постачальників платежів з трьох тижнів до трьох днів» розповідає ту ж історію в термінах, які мають значення для бізнесу. Навчання перекладати між технічним словником власності і мовою бізнес-впливу є одним з ключових комунікаційних навичок на цьому рівні кар’єри.

Розрізняють: мовні та немовні мовні відмінки; мовні відмінки

Концепції власності кодової бази — чітке визначення відповідальності, ідентифікація технічного боргу і встановлення найкращих практик — є універсально цінними. Однак, переклад цих ідей в точні англійські фрази може бути особливо складним для розробників, чия перша мова не є англійською. Це не просто про те, щоб знати слова для «технічного боргу» або «модулю»; це про розуміння тонких нюансів того, як ці терміни використовуються в професійному середовищі, і, що найважливіше, як виразити свій намір чітко. Часто різниця між конструктивною дискусією і непорозумінням залежить від специфічності. Нечіткі висловлювання типу « над цим треба попрацювати » не допоможуть, якщо ви пояснюєте, чому певна зміна коду потребує подальшого дослідження або чому модуль заслуговує уваги.

Ключовим місцем, де це проявляється, є опис * причини * вашого відгуку, особливо під час перегляду коду. Замість того, щоб просто сказати «Це не ідеальне», більш ефективним підходом було б пояснити * чому * це не ідеальне. Наприклад, замість короткого коментаря про PR, ви можете сказати: “Я помітив, що ця функція сильно залежить від глобального стану; введення шаблону залежності введення тут може значно поліпшити перевіряність і зменшити потенційні побічні ефекти. Чи можемо ми обговорити дослідження альтернативного підходу?» Це демонструє розуміння, надає конкретну пропозицію і запрошує до співпраці — все це важливо для підтримки продуктивного командного середовища. Аналогічно, під час написання описів PR, уникайте загальних тверджень на зразок « Виправлено помилку ». Замість цього, надайте контекст: « Цей звіт розв’ язує проблему, коли профілі користувачів не завантажувалися належним чином через умову перегонів у процесі отримання даних. » Я реалізував блокування mutex для синхронізації доступу і запобігання одночасним модифікаціям»

Крім того, пам’ятайте про рівень формальності. Хоча співпраця важлива, надто неформальна мова може підірвати вашу авторитетність як інженера-стажиста або технічного керівника. Стрімтеся до чіткого, професійного спілкування, яке поважає як членів вашої команди, так і саму базу коду. Не вагайтеся задати прояснюючі питання - набагато краще шукати розуміння, ніж робити припущення, засновані на неповній інформації. Нарешті, пам’ятайте, що англійська мова постійно розвивається; нова термінологія і фрази регулярно з’являються в технологічній індустрії. Бути допитливим і активно слухати, як інші виражають себе, постійно покращує ваші навички спілкування.

Ось приклад, що демонструє, як використовувати git blame для дослідження зміни коду:

git blame -L 100,1-100,10 myfile.js

За допомогою цієї команди можна переглянути історію змін до рядків 100- 110 у myfile.js. Аналіз виводу може допомогти вам зрозуміти, хто зробив зміну, і, можливо, визначити мотиви, які стоять за цією зміною, надаючи вам цінний контекст для обговорення.

Поширені запитання

Про що ця стаття "Codebase Ownership: English for Staff Engineers and Tech Leads (англійською)"?

Learn the English vocabulary staff engineers and tech leads use when owning modules, managing technical debt, and setting standards.

Чи безкоштовна ця стаття?

Так. Усі статті на CoderSlingo, включно з цією, доступні безкоштовно без реєстрації.

Скільки часу займає читання "Codebase Ownership: English for Staff Engineers and Tech Leads (англійською)"?

Приблизно 8 min.