惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
CERT Recently Published Vulnerability Notes
K
Kaspersky official blog
S
Schneier on Security
Latest news
Latest news
Cisco Talos Blog
Cisco Talos Blog
T
Threatpost
T
Tor Project blog
T
Tenable Blog
The Register - Security
The Register - Security
T
Threat Research - Cisco Blogs
阮一峰的网络日志
阮一峰的网络日志
F
Fortinet All Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
Visual Studio Blog
Google DeepMind News
Google DeepMind News
H
Help Net Security
博客园_首页
I
Intezer
aimingoo的专栏
aimingoo的专栏
Last Week in AI
Last Week in AI
Project Zero
Project Zero
Recorded Future
Recorded Future
C
Cybersecurity and Infrastructure Security Agency CISA
Vercel News
Vercel News
A
Arctic Wolf
P
Palo Alto Networks Blog
The Hacker News
The Hacker News
博客园 - 三生石上(FineUI控件)
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
P
Proofpoint News Feed
S
SegmentFault 最新的问题
Know Your Adversary
Know Your Adversary
P
Privacy & Cybersecurity Law Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
P
Proofpoint News Feed
P
Privacy International News Feed
G
GRAHAM CLULEY
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
Simon Willison's Weblog
Simon Willison's Weblog
C
CXSECURITY Database RSS Feed - CXSecurity.com
Scott Helme
Scott Helme
T
The Exploit Database - CXSecurity.com
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Security Latest
Security Latest
Cyberwarzone
Cyberwarzone
L
Lohrmann on Cybersecurity
C
Cisco Blogs
C
Cyber Attacks, Cyber Crime and Cyber Security
AWS News Blog
AWS News Blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
«Боргворглер: боргает ворглер», или как сделать действительно полезную документацию к проекту
beeline_clou · 2026-05-17 · via Все публикации подряд на Хабре

«Боргворглер: боргает ворглер», или как сделать действительно полезную документацию к проекту

Уровень сложностиПростой

Время на прочтение8 мин

Охват и читатели8

Аналитика

Обсуждения неудачных примеров README-файлов и документации — одна из популярных тем на профильных площадках и форумах [вкупе с другими «вечнозелеными» спорами в ИТ]. Сегодня мы в Beeline Cloud решили посмотреть, что думают о проблеме плохой документации разработчики и ученые, может ли ИИ улучшить ситуацию, что такое «нейросетевой ридмитит» — и как можно «доработать напильником» сгенерированные спеки и инструкции.

Изображение: David Kristianto (Unsplash License)

Изображение: David Kristianto (Unsplash License)

(Не)понятные спеки

Метаанализ 60 научных работ, проведенный специалистами из Турции и Канады и посвященный качеству ПО показал, что наличие хорошей документации положительно влияет сразу на несколько аспектов разработки: сокращает время выполнения задач, повышает качество кода, увеличивает продуктивность в команде — во многом потому, что на работу с документацией у программистов уходит порядка 11% времени. Авторы уже другого исследования, опубликованного в журнале PLOS One в 2023 году, попытались определить, какие практики оказывают положительное или отрицательное влияние на процесс рефакторинга. Они отмечают, что документация играет ключевую роль: она упрощает онбординг новых участников команды и помогает сохранять единый подход к рефакторингу.

Как говорил — хотя и немного высокопарно — соучредитель Stack Overflow Джоэл Спольски:

«Документация содержит мудрость поколений, которая простирается за пределы обычной спецификации разработанного продукта»

И действительно, документация для библиотек или фреймворков нередко становится источником лучших практик для начинающих, помогает быстрее освоить новые инструменты. По данным опроса Stack Overflow за прошлый год, охватившего около 50 тыс. разработчиков, 68% из них обращались к документации при изучении новых языков или технологий.

В условиях быстрого цикла разработки поддерживать документацию в актуальном состоянии бывает непросто — и команды нередко отодвигают эту задачу на второй план. Со временем она имеет тенденцию становиться фрагментарной и сложной для восприятия, а по мере развития продукта еще и быстро устаревает. Очевидно, что неполная документация создает проблемы для потенциальных пользователей программного обеспечения. Например, если она содержит устаревшие функции, пользователь оказывается в ситуации, когда ему приходится методом тыка разбираться, как все работает на самом деле, и гадать, не наткнулся ли он на недокументированную возможность, которую уже нельзя (или еще нельзя) использовать. Как пишет разработчик DHIS2, опенсорсной платформы для сбора и визуализации данных: «Встретив недокументированную функцию, разработчик вынужден взвешивать все риски, ведь в следующей версии ПО она может просто-напросто сломаться».

