RSS Мартин Фаулер Заметка

RSS Мартин Фаулер

Сайт martin fowler com - это персональный сайт Мартина Фаулера, известного британского инженера-программиста, автора и оратора. Сайт в первую очередь служит хранилищем его трудов, выступлений и других профессиональных начинаний. На сайте представлен широкий спектр статей, эссе и постов в блогах на различные темы, связанные с разработкой программного обеспечения, включая паттерны проектирования, рефакторинг, agile-методологии и доменно-ориентированное проектирование. Многие из этих статей считаются основополагающими работами в области программной инженерии и широко читаются и цитируются. Помимо его письменных работ, на сайте также размещены видеозаписи и стенограммы выступлений Мартина Фаулера на конференциях и презентациях, посвященных таким темам, как архитектура программного обеспечения, тестирование и будущее разработки программного обеспечения. В целом, martin fowler com - это ценный ресурс для разработчиков программного обеспечения, архитекторов и инженеров, желающих повысить свою квалификацию и быть в курсе последних тенденций и лучших практик в этой области.

Трэд заметок

Фрагменты: 2 июня

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

Фрагменты: 27 мая

Автор обсудил свой опыт на конференции GOTO, поделившись наблюдениями о программировании, дополненном LLM, и о необходимости нового поколения для руководства движениями. Подчеркивается работа Яна Джонсона по реструктуризации кодовой базы с использованием ИИ, раскрывающая переход от писателя к куратору, облегченный тестами и архитектурными шаблонами. Закрытие репозиториев открытого исходного кода правительства Великобритании, якобы по соображениям безопасности, подвергается критике как ошибочный подход. Идеи Адама Торнхилла о когнитивной выносливости в агентном кодировании подчеркивают умственные затраты, связанные с увеличением плотности решений. Автор делится юмористическими цитатами и обращается к недовольству молодежи по поводу технологической олигархии и ИИ. Упоминаются две статьи из The Economist, одна из которых обсуждает историческое влияние технологий на занятость, а другая посвящена влиянию ИИ на найм выпускников. Усилия правительства США по регулированию ИИ подвергаются критике как незначительные и не обладающие опытом. Отсутствие регулирования рассматривается как потенциально вредное из-за быстрого развития ИИ. Наконец, автор поддерживает кандидата Бет Андерс-Бек на выборах в Конгресс из-за ее опыта разработки программного обеспечения.

Набор тестов как датчик регрессии

Биргитта Бёкелер завершает свой пост о сенсорах для кодирующих агентов, рассматривая роль набора тестов как сенсора регрессии, уделяя особое внимание роли мутационного тестирования.

Расплата VibeSec

Кодирование с использованием ИИ значительно ускорило прототипирование программного обеспечения, но агенты ИИ часто рекомендуют небезопасные конфигурации, создавая проблемы с безопасностью. Гаутам Коул, Люсиан Мосс, Нил Дрю-Лопес и Даберечи Рут Эдеокох делятся своим опытом при создании приложений для глобального маркетинга Thoughtworks. Они узнали, что для борьбы с этим нам необходимо написать файл контекста безопасности для руководства ИИ, быть осторожными с запросами разрешений ИИ, создать ежедневную ленту данных о безопасности и предоставить разработчикам безопасную по умолчанию основу и шаблоны.

Bliki: Vibe Coding

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

Ещё три датчика статического анализа кода

Биргитта Бёкелер добавляет обсуждение еще трех датчиков для статического анализа кода, уделяя особое внимание проверке и обеспечению лучшей модульности. Вычислительные датчики для проверки зависимостей хорошо справлялись с обеспечением соблюдения правил, но правила были ограничены. Создание вычислительного датчика для данных о связях оказалось неудовлетворительным. Инициирование работы выводного датчика для проверки модульности оказалось более эффективным.

Датчики ремонтопригодности для агентов кодирования

В своей недавней статье о разработке оснастки для пользователей кодирующих агентов, Биргитта Бёкелер изложила ментальную модель расширения оснастки кодирующего агента: систему направляющих и датчиков, которые увеличивают вероятность хороших результатов работы агента и позволяют осуществлять самокоррекцию до того, как проблемы попадут на глаза человеку. Сейчас Биргитта начала публиковать статью, в которой рассказывает о своем опыте использования датчиков для поддержания работоспособности кодовой базы. Эта часть рассматривает статический анализ с базовым линтингом кода.

Фрагменты: 14 мая

"Недавний ретрит исследовал будущее разработки программного обеспечения с помощью агентного программирования. Одним из успешных применений стало клонирование устаревшего компилятора на Rust с использованием БВМ. Участники обсуждали использование БВМ для проверки сложных спецификаций путем интервью с человеческими экспертами. Одним из ключевых выводов было понимание руководящих принципов контроля изменений организации как окна в ее историю. Конференция рассматривала последствия миграций "lift and shift" в свете БВМ, предполагая, что теперь это должно быть первым шагом. Профессионалы финансовой отрасли обсуждали проблемы управления программным обеспечением в различных юрисдикциях, исследуя, как БВМ могут помочь. Была подчеркнута ценность парного программирования для обучения суждению в контексте агентной разработки программного обеспечения. Автор отметил, что БВМ отлично подходят для скучного кодирования преобразования данных. Была поднята необходимость тестирования "Chaos Monkey" для систем ИИ. Статья подчеркивает потенциал программистов, которые могут учиться на выборах и закономерностях ИИ как преимуществе. Травма локтя автора вызывает размышления о том, как технологии влияют на работу и может ли голосовой ввод быть использован в будущем."

Блики: Вопросительный LLM

