“Оказавшись перед Гвидо, что ты ему скажешь” или диалоги о Python с Бобуком
В августе eyeofhell, voldar и их коллеги по сообществу MoscowPython начали записывать подкаст Python Junior. Это — расшифровка избранных моментов одного из выпусков.
Валентин Домбровский: Ты ведешь Telegram-канал addmeto. Говоришь про всякое прекрасное будущее, технологии и так далее. Какую роль Python будет играть в этом всем, на твой взгляд?
Григорий Бакунов aka bobuk: Очевидно, куда двигается все программирование. Мы чем дальше, тем ближе к Lego.
Программирование все больше похоже на составление кубиков. Python с самого начала создавался как идеальный клей для таких готовых блоков.
И поэтому Python сейчас так и рванул.
Григорий Бакунов: Для него есть огромное количество библиотек, чтобы быстро, из кусков скомпоновать нужную программу. Это и есть будущее программирования. Ничего нам не говорит, что это поменяется. Куча готовых научных библиотек, библиотек, связанных с искусственным интеллектом.
Например, все, что касается распознавания образов — то, что называется Pattern matching, вычленение похожих паттернов в большом наборе признаков. Это очень большая тема, которая сейчас выглядит в основном как Сomputer vision. Но поверьте, в следующие 3 года нейроинтерфейсы будут на этом же строиться, ну и так далее.
Или все, что связано с темой искусственного интеллекта. Оно не ограничивается темой нейронных сетей, но конкретно — нейронные сети это одна из тем, которую человечество «продалбывало» последние много десятилетий.
Если вы посмотрите сейчас на то, что происходит, на всю эту революцию, это революция, которую делают не математики в среднем.
Это очень важно: чтобы совершить новый прорыв в области ИИ, нужно обладать умением программировать и желанием экспериментировать, в первую очередь.
«Ты не можешь заниматься программированием, если ты искренно не хочешь именно это»
Григорий Бакунов: Я прямо убежден, что какое бы образование у тебя ни было, сколько бы сил в тебя ни вкладывали, если ты не хочешь чем-то заниматься — ты не будешь этим заниматься.
Григорий Петров aka eyeofhell: О, ключевое слово — образование. У меня есть холиварный вопрос, которые я могу задать только тебе.
Григорий Бакунов: Давай.
Григорий Петров: Смотри, уже у же много лет я занимаюсь образованием и какими-то курсами, стараюсь помогать разработчикам. И моя позиция заключается в том, что с образованием в программировании сейчас очень-очень плохо из-за того, что область новая, фундаментальные дисциплины мы для нее еще не сделали, и фундаментального образования нету.
Рынок собрал всех самоучек, вообще всех, а поток новых программистов очень-очень маленький. И университеты, в целом, программистов готовить не могут.
Потому что для того, чтобы готовить программиста, чтобы построить такой Хогвартс и начать выпускать волшебников, тебе нужен хотя бы 1 волшебник, который это умеет. А этот волшебник сейчас сидит в Яндексе тимлидом. И даже если не брать во внимание зарплату, то у него тупо есть социальная ответственность перед своей командой: «Ну, я же не брошу ребят, поэтому подождите лет 30, пока я на пенсию выйду».
Вот с твоей точки зрения, у нас действительно все так плохо с образованием? Или есть какие-то улучшения, и вообще мы уже можем готовить программистов, если можем?
Григорий Бакунов: Ты говоришь «у нас», имея в виду индустрию, в целом?
Григорий Петров: Индустрию, в целом.
Григорий Бакунов: Очень плохо с образованием. Причем вот что важно. Все плохо не с системой образования, а именно с образованием, в целом.
Программистом ты работаешь круглосуточно. И мало научить этому, нужно этим заразить. И вот этого не хватает чудовищно.
Причем прямо не хватает в каких-то самых базовых основах. Вот типа еще в школе заразить идеей, что программировать — это не просто заработок, а еще и дело всей жизни. Этого нет, этого не хватает. А потом уже поверх этого нужна система образования.
Про миграции на Python 3
Михаил Корнеев aka Voldar: Гриша, lifecycle Python 2.7 года через полтора заканчивается. На вас это как-то влияет? Или вы собираетесь сами как-то жить?
Григорий Бакунов: Во-первых, еще 2 года. Это во-первых. А во-вторых, вы же понимаете, что скорее всего, будет стабильная 2.8-я ветка, которую будет тащить кто-нибудь. Потому что количество legacy совершенно чудовищно.
Григорий Петров: Да, для этого есть хорошие кандидаты, всякие enterprise friendly.
Григорий Бакунов: Да.
Но на самом деле, я уверен, что все потихоньку мигрируют в сторону 3-его Питона или других языков.
И это нормальный путь. Потому что, во-первых, 3-ий Python сейчас очень взрослый, это очень зрелая среда, в которой просто комфортно жить. Я не нашел библиотек, которые не переехали жить в Python, когда в последний раз смотрел. Я для себя в какой-то момент, знаете, вывел лакмусовую бумажку: решил, что Python 3 состоится в тот момент, когда на него переедет supervisord. Это демон, которые позволяет запускать другие сервисы.
Григорий Петров: Он долго держался.
Григорий Бакунов: Они, правда, по-прежнему говорят: «Мы запускаемся и под 2-ым, и под 3-м пайтоном». И это для них, наверное, правильный путь.
У нас в Яндексе есть несколько разных корпоративных, внутренних культур разработки.
В части 3-ий Python, на который начали переходить довольно активно. В части был только 2-ой. В центральной поисковой части, которая связана с порталами, со всем таким, в какой-то момент закрепилась политика о том, что пока только 2.7: поисковая история живет в прекрасной, но очень хитрой с точки зрения сборки, deployment и всего такого, среде.
Поэтом когда-то нужно было выбрать один Python. Естественно, выбрали тот, на котором огромное количество legacy, который прям сходу не переписать. И долгое время был только 2-ой Python. Но сейчас такой проблемы уже нет, поддерживается и 2-ой, и 3-ий, и я даже вижу довольно прикольный процесс миграции на 3-ий.
Про джунов
Михаил Корнеев: Просто нас всегда про это спрашивают. Что уметь, что знать. Это вопрос, на который, наверное, сложно ответить хорошо, потому что ответ будет, наверное, очень общий. Может у тебя получится?
Григорий Петров: В какие стороны им стараться?
Григорий Бакунов: Прямо скажу, я не могу за весь Яндекс сказать. На мой взгляд, самое важное, как ни странно, — это не алгоритмы, не столько супер глубокое знание библиотек, и не столько умение хорошо программировать, сколько знание, как работает система контроля версий, как стоит взаимодействовать с другими людьми в процессе code review, понимание, что зачастую продокументировать кусок кода не менее важно, чем его написать и т.д.
Нужно научится пользоваться инструментарием в достаточно широкой мере. То есть, это же такие базовые вещи.
И как ни странно, среди джуниоров, которые приходят на стажировки или просто выходят на работу, тех, которые этим уже владеют — их практически нет.
Михаил Корнеев: Мы своих заставляем, объединяем их в команды, но это идет очень тяжело, потому что половина говорит: «Я не хочу в команде». А без команды, … Понимаешь, да? Они в одиночку чего-то с git-ом поработали…
Григорий Бакунов: Это популярная история про то, что работать в одиночку всегда быстрее и кажется, что качественнее. Но как только тебе нужно проработать полгода, ты понимаешь, зачем собираются коллективы.
«Оказавшись перед Гвидо, что ты ему скажешь?» ©
Григорий Бакунов: В этот раз я хотел бы задать очень важный вопрос: «Ну вот и как это?»
Он ведь сделал вид, что он больше не у дел.
Но я знаю, что он глобально никуда не ушел. И мне очень интересно, как это. Вот он 20 лет был бессменным диктатором. И тут он как бы убрал руки. Что он чувствует сейчас? Как он заставляет себя не висеть постоянно в Bugzill-е? Что он делает? Он бьет себя по рукам? Как это происходит?
Валентин Домбровский: Это тебе для личного, так сказать, опыта?
Григорий Бакунов: Конечно. Это самое интересное, потому что его профессиональная деятельность, как у нас всех, хорошо видна в сети. Мы все видим, что он делает. Мы все видим его код. Мы все видим, как он работает с комьюнити. Об этой его части можно посудить по его делам. А вот как он умудряется держать себя в руках и не лезть в дела ребенка, которого растил 20 лет, — это большой вопрос.
Метод, как выбирать, куда развиваться
Григорий Бакунов: Либо вы выбираете широкую область и говорите: «Класс, я буду вкладываться в, например, умение работать с генетическими алгоритмами, потому что за ними тоже явно какое-то будущее, это явно недооцененная область».
Это такие широкие мазки. Либо ты говоришь: «Я буду развиваться как…» — и дальше называешь какую-то область. Например, как человек, который хорошо понимает highload.
Но на самом деле, что точно нужно делать, — это просто постоянно развиваться.
И тогда область, в которой вам нужно развиваться, выплывет сама собой. Надо заниматься областью, которая тебя естественно жжет. Вот если тебя жжет, надо туда идти, даже если ты в этот момент идешь против течения. Такие дела.
Михаил Корнеев: Когда собеседуем себе людей, я сейчас заметил (может быть, у меня выборка небольшая, но видно) следующее: люди, которые вроде джуны, сейчас пошли в data science, они просто для себя делают какие-то прикольные штуки.
Вот буквально из последних — один анализировал статистику по Counter Strike, другой распознавал комиксы про Dilbert-а: кто там босс и так далее.
Григорий Бакунов: Класс.
Михаил Корнеев: Видно, что он делает это для себя, по приколу. Это не какое-нибудь стандартное упражнение — давайте котиков от собачек отделять. А видно, что человек по фану для себя что-то делал.
Это очень круто: показатель того, что на этого человека как минимум стоит пристально посмотреть.
Валентин Домбровский: Да, это как раз то, о чем говорил Григорий: если тебя жжет, ты делаешь это для себя, по фану, у тебя есть мотивация этим заниматься, ты в этом развиваешься, и об этом мы говорим в будущем выпуске.
***
Только что вы домотали до конца расшифровку избранных моментов выпуска Python Junior с Григорием Бакуновым. Полная версия эпизода доступна в видео- и аудио-версиях:
Скачать аудиоверсию подкаста (mp3, 55 Мб)
Спасибо, что прочитали, послушали или посмотрели.