«Просто бери и делай»: как стать программистом — советы от IT-компаний с HighLoad++ 2019

Мы побывали на крупнейшей конференции для разработчиков высоконагруженных систем HighLoad++ 2019 и задали специалистам вопросы студентов Skillbox.

Эксперты поделились мыслями о том, как строить карьеру в разработке, какие языки программирования развиваются, а какие не очень. А ещё они рассказали, как сами начинали когда-то, и, наконец, попытались заглянуть в будущее.

На вопросы отвечают спикеры HighLoad++ 2019:

  • Леонид Талалаев, lead developer, «Одноклассники»;
  • Пётр Зайцев, системный администратор, специалист по Elasticsearch, «Одноклассники»;
  • Иван Вовк, backend-разработчик, «Тинькофф»;
  • Владимир Посвянский, product manager, «Тинькофф»;
  • Михаил Ананьев, T-shaped-инженер, Сбербанк;
  • Григорий Коваль, data lake product owner, «МТС»;
  • Элина Лобанова, production engineer, Facebook;
  • Артемий Колесников, software engineer, Facebook;
  • Алексей Скоробогатый, systems architect, Lamoda.


Игорь Бугаевский

Редактор Skillbox Media


Карьера программиста

Реально ли научиться программировать без профильного высшего образования?

Леонид Талалаев

lead developer, «Одноклассники»


— Конечно, почему нет? Это реально, и опять же — зависит от задач. Есть задачи, которые не требуют знаний по математике и которые можно решить, изучая документацию. Но математическое образование помогает, конечно. У хорошего программиста есть склонность к аналитике, и математическая статистика всегда будет плюсом.

Иван Вовк

backend-разработчик, «Тинькофф»


— Конечно. У меня есть друг, который девять классов закончил, а сейчас — классный программист, игры пишет. Физику нативно понял сам. Декомпозиция, аналитический склад ума, умение находить связи — вот что самое важное.

Пётр Зайцев

системный администратор, специалист по Elasticsearch, «Одноклассники»


— Я имел счастье и несчастье работать с разными программистами. Реже других ошибались те, кто имел серьёзный бэкграунд в точных и математических науках. Эти науки помогают мыслить последовательно, что облегчает построение кода. Программист должен представлять, например, что такое криволинейный интеграл.

Артемий Колесников

software engineer, Facebook


— Зависит от того, что понимать под программированием. Всё равно нужно базовое образование, которое помогает работать быстрее, но я знаю специалистов без высшего и профильного, при этом они выдающиеся и знают гораздо больше людей из физтеха или МГУ. Но шансов больше у людей с какой-то базой.

Как найти первую работу?

Леонид Талалаев

lead developer, «Одноклассники»


— Я первую работу искал достаточно долго, по объявлениям и интервью. Приходил в компанию на собеседования в разные отделы, и меня не хотели брать без опыта. В итоге устроился туда, где работал мой знакомый. Просто пробуйте, пишите, и рано или поздно вам ответят.

Артемий Колесников

software engineer, Facebook


— На самом деле вариантов много: например, начать программировать на школьных олимпиадах и просто более-менее этим заниматься. Многие IT-компании набирают людей именно с олимпиады. Стажировку пройти невероятно просто, не знаю, почему каждый студент этого не делает. Например, для стажировки в Яндексе надо решить довольно простые задачи на собеседовании. Ну, а если человек уже не студент, то изучать самому, читать книги, пытаться что-то делать и ходить на собеседования.

Насколько ваши компании готовы рассматривать выпускников онлайн-университета Skillbox в качестве потенциальных работников?

Владимир Посвянский

product manager, «Тинькофф»


— Если вы придёте к нам и пройдёте все наши задания, то нам не важно, как вы учились, самостоятельно или на онлайн-курсах. Это вопросы о базовых концепциях и практика в real time. У нас ценится, когда человек понимает новые тренды и то, чем одна технология отличается от другой.

Григорий Коваль

data lake product owner, «МТС»


— У нас есть система стажировки, и мы рассматриваем людей после онлайн-образования, но требуется какой-то фундамент. Если человек гуманитарий и закончил онлайн-школу, ему будет очень сложно, а если он технический специалист и прошёл через ту же школу, то будем рассматривать. Например, мы брали выпускников школы Mail.ru: один из трёх остался работать.

Леонид Талалаев

lead developer, «Одноклассники»


— У нас есть программа для стажёров, почему нет? Даже если человек не обладает большим опытом, но способен учиться, мы с радостью возьмём его. Особенно если это человек, связанный с машинным обучением.

Важен ли возраст кандидата на начальную позицию в вашей команде?

Алексей Скоробогатый

systems architect, Lamoda


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

Леонид Талалаев

lead developer, «Одноклассники»


— Мы никогда не оцениваем кандидатов по возрасту и сперва смотрим на способности. Естественно, мы всегда учитываем опыт, от этого зависит, на какую позицию мы берём человека, но с другой стороны, опыт — это не всё, есть такие качества, как обучаемость, способность нестандартно мыслить. Мало быть опытным, если ты не умеешь делать выводы. Важно, чтобы была способность к анализу.

Иван Вовк

backend-разработчик, «Тинькофф»


— Сложнее будет с людьми из другой сферы, а возраст не проблема. Правда, есть проблема контекста: если всем по 25, и приходят новички по 35, общаться сложно. В целом же «горящие глаза» решают всё вне зависимости от возраста: hard skills можно прокачать, а с мотивацией уже сложнее.

Артемий Колесников

software engineer, Facebook


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

Григорий Коваль

data lake product owner, «МТС»


— Важно, готов ли развиваться человек. Мы смотрим на позитивное мышление и даём развиваться. Недавно был кейс: человек закончил институт теплотехники и пришёл джуниором, немного владел Python, но нашей специфики не знал. Показал себя в итоге хорошо, и мы его взяли в штат. Мы не смотрим на возраст, смотрим на образ мышления.

Бывают ли джуниор-разработчики в сфере высоконагруженных систем?

Элина Лобанова

production engineer, Facebook


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

Пётр Зайцев

системный администратор, специалист по Elasticsearch, «Одноклассники»


— Я замечаю, что большие компании довольно часто пытаются выращивать свои кадры, берут джуниоров и пытаются сделать так, чтобы они обучились магии у них. В плане языков — это Python, Go и подобные популярные вещи.

Вопрос от tproger: если бы на собеседовании можно было спросить программиста только о 5 вещах, какие бы вы выбрали?

Леонид Талалаев

lead developer, «Одноклассники»


— Попросил бы рассказать о задачах, которые он решал. В большинстве случаев достаточно одного вопроса, чтобы составить впечатление. Дальше были бы вопросы по самому резюме, если человек пишет, например, что он эксперт в определённой технологии.

Иван Вовк

backend-разработчик, «Тинькофф»


— Я бы спросил, почему вы занимаетесь этим, как долго, что вы за это время сделали, чем гордитесь и почему. Так я смогу оценить квалификацию. Ещё бы спросил про самый большой факап и про любимый язык программирования.

Артемий Колесников

software engineer, Facebook


— Спросил бы о конфликтах на работе и каким образом они решались, чем человек руководствуется, когда выбирает стек технологий. Узнал бы, когда он начал программировать, как удобней работать — индивидуально или в команде. Ну, и, пожалуй, — продолжил ли бы он работать программистом, если бы заработал все деньги, которые ему нужны.

Языки программирования

Как эффективно изучать языки программирования?

Леонид Талалаев

lead developer, «Одноклассники»


— Я учился самостоятельно, никогда не посещал никаких курсов, учился в университете на математика. У нас было программирование, но очень специфическое. Сейчас всё изменилось: и больше курсов, и больше знаний в университетах.

Пётр Зайцев

системный администратор, специалист по Elasticsearch, «Одноклассники»


— Надо поработать над задачей, которую нельзя было бы обойти, и просто начать писать код.

Артемий Колесников

software engineer, Facebook


— Писать на этих языках программы, другого способа нет.

В каком направлении стоит развиваться, что учить — Java, Scala или Kotlin?

Михаил Ананьев

T-shaped-инженер, Сбербанк


— Я бы начал изучение вообще с основ программирования. Есть такая книга «Структура и интерпретация компьютерных программ» — она закладывает базовые основы для программиста любого уровня. После я бы рекомендовал изучать Java для разработки серверных приложений. Если мы говорим о мобильной разработке, то Kotlin. А Scala я бы не рекомендовал вообще — это всё ещё довольно редкий язык, и для начинающего он реально сложный, а его будущее пока непонятно.

Владимир Посвянский

product manager, «Тинькофф»


— Scala-программисты нужны для подготовки данных рекомендательных систем, это очень востребованная область применения языка. Java быстрая, её можно сильно оптимизировать, и она сильно повысит скорость работы, так что пригодится для рекомендательных движков.

Григорий Коваль

data lake product owner, «МТС»


— Scala конкретно применяется в realtime-профессинге. И Kotlin в последнее время нужен для него же. Если брать совокупность языков, то она применима больше к анализу онлайн-потоков.

Алексей Скоробогатый

systems architect, Lamoda


— Эти все три языка на базе JVM. Сама Java живёт и развивается. Многие вещи и шаблоны приходят из экосистемы Java. Это хорошее подспорье для будущего, так как даже на другом стеке технологий вам будет многое знакомо. Направление может быть любое: Scala часто упоминается как функциональное программирование, пригодится в обработке данных, Kotlin набирает обороты в мобильной разработке.

Леонид Талалаев

lead developer, «Одноклассники»


— Выбор направления зависит от того, какими задачами вы хотите заниматься. Все эти языки — это JVM, поэтому стоит изучать её особенности, чтобы понимать, как они работают. Полезно изучать и общие принципы построения распределённых систем, эти знания пригодятся вне зависимости от языка.

Иван Вовк

backend-разработчик, «Тинькофф»


— Я не очень люблю Frontend. Я начинал с железа и занимался баллистическими ракетами, а теперь пишу софт. Если нравится сервис, изучи, как железо работает, если нравится железо, то изучи физику — я бы шёл снизу, но не надо останавливаться на одном лишь Frontend.

Какие библиотеки вы чаще всего используете и для чего?

Владимир Посвянский

product manager, «Тинькофф»


— Для анализа данных и машинного обучения — Python, а самые распространенные библиотеки — NumPy, SciPy, MatPlotLib и Scikit.

Григорий Коваль

data lake product owner, «МТС»


— Для анализа данных — PySpark, NumPy, AsyncIo и Flask. Обычно мы используем их в комплексе. Flask позволяет писать сервисы с API, а внутри, для анализа данных, все остальные. Ещё для работы с данными мы используем фреймворк Apache Airflow.

Java жива или мертва?

Михаил Ананьев

T-shaped-инженер, Сбербанк


— Живее всех живых! Когда говорят о Java, нужно различать виртуальную машину и язык, который исполняется на этой машине. Сейчас это самая продвинутая и мощная платформа для разработки приложений и сервисов. С девятой версии Java получила активное развитие, новые модули и другие новшества появляются каждые полгода. И, как вы её освоите, рекомендую изучить Clojure.

Григорий Коваль

data lake product owner, «МТС»


— Жива. Это динамичный язык, который применим для работы с бизнес-логикой, в области аналитики данных и выстраивании бизнес-процессов. Она, может, и не такая производительная, но у нее много преимуществ, например многопоточность. Мы используем Hadoop — это платформа для хранения и анализа больших данных, она полностью написана на Java и развивается.

Леонид Талалаев

lead developer, «Одноклассники»


— Поддерживаю, живее всех живых. У нас в «Одноклассниках» многое написано на Java, и мы не собираемся с неё переходить. Сейчас она развивается намного быстрее, чем три года назад, релизы раз в полгода, и постоянно добавляются новые фичи.

Артемий Колесников

software engineer, Facebook


— Я не Java-программист, но смотрю, что люди говорят: в Java есть вся экосистема, все библиотеки и инфраструктура. Для стартапа JVM-платформа идеальна. На ней можно использовать библиотеки на других языках, и на Java написано уже очень много.

С профи о личном

Как вы начали программировать?

Леонид Талалаев

lead developer, «Одноклассники»


— Когда мне было 13 лет, родители купили компьютер Atari. Игрушки мне просто надоели, и я писал программы. Там был язык BASIC, документация на английском и очень скудная. Интернета не было, и мне приходилось изучать самому — я писал программы на листочке и потом вбивал их в компьютер. Первая моя программа — таблица умножения, а потом в основном писал игры.

Иван Вовк

backend-разработчик, «Тинькофф»


— Программирование началось с физики в школе. Мне очень нравились механизмы, и я очень долго шёл до микроконтроллера.

Пётр Зайцев

системный администратор, специалист по Elasticsearch, «Одноклассники»


— Моё программирование началось с того, что мне было лет 17 и я увидел «синий экран» всем известной операционной системы. Потом установил Linux, стало интересно, начал копаться и разбираться и через несколько лет обнаружил себя профессионалом в некоторых вещах.

Артемий Колесников

software engineer, Facebook


— Я учился в техникуме на программиста. Помню этот день: был урок, нам сказали, что нужно такое-то задание по алгоритмам. А мне уже тогда было всё четко и понятно, как это делать.

Какой была ваша первая работа программистом и как вы получили первые деньги?

Леонид Талалаев

lead developer, «Одноклассники»


— Там получилось довольно интересно: я пошёл работать в компанию, где были люди из математической школы, меня сразу посадили писать что-то важное по тестовому проекту. Спустя какое-то время посмотрели на тестовый проект и включили его в продакшн — это была консоль управления большой системой для запуска сервисов «МТС».

Иван Вовк

backend-разработчик, «Тинькофф»


— Я учился на физтехе, где у Intel была кафедра. Сначала первый день, потом второй, третий, и ты уже работаешь в Intel. Это был крутой старт.

Пётр Зайцев

системный администратор, специалист по Elasticsearch, «Одноклассники»


— Первая работа была таким классическим системным администратором, компания была связана с IT очень условно, а я был одним из тех людей, которые бегали за секретаршами и чинили им принтеры.

Артемий Колесников

software engineer, Facebook


— Была маленькая компания без названия и снимала офис на заброшенном заводе. Я программировал микроконтроллеры и получал 1500 рублей.

О будущем

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

Михаил Ананьев

T-shaped-инженер, Сбербанк


— Я думаю, что мы уже начали переходить на них. Сейчас активно развивается железо, которое будет производить вычисление с помощью квантовой технологии; под эти вычисления уже создаются языки программирования. Мы перейдём к этому, когда железо станет доступно широкому кругу лиц, а не только профессионалам в лабораториях. А зарабатывать на этом — только когда будет доступная аппаратная часть. Точно не в ближайшие пять лет.

Владимир Посвянский

product manager, «Тинькофф»


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

Леонид Талалаев

lead developer, «Одноклассники»


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

Иван Вовк

backend-разработчик, «Тинькофф»


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

Эксперты поделились своими советами, как стать программистом и в какую область разработки податься. Мы же в Skillbox обучаем этим дисциплинам на онлайн-курсах c ведущими специалистами и помогаем найти первую работу. Выбирайте, что вам интереснее:

Хочешь получать крутые статьи по программированию?
Подпишись на рассылку Skillbox