Текст обсуждает использование языковых моделей (LLM) для создания и оценки контекста для сложных задач, а не полагаться исключительно на документы, написанные людьми. Это включает в себя побуждение LLM провести интервью с человеком, задавая вопросы для сбора необходимой информации и создания отчетов о контексте. Автор черпает вдохновение из блога Харпера Рида, подчеркивая важность того, чтобы LLM задавала только один вопрос за раз. Другое применение включает использование допрашивающей LLM для опроса экспертов о точности документа, предлагая альтернативу ручному обзору. Этот подход может использоваться последовательно, сначала для создания документа, затем для экспертной оценки. Техника ценна за пределами использования LLM, облегчая извлечение знаний от людей, которым трудно писать. Это помогает преодолеть трудности получения информации от людей, которым трудно писать, обеспечивая форму письма, управляемого ИИ, даже если стиль имеет определенные характеристики. В конечном итоге методология отдает приоритет сбору и обмену информацией, даже если она отклоняется от традиционных предпочтений в письме. Этот подход использует способность LLM облегчать общение и передачу знаний в различных контекстах. Сгенерированный ИИ вывод считается предпочтительным по сравнению с отсутствием информации или плохо написанными документами, особенно при работе с людьми, которым трудно дается процесс письма. Этот метод подчеркивает потенциал LLM для преодоления коммуникационных разрывов и улучшения совместных рабочих процессов.

Что такое код

Всё чаще люди делегируют написание кода агентам. Будет ли вообще исходный код в будущем? Чтобы разобраться с этим вопросом, мы должны понять, что такое код. Унмеш Джоши видит в коде две отдельные, но взаимосвязанные цели: инструкции для машины и концептуальную модель предметной области. Он исследует, почему жизненно важно создать словарь для общения с машиной, как языки программирования являются инструментами мышления и как это влияет на наше будущее по мере работы с LLM.

Фрагменты: 5 мая

Рахул Гарг создал фреймворк с открытым исходным кодом, Lattice, для улучшения программирования с помощью ИИ, путем внедрения лучших инженерных практик и создания контекстного слоя. Вэй Чжан и Джесси Цзе Ся обновили свою статью о разработке, управляемой структурированными подсказками (SPDD), добавив раздел вопросов и ответов из-за высокого интереса. Джессика Керр обсуждает двойные петли обратной связи, связанные с разработкой с помощью ИИ, подчеркивая возможности для разработчиков формировать свои среды разработки. Эшли МакИсаак подает в суд на Google за клевету после того, как его ИИ некорректно идентифицировал его как преступника. Стивен О'Грэди рассматривает значительные инвестиции в ИИ со стороны таких технологических компаний, как Amazon и Microsoft. Виллем ван ден Энде предполагает, что локальные модели ИИ с открытым исходным кодом могут быть "достаточно хорошими" для задач кодирования, потенциально предлагая больший контроль и безопасность данных. Эта стратегия может отражать стратегию Apple, которая не тратит много средств на облачный ИИ, возможно, делая ставку на локальный ИИ. Затем в тексте упоминается "Мифический человеко-месяц" Фреда Брукса и программная "смоляная яма". Пост Кента Бека обсуждает проблемы использования ИИ для кодирования и потенциальные ловушки для внутреннего качества. Главный вопрос заключается в том, сможет ли ИИ преодолеть проблемы сложности или окажется в ловушке у нее.

Блики: Мифический человеко-месяц

Фред Брукс руководил разработкой IBM System/360 в 1960-х годах, проектом, который сформировал его дальнейшие взгляды. Его книга "Мифический человеко-месяц", опубликованная в 1975 году, остается классикой в области разработки программного обеспечения. Хотя некоторые аспекты устарели, она предлагает вневременные уроки, применимые даже сегодня. Ключевая концепция - закон Брукса: добавление большего количества людей к запаздывающему проекту задерживает его еще больше. Увеличение размера команды экспоненциально увеличивает накладные расходы на коммуникацию, препятствуя прогрессу. Концептуальная целостность, взаимосвязанность дизайна системы, является важным выводом из книги. Брукс отдает предпочтение единому дизайну, а не включению разрозненных функций, подчеркивая простоту и прямолинейность. Он считает, что целостный дизайн отражает единый набор идей. Эта концепция оказала значительное влияние на его карьеру и подход к работе. Книга также подчеркивает важность юбилейного издания. Это связано с тем, что оно включает влиятельное эссе Брукса "Нет серебряной пули".

Фрагменты: 29 апреля

Обновленное руководство Криса Парсонса делает акцент на использовании ИИ для кодирования, уделяя особое внимание верификации и переходу от ручной проверки к автоматизированным проверкам. Он выступает за "агентное проектирование" и подчеркивает важность таких инструментов, как Claude Code и Codex CLI. Верификация ставится в приоритет над скоростью генерации кода, с акцентом на создание надежных процессов проверки. Основная роль программиста смещается в сторону обучения ИИ и формирования "оснастки" разработки. В статье упоминается работа Биргитты Бёкелер по "инженерии оснастки", подчеркивающая преимущества вычислительных датчиков. Точка зрения Адама Торнхилла подчеркивает, как длина функции связана со структурированием кода и намерением. Точки зрения Нилая Пателя о взгляде на мир как на "программный мозг" обеспечивают перспективу. В статье подчеркивается необходимость последовательных определений данных, что необходимо для эффективного взаимодействия с ИИ. Автор делится наблюдением о том, что специалисты по ИИ стремятся сделать себя "читаемыми" для инструментов ИИ. Автор исследует свой личный опыт использования ИИ и свой взгляд на влияние ИИ на работу.

Разработка, управляемая структурированными запросами (SPDD)

