Что, если бы мемы про книжки O'REILLY были бы реальностью?
Глава 1: Отговорка «Это и так понятно»
Есть особый тип программиста, который смотрит в экран, наблюдает, как строки загадочного кода бегут по терминалу, и думает: «Это искусство». Для него каждый цикл `for`, каждое условие `if`, каждая тщательно названная переменная вроде `data2` или `tempFinal_v4` несёт настолько глубокий, настолько интуитивно понятный смысл, что объяснение только разрушило бы всю магию.
«Это и так понятно», — заявляют они, пренебрежительно махнув рукой, когда их спрашивают, почему API возвращает ошибку 418 вместо ожидаемых данных. — «Просто прочитай код».
Ирония, конечно, в том, что «и так понятно» — это технологический эквивалент записки с загадкой в бутылке, которую кто-то должен расшифровать десятилетия спустя. Это короткая форма фразы: «Мне не хотелось ничего записывать». Зачем тратить время на документацию, если можно заставить будущих разработчиков — или самого себя через шесть месяцев — сыграть в увлекательную игру под названием «Угадай, что я имел в виду»?
Но давайте будем справедливы. Отговорка «Это и так понятно» рождается не из лени. Нет, это философия, глубоко укоренившаяся вера в то, что:
Хороший код не нуждается в объяснениях. Чем меньше комментариев, тем умнее он выглядит. Чистый, недокументированный репозиторий — это знак отличия.
Документация — для слабых. Настоящие программисты идут по жизни через отладку. Если тебе нужен проводник, чтобы пробраться через эти джунгли спагетти-логики, возможно, ты просто не создан для этой работы.
Если я могу это понять, значит, и ты сможешь. Потому что, очевидно, у всех остальных такой же опыт, образ мышления и уровень потребления кофеина, как у человека, написавшего этот код.
В духе товарищества давайте рассмотрим несколько реальных сценариев, где эта отговорка сияет во всей красе.
Пример: Гений одной строки
В особенно амбициозный момент Алекс написал одну строку кода на Python, которая делает что-то чудесное. Когда его спрашивают, что именно, он пожимает плечами и говорит: «Это же однострочник. Просто прочитай».
Что она делает? Кто знает. Нет ни комментария, ни README, только это загадочное заклинание. Будущие поколения разработчиков будут изучать эту строку как древние иероглифы, пытаясь разгадать её назначение.
Пример: «Модульная загадка»
Архитектура микросервисов Софии — чудо современной инженерии. Каждый сервис идеально модульный, со своим репозиторием, скриптом развёртывания и, естественно, нулём документации.
«Там всё и так понятно», — уверяет София команду на встрече. — «Сервис A общается с сервисом B, тот вызывает сервис C. Это просто HTTP-запросы».
Чего она не упоминает, так это того, что у сервиса B есть скрытая зависимость от legacy-системы, написанной на COBOL, а сервис C требует конкретную версию Java, которую последний раз видели в 2008 году.
Почему мы любим эту отговорку
В своей основе отговорка «Это и так понятно» — это акт веры. Это вера в силу человеческого разума расшифровать что угодно при достаточном количестве времени, кофе и отчаяния. Это ещё и негласный вызов — перчатка, брошенная к ногам любого, кто достаточно смел, чтобы спросить: «А что это делает?»
Потому что, в самом деле, где веселье в том, чтобы просто знать, что должен делать код?
Совет для начинающих
Если вы новичок в искусстве не документировать свой код, вот совет: чем более запутан ваш код, тем увереннее вы должны звучать, называя его «самоочевидным». Бонусные очки, если при описании вы используете слова вроде «элегантный», «прямолинейный» или «очевидный».
Помните: документация временна. Путаница вечна.
Глава 2: «Код всё ещё меняется, так зачем напрягаться?»
Если есть что-то, что разработчики программного обеспечения любят больше, чем писать код, так это переписывать его. Кодовые базы эволюционируют с головокружительной скоростью, превращаясь из простых скриптов в разрастающихся монстров взаимосвязанной логики. И в хаосе постоянных изменений царит одна отговорка: «Зачем документировать это сейчас? Завтра всё равно всё поменяется».
Эта отговорка — мастерский приём уклонения. Она переносит ответственность за документацию в некую мифическую точку будущего — когда код будет «готов». Но вот в чём подвох: код никогда не бывает готов. Он живёт, дышит и растёт, как комнатное растение, вышедшее из-под контроля. И по мере его роста растёт гора недокументированных функций, хаков и обходных решений.
Жизненный цикл недокументированного кода
Давайте посмотрим, как эта отговорка проявляется в реальной жизни.
День 1: Свежий старт
Команда начинает блестящий новый проект. Настроение отличное. Обсуждают чистую архитектуру, надёжное тестирование и — осмелимся сказать? — документацию. Но кто-то подаёт голос:
«Давайте подождём, пока MVP будет готов. Нет смысла документировать то, что может измениться».
День 30: Фаза MVP
MVP доставлен, но теперь нет времени писать документацию, потому что у клиента срочные запросы на новые функции.
«Давайте подождём до следующего спринта. Тогда всё подчистим и задокументируем».
День 365: Забытые джунгли
Проект прошёл через 47 спринтов, три разворота стратегии и частичную перепись. Никто не помнит, как работал исходный код, а единственный человек, который помнил, ушёл в другую компанию. Документация? Какая документация?
«Теперь уже слишком поздно. Нам пришлось бы переписать всё целиком, чтобы просто понять, как это работает».
Философия, стоящая за отговоркой
Гениальность отговорки «Код всё ещё меняется» заключается в её циклической логике:
- Вы не документируете код, потому что он меняется.
- Код продолжает меняться, потому что его никто не понимает.
- Никто его не понимает, потому что нет документации.
Это самоподдерживающаяся экосистема путаницы, и все участники либо учатся принимать её, либо страдают.
Но давайте не упустим более глубокие истины, которые эта отговорка раскрывает о процессе разработки ПО:
Изменения постоянны. В мире agile-методологий изменения приветствуются. Если кодовая база не находится в постоянном движении, вы вообще инновациями занимаетесь?
Документация — движущаяся цель. Зачем тратить время на документирование чего-то, что через две недели может вообще не существовать? Лучше подождать, пока всё «устаканится» — спойлер: этого никогда не случится.
Будущие разработчики — экстрасенсы. Несомненно, люди, которые унаследуют этот код, интуитивно поймут его назначение. В конце концов, разве не для этого существуют инструменты отладки?
Реальные последствия
Конечно, у этой отговорки есть и минусы — сущие мелочи, правда. Например:
Адаптация новых разработчиков: «Просто погрузись в кодовую базу. Там всё довольно прямолинейно, когда разберёшься с 17 недокументированными соглашениями, которые мы используем».
Отладка в продакшене: «Эта проблема возникает только по четвергам, когда сервер базы данных под нагрузкой. Ах да, логика этой функции размазана по пяти микросервисам. Удачи!»
Поддержка legacy-систем: «Мы написали этот код пять лет назад, когда экспериментировали с функциональным программированием. Нет, мы его не документировали. А почему ты спрашиваешь?»
Практический пример бессмысленности
Познакомьтесь с Кевином. Кевин — младший разработчик, который только что присоединился к команде. Его первая задача — исправить баг в ключевой функции приложения. Вооружившись энтузиазмом и поиском в Google, Кевин погружается в работу.
Код представляет собой лабиринт вложенных функций, магических чисел и загадочных имён переменных вроде `x` и `z1`. Нет комментариев, нет README, нет дизайн-документов. Когда Кевин просит помощи, команда пожимает плечами:
«Эта часть кода всё ещё меняется. Просто разберись».
Три недели спустя Кевин переписал всю функцию с нуля. Она работает идеально, но он её не документирует. Почему?
«Код всё ещё меняется. Зачем напрягаться?»
И так цикл продолжается.
Как разорвать цикл
Отговорка «код всё ещё меняется» процветает там, где нет ответственности. Чтобы выбраться из неё, командам нужно принять радикальную идею: документации не обязательно быть идеальной, чтобы быть полезной.
Вот несколько практических советов по документированию кода, который находится в движении:
Пишите по ходу дела. Документируйте причины решений — «почему», даже если «что» ещё может измениться.
Делайте это легко. Сосредоточьтесь на высокоуровневых обзорах и ключевых концепциях. Мелкие детали оставьте на потом.
Используйте инструменты. Markdown-файлы, вики или даже комментарии в коде могут кардинально изменить ситуацию.
Помните: несовершенная документация лучше, чем её отсутствие. Наполовину готовая карта всё равно полезнее, чем слепое блуждание в темноте.
Совет для мастеров отговорок
Если вы по-настоящему преданы этой отговорке, вот как её продать:
Используйте модные слова вроде «итеративный», «agile» и «динамичный», чтобы объяснить, почему документация не нужна.
Намекайте, что написание документации замедлит прогресс, хотя именно её отсутствие вызывает бесконечные задержки.
Отмечайте, что никто другой тоже не документирует свой код, так почему вы должны?
Если всё сделать правильно, вы купите себе как минимум ещё шесть месяцев блаженного хаоса.


![[Part 1]: what if those oreilly memes books were real](https://cs15.pikabu.ru/post_img/2025/01/11/11/1736624518184923531.jpg)