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

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园_首页
T
The Blog of Author Tim Ferriss
罗磊的独立博客
The Register - Security
The Register - Security
IT之家
IT之家
D
Docker
爱范儿
爱范儿
Apple Machine Learning Research
Apple Machine Learning Research
Hugging Face - Blog
Hugging Face - Blog
博客园 - Franky
L
LangChain Blog
J
Java Code Geeks
博客园 - 三生石上(FineUI控件)
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
K
Kaspersky official blog
Latest news
Latest news
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyberwarzone
Cyberwarzone
人人都是产品经理
人人都是产品经理
C
CERT Recently Published Vulnerability Notes
The Hacker News
The Hacker News
T
Tailwind CSS Blog
S
SegmentFault 最新的问题
MongoDB | Blog
MongoDB | Blog
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
Spread Privacy
Spread Privacy
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
D
DataBreaches.Net
Project Zero
Project Zero
H
Hackread – Cybersecurity News, Data Breaches, AI and More
G
Google Developers Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
C
Check Point Blog
S
Schneier on Security
NISL@THU
NISL@THU
T
Tor Project blog
P
Proofpoint News Feed
N
News and Events Feed by Topic
Last Week in AI
Last Week in AI
N
Netflix TechBlog - Medium
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
U
Unit 42
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
L
LINUX DO - 最新话题
Help Net Security
Help Net Security
Blog — PlanetScale
Blog — PlanetScale

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

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет 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 миллионов точек без потерь
История IDE в Google
PatientZero · 2026-05-22 · via Все публикации подряд на Хабре

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

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

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

Перевод

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

Контекст: я работал в Google в 2011 по 2024 год. Часть информации может быть приблизительной, и я буду дополнять её, если мне сообщат об ошибках. В этом посте речь пойдёт об основном монорепозитории Google (google3).

Фрагментированная экосистема

Как и во многих компаниях, в Google разработчики имели возможность самостоятельно выбирать IDE, и из-за этого возникла высокая степень фрагментированности. В 2011 году одним из самых опытных разработчиков-сениоров задали вопрос: «Можно ли как-то сделать так, чтобы все гуглеры пользовались одной хорошей IDE?». Если вкратце, они ответили «Нет». Джефф Дин ответил так:

«Попытки достичь компромисса в выборе общего редактора для группы разработчиков приведут к недовольству. У каждого есть собственное мнение о том, что здесь важно, а плюсы и минусы разных систем имеют для разных разработчиков различный вес. Да и в конечном итоге, это не так уж важно.»

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

Можно взглянуть на это с точки зрения продуктивности компании: мы не хотим, чтобы каждый разработчик тратил слишком времени на настройку своего редактора. Хотя инженеры пользуются разными IDE, полезные интеграции рано или поздно приходится реализовывать везде: поддержку Bazel, инструментарий Starlarkинструменты автоматического форматирования кода, интеграцию поиска кода и так далее. Эта задача была вполне решаемой благодаря внутренней культуре Google. Разработчики часто органически начинали проекты по созданию инструментария, другие находили их благодаря общей кодовой базе и становились контрибьюторами. В общем случае подобный вклад приветствуется (он мотивируется через систему 20% времени и вознаграждения от коллег). Со временем на критичные проекты официально выделяется штат разработчиков. Например, приблизительно в 2015 году была собрана команда для разработки интеграции с IntelliJ.

Кто-то может задаться вопросом, зачем для этого вообще нужна отдельная команда. Разве IDE изначально не была достаточно качественной? Частично это вызвано тем, что у Google есть набор уникальных инструментов, и обеспечение их удобной интеграции с IDE повышает продуктивность разработчиков. Кроме того, определённые проблемы возникали вследствие самого размера монорепозитория. В традиционных IDE подразумевается, что весь исходный код, метаданные сборки, индексирование и анализ находятся и выполняются локально. В масштабах Google это предположение становится ошибочным.

Cloud IDE

Примерно в 2013 году (?) произошло нечто неожиданное для меня. Группа сотрудников начала писать веб-редактор под названием Cider. Это аббревиатура от «Cloud IDE» с «r» в конце, чтобы имя получилось более запоминающимся.

В компании, где большинство инструментов работает в вебе где ревью кода выполняется в браузере, а навигация по кодовой базе происходит с помощью Code Search… в компании, где работают на Chromebook вполне логично писать удобный инструмент для редактирования файлов из браузера.

Но удивило меня то, что Cider в конечном итоге стал пользоваться популярностью у инженеров. поначалу с ним в основном работали технические писатели, которые хотели редактировать markdown-файлы без заморочек с управления версиями. При исправлении опечаток такой рабочий процесс оказался крайне эффективным. За один щелчок можно было отправить пул-реквест с опцией автоматического слияния после его одобрения. Сегодня подобная фича есть и в GitHub, но в то время она казалась мне новой.