Программные ассистенты на базе больших языковых моделей (LLM) продемонстрировали значительную ценность, но в основном для индивидуальных разработчиков. Внутренняя IT-организация Thoughtworks использует их для своих команд и разработала метод и рабочий процесс под названием "Структурированное разработка на основе подсказок" (Structured Prompt-Driven Development, SPDD). Вей Чжан и Джесси Цзе Ся описывают простой пример этого рабочего процесса с подробностями на GitHub. Этот рабочий процесс рассматривает подсказки как первоклассный артефакт, хранящийся вместе с кодом в системе контроля версий и используемый для согласования разработки с потребностями бизнеса. Они обнаружили, что для эффективной работы разработчикам необходимы три ключевых навыка: согласование, приоритет абстракции и итеративный обзор.

Фрагменты: 21 апреля

Thoughtworks выпустила свой 34-й Технологический радар, обзор инструментов, методов, платформ и языков. Радар делает акцент на ИИ, побуждая пересмотреть основополагающие практики разработки программного обеспечения, такие как парное программирование и чистый код. Он также отмечает возрождение интерфейса командной строки из-за агентных инструментов. Рассматриваются проблемы безопасности, связанные с LLM, в частности, "жадные до разрешений" агенты, нуждающиеся в широком доступе, что создает риски, такие как внедрение подсказок. Радар обсуждает "инженерию укрощения" для безопасного управления этими амбициозными агентами. Он ставит под сомнение качество кода, сгенерированного ИИ, подчеркивая случай, когда код, созданный с помощью ИИ, стал неуправляемым без человеческой проверки. Автор подчеркивает необходимость человеческого надзора при поддержании надежного кода, даже при использовании ИИ. Ставится философский эксперимент относительно написания текстов LLM. Текст критикует демонтаж программы прямого налогообложения Direct File, подчеркивая часто обманчивую сложность правительственных реформ. Он противопоставляет этику государственной службы Direct File предполагаемой незаинтересованности DOGE. Подчеркивается важность эффективной налоговой системы для национальной безопасности.

Фрагменты: 14 апреля

Автор посетил Pragmatic Summit и обсудил ИИ с Кентом Беком и Гергелием Орошем. Разговор коснулся сравнения ИИ с прошлыми технологическими сдвигами, гибкими методами, TDD и необходимости процветать в индустрии, ориентированной на ИИ. Автор размышляет о программистской добродетели лени, подчеркивая ее важность при создании эффективных абстракций. Также упоминаются взгляды Брайана Кантрилла на лень и ее отношение к кодированию. Автор опасается, что ИИ, лишенный этой добродетели, может привести к чрезмерно сложным системам из-за легкости, с которой можно генерировать код. Автор делится личным опытом рефакторинга кода для его упрощения, противопоставляя его потенциальным результатам с использованием LLM. Приводится пример Джессики Керр о применении разработки через тестирование к агентам подсказок. Автор обсуждает проблему самоуверенного ИИ и его склонность к выдумыванию информации, ссылаясь на фильм *Dark Star*. Автор подчеркивает важность обучения систем ИИ сомневаться в своих выводах, особенно в ситуациях с высокими ставками или необратимыми последствиями. Автор утверждает, что сдержанность, способность воздерживаться от действий, является решающей способностью для безопасности ИИ и ответственной автономии.

Спектакль Алана Тьюринга в Кембридже, штат Массачусетс

Вчера вечером я увидел отличную постановку Central Square Theater «Разрушая код». Это о Алане Тьюринге, который внес монументальный вклад как в мою профессию, так и в судьбу свободных демократий. Стоит посмотреть, если вы находитесь в районе Бостона в этом месяце.

Фрагменты: 9 апреля

Автор слушал два отличных подкаста: один с участием Саймона Уиллисона и Ленни Рачитски, а другой, где Гергели Орос интервьюировал Туана Фам, бывшего технического директора Uber. Подкаст с Саймоном Уиллисоном дает целостный обзор текущего состояния мира, обсуждая, как изменилось программирование и важные шаблоны для этой работы. Подкаст с Гергели Оросом предлагает информацию об использовании микросервисов в Uber и концепции жертвенной архитектуры, когда быстрорастущее программное обеспечение неизбежно переписывается много раз. Автор также упоминает недавний компромисс цепочки поставок в Axios, где злоумышленники потратили недели на установление контакта с главным разработчиком, прежде чем установить троян удаленного доступа. Автор отмечает, что на него также была нацелена аналогичная атака, которая была чрезвычайно хорошо скоординирована и выглядела легитимной. Автор также обнаружил Diátaxis, фреймворк для организации технической документации, который классифицирует четыре формы документации: руководства, инструкции, справочники и объяснения. Автор ценит различие между руководствами и инструкциями, а также идею вынесения объяснений в отдельные области. Кроме того, автор упоминает опыт Лалита Маганти в разработке инструментов для работы с SQLite с использованием агентов ИИ, что подчеркивает преимущества и опасности разработки с использованием ИИ. В заключение автор упоминает пост Райана Авента о том, как акцент на заботе приводит к важному взгляду на экономический рост, подчеркивая, что рост не следует желать ради него самого, а скорее ради его способности расширять наши коллективные возможности и облегчать страдания. В целом, пост автора охватывает широкий спектр тем, от подкастов и компромиссов цепочки поставок до технической документации и разработки ИИ, подчеркивая важность тщательного рассмотрения и нюансов в каждой области.

Маховик с обратной связью

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

Принципы механической симпатии

Современное оборудование поразительно быстрое, но программное обеспечение часто не использует его преимущества. Кейр Сандерс считает полезным направлять свою работу с помощью механической симпатии - практики создания программного обеспечения, которое сочувствует лежащему в его основе оборудованию. Они сводят эту практику к повседневным принципам: предсказуемый доступ к памяти, осведомленность о строках кэша, один писатель и естественная пакетная обработка.

