Когда мне было семь, папа купил наш первый Ардуино и мы сделали игрушку для котов. Лазерная указка подвешивалась на два сервомотора и пускала луч — а животные носились за красной точкой по комнате. Я стал копатьcя в программе, что написал отец, пытаясь понять, как все работает… и так попробовал C++.
Быстро поняв, что “плюсы” для первоклассника как-то не очень, а вот программировать мне интересно, я засел за Scratch — учить его как раз посоветовал папа. Когда перерос его, отец показал пару приёмов на Python. Потом был классический путь: захотелось смастерить веб-страничку, засел за jQuery, JS-фреймворки и Node.js. И вот он я)
Как я учил английский, читая документацию
Все началось с Ардуино. У меня не было нормальной документации на русском — а на официальном сайте всё было на английском. Конечно, в школе нам давали базовый иностранный, но учитель языка вряд ли бы сильно помог с техническими текстами. А учитель информатики показывал нам, как рисовать в пэйнте.
Тогда я вооружился гугл-переводчиком, залез на arduino.cc и учился что-то понимать, переводя отдельные слова.
Настоящий прорыв случился, когда я осваивал Scratch. Чтобы участвовать в жизни комьюнити, надо реально знать английский, потому что все на нём общаются. Люди могут случайно наткнуться на твой проект, дать отзыв или написать: «А можно я это себе возьму?» Такой вот опенсорс на минималках. Благодаря сообществу я перестал стесняться отвечать на вопросы и что-то комментировать. Короче, сломал языковой барьер и начал пользоваться английским по-настоящему, как инструментом.
Когда я стал экспериментировать с Python и JS, это очень пригодилось: умение читать и говорить на иностранном может завести вас очень далеко)
Мои pet-проекты
Всего их было свыше 50, но я расскажу о пяти.
Сделано на Python. И это гиф.
Первая игра. Она же стала первым коммитом на гитхабе — 1 ноября 2015. Никакого сюжета: ты управляешь кораблем (его имитирует треугольник) и лопаешь пузырики, которые изображены как кружочки. Всё рисуется на ходу.
Три хоткея на границе поисковой строки: нажмите, это тоже гифка.
Первая веб-страничка. Сначала я сделал домашнюю страницу для своего браузера: там даже не было CSS, но первая попытка удалась, и я начал активно смотреть, что ещё могу — брал разные апишки и экспериментировал с ними.
Как-то я поднял сервер на протоколе Telnet и стал делать запросы к веб-поиску Google через терминал.
Затем я случайно собрал телнетовский ханипот. Сейчас телнет в основном используется для роутеров, и ко мне быстро полезли всякие ушлые боты. Мой сервер не воспринимал их команды, а просто все логировал. И на это было очень смешно смотреть: натыкается бот на сервер, думает, что это роутер, засылает всякие команды в попытке его переконфигурировать — а сервак просто отдает результаты из гугла.
Веб-версия Que — демократичного способа составить коллективный плейлист.
Первый раз, когда меня зафичерили на Product Hunt. Летом 2018-го я листал эппловскую документацию и увидел, что у них есть веб-API для музыки. В школе у нас часто была проблема — когда мы устраиваем какой-либо праздник или вечеринку, все жёстко рубятся за право включить свою музыку. Я решил сделать сервис, который решит проблему: открываешь его на компьютере или телефоне, желающие сканируют QR-код, добавляют свои песни в общий плейлист и голосуют за ту, что заиграет следующей.
426 голосов и третье место по итогам дня на сервисе. Сейчас проект закрыт, т.к. Apple поменяли API, а Facebook выпустил своё приложение — глупо с ним бодаться)
Когда я решил выложить его на Product Hunt, это заняло 10 минут: отправил заявку, чувак с той стороны написал: “Мы тебя фичерим, но перепиши, пожалуйста, описание. Оно так себе”. Я сказал: “Окей”.
А это Docket — “тиндер для составления списка покупок”. Еще один проект, который зашёл на Product Hunt. Идея была такой: вот стоишь ты перед пустым холодильником, собираешься в магазин и пытаешься сообразить, чего же ещё купить. В этот момент можно не ломать мозг, а запустить приложение, смотреть на карточки товаров и свайпать их — список покупок составится автоматом.
Саму идею и описание я подхватил на англоязычном сайте с идеями проектов.
Чтобы найти данные для приложения, я дошел до пятой страницы гугла: выше попадались только дата-сеты с брендированными продуктами. А там, в глубинах выдачи, ждала ссылка на гитхаб: кто-то выложил дата-сет, где каждая строка — это чек на английском с перечнем продуктов без брендов (“молоко”, “огурцы” и пр.). На его основе я составил свою эксельку: список продуктов и их рейтинг популярности — то есть первым показывались не какие-нибудь оливки, а молоко. Потому что оно нужно чаще.
Самое забавное случилось, когда Product Hunt выложил ссылку на этот продукт в свои соцсети. Пошел трафик и кто-то написал: «Слушай, всё здорово, но свайпы поменяй местами, в Тиндере же наоборот». А мне 13 лет, я таким не пользуюсь, откуда мне знать, в какую сторону там свайпы?! Родители поржали.
Как я попал на стажировку
Мой уровень английского уже был выше, чем могли дать в школе, и появилось желание расти в этом плане. Родители записали меня на языковые курсы: я ходил туда, пока не стало жаль тратить время на дорогу. Тогда я и начал заниматься в Skyeng. Я был не только активным студентом, но и активно слал фидбек по платформе. В один момент продакты компании создали чат в телеграме и добавили туда таких как я.
Я начал использовать чат, чтобы слать баг-репорты — не совсем критичные, но интересные. Например, когда у меня на iPad не работал мягкий скроллинг в Vimbox, нашей платформе для занятий в браузере, я написал: «Кажется, если этот кусок CSS поправить, работать будет”. То есть я не просто жаловался, а выдвигал свои гипотезы, почему так может быть, кидал логи и подробности. В какой-то момент мне написала Влада, руководитель направления продуктов для детей и подростков, и предложила попробовать свои силы на стажировке в их команде.
То самое сообщение от Влады с предложением постажироваться. Кстати, взяли меня в итоге без тестового, хотя все взрослые разработчики его проходят: говорят, занимает где-то час-полтора.
Я написал: “Спасибо, подумаю”. Просто не знал, как реагировать. И сразу пошёл к отцу: „Пап, что мне делать?” После истории с Product Hunt он уже перестал удивляться и сказал, что, в принципе, это неплохое предложение: удалёнка, свободный график и отличный опыт. Потом был созвон — и меня взяли стажёром.
Папе, конечно, ещё пришлось пособирать документы: в России официально работать с 14 лет можно, но для оформления надо запастись временем, пройти медицинский осмотр и получить согласование от районного отдела социальной защиты.
Хотя ребята известны удалёнкой, в Москве есть офис. Пару раз заезжал туда.
Меня определили в отдел простых задач: специальную команду, которая разгружает основную разработку. Отдел был сильно нагружен запросами по лендингам, и скопилось много заказов на создание ботов для Slack. Наверное, тогда ребята сели и подумали: “У нас есть разработчик, который может писать на JS, но не знает PHP. На JS ботов писать можно, может, дадим их ему?” Так я стал одним из двух людей в Skyeng, которые пишут ботов для автоматизации быта разработки и других отделов.
По мне, это было хорошим стартом: взять и положить что-то важное я не мог, а если вдруг что-то факапилось, потери были минимальны. Такие моменты, конечно, были: как-то я перепутал два SQL-кейворда — на тестовой маленькой базе оба отработали за одинаковое время, но на деле один требовал гораздо больше процессора. А база реального скаенговского словаря — огроменная. И когда я отправил запрос к настоящей базе, он прилично так подзагрузил её на пару минут, пока запрос не прибили)
Первые задачи
Первое время моим ментором был Лёша deusdeorum Катаев, тогдашний тимлид одной из ключевых команд. Когда меня добавили в Slack, он написал: “Привет, хочу автоматизировать процессы нашей разработки”, — и кинул две идеи для ботов.
Когда переписок много, часто тегнуть человека недостаточно — упоминание еще не гарантирует, что он прочтет сообщение: оно может потеряться через минуту среди других таких же. Я написал решение за неделю)
Первым стал бот, который гарантировал прочтение важных сообщений. Мы назвали его Yellbot. Используется для критически важных случаев: ты выбираешь аккаунты или группу аккаунтов через Yellbot-a, и он начинает “преследовать” людей конкретным сообщением — обновляет нотификацию каждую минуту, пока ты не нажмешь “я прочитал” под текстом.
Затем я сделал бота по имени Jake — он автоматизирует техревью. Раньше тимлид руками собирал тикеты, категоризировал, выкладывал в канал команды, просил ребят проголосовать за задачи — все это занимало примерно час, было дорого и муторно. Бот собирает список задач по запросу, запускает голосование в канале и выдает результат голосования. Сейчас, когда практику техревью раскатывают на многие команды, это экономит лидам уже целые человеко-дни.
А это мои коты =^·.·^=
С тех пор я сделал несколько десятков ботов: какие-то были максимально тупыми (например, один просто приветствовал новичка в канале и просил прочитать правила), какие-то служили интерфейсом поиска в базах знаний или помогали автоматизировать аналитику.
Это очень прикольно. Раньше, когда я выкладывал решение на тот же Product Hunt, это было востребовано два дня, а затем оказывалось нужным лишь паре людей. Теперь, когда я что-то создаю, то знаю, что делаю что-то полезное, чем будут пользоваться месяцы и даже, может быть, годы.
Как совмещаю работу со школой
Сейчас я в восьмом классе 57-й матшколы. В этом году тут открылся спецкласс по информатике: заявилось несколько сотен ребят, даже из других школ и городов — конкурс был открытым. Я очень переживал, пройду ли. Чтобы повысить шансы, я попросил Сашу Ларьяновского, управляющего партнёра Skyeng, написать мне рекомендацию.
Думаю, стажировка — одна из причин, почему меня взяли в спецкласс. Рекомендательное письмо сработало на отлично.
У нас очень много информатики: в понедельник — два часа, в четверг — ещё два, в субботу — шесть. Причём это именно продвинутый курс: мы осваиваем алгоритмы, пишем на C++, у нас есть и математический анализ (“люблю” его всей душой).
А еще нас водят на экскурсии в разные ИТ-компании) Из класса не только я серьёзно увлекаюсь разработкой — еще один из ребят пишет неплохие игры.
А ещё школа — это семь-восемь уроков в будни и девять в субботу, так что работаю я не каждый день. Да и по закону время работы подростка, пока ему не стукнет 16 лет, ограничено. Так что обычно все происходит так: пришёл домой, поел, попрокрастинировал, — а там, когда есть время и хочется покодить, беру рабочие задачи, а потом — уроки делаю.
Пользуюсь тремя мониторами: на одном — Slack, на втором — документация, а на третьем — VS Code.
Когда нашей команде приходит новая задача, меня призывают в чат с заказчиком с просьбой оценить сроки. Обычно я оцениваю их по аналогии c прошлыми проектами и сразу предупреждаю: “Смотрите, это столько-то человеко-часов, но у меня эта работа может растянуться на неделю-другую”. Дальше заказчик сам решает — отдать задачу кому-то из ребят на фуллтайме для срочной разработки, или поручить её мне.
Сначала с задачами ко мне приходили в личку в Slack — прекрасное время) Сейчас всё заносится в Jira, как у всех.
Раз в две недели у меня проходит синк с проджектом, чтобы она понимала, что я сейчас делаю. Бывает и код-ревью от ребят. Ещё, как и всех, меня просят логировать время в Jira: я просто выгружаю данные из Toggl, там они точнее.
На что трачу заработанное. Часть денег уходит на всякие подписки и софт для личных проектов:
- Hetzner — хостинг моего личного сервера,
- ZEIT — как хост для Node.js-проектов,
- iCloud на 2Тб — потому что бэкапы надо делать,
- 1Password — потому что как же без него жить,
- Notion — храню в нем конспекты и юзаю его вместо Jira для личных проектов,
- Setapp — 140+ приложений для macOS за $5/мес (со студенческой скидкой)
- Fantastical — очень крутая замена нативному календарю на iOS и macOS,
- Яндекс.Плюс — взял только из-за скидки на Яндекс.Еду и Лавку (с тем количеством еды, которую я и мои друзья заказываем в школу и домой, эта подписка окупается!),
- Nintendo Switch Online — мастхев для владельцев Свитчей,
- Netflix, Apple Music и прочие стриминговые сервисы
Как это изменило мою жизнь
Теперь мой план на 2020 — выжить) Большой плюс моего нового положения — стали пускать на конференции. Папа работает в Mail.ru, там много всего интересного проходит: раньше приходилось просить его выписать мне гостевой пропуск, чтобы я мог пройти “зайцем”. А сейчас я просто подаю заявку: “Ребят, я разработчик из Skyeng”. Они такие: “Заявка одобрена”. В основном хожу на мероприятия про фронт и мобильную разработку.
На СDS в офисе Mail.ru, ноябрь 2019.
Прошлым летом, когда времени было больше, я попробовал податься на яндексовскую стажировку по фронту. И меня почти взяли. Я написал тестовое задание онлайн и получил приглашение на собеседование. Я прихожу и говорю: “Здрасьте”. Они такие: “Ой”. Официально (и это было в правилах) участвовать можно было только с 18, но после обращения к замечательному Григорию bobuk Бакунову мне в виде исключения разрешили участвовать в очных собеседованиях, где я продержался три тура. Однако оффера придется ждать минимум до совершеннолетия)
“Вот что я люблю”
А ещё я окончательно определился с тем, что хочу работать в ИТ. Закончу одиннадцать классов, а там — или в сильный вуз типа Вышки, либо попробую поступить в иностранные университеты.