Постепенно команда добавляла всё больше фич, ориентированных на разработчиков. Поворотным моментом стало добавление поддержки автодополнения кода через LSP.

Cider был лёгким клиентом, который открывался гораздо быстрее, чем традиционные IDE. Вся магия происходила в бэкенде, который индексировал всю кодовую базу, поэтому данные были готовы сразу, когда пользователь открывал веб-страницу.

Code intelligence требует связи каждого идентификатора с его типом и ссылками. Это образует огромный языковой граф, который нужно обновлять при каждом коммите. А в кодовую базу за секунду происходит множество коммитов. Но IDE требуется и доступ к историческим данным. Если я работаю над проектом и мой коллега выполняет мердж своего кода, то мне не нужно подхватывать эти изменения мгновенно. То есть моему редактору нужно использовать граф, соответствующий дате моей последней синхронизации... очевидно, дополненный моими локальными изменениями.

Благодаря этой фиче популярность Cider в некоторых областях продолжала расти. Например, убедить перейти на него было гораздо проще разработчиков на Go, чем на Java (потому что они привыкли к гораздо более многофункциональному редактору). Однако удовольствие от возможности поиска и наличия перекрёстных ссылок между миллиардом файлов было реальным.

Cider V: VSCode в качестве фронтенда

Вложения в бэкенд можно оправдать: он решал специфичные для Google задачи, и для него не было подходящей альтернативы. Но фронтенд казался довольно ограниченным: для небольших исправлений он был хорошо, но не мог конкурировать с настоящими IDE.

Направление развития проекта сменилось в 2020 году, когда я присоединился к нему в качестве одного из техлидов. На тот момент Cider уже была доминирующей IDE в компании, поэтому встал вопрос о её будущем. Было решено использовать в ней фронтенд VSCode. Это было абсолютно логично: VSCode уже доминировала в мире IDE, была языконезависимой, расширяемой и рассчитанной на веб.

Переключившись на фронтенд VSCode, мы унаследовали сложившийся редактор, большую экосистему расширений и разрабатывавшиеся годами фичи. Многие фичи, которые требовались в Cider, в VSCode были давно решёнными задачами. Что ещё более важно, система расширений развязывала руки различным командам, убирая команду Cider с критического пути разработки.

Screenshot%202026-05-09%20000254

Cider V, 2022 год

Даже имея дюжину разработчиков в команде фронтенда, для создания полнофункционального потомка Cider нам понадобилось два года. В 2021 году открытой бета-версией пользовались пять тысяч инженеров, но оставалось ещё много работы по интеграции и совершенствованию UX. Команде нужно было реализовать поддержку управления версиями, интегрировать инструмент для ревью кода, добавить фичи автозавершения кода и рефакторинга с использованием бэкенда Cider, изменить способ выпуска и обновления расширений и так далее.

Многие пользователи полюбили редактор Cider и ожидали, что в Cider V сохранятся все его мельчайшие детали. Небольшие изменения рабочего процесса или лишний щелчок могли препятствовать переходу некоторых пользователей, поэтому совершенствование проекта требовало месяцев итераций. Даже цветовые схемы вызывали абсурдно долгие обсуждения. Как сказал в 2011 году Джошуа Блох, «единственное, что вызывает религиозного рвения, чем языки программирования — это текстовые редакторы и IDE».

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

Screenshot%202026-05-09%20184656

Исследование дизайна для интеграции ревью кода, 2022 год

Общая IDE

Я начал этот пост с вопроса про «общую IDE для всех гуглеров». Процесс ещё не закончен, но к 2023 году 80% разработки в основной кодовой базе Google велось в Cider V (и процент продолжал увеличиваться).

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

Больше всего меня восхитили побочные эффекты применения одного и того же инструмента большинством пользователей. Благодаря этому мы могли вкладывать в него больше ресурсов (потому что каждое изменение обладало более сильным влиянием). Я стал техлидом в области расширяемости IDE, и вскоре после этого команды из разных частей компании начали обращаться к нам и разрабатывать собственные расширения для совершенствования своих рабочих процессов. За два года было разработано примерно сто внутренних расширений. Это позволило реализовать множество сценариев, раньше казавшихся невозможными.

В 2023 году руководство стимулировало все команды интегрировать всё больше ИИ-фич. Это привело к появлению таких замечательных фич, как Resolving Code Review Comments with Machine Learning и Smart Paste for context-aware adjustments to pasted code. И, разумеется, автозавершение кода при помощи ИИ.

Чем больше ИИ-фич интегрируется в IDE, тем очевиднее становятся преимущества наличия единой расширяемой платформы. Разумеется, она была крайне дорогой и в очень немногих компаниях подобная работа будет оправдана. Но я считаю, что переход к «стандартной» (пусть и не требуемой руководством) IDE оказал очень сильный эффект.

В конечном итоге, стандартный инструментарий становится движущей силой.