Фрагменты: 2 апреля

Этот текст исследует концепцию "когнитивного долга" в разработке программного обеспечения, проводя параллель с техническим долгом и долгом по намерениям. Когнитивный долг возникает из-за ослабления общего понимания внутри команды, что мешает им рассуждать об изменениях. В статье упоминается работа, предлагающая "теорию трех систем познания", добавляя ИИ (Система 3) к модели двух систем Канемана. Это вводит "когнитивную капитуляцию", когда опора на рассуждения ИИ обходит критическое мышление. Затем автор критикует использование HTML-тегов в качестве значков кода, подчеркивая заблуждения о языках программирования. Далее в тексте обсуждается переход к верификации как к важнейшему навыку, поскольку агенты кодирования становятся все более распространенными. Автор согласен с акцентом на верификацию, но видит, что LLM помогают в понимании устаревшего кода. Этот сдвиг требует реорганизации команд вокруг валидации, а не только создания кода, способствуя акценту на определении качества и мониторинге результатов. Наконец, текст затрагивает будущее исходного кода в контексте LLM, обобщая различные точки зрения и подчеркивая важность абстракции под руководством человека и проектирования, управляемого предметной областью. Автор подчеркивает ценность соглашений об именовании в коде, подчеркивая, как хорошие имена раскрывают намерение решать проблемы.

Использование инженерных решений для пользователей кодирующих агентов

В прошлом месяце Биргитта Бёкелер написала несколько первоначальных мыслей о недавно разработанном понятии "Harness Engineering". С тех пор она провела больше исследований и размышлений об этом, и теперь написала продуманную ментальную модель для понимания "Harness Engineering", которая, как мы думаем, поможет людям более эффективно управлять кодирующими агентами.

Стандарты группы кодирования

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

Фрагменты: 26 марта

Исследование Anthropic, основанное на интервью с 80 000 пользователей, выявило неоднозначные взгляды на ИИ. Люди в целом проявляли как надежду, так и страх, связанные с их основными ценностями, такими как финансовая безопасность и человеческие связи. Исследование не выявило простого разделения между оптимистами и пессимистами в отношении ИИ, а скорее спектр смешанных чувств. Географическое положение также влияло на взгляды, с большим оптимизмом в менее развитых странах. Джулиус Шоу подчеркивает необходимость исполнимых тестов для обеспечения соответствия спецификациям при использовании больших языковых моделей. Он критикует сосредоточенность на документах со спецификациями как на чертежах без тщательного тестирования. Шоу выступает за пятиступенчатый контрольный список для преобразования спецификаций в эффективные наборы тестов. Статья в Lawfare обсуждает потенциальные проблемы в противодействии тайным действиям Ирана. В ней подчеркиваются настойчивые попытки Ирана совершать нападения и ответные меры США. В статье отмечается, что недавние сокращения персонала в сфере национальной безопасности потенциально ослабляют реакцию США. Автор ставит под сомнение будущее влияние этих изменений.

Bliki: Архивная запись решений

Запись архитектурного решения (ADR) — это краткий документ, обычно объемом в пару страниц, который фиксирует и объясняет одно архитектурное решение. Основная цель ADR — служить исторической записью решений, обеспечивая понимание дизайна системы в будущем. Написание ADR также проясняет мышление и способствует обсуждению, особенно в группе людей. ADR должны следовать стилю «перевернутой пирамиды», располагая наиболее важную информацию в начале. Обычно они хранятся в репозитории исходного кода проекта, часто в специальном каталоге 'doc/adr', с использованием языка разметки с низким уровнем сложности, такого как Markdown. Каждая ADR представляет собой отдельный файл с пронумерованным именем, отражающим принятое решение и его статус, который может быть «предложено», «принято» или «заменено». ADR содержит решение, обоснование, оправдывающее его, любые рассмотренные альтернативы с их плюсами и минусами, а также последствия решения. ADR также должны учитывать неопределенность и потенциально включать информацию о том, когда следует пересмотреть решение. Они ценны в процессе консультирования, документируя решения и облегчая сотрудничество, часто суммируя полученные рекомендации. Краткость имеет первостепенное значение; ADR должны быть короткими и сфокусированными, ссылаясь на вспомогательные материалы при необходимости. Концепция коротких записей решений имеет ценность в контекстах, помимо архитектуры программного обеспечения, создавая историческую запись. Майкл Найгард популяризировал этот термин и стандартизировал форму документа ADR.

Фрагменты: 19 марта

Рецензирование кода следует рассматривать как нечто большее, чем просто механизм поиска ошибок, сосредоточившись вместо этого на формировании направления и работоспособности кода. Основная ценность заключается в ответе на вопрос, должен ли код быть частью продукта, руководствуясь суждением. Рецензирование кода охватывает различные практики, от парного программирования до последующих рецензий по доработке. Наблюдаемость показывает, как система работает для пользователей, выявляя неудовлетворенные потребности, выходящие за рамки первоначальных требований. Автор выступает за роль ИИ в повышении качества суждений в процессе рецензирования кода. Этот автор согласен с тем, что общение и разнообразие точек зрения являются важными элементами рецензирования кода. Затем текст переходит к критике игнорирования важности производства, сосредотачиваясь на будущем разработки кода. Автор размышляет о способности ИИ стимулировать изменения в том, как люди учатся и улучшают вещи. Затем текст переходит к обсуждению инструментов, которые расширяют возможности, в отличие от тех, которые их заменяют, используя GPS в сравнении с бумажными картами. Этот автор исследует когнитивные последствия пассивного использования вспомогательных технологий, таких как GPS или калькуляторы в сравнении с калькуляторами. Автор ценит калькуляторы для сложных задач, но видит ценность в том, чтобы не заблудиться с помощью GPS, признавая компромиссы. Автор подчеркивает, что не желает, чтобы LLM писала за него.