Без подробной документации страдают не только пользователи — разработчики тоже теряют контроль над собственным продуктом, ведь неполнота спецификации усугубляет ситуацию с техническим долгом. Ведущий QA-инженер Кристин Джеквони в своем блоге описала показательный случай, когда ей пришлось тестировать новую реализацию системы с десятками тест-кейсов практически вслепую — ни одна из функций не была задокументирована: «Мне приходилось строить догадки, заваливать вопросами продакт-менеджера. Более того, вскоре после релиза выяснилось, что мы не реализовали один важный параметр конфигурации — не реализовали, потому что не знали о его существовании».

Что интересно, существуют исследования, которые показывают, что профессионалы и не профессионалы испытывают схожие сложности при чтении разного рода спецификаций (иными словами: дело не в том, что новички «непонятливые»). Еще в 2015 году исследователи из Макгиллского университета в Канаде изучали часто встречающиеся проблемы в API-документации и то, какой эффект они оказывают на разработку и использование программных продуктов. В рамках исследования они опросили порядка трехсот сотрудников компании IBM со стажем от 1 до 40 лет (в выборку попали как разработчики, архитекторы и тестировщики, так и нетехнические специалисты вроде консультантов и менеджеров) и попросили их предоставить примеры плохой и хорошей технической документации — и рассказать, чем обосновано их мнение о ее качестве. Участники были вольны выбирать материалы из разных источников — публичных и внутренних корпоративных, а также open source-проектов.

Результат показал, что независимо от уровня технической подготовки респонденты выделили похожие проблемы: расплывчатые формулировки, поверхностные либо вовсе отсутствующие примеры. Также были претензии к структуре и читаемости: опрошенные жаловались на громоздкие описания и разбитые на несколько страниц объяснения одного термина.

Документация, которая умеет делать больно

В обсуждениях на форумах и в персональных блогах разработчиков можно найти большое количество примеров того, как не нужно составлять документацию — и что получается, если не уделять ей должного внимания. В качестве антипримера в одном из обсуждений на Reddit отметили XML-стандарт DITA, что иронично, предназначенный для создания и публикации технической документации: «Похоже, что его писал человек, который живет DITA и настолько увлечен проектом, что больше не способен нормально контактировать с другими людьми». Действительно, фрагменты документации страдают от избыточных повторов и витиеватых формулировок — язык настолько усложнен, что чтение текста вызывает физическую боль:

«Если использовать механизм conref — при условии, что адресуемый элемент имеет тот же тип, что и элемент, содержащий ссылку, а список доменов атрибута domains исходной темы совпадает со списком доменов в документе со ссылкой либо является его подмножеством, набор допустимых элементов в исходном элементе гарантированно будет таким же или более ограниченным, чем в элементе, который на него ссылается»

Частая история, когда разработчики, глубоко погруженные в техническую область, стараются максимально точно передать информацию и теряют из виду важный нюанс: точность сама по себе еще не делает документацию полезной для читателя. Так, в качестве контрпримера для DITA часто приводят AsciiDoc: материал технический, однако написан значительно более доступным языком — с понятными инструкциями, примерами и предупреждениями, которые доступны даже специалистам, только начинающим знакомство со стандартом.

В качестве еще одного примера не самой удачной документации часто приводят Android SDK, где наблюдается немного другая проблема. Там используются слишком абстрактные формулировки, а еще бывают опущены единицы измерения в описаниях функций, задающих размеры шрифтов — setFontSize(float): sets the font size. Один из участников профильного треда заметил, что здесь пришлась бы к месту недооцененная венгерская нотация: «Конечно, с ней можно и переборщить, но duration_ms, response.size_bytes, max_memory_mb или overhead_ns было бы гораздо проще использовать». Подобные вещи заставляют проделывать дополнительную работу; многие разработчики отмечают, что им приходится «выпадать» из состояния потока в попытке разобраться, что вообще происходит и какой корректный параметр ожидает функция.

Помогут нейросети — но есть нюансы

С одной стороны, значительная часть документации сегодня уже генерируется с помощью систем ИИ. Это — одна из задач, с которой нейросети справляются довольно сносно, даже хорошо. В 2024 году индийские исследователи, среди которых был разработчик из Amazon, дообучили GPT-2 и RoBERTa на Python-датасете из CodeSearchNet Challenge с GitHub — это примерно 2 млн строк кода и комментариев к нему — а затем сравнили, насколько точно описания в сгенерированных ими документациях соответствуют действительности. Результат менялся от модели к модели, но лучшие представители генерировали достойно оформленную документацию в 99,94% случаев — ее оставалось лишь точечно «отшлифовать».

Большое количество подобных профильных инструментов можно найти на GitHub. Например, DocAgent и RepoAgent способны обновлять и актуализировать документацию на лету. Отдельное направление — генерация документации для легаси, где ручное описание часто занимает много времени в условиях, когда авторы оригинального кода давно покинули компанию, а сам код усложнен многочисленными изменениями и доработками.

