Go без мифов: переход с C++, highload, рынок, зарплаты и путь разработчика — интервью с Владимиром …
- пятница, 17 июля 2026 г. в 00:00:09

Go часто называют простым языком. Но простота синтаксиса не отменяет конкурентности, рантайма, сборщика мусора, интерфейсов, особенностей памяти и реального production-опыта.
Я, Александр, автор телеграм-канала «Shulepov Code», поговорил с Владимиром Балуном — разработчиком на C++ и Go, автором YouTube-канала «Владимир Балун» о программировании и основателем школы программирования.
В этом выпуске мы разбираем, почему Go стал таким востребованным, кому он подходит, как на него переходить, а также сильные и слабые стороны языка. Обсуждаем реальные проекты, особенности конкурентности, память, сборку мусора и production-опыт.
Александр: Владимир, расскажите немного о себе. Почему вы решили стать программистом и почему начали именно с C++?
Владимир: Первоначально я начинал промышленную разработку на C++. Разрабатывал разные сервисы в Тинькофф, Mail.ru, Лаборатории Касперского, затем перешёл на Go и занимался высоконагруженными сервисами в Ozon и Яндексе.
Программистом я стал во многом случайно. Я родом из Ростовской области. После девятого класса родители предложили определиться: идти в 10-11 класс или поступать в колледж. Учёба тогда не особенно привлекала, больше интересовали спорт, соревнования и другие занятия. Рядом был районный колледж в Азове Ростовской области, где была кафедра программирования. На тот момент это ещё не было так популярно, но родители понимали, что программист – это работа за компьютером, не самая «пыльная» профессия.
Первые курсы прошли почти мимо меня: спорт, прогулки, мало учёбы. А на третьем курсе программирование стало хобби. Я действительно начал заниматься этим 24/7. Сейчас я считаю себя скорее самоучкой: большую часть информации изучал сам. Но колледж дал важную вещь – некоторый план обучения. Например, была тема по операционным системам. В методичке могла быть информация про Windows 95, но я понимал: операционные системы – важная тема, значит, её нужно изучать самостоятельно. Так, шаг за шагом, я и стал программистом.
C++ выбрал потому, что мы изучали Pascal и C. C показался интереснее, чем Pascal, а затем я увидел C++. Это был сложный, интересный язык, где нужно много знать и уметь. Плюс на YouTube были популярные блогеры для новичков, которые говорили, что C++ – это круто. Поэтому я начал именно с него.
Александр: C++ сегодня всё ещё актуален?
Владимир: Конечно. Огромная часть софта написана на C++, и я не думаю, что в ближайшее время её куда-то будут переписывать. Кроме того, есть команды, у которых основная экспертиза именно в C++. Если им приходит новая задача – программа, сервис или часть инфраструктуры, – чаще всего они используют инструмент, в котором уже сильны. В отдельных ситуациях инструмент выбирают строго под задачу, но в целом с C++ в ближайшие годы ничего критичного не произойдёт. Раньше часто говорили, что C++ скоро умрёт, но сейчас 2025 год, а язык всё никак не умирает.
Александр: Есть стереотип, что C++-разработчик – это человек «с усами, в жилетке с множеством карманов», а сам язык якобы уже не актуален. Но при этом на нём всё ещё многое написано.
Владимир: Важно уточнять, что значит «актуален». Если сравнивать с Go, у Go сейчас растущий тренд: больше вакансий, больше спрос, больше разработки. По C++ я давно не анализировал рынок глубоко, потому что ушёл из промышленной разработки на нём. Но я не вижу, что язык умирает или что на нём скоро будет нечего делать.
Александр: Вы бы рекомендовали изучать C++ первым языком?
Владимир: С нуля – скорее нет. У C++ высокий порог входа, и конкуренция сложнее, особенно сейчас, когда новичкам в целом труднее найти первую работу. Чтобы начинать с C++ и искать первую позицию именно C++-разработчиком, нужно очень сильно этого хотеть.
Александр: У меня был минимальный опыт C++: курсы, несколько дней попыток, и первое упражнение не получилось. После этого я ушёл в веб-разработку: HTML, CSS, JavaScript, PHP – всё казалось проще. C++ с самого начала стал затыком.
Владимир: В C++ много камней преткновения. Новичок только разобрался с указателями, а сверху появляются обобщённое программирование, шаблоны – это целый мир. Плюс в языке огромное количество неопределённого поведения, тонкостей и нюансов, которые желательно знать, если вы пишете на нём. Это действительно сложно.
Александр: Образование не отбило у вас желание программировать? Многие жалуются, что в учебных заведениях программирование преподают «из прошлого», а среда очень динамичная.
Владимир: В действительности так и было. Нам преподавали темы, которые не были связаны с практикой, часть материалов была устаревшей, часть давала мало пользы. Но были и полезные предметы: основы программирования, базы данных, SQL. Желание это не отбило, потому что программирование уже стало хобби.
Мне тогда очень не хватало общения с живыми разработчиками, с людьми, у которых есть практический опыт. Возможно, именно этот дефицит и заставлял восполнять знания самостоятельно. Позже я сам приходил в свой колледж в Азове как разработчик из Яндекса и проводил лекции. Я думал: когда я учился, мне бы очень хотелось, чтобы к нам пришёл разработчик из крупной компании и что-то рассказал.
Александр: Ваши одногруппники в большинстве стали программистами?
Владимир: В большей степени нет. И я тоже не стал бы программистом, если бы мне это не понравилось. Я изначально не видел себя в этой профессии. Просто в какой-то момент это стало моим хобби.
Александр: Вы думали получить высшее образование?
Владимир: У меня есть высшее, но заочное. Для меня это было скорее формальностью: ничего принципиально нового я там не узнал.
C++ остаётся актуальным, но как первый язык сегодня подходит не всем: высокий порог входа и сложный рынок для новичков.
Формальное образование может дать план, но фундамент часто приходится добирать самостоятельно: операционные системы, базы данных, сети, архитектуру компьютера.

Александр: Расскажите, что такое инфраструктурная команда в Яндексе. Вы руководили такой командой.
Владимир: Есть продуктовая разработка: программисты пишут код, которым пользуются клиенты бизнеса. Например, сервис такси, которым пользуются водители и пассажиры. Но самим разработчикам тоже нужен софт: внутренние инструменты, платформы, системы наблюдаемости. Это и называется инфраструктурой.
Я занимался системой Observability. Большинство разработчиков Яндекса поставляли в нашу систему логи, трейсы, метрики. В большей степени я занимался трейсами. Есть много инфраструктурных сервисов, которые разрабатываются не для внешних пользователей, а для разработчиков, которые создают продукты компании. Я руководил небольшой командой разработки.
Александр: Почему вы решили перейти с C++ на Go? Когда это произошло?
Владимир: Это было больше трёх лет назад. Я работал в Mail.ru, где стек в большей степени был C и C++. Пришёл поддерживать ICQ: действительно копался в коде ICQ. Затем на основе этого мессенджера делали корпоративный мессенджер MyTeam, сейчас это VK Teams. Так как ICQ писали ещё в 90-е, там был большой C-монолит и сопутствующие сервисы. Новые сервисы начали писать на Go. Иногда приходили объёмные задачи, где нужно было добавить фичу сразу в несколько микросервисов: в C++-монолит, в сопутствующие сервисы и в сервис на Go. Так я впервые попробовал Go. Сначала я воспринимал его как «C на стероидах». Посмотрел базовые конструкции и начал писать. Писал, конечно, как C-шник, который использует Go, поэтому поначалу язык не понял. Потом начал делать pet-проект, углубился, посмотрел на спрос и понял: это язык, который позволяет проще выражать мысли, при этом не так сильно проигрывает в эффективности, как, например, Python. Спрос рос, и я решил перейти.
Александр: Необычный переход: с C++ – на Go.
Владимир: Да. Затем я перешёл в Ozon. Там было и остаётся сильное Go-комьюнити: много чего написано на Go, язык активно используется. В Ozon я очень хорошо прокачался именно как Go-разработчик.
Александр: Go всё ещё довольно молодой язык по сравнению с другими.
Владимир: По сравнению со многими – да, можно так сказать.
Александр: Как вы изучали Go? Команда обучала, вы читали литературу, книги?
Владимир: Когда вы работаете в крупной компании, часто предполагается, что если нужно написать код на другом языке, вы как инженер способны за короткое время начать на нём писать. Не так, как человек с многолетним опытом и знанием всех нюансов, но рабочий код написать сможете.
У Go C-подобный синтаксис и мало ключевых слов. Вы смотрите базовые конструкции и начинаете решать задачу. Это похоже на другой автомобиль: вы знаете, как ехать, но должны понять, где кнопка старта, где поворотники, где музыка. Так же и здесь: нужна хеш-таблица – смотрите, как она устроена; нужен динамический массив – разбираетесь со слайсами; нужны интерфейсы – изучаете, как они работают.
Александр: Ваш C++-бэкграунд мешал?
Владимир: Да, был интересный пример. Когда я пришёл в Ozon, я посадил багу из-за переноса C++-паттерна RAII. В C++ автоматический объект на стеке в конструкторе захватывает ресурс, а в деструкторе освобождает его при выходе из области видимости. Я в Go добавил дополнительный уровень вложенности, захватил mutex и ожидал, что при выходе из этой области видимости defer освободит mutex. Но defer вызывается не при выходе из блока, а при выходе из функции.
После этого я понял: нельзя вслепую переносить паттерны из одного языка в другой. Часть идей может быть полезна, но переносить их автоматически нельзя.
Затем я пошёл на Route 256 – курсы Ozon для Go-разработчиков. Они были полезны не базой, а тем, что показывали, как известные мне вещи принято «готовить» в Go: лучшие практики, подходы, паттерны. Параллельно я уже писал на Go в Ozon. После курса сам пошёл преподавать Go, потому что преподавание сильно систематизирует знания. Когда вы объясняете другим, приходится собирать комплексную картину, а не просто решать рабочую задачу.
Go часто легко начать тем, кто уже умеет программировать, но переносить паттерны из C++ напрямую опасно.
Сильная сторона Go – малое количество ключевых слов и понятные абстракции, но «простота входа» не равна «отсутствию нюансов».
Александр: Сейчас онлайн-школа – ваш основной вид деятельности?
Владимир: Да, сейчас это основной вид деятельности. Это школа программирования.
Александр: Я видел в одном видео, что вас спрашивали, зарабатываете ли вы на курсах больше, чем в найме, и вы ответили, что больше.
Владимир: Да. Но важно понимать, что преподаю не только я: это школа.
Александр: Это ваша школа?
Владимир: Да. У меня есть личные курсы, мы называем их авторскими. Концепция такая: человек сам готовит программу, материалы и сам преподаёт. Я не верю, что один человек может создать программу, а затем её можно передать другому преподавателю, и он будет вести её так же эффективно. У каждого преподавателя свой способ объяснения. Если мы доверяем человеку по экспертизе и по способности доносить информацию, он должен вести курс так, как видит материал. У меня есть свои курсы, у других преподавателей – свои. В итоге получается школа с небольшим количеством, но достаточно глубоких продуктов.
Александр: Давно преподаёте?
Владимир: Ещё со времён, когда работал на C++. Начинал в GeekBrains, преподавал C++. Потом в Otus руководил курсом по Go. Со временем я понял, что в больших онлайн-школах есть много рамок: нельзя гибко поменять занятие, переделать практику, добавить активность. Тогда появилась идея сделать свой продукт. Я начал с системного дизайна. В одном из курсов добавил занятие по system design, и ко мне пришли студенты с просьбой позаниматься лично. Я понял, что спрос есть, и постепенно стал развивать это направление.
Александр: Сколько сейчас преподавателей?
Владимир: Нужно считать, но, насколько помню, вместе со мной около шести активных. Ещё с несколькими людьми обсуждаем сотрудничество.
Александр: Это ваши бывшие ученики?
Владимир: Нет. Выбором преподавателей занимаюсь я. Смотрю опыт, экспертизу, преподавательский бэкграунд, выступления, менторство. Ошибка думать, что если человек эксперт, он автоматически может преподавать. Некоторые сильные специалисты не умеют структурно доносить мысли, объяснять шаг за шагом, приводить аналогии. Для преподавателя это важно. Есть и обратная ситуация: человек хорошо преподаёт, но у него слабая экспертиза. Мы в большей степени делаем продукты не для новичков, а для middle- и senior-аудитории. Поэтому нужно переплетение: экспертиза плюс умение объяснять.
Александр: Преподаватели уходили?
Владимир: Да, такое бывало. Немного расстраивался, но это нормально.
Александр: Не было ситуации, что преподаватель ушёл, а у вас уже набраны ученики?
Владимир: Курс формируется так, что мы начинаем продавать обучение только тогда, когда зафиксировали дату с преподавателем. Если преподаватель провёл последний поток в ноябре, а потом сказал, что уходит, это неприятно, но не создаёт обязательств перед учениками: мы не обещали точную дату следующего потока. Конечно, мы со своей стороны готовим лендинги, презентации, маркетинг, рекламу, продвижение. Поэтому уход преподавателя – потеря ресурса. Но это неизбежная часть процесса.
Александр: Как вы ищете учеников?
Владимир: В большей степени через социальные сети и Яндекс Директ. Основные каналы – YouTube и Telegram. В VK тоже дублирую, но это не главный канал.
Авторский курс сильнее, когда преподаватель сам проектирует программу и сам её ведёт.
Для курсов уровня middle/senior одной экспертизы мало: нужно уметь объяснять, структурировать и проводить людей через сложный материал.
Александр: Был ли в вашей программистской жизни проект, который вы «положили»?
Владимир: Есть фраза: «Не ронял прод – значит не senior». Инциденты, конечно, были, но масштабных, которые приводили бы к большим финансовым проблемам для компании, не было.
Александр: Что вспоминается из такого, где сердце колотилось?
Владимир: В Яндексе был случай с трейсингом. Там была интересная система доступов: роль на всех сотрудников Яндекса. Когда я пришёл в команду старшим разработчиком, меня сделали тимлидом, но оповещения о необходимости перевыпустить роль приходили другим людям. Мне они не приходили, и мы не знали об этой роли. Роль истекла, и у разработчиков Яндекса пропал доступ к трейсингу. По нашим логам всё было хорошо, сервис работал, потому что у нас была отдельная роль для разработчиков самого сервиса. Потом мы дошли до балансера и увидели, что отбивает именно он из-за нехватки прав. Роль пришлось экстренно перевыпускать, согласовывать с руководителями, ждать апрува и пока она асинхронно «прорастёт». Это был неприятный инцидент, но не ситуация, где компания теряла миллиарды.
Александр: Есть проект, которым вы особенно гордитесь?
Владимир: Скорее не «горжусь», а считаю интересным и сложным то, чем занимался в Ozon и Яндексе. Архитектура может казаться простой: один пишущий сервис, один читающий сервис и база данных. Но при больших нагрузках задача перестаёт быть простой.
В Ozon входящий трафик был примерно 5-7 ГБ/с. Проходит секунда – прилетает 5 гигабайт. Часть трафика сэмплировали, то есть отбрасывали. В Яндексе приходило 10-11 ГБ/с. Это нужно записать на диск, обработать, пропроцессить. Даже простая задача – подключить регулярное выражение на таком потоке – может вылиться в серьёзное потребление ресурсов.
Александр: Был ли проект, который «вынес мозг», но вы его решили?
Владимир: Если говорить именно про «вынос мозга», то не было проектов, которые меня бесили настолько, чтобы хотелось рвать волосы. Были проблемы, инциденты, недопонимания, сложности. Но это обычная часть работы.
Важный момент – как вести себя во время инцидента. На первых инцидентах возникает желание срочно что-то нажать, что-то исправить, чтобы пользователи не страдали. Но это опасно: если не понимаете последствий действий, можно усугубить ситуацию и потом тушить не только исходную проблему, но и то, что вы сами сделали.
С опытом приходит понимание: нужно восстановить сервис, но сохранять трезвую голову. Иногда лучше выдохнуть, подумать и только потом действовать. Чем чаще сталкиваетесь с инцидентами, тем лучше понимаете, где у системы болячки, какие метрики смотреть, какие логи проверять и что могло «прострелить».
Александр: Хотели ли вы бросить программирование?
Владимир: Пока не хочу отходить от программирования. Не исключаю, что в будущем могу вернуться в разработку, но в ближайшие годы не хотел бы заканчивать текущую деятельность. Сложно прогнозировать, что будет дальше.
Александр: Не думали уехать из России?
Владимир: Нет. Я зимовал за границей около пяти месяцев и понял, что идеальная картина мира для меня – жить в России и путешествовать по миру. Не хочу уезжать насовсем: здесь родное – кухня, люди, русский язык. Временно пожить где-то можно, но жить я хочу в России.
В highload простая архитектура становится сложной из-за объёмов: гигабайты входящего трафика в секунду меняют требования к каждому решению.
Во время инцидента главная инженерная привычка – не делать лишних действий без понимания последствий.
Александр: Расскажите про YouTube-канал. Он у вас с 2020 года, и за пять лет вы его хорошо раскачали. Как появилась идея?
Владимир: Идея была очень простой: я переехал в Москву в карантин и на выходных начал записывать ролики. Снимал то, что сам бы посмотрел и что могло быть интересно новичкам или более опытным разработчикам. Не преследовал корыстных целей, просто выкладывал видео. Были периоды, когда я забрасывал канал. Долго шёл до тысячи просмотров, потом до десяти тысяч. Обычно бывает так: долго-долго идёте, затем происходит резкий рост, потом снова плато. Со временем YouTube стал помогать и в заработке: часть учеников школы приходит через социальные сети. Но изначально я ничего на этом не зарабатывал и рекламу не делал. Разобрался в теме – записал видео.
Александр: В чём секрет роста канала?
Владимир: Я не считаю канал очень большим и не думаю, что есть какой-то секрет. Просто выкладывал видео. Когда люди спрашивают, что посоветовать при запуске канала, я отвечаю: я мало знаю примеров, когда первое же видео сразу «залетает». Зато знаю много случаев, когда человек делает много роликов «в стол», не получает результата, а потом один ролик начинает набирать просмотры. В этот период важно либо понимать, что вам действительно интересно, либо видеть понятную цель: заработать, продвинуть продукт, собрать аудиторию. Иначе сложно пересилить стагнацию.
Александр: Было видео, которое неожиданно выстрелило?
Владимир: Да, видео про LeetCode. Я решил записать, как год решал задачи на LeetCode. Не думал, что оно так наберёт. Сначала было пять тысяч просмотров, потом двадцать, тридцать, пятьдесят, сейчас, насколько помню, больше 150 тысяч. Возможно, сработало то, что я просто рассказал от себя и поделился опытом.
Александр: Какие видео вы бы рекомендовали для знакомства с каналом?
Владимир: Сложно сказать. Есть видео по проектированию, Go, C++, есть рассуждения о программировании. В большей степени канал не для совсем новичков, а для программистов, которые уже что-то знают. Лучше зайти и выбрать по интересам.
Александр: Вы дублируете контент в отечественные соцсети?
Владимир: Да: VK, Rutube, Дзен. Результатов там немного, но дублирование не занимает слишком много времени. Сейчас я записываю видео на студии, монтаж делает не я, но выкладываю всё ещё сам. Раньше сам снимал, монтировал и публиковал; монтаж мог забирать целый выходной.
Александр: Есть разница в просмотрах между YouTube, VK и Rutube?
Владимир: Конечно. В VK у меня почти нет органики, поэтому просмотры минимальные. Но я всё равно дублирую. Бывают ситуации, когда у людей проблемы с VPN, и они ищут выпуск на VK Видео. Возможно, для них это полезно.
Александр: Есть ли у вас проекты кроме онлайн-школы?
Владимир: Основной фокус, доход и развитие связаны со школой. Но есть сопутствующий проект – интервью deTejo, про подготовку к собеседованиям. Можно пройти mock-собеседование с интервьюерами из big tech. Маленькая компания тоже может прийти и попросить отсобеседовать кандидата. Например, в небольшой компании работают middle-разработчики, но они хотят нанять senior. Как им его качественно оценить – непонятно. Они приходят к нам, интервьюер проводит собеседование и даёт фидбэк. Также мы завершали разработку платформы, которая позволит совместить mock-собеседования и найм: человек проходит тренировочное интервью, компания доверяет результатам, затем остаётся финальный этап. Компания платит реферальное вознаграждение, мы часть отдаём клиенту. Получается win-win-модель.
Александр: Что вы думаете о накрутке опыта в резюме?
Владимир: Зависит от ситуации. Сам я опыт не накручивал, просто не знал, что так можно. Но помню своё начало в IT, когда меня не брали на работу. Если бы тогда знал о такой возможности, возможно, воспользовался бы. Когда опыт уже есть, накручивать его не имеет смысла. Если представить, что я нанимаю человека в компанию, для меня не так критично, если он указал в резюме дополнительный опыт, но при этом реально выполняет задачи. Негативно я бы отнёсся к ситуации, когда человек принят, но не соответствует заявленному уровню.
Александр: Сейчас накрутка часто помогает пройти HR-фильтры, где много формальных пунктов.
Владимир: Да, и это похоже на бесконечный цикл. Чем сильнее закручиваются гайки на рынке найма, тем больше люди изобретают способы эти гайки обходить. Как в безопасности: совершенствуется защита ПО, совершенствуются виды атак. Здесь похожая конфронтация между теми, кто хочет попасть на рынок, и теми, кто выставляет требования.
Контент растёт не всегда линейно: часто долго нет результата, а затем один ролик неожиданно меняет динамику.
Накрутка опыта – симптом рынка: чем жёстче фильтры, тем больше попыток их обойти. Но реальный уровень всё равно проявляется в работе.
Александр: Давайте поговорим про Go. Что это за язык, зачем он нужен и как правильно: Go или GoLang?
Владимир: В обиходе Go и GoLang означают одно и то же. GoLang – это фактически Go Language, «язык Go». Ошибки в таком употреблении нет.
Go чаще всего используют для разработки веб-сервисов, в том числе высоконагруженных. Особенно хорошо он подходит для IO-bound-нагрузки: когда приложение часто ходит в сеть, пишет в базу данных, читает из базы, но не выполняет много тяжёлых вычислений на CPU. Для таких задач Go хорошо подходит: он эффективно их решает, язык простой, позволяет быстро воплощать идеи и содержит интересные концепции, присущие современным языкам.
Александр: Чем он отличается от Python и PHP?
Владимир: Если говорить об эффективности и скорости, у Python и PHP не всё идеально. Go похож на швейцарский нож: он достаточно простой, на нём трудно написать слишком сложный код из-за небольшого количества ключевых слов. При этом он эффективен и при необходимости даёт возможность что-то подкрутить, улучшить, «похачить» в программе.
Александр: Я был на конференции 1С, и там 1С-программисты рассказывали, как пишут сервисы на Go для интеграций. Возникает ощущение, что Go активно входит в разные экосистемы.
Владимир: Думаю, тренд не случайный. Go получил поддержку крупных игроков рынка: Ozon, Avito, Сбер, Тинькофф, Яндекс, VK и других компаний. Есть митапы, доклады, рассказы о внедрениях. Появились блогеры, которые стали рассказывать про Go. Плюс сам язык: если бы он был плохим, его бы не внедряли. И есть поддержка рынка – больше вакансий, часто чуть выше зарплаты. Возникает симбиоз, который двигает Go вперёд.
Александр: Go как первый язык программирования – хорошая идея?
Владимир: Вполне нормальная. В нём есть особенности, которые сложнее, чем в Python, но в целом язык простой. Я считаю, что Go – нормальный выбор для первого языка.
Александр: Где чаще всего используется Go?
Владимир: В разработке веб-сервисов, особенно там, где много IO-bound-нагрузки: сеть, диск, базы данных, чтение и запись данных. Это сервисы разного масштаба внутри разных компаний.
Александр: Какие основные плюсы Go?
Владимир: Простота, эффективность, конкурентность из коробки. С точки зрения рынка – больше вакансий и зарплаты. При переходе на Go можно ожидать примерно плюс 10-30% относительно некоторых других языков, хотя это зависит от компании и конкретной позиции.
С точки зрения языка важно, что Go не позволяет слишком сложно выразить мысли. В C++ можно написать код настолько сложно, что потом вы тратите время не на понимание бизнес-логики, а на разбор конструкции: макросы, шаблоны, template metaprogramming. В Go у меня в production почти не было ситуации, когда я не понимал, что за конструкция написана. Нужно было разбираться в бизнес-логике, но не в синтаксическом лабиринте.
Александр: А минусы Go?
Владимир: Первый минус – runtime. В некоторых средах он избыточен. Например, в real-time-системах сборщик мусора может быть нежелательным, даже если он достаточно оптимизирован. Иногда вы хотите сами явно управлять потоками, распределением, lightweight-потоками и тем, как они менеджатся.
Второй случай – compute-intensive-сервисы, где большая часть логики считается на CPU. Для таких задач иногда лучше выбрать другое решение, потому что runtime Go в большей степени предназначен для IO-bound-приложений, которым нужно часто ходить по сети, читать и писать.
Александр: Go-разработчики сейчас востребованы? Рынок не перенасыщен?
Владимир: Конкуренция большая. Во-первых, Go становится популярнее, всё чаще звучит «хочу свитчнуться». Во-вторых, есть общая экономическая ситуация: где-то найм фризится, где-то сокращается, где-то нанимают только на позиции, где кто-то ушёл. Людей, которые хотят перейти в Go, становится больше; вакансий, как кажется, больше не становится тем же темпом. Но падения спроса на Go я не вижу.
Александр: Сколько может зарабатывать Go-разработчик: junior, middle, senior?
Владимир: Цифры всегда зависят от компании, региона и уровня. Я ориентируюсь на крупные компании, в которых работал, и на опыт коллег и учеников. Если очень грубо: junior на Go – до 150 тысяч рублей. Middle – широкий диапазон: примерно от 150 до 350-400 тысяч. Senior – от 400 тысяч и выше, но разброс большой. Senior senior’у рознь: кто-то уходит в коммуникации и leadership, кто-то остаётся сильным инженером и решает узкоспециализированные сложные задачи. Бывают горячие позиции, где человека хантят и предлагают больше рынка. Поэтому нельзя говорить, что одной вилки достаточно для всего IT-рынка.
Александр: Что конкретно делает middle? Senior чаще уже руководит и коммуницирует?

Владимир: В разных компаниях по-разному. Есть senior’ы, которые максимально изолируют себя от коммуникаций и позиционируются как сильные инженеры. Они решают сложные задачи в узкой области и могут зарабатывать много. Где-то senior действительно много коммуницирует. Поэтому важно смотреть не только на грейд, а на компанию, задачи и контекст.
Go силён в веб-сервисах и IO-bound-нагрузке: сеть, базы данных, обработка большого количества запросов.
Главные плюсы – простота, эффективность и конкурентность из коробки; главные ограничения – runtime, сборщик мусора и неидеальность для real-time/CPU-heavy-сценариев.
Александр: Что бы вы рекомендовали начинающему: идти в маленькую компанию или сразу пробовать крупную? Как попасть в топовые компании?
Владимир: Я сам хотел попасть в Яндекс или VK с самого начала. Но кто бы меня тогда взял? Никто. Если у человека сильный вуз, хорошая база, хороший бэкграунд – можно пробовать сразу. Но если вы самоучка и делаете первые шаги, лучше начать с простых задач промышленной разработки, получить опыт, затем брать более сложные задачи или менять компанию. Мой путь тоже начинался с маленьких компаний. Первая – BKMsoft, где было пять сотрудников. Мы сидели в небольшом здании, в одном кабинете, а рядом был медцентр. Бабушки часто путали нас с медцентром и заходили за справками.
Переходы лучше делать плавными. Когда я из Game Insight в Таганроге, где мы делали игры, перешёл в Тинькофф на backend, это был резкий скачок. Ковид, другая сфера, много стеков, много непонятного. Я чувствовал, что ничего не знаю, думал, что меня уволят, вечерами и по выходным учил технологии. В итоге сильно выгорел. Такой переход развивает, но он нещадящий. Лучше постепенно улучшать задачи, зарплату и уровень компаний.
Александр: С чего начать изучать Go? Какие видео, книги, курсы?
Владимир: Если человек только начинает изучать Go с нуля, мои курсы ему не подойдут: они не для новичков. Если человек переходит с другого языка, часть курсов может быть полезна, но обычно он и сам понимает, что ему нужно.
Для человека без опыта я сторонник фундаментальных знаний: база, computer science, основы программирования. На первых этапах можно посмотреть программы обучения «Go-разработчик с нуля» в разных школах, не обязательно покупать курс, а собрать из них план. Затем свериться с вакансиями: что требуют от начинающих или middle-разработчиков. Так появляется более практичная дорожная карта.
Александр: А формат «Go за 10 часов» – нормальная идея?
Владимир: Он даст знание синтаксиса, но знание синтаксиса не означает, что вы программист. Это как знать несколько слов по-английски, но не уметь строить речь. Если человек учится самостоятельно, можно взять несколько программ курсов, вывести из них среднее арифметическое и сделать план. Затем сверять его с вакансиями и постепенно закрывать пробелы.
Александр: То есть совет – смотреть вакансии и реальные требования.
Владимир: Да, но нужно критическое мышление. Кто-то упирается: «Мне нужен Rust» или «Мне нужно глубокое понимание Linux». В некоторых местах это полезно, но не везде. Нужно эффективно использовать время: смотреть, что требуется в большинстве компаний, и закрывать именно это. Где-то нужны глубокие знания, где-то достаточно базового понимания технологии и того, где её применять.
Александр: Вы в одном видео говорили: учите основы компьютера, потому что языки и технологии меняются. Какие основы вы имеете в виду?
Владимир: Этот совет был скорее не для нулевых новичков, а для людей, которые уже работают и хотят делать более сложные задачи. Многие в такой ситуации идут изучать очередной фреймворк или технологию. Но это бесконечный цикл: технологии меняются постоянно.
Если смотреть на базовые алгоритмы, структуры данных, паттерны, компьютерные сети, операционные системы, архитектуру компьютера – большинство фундаментальных вещей было заложено давно. Новые протоколы и железо появляются, но концептуальная база остаётся. Большинство фреймворков и инструментов построено на этих основах. Если вы понимаете базу, вам проще переключаться между технологиями.
Основная база: архитектура компьютера, операционные системы, компьютерные сети. Затем архитектура ПО, паттерны, подходы к построению систем, безопасность, принципы написания и тестирования кода. Эти вещи переиспользуются в разных языках.
Александр: Как быстро новичку в Go начать зарабатывать?
Владимир: Быстро – только если правильно выстроить план обучения. В двух словах: не учить то, что не нужно, а учить то, что пригодится на работе и что спросят на собеседовании.
Александр: Какие инструменты или библиотеки новичку нужно учить?
Владимир: Библиотеки – последнее, что я бы учил новичку. Сначала язык и стек. В большинстве случаев это база данных, SQL, Docker, Kubernetes на уровне понимания, HTTP, gRPC, немного сетей. Не говорю, что junior должен глубоко знать Kubernetes, но он должен понимать, что такое pod, зачем нужен Kubernetes, что такое Docker и контейнеризация.
Новичку сложно, потому что многие темы сначала кажутся независимыми: база данных отдельно, SQL отдельно, Go отдельно, HTTP отдельно. Но постепенно они переплетаются, и вы понимаете: «Я уже могу написать приложение».
Александр: Почему вы не обучаете новичков?
Владимир: Раньше обучал, но постепенно отошёл. Мне интереснее заниматься сложными задачами. Сейчас школа в большей степени делает глубокие и продвинутые курсы для middle- и senior-аудитории. Возможно, в будущем появятся программы не для полного нуля, а для новичков, которые уже что-то умеют. Но пока не хочется менять позиционирование.
Первый путь самоучки часто начинается не с big tech, а с маленькой компании и реального промышленного опыта.
Новичку важнее не «выучить всё», а построить план по вакансиям: язык, SQL, сети, HTTP/gRPC, Docker, базовое понимание Kubernetes и фундамент Computer Science.
Александр: Какие IDE и tools используют Go-разработчики?
Владимир: Я не могу сказать за весь рынок. У каждого специалиста свой набор инструментов. В целом часто используют GoLand и Visual Studio Code. Сейчас набирают популярность Cursor и похожие решения.
Tools зависят от задач. Кому-то нужен Wireshark, кому-то нет. Кто-то активно использует терминал Linux. Git можно использовать из терминала, IDE, веб-интерфейса или GitKraken. Я, например, люблю Git в терминале. Инструментарий лучше подбирать под себя и под проект. Где-то компания даёт лицензии, где-то вы сами собираете рабочий сетап.
Александр: Что думаете про вайб-кодинг? Одни говорят, что это будущее, другие относятся отрицательно. На фрилансе уже много заявок на исправления после вайб-кодинга.
Владимир: Спрос определяет предложение. Если на рынке есть спрос на простые продукты и быстрые прототипы, вайб-кодинг может быть полезен. Когда нужно проверить бизнес-гипотезу и собрать прототип «из говна и палок», это отличный инструмент.
Но важно понимать, что вы делаете. Модель может предложить пять-шесть решений одной задачи с разной асимптотикой и сложностью. Если выбрать первое попавшееся, в большинстве случаев оно будет работать, но в некоторых сценариях – нет. Когда у вас большой объём данных, много пользователей и нужна оптимальность, нужно выбирать решение осознанно. Поэтому для прототипов – отлично, как инструмент – полезно, но без понимания легко получить проблемы.
Александр: Вы используете искусственный интеллект в жизни и работе?
Владимир: Сейчас постоянно. Например, я проводил интервью учеников и преподавателей, собирал обратную связь: что нравится, что не нравится, как преподаватели обеспечивают вовлечённость. Информацию агрегировал с помощью ИИ. То же самое с custdev: распределение junior, middle, senior, анализ аудитории. В бизнес-задачах тоже использую: например, падает NPS или LTV – можно попросить сгенерировать идеи, что улучшить. С текстами помогает снимать проблему чистого листа: просишь пять шаблонов, смотришь на них и начинаешь писать свой текст. Для видео можно попросить тезисный план. С программированием иначе. Сейчас я реже пишу production-код, больше готовлю обучающие программы и материалы. Когда нужно писать код, с ИИ я обычно не пишу.
Александр: Почему?
Владимир: Мне нравится сам процесс кодинга. Так как я пишу код не так часто, не хочется отдавать эту задачу роботу.
Александр: Cursor использовали?
Владимир: Практически нет.
ИИ полезен для анализа, текстов, идей и прототипов, но не снимает ответственность за итоговое решение.
Вайб-кодинг хорош для MVP и проверки гипотез, но опасен там, где важны производительность, поддерживаемость и понимание алгоритма.
Александр: Есть ли у Go аналоги Laravel, Django, Spring? Насколько развиты фреймворки?
Владимир: Во фреймворках Go есть, но они не особенно популярны. Обычно они позиционируют себя как «всё в одном»: observability, HTTP-фреймворк, gRPC, безопасность и так далее. Но в Go-сообществе не очень принято тащить большой фреймворк.
В C++ есть принцип: вы не платите за то, что не используете. В Go, как мне кажется, похожая философия: подключаете то, что нужно. Когда берёте большой фреймворк, за ним тянется много лишнего, что вы можете вообще не использовать.
Мне не нравится в Java то, что для перехода нужно знать не только язык, но и Spring – это база. В Go не нужно знать большие фреймворки и библиотеки, это часто избыточно.
Александр: Где проще всего найти первую работу, зная Go?
Владимир: В небольших компаниях. Представьте студии, которые занимались сайтами или веб-разработкой на PHP/Python, а затем решили попробовать Go для новых сервисов. В такие места, возможно, проще войти: там меньше сформированной Go-экспертизы, меньше сложных собеседований по тонкостям языка. Плюс часто пишется что-то с нуля, а это интересно.
Александр: У Go есть будущее или это нишевый язык?
Владимир: Я считаю, будущее есть. Я не вижу явных оснований, что текущий тренд использования Go в разных компаниях чем-то затмевается. Не могу предсказать, что будет через 5-10 лет, но сейчас не вижу явных конкурентов или тенденций к отказу от Go.
Александр: Какие мифы о Go вы слышали?
Владимир: Самый частый: Go – простой язык.
Это отчасти правда. Go простой в том смысле, что на него легко перейти: мало ключевых слов, понятный синтаксис. Но в Go, как и в любом языке, много тонкостей, нюансов и подводных камней. Они нужны не всем, но если углубляться, там много интересного. Поэтому я бы сказал так: Go прост для перехода, но не примитивен для глубокого изучения.
Go-сообщество чаще выбирает композицию небольших библиотек, а не тяжёлый «фреймворк на всё».
Миф о простоте Go опасен: синтаксис действительно простой, но production-нюансов достаточно.
Александр: Что такое горутины и почему они считаются фишкой Go?
Владимир: Горутины – это концепция легковесных потоков. Она не была придумана в Go: в разных языках есть похожие идеи – goroutines, fibers, green threads. Смысл в том, что контекст исполнения существует на уровне приложения, а не на уровне ядра операционной системы.
Операционная система даёт поток, а внутри него runtime Go переключает пользовательские потоки исполнения – горутины. Это работает быстрее, потому что ядро не участвует в каждом переключении контекста. Для IO-bound-приложений такая модель хорошо подходит.
В C++ для подобной модели нужно много написать, подключить или использовать сторонние решения. В Go это есть из коробки и реализовано эффективно. Runtime изначально хорошо подходит для нагрузки веб-приложений, где много IO-bound-операций.
Александр: Как устроена система типов в Go?
Владимир: Go позиционируется как безопасный язык программирования. С точки зрения безопасности типов я не встречал серьёзных проблем, если не использовать пакет unsafe, который позволяет обходить систему безопасности типов. Вы не можете просто записать строку туда, где ожидается число. Много гарантий работает на этапе компиляции и предотвращает неправильные действия.
Александр: Чем Go хорош в плане конкурентности и производительности?
Владимир: Go даёт программисту горутины. Программист не думает о потоках операционной системы: сложность распределения горутин по потокам ОС инкапсулирована внутри runtime. Вы работаете с лёгкими потоками, а runtime занимается планированием.
Эффективность здесь в двух вещах. Во-первых, переключение контекста происходит на уровне приложения, а не ядра. Во-вторых, API у горутин очень простой. По сути, вы можете создать горутину через go. Всё. Если нужна коммуникация и синхронизация, дальше подключаются mutex, atomic, channels, wait groups, condition variables и другие примитивы. Но базовый API крайне прост: горутина будет eventually выполнена.
Александр: Что стоит знать о сборщике мусора в Go?
Владимир: Для большинства случаев достаточно знать, что он есть, и что память не нужно освобождать руками. Мусор – это неиспользуемая память приложения. Например, вы выделили память, прочитали данные с диска, вышли из функции, данные больше не нужны – эту память нужно освободить. Если не освобождать, потребление будет расти, а когда сервис пробьёт лимит оперативной памяти, он упадёт.
Для 90-95% программистов достаточно понимать, что сборщик мусора очищает такую память. Но есть 5% случаев, где нужно разбираться глубже: когда много аллокаций, сборщик потребляет CPU, появляются паузы, растёт latency. Тогда нужно понимать, как уменьшать нагрузку на GC, какие параметры можно покрутить и на что они влияют.
В Go возможны и утечки памяти. Кажется, что они характерны для C/C++, где ручное управление памятью, но в Go тоже можно непреднамеренно сохранить указатель на участок памяти. Если есть указатель, сборщик мусора не освободит память. Даже если у вас гигабайтный участок, а вы держите указатель на один байт, память не будет освобождена, пока указатель существует.
Александр: В C++ можно «почистить» память так, что приложения не станет.
Владимир: Да. В C/C++ есть undefined behavior – неопределённое поведение. Например, double free, когда память освобождают дважды, или use after free, когда используют участок памяти после освобождения. Непонятно, что программа будет делать дальше. Это и называется undefined behavior.
Горутины – не магия, а удобная модель лёгких потоков, где сложность планирования берёт на себя runtime.
Сборщик мусора снимает ручное управление памятью, но не отменяет утечки, аллокации, latency и необходимость понимать, что происходит в сложных системах.
Александр: В Go нет классов и наследования в привычном виде. Почему?
Владимир: Я не считаю себя ярым пропагандистом ООП и не писал много на чисто ООП-языках вроде Java или C#. Но писал на C++, где есть наследование. В некоторых ситуациях наследование создаёт много сложности: множественное наследование, ромбовидное наследование, дополнительные механизмы, десятки тонкостей.
Go позиционирует себя как простой язык, и, думаю, разработчики не захотели добавлять наследование в привычном виде. Наследование можно выразить через композицию. В большинстве языков под капотом объект всё равно можно представить как композицию родительской и дочерней частей. В Go этот подход сделан более явно.
Александр: Минималистичность Go – плюс или минус?
Владимир: Для меня плюс. Программисту важно просто излагать мысли, а затем другому человеку должно быть просто понять, что написано. Когда код многословный и использует сложные конструкции, больше времени уходит на чтение. Минималистичный инструмент ближе к псевдокоду: вы как будто просто выражаете идеи с помощью компактного языка.
Александр: Что такое интерфейсы в Go и как они реализованы?
Владимир: Интерфейс – концепция, близкая к миру ООП. Если говорить упрощённо, реализация похожа на другие языки: есть таблица виртуальных функций, и через неё происходит позднее связывание.
В Go интерфейс, по сути, содержит два указателя. Первый – на объект или структуру, которая реализует интерфейс. Второй – на itab, таблицу с метаинформацией о типе и указателями на функции. Поэтому вызов через интерфейс – это не раннее связывание, а позднее: вы прыгаете по одному указателю, затем по другому, затем вызываете функцию. Это даёт overhead и дополнительный уровень косвенности. Но этот overhead позволяет строить абстракции: компоненты меньше знают друг о друге, их проще независимо тестировать, можно подменять реализации. Интерфейсы – важный инструмент абстракции в Go.
Александр: Как в Go работает обработка ошибок?
Владимир: Самая известная фраза Go-разработчиков – if err != nil. В Go нет исключений в привычном смысле, есть panic. Паника похожа на исключение технически, но семантически это другое. Исключение часто означает: «что-то пошло не так, кто-то может перехватить и обработать». Паника означает: «мир под ногами провалился, я не знаю, что делать».
В Go паники используют для редких, фатальных ситуаций. Обычные ошибки возвращают явно. Думаю, это сделано ради простоты. В C++ исключения добавляют огромное количество тонкостей: порядок перехвата, гарантии exception safety, возможные утечки и сложные сценарии. В Go выбрали более простой подход: ошибка – это значение, обычно интерфейс error, за которым может стоять ошибка с любым контекстом.
Александр: Что такое unsafe в Go?
Владимир: Пакет unsafe позволяет обходить систему безопасности типов в Go. Возникает вопрос: зачем безопасному языку пакет, который позволяет обходить безопасность? Ответ: иногда нужно что-то оптимизировать, «подкрутить», выжать максимум в узком участке приложения.
Такие задачи встречаются редко – меньше чем в одном проценте случаев. Но unsafe может быть полезен для оптимизаций, взаимодействия с C через cgo, а также для reverse engineering. Например, можно описать структуру так, как она устроена в runtime, привести тип через unsafe и посмотреть, как меняется объект. Это инструмент для опытных разработчиков, а не повседневная практика.
Александр: Конференция, где вы выступаете с докладом про unsafe, скорее для опытных?
Владимир: Думаю, да. Я буду на «Стачке» как спикер, и, скорее всего, аудитория будет не из новичков.

Go заменяет классическое наследование композицией, снижая сложность и сохраняя выразительность.
Интерфейсы, ошибки и unsafe показывают главную философию языка: простое по умолчанию, но с возможностью углубляться там, где это действительно нужно.
Александр: У вас есть хобби?
Владимир: Да: спорт, путешествия, книги. Это основное.
Александр: Какой спорт?
Владимир: В юности я много занимался тхэквондо, получил несколько травм, был разрыв мениска. После травматологии и операции я немного успокоился со спортом. Сейчас это фитнес: зал, турники, иногда пробежка. Просто регулярная физическая активность.
Александр: Если бы не программирование, чем бы вы занимались?
Владимир: Я думал об этом. Возможно, делал бы что-то на пересечении трёх тем, которые мне интересны: спорт, преподавание и бизнес. Может быть, продукт или сервис. Помимо программирования мне интересны именно эти направления, и, возможно, я выбрал бы что-то одно или их сочетание.
Александр: У вас есть мечта?
Владимир: У меня много целей. Я бы разделял мечту и цель: цель нельзя не делать, а мечта просто мечтается. Сейчас у меня есть конкретное видение по развитию школы: куда хочется прийти через год, через два, до каких объёмов вырасти.
Если говорить именно о мечте, то раньше мечтой было устроиться в Яндекс и VK – это я сделал. Сейчас, возможно, мечта – 100 тысяч подписчиков на YouTube. Это такой понятный порог.
После достижения карьерных целей фокус смещается: не просто «попасть в big tech», а строить собственные продукты, школу, аудиторию и долгосрочную систему.
Для Владимира программирование связано не только с кодом, но и с преподаванием, бизнесом, спортом и личной свободой развития.
Backend – серверная часть приложения. Она обрабатывает запросы, работает с базами данных, бизнес-логикой и отдаёт данные клиенту.
Big tech – крупные технологические компании с сильной инженерной культурой и масштабными продуктами.
C++ – мощный системный язык программирования с ручным управлением памятью, шаблонами, ООП и большим количеством тонкостей. Часто используется там, где важны производительность и контроль над ресурсами.
cgo – механизм, который позволяет вызывать C-код из Go.
Composition / композиция – подход, при котором сложный объект собирается из других объектов. В Go композиция часто заменяет классическое наследование.
CPU-bound / compute-intensive-нагрузка – тип нагрузки, где основная работа выполняется процессором: вычисления, алгоритмы, обработка данных.
Cursor – редактор кода с ИИ-возможностями, который помогает писать и изменять код.
Custdev – интервью с пользователями или клиентами, чтобы понять их потребности, проблемы и мотивацию.
Defer – механизм Go, который откладывает выполнение функции до выхода из текущей функции. Важно: defer срабатывает при выходе из функции, а не из произвольного блока кода.
Docker – инструмент контейнеризации: позволяет упаковать приложение и его окружение в контейнер.
Double free – ошибка, при которой один и тот же участок памяти освобождают дважды.
Git – система контроля версий, которая позволяет отслеживать изменения в коде и работать в команде.
Go – язык программирования, который часто используют для backend-сервисов, микросервисов и высоконагруженных систем. Он известен простым синтаксисом, встроенной конкурентностью и эффективной работой с сетевыми задачами.
GoLand – популярная IDE для разработки на Go от JetBrains.
GoLang – разговорное название Go. По смыслу означает то же самое: Go Language, то есть «язык Go».
gRPC – технология для быстрого взаимодействия сервисов между собой, часто используется в микросервисной архитектуре.
Highload – высоконагруженные системы, которые обрабатывают много запросов, большой трафик или огромные объёмы данных.
HTTP – протокол, по которому браузеры, клиенты и серверы обмениваются данными в вебе.
ICQ – старый популярный мессенджер, кодовая база которого частично упоминалась как пример legacy-системы.
IDE – среда разработки: программа, где пишут, запускают, анализируют и отлаживают код. Например, GoLand или Visual Studio Code.
IO-bound-нагрузка – тип нагрузки, где программа больше ждёт сеть, диск или базу данных, чем считает что-то на процессоре.
Junior / Middle / Senior – уровни разработчиков. Junior – начинающий специалист, middle – самостоятельный разработчик, senior – опытный инженер, который решает сложные задачи и часто влияет на архитектуру или команду.
Kubernetes / K8s – система управления контейнерами: запускает, масштабирует и восстанавливает приложения.
Latency – задержка: время между запросом и ответом или между началом и завершением операции.
LeetCode – платформа с задачами по алгоритмам и структурам данных, часто используется для подготовки к техническим собеседованиям.
Legacy – устаревшая, но всё ещё используемая система или кодовая база, которую нужно поддерживать.
LTV – пожизненная ценность клиента: сколько денег клиент приносит компании за всё время взаимодействия.
Mock-собеседование – тренировочное собеседование, которое имитирует реальное интервью и помогает подготовиться.
Mutex – примитив синхронизации, который защищает общий ресурс от одновременного доступа несколькими потоками или горутинами.
MVP – минимально жизнеспособный продукт: первая версия, которая позволяет проверить идею без полной разработки.
NPS – метрика лояльности клиентов: показывает, насколько пользователи готовы рекомендовать продукт.
Observability – наблюдаемость системы: способность понимать, что происходит внутри приложения, по логам, метрикам и трейсам.
Overhead – дополнительная стоимость: по памяти, времени, CPU или сложности. Например, вызов через интерфейс может иметь небольшой overhead.
Pet-проект – личный проект разработчика для практики, экспериментов или портфолио.
Pod – базовая единица запуска приложения в Kubernetes. Обычно содержит один или несколько контейнеров.
Production / прод – рабочая среда, где приложение доступно реальным пользователям.
RAII – C++-подход, при котором объект захватывает ресурс при создании и освобождает его при уничтожении. В Go этот паттерн нельзя переносить буквально.
Reverse engineering – изучение внутреннего устройства программы или структуры без исходной документации, часто через анализ поведения и памяти.
Runtime – среда выполнения языка. В Go runtime управляет горутинами, памятью, сборщиком мусора и частью внутренних механизмов программы.
Sampling / сэмплирование – выборочная обработка данных. Например, можно сохранять не все трейсы, а только часть, чтобы снизить нагрузку.
SQL – язык запросов к реляционным базам данных.
System design – проектирование архитектуры системы: сервисов, баз данных, очередей, масштабирования, отказоустойчивости.
Undefined behavior – неопределённое поведение в C/C++. Ситуация, когда программа делает что-то запрещённое или некорректное, и результат заранее не определён.
Unsafe – пакет Go, который позволяет обходить безопасность типов. Используется редко: для низкоуровневых оптимизаций, cgo и исследования внутреннего устройства runtime.
Use after free – ошибка, при которой программа использует память после того, как она уже освобождена.
Visual Studio Code / VS Code – редактор кода с большим количеством расширений, часто используется для Go и других языков.
VK Teams / MyTeam – корпоративный мессенджер, упомянутый в интервью как проект, связанный с опытом работы в Mail.ru/VK.
Wireshark – инструмент для анализа сетевого трафика.
Абстракция – способ скрыть детали реализации и работать с более простым интерфейсом.
База данных – система для хранения и поиска данных приложения.
Балансер – компонент, который распределяет входящие запросы между серверами или сервисами.
Вайб-кодинг – подход, когда человек с помощью ИИ быстро генерирует код или прототип, часто без глубокого понимания всех деталей.
Горутина – лёгкий поток исполнения в Go. Горутины позволяют запускать много параллельных задач без прямого управления потоками операционной системы.
ИИ / искусственный интеллект – инструменты вроде чат-ботов и моделей, которые помогают анализировать данные, писать тексты, генерировать идеи или код.
Интерфейс в Go – способ описать поведение через набор методов. Если тип реализует нужные методы, он подходит под интерфейс.
Инцидент – сбой или проблема в рабочей системе, которую нужно диагностировать и устранить.
Конкурентность – способность программы работать с несколькими задачами так, чтобы они выполнялись независимо или почти одновременно.
Контейнеризация – способ запускать приложение в изолированной среде с нужными зависимостями.
Логи – записи событий в системе: ошибки, действия, состояния приложения.
Метрики – числовые показатели работы системы: время ответа, количество запросов, потребление памяти, ошибки.
Микросервис – небольшой независимый сервис, который выполняет отдельную бизнес-функцию и взаимодействует с другими сервисами через сеть.
Монолит – приложение, где много функций собрано в одной большой системе, а не разделено на отдельные сервисы.
Мусор – память, которая была выделена программой, но больше ей не нужна.
Наследование – ООП-механизм, при котором один класс получает свойства и методы другого. В Go классического наследования нет.
ООП – объектно-ориентированное программирование. Подход, где программа строится вокруг объектов, их состояния и поведения.
Параллелизм – реальное одновременное выполнение задач, например на разных ядрах процессора.
Позднее связывание – вызов функции, который определяется во время выполнения программы, а не заранее на этапе компиляции.
Поток операционной системы – более тяжёлая единица исполнения, которой управляет ОС. В Go горутины распределяются по таким потокам внутри runtime.
Сборщик мусора / GC – механизм, который автоматически освобождает память, больше не используемую программой.
Трейсы – данные о прохождении запроса через разные сервисы. Помогают понять, где запрос замедлился или сломался.
Утечка памяти – ситуация, когда программа продолжает удерживать память, хотя фактически она уже не нужна. В Go такое тоже возможно, если где-то сохраняется ссылка на объект.