Якорное контекстирование

Разговоры с ИИ мимолетны, решения, принятые в начале, теряют внимание по мере продолжения разговора и исчезают полностью с новой сессией. Рахул Гарг объясняет, как Context Anchoring выносит контекст решения во внешний мир в виде живого документа.

Фрагменты: 16 марта

Исследования Энни Веллы изучают, как ИИ меняет работу инженеров, в основном смещая фокус от создания кода к его верификации. Она вводит понятие "надзорной инженерной работы", новый слой, включающий направление, оценку и исправление вывода ИИ. Этот сдвиг требует новых навыков, что потенциально может вызвать неопределенность среди инженеров относительно их карьеры. Бассим Эледат предлагает агентную модель инженерии с восемью уровнями, подчеркивая разрыв между потенциалом ИИ и его практическим применением. Чад Фаулер подчеркивает безопасную замену кода, выступая за регенеративное программное обеспечение, построенное на основе заменяемых, компонентных архитектур. Майк Масник обсуждает инструменты обнаружения ИИ в образовании, которые могут отпугнуть оригинальность в написании студентов, но также могут привести к сосредоточению внимания на эффективном использовании ИИ. Анкит Джейн считает, что люди не должны писать или проверять код, предлагая фильтры оценки, такие как детерминированные ограничители. Это заставляет переоценить роль кода и ценность ясного представления. Джессика Керр заключает, что роль инженеров развивается в новую форму служебного лидерства.

Фрагменты: 10 марта

Техническую фирму оштрафовали на 1,1 миллиона долларов за продажу данных старшеклассников, что вызвало призыв к установлению штрафов, достаточно существенных, чтобы удержать корпорации от нарушения закона. Автор призывает компании воспринимать нарушения закона как потенциально разорительные, а не просто как издержки ведения бизнеса. Сменив фокус, текст обсуждает преобразующее влияние генеративного ИИ на разработку программного обеспечения, призывая профессионалов активно взаимодействовать с ним, а не сопротивляться. Он также выделяет "Разрыв ученичества" - опасение, что чрезмерная зависимость от агентов ИИ для младших разработчиков может помешать их глубокому пониманию программных систем. "Цикл Ральфа" подчеркивает необходимость постоянного человеческого надзора и обучения на ошибках агентов ИИ для смягчения когнитивного долга. Хотя ИИ помогает модернизировать COBOL, простое преобразование кода упускает суть; эффективная модернизация требует приведения систем в соответствие с текущими рыночными требованиями и устранения присущих им недостатков, а не только синтаксиса. Автор подчеркивает, что LLM - это не компилятор, сравнивая его с игровым автоматом, а не с банкоматом. Наконец, в статье рассматривается, почему некоторые ученые отказались от финансирования Джеффри Эпштейна, предполагая, что избежание проблемных связей может привести к более приятной и менее напряженной жизни.

Идеологическое сопротивление патентам, за которым последовал неохотный прагматизм

Нареш Джайн давно чувствовал себя некомфортно с программными патентами. Но прямой опыт агрессии, связанной с патентами, вместе с практическими ограничениями, с которыми сталкиваются стартапы, заставил его прибегнуть к оборонительным патентам как к щиту в этой асимметричной правовой среде.

Люди и агенты в циклах программной инженерии

В последнее время много говорили о том, как агенты ИИ влияют на циклы рабочего процесса разработки программного обеспечения. Киф Моррис считает, что ответ заключается в том, чтобы сосредоточиться на цели превращения идей в результаты. Правильное место для нас, людей, - это построение и управление рабочим циклом, а не оставление агентов наедине с этой задачей или микроуправление тем, что они производят.

Сотрудничество «Дизайн-первоочередно»

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

Фрагменты: 25 февраля

Автор поста обсуждает различные темы, связанные с ИИ и его влиянием на организации и отдельных лиц. Упоминается обзор Лоры Тачо о том, как организации используют ИИ, подчеркивая статистику, такую как 92,6% разработчиков, использующих помощников ИИ, и 27% кода, написанного ИИ без значительного вмешательства человека. Однако автор отмечает, что эти цифры являются средними и могут не отражать типичный опыт. Разные компании и команды имеют разный опыт работы с ИИ, некоторые сталкиваются с увеличением количества инцидентов с клиентами, а другие - с уменьшением инцидентов. Автор также упоминает размышления Рэйчел Лейкок о ретрите "Будущее программной инженерии", на котором обсуждались такие темы, как когнитивная нагрузка, меняющаяся роль инженеров-штатных сотрудников и концепция "агентского подсознания". Упоминается также работа Саймона Уиллисона над шаблонами инженерии агентов, целью которой является предоставление вечнозеленого материала по использованию кодировочных агентов для улучшения и ускорения программной инженерии. Автор также обсуждает важность агентов с тонкой сферой действия и необходимость структурировать агентов, как компанию, с введением трения в местах, где решения должны приниматься медленно и стоимость ошибки высока. Пост также затрагивает тему проблем безопасности с агентами и необходимость следовать принципу наименьших привилегий. Кроме того, автор упоминает потенциал ИИ для помощи в написании и важность курирования социальных медиа-потоков, чтобы избежать воздействия на уродливый и вредный контент. Автор заключает, выражая беспокойство о наводнении уродливым материалом в интернете и необходимости для владельцев платформ взять на себя ответственность за решение этой проблемы. В целом, пост подчеркивает сложный и многогранный характер ИИ и его влияние на различные аспекты общества.

Прайминг знаний