Однако системы ИИ сложно назвать «серебряной пулей». Документация, написанная нейросетью без должного контроля, бывает, получается слишком общей и «водянистой». Некоторые участники исследования, которое проводили специалисты из Макгиллского университета, отмечали эту проблему, когда подбирали примеры неудачной документации: «Мне часто приходится иметь дело со сгенерированной документацией, в которой не описаны многие классы и методы». Веб-дизайнер и автор профильных книг и учебных курсов Скотт Райли считает, что качество автоматически сформированных материалов почти всегда уступает текстам, написанным человеком: «Отличная документация появляется тогда, когда человек активно анализирует правила и ограничения, тщательно обдумывает формулировки».

Даже если интеллектуальной системе удается сгенерировать достойную по содержанию документацию, нет гарантии, что она будет понятна и удобна для восприятия. И поскольку генерируемый системой ИИ результат часто непредсказуемый, необходим технический писатель или редактор для проверки содержания и стиля текста.

Так, сгенерированную документацию ругают за ридмитит — избыток клише и ошибок, которые часто проявляются в README-файлах. Латинизмы, обилие аббревиатур, чрезмерно неформальный стиль — где-то под всем этим оказывается погребены полезные инструкции. Системные промпты могут частично исправить ситуацию, однако, как говорят специалисты, навязать нейросети строгий стиль сложнее, чем кажется [почти так же сложно, как убедить ее перестать говорить о гоблинах и гремлинах].

К сожалению, и документация, написанная «вручную», необязательно будет лишена этих минусов: в ИТ-сообществе в качестве неудачного примера приводят документацию MSDN — она перегружена гиперссылками, а разбор одной команды может быть разбросан по разным страницам. Другим антипримером называют документацию .NET, которая имеет те же самые недостатки. В одном из тредов на Reddit пользователь пишет: «Практически все, что касается документации в C#, за исключением тривиальных вещей, кажется абстрактным и неудобным в работе. И в половине случаев ответом может оказаться пост на Stack Overflow, содержащий неработающие ссылки на заброшенный блог».

Изображение: Ali Barzgar (Unsplash License)

Изображение: Ali Barzgar (Unsplash License)

Вероятно, наиболее эффективным способом к составлению документации окажется гибридный подход, когда системы ИИ используются для того, чтобы структурировать мысли разработчика и сделать их легко усваиваемыми для читателя, а затем документ аккуратно доводится до приемлемого вида специалистом — уточняются формулировки, добавляется контекст. Иными словами, ИИ может заметно ускорить подготовку базы, но финальное качество по-прежнему во многом зависит от человека. Посмотрим на несколько рекомендаций по «ручному» улучшению документации, которые дают участники ИТ-сообщества.

Пара рецептов

Среди не самых очевидных рекомендаций встречаются советы о том, каких формулировок в документации лучше избегать. Так, в британской компании Consonance, разрабатывающей софт для издательской индустрии, считают, что авторам стоит осторожнее использовать снисходительные обороты и слова вроде «легко» (easy), «безболезненно» (painless), «тривиально» (trivial), «просто» (simple), «всего лишь» (just). Проблема в том, что разработчики, подготавливая документацию и опираясь на собственный опыт, нередко воспринимают отдельные шаги как очевидные и потому могут недостаточно подробно их объяснять. Подобные формулировки становятся своеобразным оправданием, позволяющим не углубляться в детали там, где читателю как раз нужны пояснения. По мнению специалистов Consonance, отказ от таких конструкций может, с одной стороны, сделать документацию более комфортной для чтения. А с другой — поможет авторам избежать предвзятых оценок и, как следствие, слишком туманных описаний и «перепрыгивания» через важные разделы документа. 

Чтобы отследить недостаток деталей, также имеет смысл проводить юзабилити-тестирование готовой документации: по возможности привлечь коллег из смежных отделов и попросить их выполнить описанные инструкции на «чистой» машине, где рабочая среда не была настроена заранее. Этот шаг нужен, чтобы выявить скрытые допущения: например, инструкция может неявно предполагать, что определенная библиотека уже установлена по умолчанию, хотя ее может не быть у пользователя, который впервые решил настроить условный фреймворк. Подобная проверка может быть довольно хлопотной, но позволит понять, какие шаги описаны недостаточно прозрачно, где не хватает уточнений и какие места стоит доработать.

Beeline Cloud — безопасный облачный провайдер. Разрабатываем облачные решения, чтобы вы предоставляли клиентам лучшие сервисы.

Дополнительное чтение на Хабре и нашей DIY-площадке «вАЙТИ»: