Zum Inhalt springen

Ep. 16: Как делают GoLand: закулисье JetBrains

08.09.2025 · 2 Std. 42 Min.

Shownotes

Поговорили с Арсением Тереховым — разработчиком из команды GoLand. Обсудили следующие темы:


- Про Арсения и его путь в JetBrains: как попал в разработку, а потом в JB, почему именно GoLand, какой был бэкграунд до этого

- Про команду и работу: как устроена команда GoLand, типичный рабочий день, процессы разработки, код-ревью

- Самое интересное - про два мира Java/Kotlin и Go: каково это писать инструмент для Go на другом языке, насколько глубоко нужно знать Go

- Техническая часть: как устроена работа с Go кодом внутри IDE, взаимодействие с командой с gopls

- Про другие IDE: VSCode, Zed


Состав:


- Николай Тузов

- Арсений Терехов — JetBrains, GoLand Team

- Ильдар Карымов: https://www.youtube.com/@deferpanic


Мой Телеграм-Канал с анонсами подкастов, роликов и др.: https://t.me/ntuzov


Наш чат - Gopher Club: https://t.me/+RfalcB42UspmMDdi

Все гости наших выпусков там присутствуют.


Тайминги:


  • 00:00 Вступление и план выпуска
  • 00:25 Представление Арсения
  • 01:34 Представление Ильдара
  • 02:45 Бэкграунд Арсения и его путь в JetBrains
  • 05:31 Про лабораторию JetBrains на Матмехе
  • 08:05 Лаборатория языковых инструментов: проекты и идеи
  • 10:45 Магистратура JetBrains в ИТМО — жесткая нагрузка
  • 16:22 Почему выбрал GoLand?
  • 19:34 Первые впечатления от Go: escape-анализ, GC, горутины
  • 24:30 Претензии Арсения к Go: проблема захвата переменных по ссылке
  • 29:28 Претензии №2: проблема nil-safety в Go
  • 33:28 Как происходят переходы между командами в JetBrains
  • 37:20 Про переход в команду IDEA или Kotlin — идеальный Dogfooding
  • 39:12 Dogfooding в команде GoLand: пет-проекты на Go (2D игра на Ebitengine)
  • 43:42 Встречи с командой gopls / Go Team
  • 43:55 Что такое gopls? LSP для Go
  • 47:08 GoLand не использует gopls — собственный LSP
  • 52:15 Состав команды GoLand: ~10 разработчиков и другие должности
  • 53:58 Общий пул задач и свобода выбора
  • 1:00:30 Процесс код-ревью
  • 1:01:50 Роль QA: как устроено тестирование?
  • 1:12:02 Поддержка новых версий Go и type inference
  • 1:17:22 Инструменты разработки: TeamCity, Space
  • 1:22:05 Как репортить баги через YouTrack
  • 1:31:58 Вопросы производительности IDE
  • 1:36:39 Совмещение Kotlin и Go в разработке
  • 1:42:09 Архитектура: IntelliJ Platform + языковые плагины
  • 1:48:45 GoLand vs IDEA + Go plugin - в чем разница?
  • 1:53:32 Регулярные встречи с командой gopls / Go Team (продолжение)
  • 1:57:10 Nil reference анализ — главная новая фича
  • 1:58:54 Глобальный анализ vs локальный (преимущества)
  • 2:04:20 Теоретическая неразрешимость задач статанализа
  • 2:10:45 Data flow analysis — как это работает
  • 2:13:31 Почему пока не поддерживаются поля структур
  • 2:20:37 Как иммутабельность упростила бы анализ
  • 2:26:45 Обсуждение других IDE: VS Code, Zed, Cursor
  • 2:33:39 Уникальность JetBrains — свои языковые движки vs LSP
  • 2:37:04 Обращение к сообществу: репортите баги!
  • 2:39:04 Планы на следующий выпуск и завершение

Alle Folgen von Go Get Podcast

Einstellungen

Darstellung

Sprache

Bestimmt, welche Sender dir auf der Startseite zuerst gezeigt werden.

Verlauf

Zuletzt gehörte Sender und Folgen und deine letzten Suchen liegen nur in diesem Browser.

Hinweise

Ein kurzer Hinweis, wenn ein Podcast, dem du folgst, eine neue Folge hat. Einzelne Podcasts stellst du über die Glocke auf ihrer Seite ab.

Konto

Favoriten speichern – in der App und auf der Website.

Tastenkürzel

/
Suche öffnen
Leertaste
Abspielen oder anhalten
← →
Im Player: 15 s zurück, 30 s vor (Folgen) · im Regal: nächste Kachel
↑ ↓
Im Regal: Ziel innerhalb der Kachel
Pos1 / Ende
Im Regal: erste bzw. letzte Kachel
Esc
Fenster oder Menü schließen
?
Diese Übersicht
Läuft gerade

Zur Senderseite

Als Nächstes

    Folgen mit „Als Nächstes“ vormerken – sie laufen nach der aktuellen Folge.