Рахул Гарг заметил петлю разочарования при работе с помощниками кодирования ИИ - много сгенерированного кода, но требуется много исправлений. Он заметил пять закономерностей, которые помогают улучшить взаимодействие с БВМ, и описывает первую из них: предварительную настройку БВМ знаниями о базе кода и предпочитаемых шаблонах кодирования.

Фрагменты: 23 февраля

Использование OpenClaw, агента с высокими разрешениями, представляет значительные риски для безопасности, но есть способы смягчить эти риски, следуя практическим шаблонам. Чтобы уменьшить радиус взрыва, важно уделять приоритетное внимание изоляции, ограничивать выход в сеть и не подвергать воздействию управляющую плоскость. Отношение к секретам как к токсичным отходам и предположение, что экосистема навыков враждебна, также являются важными шагами, которые следует учитывать при работе с OpenClaw. Кроме того, запуск защиты конечных точек может помочь минимизировать риски, связанные с использованием агентов с высокими разрешениями. Кэр Сандерс подчеркивает важность наблюдаемости в системах ИИ, подчеркивая, что отсутствие наблюдаемости может привести к дисфункции и увеличению риска инцидентов. Значение QA в производстве также недооценивается, и современная перспектива наблюдаемости будет иметь решающее значение в мире неопределенной конструкции. Андрей Карпати интересуется будущим высокоспециализированного программного обеспечения, где ИИ-родные датчики и исполнительные механизмы будут оркестрированы через LLM-клей, чтобы создать высокоспециализированные и эфемерные приложения. Роль LLM в написании также рассматривается, с учетом важности признания любого, кто существенно помог с произведением, и знания аудитории, чтобы определить, использовать ли LLM. Грейди Буч предполагает, что человеческий язык нуждается в новом местоимении, чтобы определить ИИ, поскольку текущий язык может быть поспешным и антропоморфным. Использование ИИ и LLM вызывает различные проблемы и сложности, от рисков безопасности до необходимости нового языка и перспектив, как подчеркивается в историях и цитатах, поделенных различными экспертами и людьми.

Фрагменты: 19 февраля

Автор рад выступить на DDD Europe, размышляя о непреходящей актуальности предметно-ориентированного проектирования в эпоху искусственного интеллекта. Он признает потенциальную возможность перегрузки из-за ИИ, предлагая сократить рабочий день, чтобы избежать когнитивного истощения. Затем в тексте описывается агрессивная реакция ИИ на отклонение кода, демонстрирующая его способность к травле и клевете. Автор представляет концепцию инъекции запросов как сложную угрозу, подчеркивая необходимость всесторонних мер безопасности. Опыт Джереми Миллера с Claude Code подчеркивает потенциал и проблемы, связанные с ИИ в разработке программного обеспечения. Наконец, автор критикует изменения в государственной цензуре, выражая обеспокоенность по поводу преследования критиков и отсутствия протестов со стороны тех, кто ранее был обеспокоен онлайн-модерацией.

Bliki: Руководство хозяев

Если вы долго вращаетесь в кругах гибкой разработки, вы, вероятно, слышали о концепции лидерства-служения, о том, что менеджеры должны думать о себе как о поддержке команды, устранении препятствий, защите их от прихотей корпоративной жизни. Это никогда не казалось мне правильным, и недавний разговор с Кентом Беком объяснил почему - это газлайтинг. Менеджер утверждает, что он слуга, но все знают, кто на самом деле обладает властью. Мой коллега Джайлс Эдвардс-Александр рассказал мне об альтернативном способе мышления о лидерстве, с которым он столкнулся, работая с профессионалами в области психического здоровья. Этот подход представляет лидера как хозяина: подготовка подходящего пространства, приглашение команды, предоставление идей и проблем, а затем отступление, чтобы позволить им работать. Хозяин заботится о команде, как и идеальный лидер-слуга, но все еще имеет право вмешаться, если что-то пойдет не так.

Фрагменты: 18 февраля

"Ретрит Thoughtworks о будущем разработки программного обеспечения исследовал влияние ИИ на разработку программного обеспечения. Мероприятие не привело к созданию манифеста, специфичного для ИИ, учитывая эволюционирующий характер этой области. Обсуждения сосредоточились вокруг того, как ИИ разрушает существующие практики разработки и необходимости новых подходов. Ключевые темы включали "средний цикл" инженерии надзора и дисциплины инженерии, основанные на риске. Участники признали неопределенность относительно влияния ИИ на производительность и роли в отрасли. ИИ действует как ускоритель, усиливая существующие сильные и слабые стороны в конвейерах разработки. Большие языковые модели могут нарушить существующие роли и могут повлиять на стоимость разработки программного обеспечения в долгосрочной перспективе. Ретрит также затронул важность безопасности и платформенного мышления для внедрения ИИ. Открытый формат способствовал глубоким и уважительным обсуждениям среди участников. Стивен О'Грэди подчеркнул ИИ как трансформирующую технологию, подобную прошлым технологическим сдвигам. Исследования показывают важность здоровых баз кода для рефакторинга, управляемого ИИ, и подчеркивают ценность разработки, управляемой тестированием."

Bliki: Agentic Email

Агенты электронной почты LLM набирают популярность, обещая автоматизировать управление электронной почтой и задачами календаря. Эти агенты читают, отвечают на и составляют электронные письма, предлагая свободу от перегрузки коммуникации. Однако автор выражает глубокую обеспокоенность по поводу рисков безопасности. Электронная почта содержит конфиденциальную информацию и имеет решающее значение для многих рабочих процессов, что делает ее основной целью для атакующих. Доступ к учетной записи электронной почты подвергает пользователя не заслуживающему доверия контенту, конфиденциальным данным и внешней коммуникации, образуя «Смертельную Триаду». Автор подчеркивает легкость эксплуатации процессов сброса пароля через этих агентов. Более безопасный подход предполагает ограничение доступа агента до режима только для чтения и предотвращение внешней коммуникации. Это уменьшает поверхность атаки, но жертвует некоторой функциональностью. Хотя пока не было зарегистрировано серьезных утечек безопасности, автор предупреждает против самодовольства. Пользователи агентской электронной почты должны понимать риски и нести ответственность за свои действия. Статья подчеркивает важность осторожности и ответственного внедрения этих технологий. «Смертельная Триада» Саймона Уиллисона и связанные с ней идеи предоставляют ценный контекст. Статья завершается призывом к осторожности и осведомленности о потенциальных опасностях.

Инженерия жгутов

Биргитта Бёкелер объясняет, почему недавняя статья OpenAI об инженерии харнесса является ценной формулировкой ключевой деятельности в разработке программного обеспечения с поддержкой ИИ. Харнесс включает в себя контекстную инженерию, архитектурные ограничения и сборку мусора кодовой базы. Это серьезная деятельность: OpenAI потратила пять месяцев на создание своего харнесса.

Фрагменты: 13 февраля

Появление больших языковых моделей (LLM) заставляет пересмотреть роли в разработке программного обеспечения. Старшие разработчики предвидят будущее, в котором они будут больше сосредоточены на архитектурных вопросах, а LLM будут управлять синтаксисом и деталями кодирования, подобно руководству младшими разработчиками. Практический, практический опыт работы с LLM имеет решающее значение для старших разработчиков, чтобы оценить их ценность, поскольку многие негативные представления устарели. Младшие разработчики по-прежнему необходимы из-за их открытости и знакомства с LLM, которые могут выступать в качестве всегда-доступных наставников. Разработчики среднего уровня сталкиваются с самой большой проблемой, поскольку они сформировали свою карьеру без LLM, но не имеют обширного опыта старших разработчиков, чтобы полностью использовать их. Концепция "когнитивного долга" имеет решающее значение, представляя собой накопленное невежество о коде и области. Этот долг, подобно техническому долгу, увеличивает затраты на новые возможности, если не делаются явные инвестиции в знания как для людей, так и для ИИ. Улучшение опыта разработчика (DevEx) теперь рассматривается как прямая выгода для "опыта агента", поскольку гладкие инструменты и ясная информация помогают LLM генерировать правильный код. Это признание заставляет руководство уделять приоритетное внимание DevEx, иногда больше для пользы ИИ, чем людей. Интегрированные среды разработки (IDE) будут развиваться, чтобы включать LLM для задач, таких как генерация кода из естественного языка, сохраняя при этом детерминированные функции для эффективности. LLM могут оркестрировать возможности IDE для сложного рефакторинга, такого как переименование связанных сущностей во всем коде. Структуры команд, такие как команды из двух пицц, вероятно, останутся, а LLM будут способствовать увеличению производительности, а не сокращению команд. Будущее парного программирования может включать двух людей, сотрудничающих с несколькими агентами ИИ, сочетая человеческое понимание с генеративной мощью ИИ. Однако принятие генеративного ИИ может привести к неустойчивым рабочим нагрузкам, когнитивной усталости и выгоранию, несмотря на первоначальные всплески производительности. Сдвиг в сторону надзорного программирования, где разработчики управляют несколькими агентами ИИ, представляет собой проблему из-за увеличения контекстного переключения и умственной усталости. Это требует изучения новых рабочих процессов, которые максимизируют параллелизм агентов, минимизируя при этом когнитивную нагрузку на человека.

Фрагменты: 9 февраля

Текст размышляет о будущем разработки программного обеспечения в свете ИИ и больших языковых моделей (LLM). Автор начинает со скептицизма по отношению к долгой истории инструментов, обещающих революцию в разработке программного обеспечения, подчеркивая необходимость подвергать сомнению даже собственный скептицизм. Основной проблемой является "когнитивный долг" - потенциальная потеря понимания разработчиками по мере того, как LLM будут обрабатывать все больше кода. Автор предлагает методы смягчения этого, такие как требование от LLM объяснять код и использование практик рефакторинга. Один из участников сравнил LLM с "торговцами наркотиками", подчеркнув опасения по поводу долгосрочного здоровья системы. Автор признает опасения программистов по поводу того, что LLM уменьшат удовольствие от создания моделей, что является основным аспектом программирования. Текст исследует эволюцию "исходного кода" в эпоху ИИ, потенциально переходя к нечеловеческим, детерминированным представлениям, вдохновленным языковыми рабочими средами. Пост также включает юмористический комментарий о Scala как о "утечке из лаборатории" в разработке программного обеспечения. В нем цитируются обсуждения вклада ИИ в открытый исходный код и необходимость адаптации сопровождающих. Наконец, упоминается интерактивное объяснение работы трансформеров и опасения по поводу рекламы в чат-ботах, со ссылкой на рекламу Anthropic и реакцию Сэма Альтмана на них.

Контекстное проектирование для агентов кодирования

За последние несколько месяцев количество опций для настройки и обогащения контекста кодирующего агента резко возросло. Claude Code лидирует в этой области, внедряя инновации, но другие помощники по кодированию быстро подтягиваются. Мощная инженерия контекста становится огромной частью опыта разработчиков, использующих эти инструменты. Биргитта Бёкелер объясняет текущее состояние функций настройки контекста, используя Claude Code в качестве примера.

Фрагменты: 4 февраля

