Недавно Майкл Линч опубликовал подборку эссе, которые повлияли на его карьеру и подход к разработке ПО. В списке — от классики Фреда Брукса и Джоэла Спольски до свежих заметок про безопасность и выбор технологий. Интересно то, что эти тексты охватывают почти 40 лет истории индустрии — от 1986 до 2022 года.
Что объединяет эти эссе?
Каждое из них дало автору «щелчок сознания», изменив подход к какой-то стороне работы:
🧩 Процесс разработки — «The Joel Test» Спольски до сих пор используется как критерий зрелости команд. Вопросы про CI/CD, баг-трекеры и юзабилити на самом деле были о главном: уважают ли в компании время разработчиков?
🔐 Безопасность и типы — эссе «Parse, don’t validate» Алексис Кинг показало, что типизация может быть щитом против уязвимостей. Валидация на входе недостаточна, а правильный парсинг превращает небезопасные строки в безопасные сущности.
⚖️ Сущностная и случайная сложность — Фред Брукс в «No Silver Bullet» объяснил, что никакие инструменты не уберут необходимость решать настоящие задачи предметной области. Но вот «случайную» сложность (например, утечки памяти) — можно минимизировать.
🖥️ Интерфейсы и выбор — Спольски в «Choices» напомнил: каждая новая настройка — это нагрузка на пользователя. Лучше принимать решения за него там, где это возможно.
🧪 Тестирование — эссе Эрика Кюфлера «Don’t Put Logic in Tests» объяснило, что тесты не должны быть «умными», а должны быть очевидными. Я сам ловил себя на том, что писал тесты с переменными и циклами — и они прятали баги.
🌐 Технологии — «Choose Boring Technology» Дэна МакКинли ввело понятие «инновационных токенов»: компания может позволить себе рискнуть с новыми технологиями, но не во всём сразу. Это правило часто спасает стартапы от технических долгов.
🔑 Личная безопасность — эссе Терренса Эдена о том, как он потерял доступ ко всем своим данным, напомнило: даже оффсайт-бэкапы не всегда спасают. Цифровая гигиена — это не про паранойю, а про выживание.
Моё мнение
Что важно в этих эссе? Они показывают, что разработка — это не только код. Это ещё и:
- 🧠 мышление системами (как у Брукса);
- 🛠️ практические привычки (как у Спольски и Кюфлера);
- 📉 сдержанность в выборе технологий (как у МакКинли);
- 🔒 забота о пользователях и себе (как у Эдена и Чена).
Лично мне ближе всего идея «parse, don’t validate». Когда-то я тоже считал статическую типизацию «занудством». Но опыт показывает: если в коде появляется тип Username, то вероятность пропустить уязвимость падает в разы.
Ещё одна мысль — эссе становятся «вечными», если они поднимают не технический, а философский вопрос. Фреймворки приходят и уходят, а идеи про сложность, интерфейсы и безопасность остаются актуальными десятилетиями.
Заключение
Язык программирования, стек и инструменты — это всего лишь слой. Настоящая сила разработчика — в мышлении, а оно формируется текстами. Хорошие эссе — это как менторы, которые не устаревают.
И, возможно, самое важное — перечитывать классику раз в несколько лет. Часто ответы на «новые» вопросы уже даны — просто в другой эпохе и другими словами.
Источники: