Александр Баранецкий - Founder at Aster AI, платформе ботов-консультантов использующих NLP (Natural language processing) и ML (Machine learning)

Facebook

С чего начинался твой путь в IT?
Родом я из Казахстана, заканчивал технологический колледж, профессия была связана с электронно-вычислительными машинами, системами и сетями. С паяльником в руках, можно сказать, что я с 13 лет. Программирование на то время было для меня больше хобби. Там, где мы жили, в нефтяном крае, программисты были не нужны, все ПО закупалось в готовом виде. Когда мы переехали в Украину, пытался найти работу по ветке энергетики либо электроники. Оказалось, что это направление в Украине развито совсем не так, как в Казахстане, и уровень заработных плат в разы ниже. И я понял, что хобби надо превращать в деятельность, взял книжку по ООП и стал изучать. Через два месяца плодотворного обучения смог найти свою первую работу.

«Код казался чем-то виртуальным и далеким в отличие от железа»

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

О своем первом опыте собеседований в Украине:
Это происходило в одной из Хмельницких компаний, которая занимается безопасной связью. Собеседование проходил на C++ и с треском его провалил. Следующее собеседование было уже в Винницкой компании, предварительно выполнял тестовое задание на PHP, и его я прошел успешно. В той компании проработал всего пару месяцев, потому как у них начались финансовые сложности, а у меня они были и так на тот момент. Принял решение и уехал, а через полтора месяца нашел свою первую серьезную работу в украинском платежном сервисе, где проработал полтора года.

«Были сомнения, что могу получить оффер, почему-то сам себе внушил, что это нереально»

Как ты попал в PDFfiller?
История действительно интересная. Началось с того, что создал профиль на Djinni. Мне тогда ответило несколько компаний, даже не ожидал, что наберу за день 20-30 отзывов. Начал общение с несколькими компаниями и в итоге круг сузился до трех: Megogo, Ciklum, PDFfiller. С первыми двумя общение не привело к собеседованию, в отличие от PDFfiller. Собеседование проводил Сергей Яковлев, для меня оно оказалось волнительным и, отчасти, стрессовым. После, был еще разговор с СТО компании. Для меня компания на тот момент казалась большой в сравнении с теми, где работал ранее. И были сомнения, что могу получить оффер, почему-то сам себе внушил, что это нереально. Поздно вечером того же дня получил оффер и это было очень эмоционально и радостно для меня.

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

«Основной проблемой искусственного интеллекта является даже не обработка данных, а то, как их хранить»

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

Как ты начал для себя развивать данное направление? И какой совет можешь дать начинающим?
Все началось с интереса написать программу, которая будет решать задачи из учебника за пятый класс. Для начинания рекомендую прочитать обязательно две книги. «Искусственный интеллект: стратегии и методы решения сложных проблем» от Джорджа Ф. Люгера и «Искусственный интеллект: современный подход» от Стюарта Рассела и Питера Норвига. С этих книг начинал свой путь в мир искусственного интеллекта. Это еще было в 2012 году, тогда же мне пришло осознание, что вскоре нейронные сети будут везде. Еще рекомендую написать свой движок генетических алгоритмов и поиграть с ним и движок по нейронным сетям. Я их написал на C++, но думаю, что можно использовать и другие языки.

«Я не верю в таланты и харизматичные личности, верю в математику, статистику и практичные вещи»

Как ты считаешь, алгоритмическое мышление: это врожденное или натренированное?
Думаю, что натренированное. Я не верю в таланты и харизматичные личности, верю в математику, статистику и практичные вещи. Есть какая-то часть удачи, но это всего 5-8%, все остальное — навыки.

«Функциональное программирование — это что-то романтичное»

ООП или ФП?
На сегодняшний день — конечно же, ООП. Функциональное программирование (ФП) — это что-то романтичное. Его любят очень сильные специалисты, мне кажется, потому что для них ФП является еще одним способом отличаться. У человека есть встроенное желание отличаться от других, и в этом нет ничего плохого. Вопрос к ФП в том, как поддерживать и дебажить код. Если у тебя таким образом написано даже более тридцати строчек кода (и это все тоже декларативно: передаешь одни лишь функции, у тебя есть древовидность и ветвления), то как потом дебажить? Как ставить брейкпоинты? Вопрос этот открыт, а в ООП уже решено.

Какие три книги ты бы посоветовал для прочтения всем, кто интересуется машинным обучением и не только?
«Прикладное машинное обучение с помощью Scikit-Learn и TensorFlow. Концепции, инструменты и техники для создания интеллектуальных систем» от Орельена Жерона. Сейчас это у меня настольная книга. Второй будет о базовых алгоритмах — «Алгоритмы на C++. Фундаментальные алгоритмы и структуры данных» от Роберта Седжвика. И последней будет книга от Питера Тиля «От нуля к единице» - хорошее вступление для тех, кто хочет делать стартап.

Каким будет твой совет специалистам уже с опытом и стажем по вектору развития?
Идите в машинное обучение.