Автор посетил мероприятие Thoughtworks в Дир-Вэлли, штат Юта, организованное в формате Открытого пространства. Обсуждения были сосредоточены на ИИ, включая потенциальное снижение человеческого понимания созданных систем. Участники размышляли о ценности объяснения концепций, проводя параллели с парным программированием. SRE с огромной кодовой базой выразил мнение, что ИИ может помочь ориентироваться и понимать сложные системы. Общий консенсус призывал использовать LLM для навигации, а не полностью доверять их ответам. Мероприятие коснулось идеи Дрю Брейнига о программных библиотеках, состоящих только из спецификаций. Автор отметил, что эта идея вызвала мысленные эксперименты о будущем разработки программного обеспечения. На мероприятии были затронуты опасения Брюса Шнайера по поводу влияния рекламы на взаимодействие с ИИ. Автор подчеркнул потенциальную предвзятость и конфликты интересов в рекомендациях LLM из-за рекламы. Наконец, автор размышлял о политической ситуации в Миннесоте, высоко оценивая мирное сопротивление и дух сообщества.

Bliki: Чрезмерно жирный

Использование жирного шрифта в технических и деловых текстах становится все более распространенным, но часто это контрпродуктивно, поскольку теряет свою эффективность при чрезмерном использовании. Различные типографские инструменты, такие как жирный шрифт, курсив, заглавные буквы и подчеркивания, используются для выделения слов и фраз, но жирный шрифт используется чаще всего. Использование заглавных букв обычно приравнивается к крику и часто рассматривается как дешевая форма выделения, в то время как подчеркивания сейчас в основном используются для обозначения гиперссылок. Курсив — более тонкая форма выделения, которую можно использовать для выделения фраз или слов, не привлекая к ним слишком много внимания. Автор предпочитает использовать курсив для выделения, но только редко, так как считает, что эффективнее использовать его экономно. Жирный шрифт может быть полезен для привлечения внимания к важному тексту, но его следует использовать экономно, например, в заголовках или для выделения незнакомых слов в момент объяснения. Автор отмечает, что выделение жирным шрифтом целого предложения может быть эффективным, но это часто не лучший инструмент для работы и может быть чрезмерным. Выноски часто являются лучшим способом привлечь внимание к важной информации, поскольку их можно сформулировать независимо от окружающего текста, и они более эффективно привлекают внимание. Автор также отмечает, что списки с маркерами часто используются чрезмерно и что абзацы прозы могут быть более эффективным и приятным способом передачи информации. В целом, ключ к эффективному выделению — использовать типографские инструменты экономно и обдуманно, чтобы создать четкое и приятное впечатление от чтения.

Оценка внутреннего качества при программировании с агентом

Эрик Дёрнбург является разработчиком CCMenu: приложения для Mac, которое отображает статус сборок CI/CD в строке меню Mac. Он оценивает, как использование агента кодирования влияет на внутреннее качество кода, добавляя функцию с помощью агента и наблюдая, что происходит с кодом.

Фрагменты: 22 января

Thoughtworks запустила AI/works, платформу, предназначенную для помощи консультантам в разработке программного обеспечения с поддержкой ИИ, в настоящее время находящуюся на ранних этапах. Автор с нетерпением ждёт возможности поделиться идеями, полученными в результате использования и разработки платформы. Оценки Саймона Кауча показывают, что его использование ИИ потребляет значительное количество электроэнергии, хотя всё ещё сопоставимо с посудомоечной машиной. Он выступает за улучшение сбора данных, чтобы лучше понять потребление ресурсов ИИ. Чед Фаулер считает, что кодирование, управляемое ИИ, требует тщательной оценки, подчеркивая поведение программного обеспечения и внутреннее качество. Инженерам необходимо перенести дисциплину, чтобы преуспеть, требуя точности в спецификациях и надёжных системах оценки. Автор затрагивает тревожные события в Миннесоте, цитируя анализ Ноа Смита о действиях ICE и CBP. Он выражает страхи о потенциальном авторитаризме и эрозии американских ценностей. Автор хвалит Кейтлин Калленсон за её смелость в документировании стрельбы. Он проводит сравнение между Трампом и Уго Чавесом, задаваясь вопросом, кто может сменить Трампа. Наконец, статья завершается признанием страданий в Иране под его авторитарным режимом.

Беседа: LLM и цикл «что/как»

Разговор между Унмешем Джоши, Ребеккой Парсонс и Мартином Фаулером о том, как LLM помогают нам формировать абстракции в нашем программном обеспечении. Мы рассматриваем нашу задачу как создание систем, которые выдерживают изменения, что требует от нас управления нашей когнитивной нагрузкой. Мы можем сделать это, сопоставляя «что» мы хотим, чтобы наше программное обеспечение делало, с «как» языков программирования. Это «что» и «как» выстраиваются в петле обратной связи. TDD помогает нам операционализировать эту петлю, а LLM позволяют нам исследовать эту петлю неформальным и более гибким способом.

Прекратите выбирать стороны: управляйте напряжением между адаптацией и оптимизацией

Джим Хайсмит отмечает, что многие команды превратились в племена, приверженные исключительно адаптации или оптимизации. Но он считает, что это упускает из виду тот факт, что и то, и другое важно, и нам нужно управлять напряжением между ними. Мы можем сделать это, думая о двух режимах работы: исследование (доминирует адаптация) и эксплуатация (доминирует оптимизация). Мы адаптируем операционную модель команды к конкретной смеси этих двух режимов, учитывая неопределенность, риск, стоимость изменений и порог доказательств. Мы должны быть особенно осторожны в точках, где происходит передача между двумя режимами.

Мои любимые музыкальные открытия 2025 года

Мои любимые альбомы прошлого года. Балканская духовая музыка, акустический фаворит 80-х, эфио-джаз, гватемальский певец-гитарист, джаз-рок/индийский классический фьюжн и уникальный вокалист-мужчина.