16-летний веб-разработчик: «Я мечтал стать программистом с 11 лет»
Сначала уроки, потом работа в режиме фултайм. Как живётся мидл-разработчику, который ещё не окончил школу.
Иллюстрация: Colowgee для Skillbox Media
Рома Потапов
Middle-фронтенд-разработчик во Flatsharing. JavaScript/TypeScript + Vue.js. Любит волейбол, фанфики и аниме.
Меня зовут Рома, мне 16 лет, я живу в небольшом забайкальском селе: всего у нас 300 жителей, а в моей школе учится 50 человек.
Кружков в ней нет. Правда, меня приглашали вести робототехнику, но времени на это никогда не хватало: я работал на аутсорсинговых галерах, писал бэкенд в продакшен, месяц проработал тестировщиком, разрабатывал приложения для медицины, системы отслеживания заказов и поиска сотрудников.
Сейчас работаю в стартапе Flatsharing, который занимается бесконтактным заселением.
Познакомился с компьютером раньше, чем с книгой
За компьютером я с трёх лет: папа купил ноутбук, и мы вместе играли в стратегии. В семь у меня уже был собственный ноут. Какое-то время я продолжал гонять в игрушки, но потом заинтересовался геймдевом — хотел сам делать игры.
С третьего класса пробовал что-то в гейм-мейкерах, но получалось не очень. В 11 лет поставил себе цель: стать айтишником. Сперва даже приблизительно не представлял, как прийти к мечте. Начал было писать моды под Minecraft — но мой ноутбук этого не выдержал и сломался. Я охладел к подобным экспериментам на полгода. К счастью, тётя заметила моё увлечение, добавила денег и помогла купить новый полноценный компьютер. А позже ещё одна тётя посодействовала в приобретении мощного ноута, чтобы я мог работать в поездках.
Первым моим языком программирования был Java — я написал калькулятор, но не понял, зачем мне это, и бросил. Попробовал Unity, но мой старый ноут её не потянул. Однако я всё равно пытался что-то делать на С#.
В девятом классе, готовясь к ОГЭ по информатике, я выбрал Python — самый лёгкий язык программирования в мире. Прочитал учебник, посмотрел два ролика, начал что-то писать, но не разобрался, как работает ООП, и закрыл учебник навсегда.
А затем в моей жизни началась белая полоса: на YouTube попался марафон по вёрстке. Я открыл редактор и принялся за код. Сначала писал, как советовал преподаватель. Но не дождался нового выпуска, стал придумывать что-то своё — и доделывал проект уже самостоятельно.
Всё это так мне понравилось, что я нашёл в интернете большой макет для лендинга и начал его верстать. На всю работу ушло примерно полгода, потому что занимался я нерегулярно. Наверное, это была моя ошибка: можно было выучиться быстрее. После этого захотелось делать слайдеры и другие динамические элементы — так что плотно взялся за JavaScript.
Кодинг, любовь и деньги
Зарабатывать программированием я решил, когда захотел сделать подарок своей девушке. Мне было 14, а ей 13: она мечтала о мягкой игрушке, и я начал искать заказы на фрилансе, чтобы подзаработать. А что — макеты же делать я научился.
Зарегистрировался на Freelancehunt — и стал ждать, когда на меня обрушится богатство. Но поначалу всё пошло немного не так. Первый заказчик пришёл нескоро, и то за счёт лютого демпинга с моей стороны: за 2000 рублей я вызвался ускорить страницу, которая на Google Page Analytics показывала единичку. Задача оказалась раз в десять труднее, чем я думал поначалу. Тем не менее я её закрыл — и даже уложился в срок. Сделал девушке подарок.
Чуть позже тот же заказчик дал мне похожую задачу, но уже на 4000 рублей. С ней я тоже справился. Ещё больше поверил в свои силы — и взял заказ сразу на 10 000, чтоб два раза не вставать: нужно было написать генератор паспортов на JavaScript. И это удалось. С девушкой, кстати, мы до сих пор встречаемся.
После такого успеха я решил работать с фреймворками. Сначала, как все, начал учить React, но он мне не зашёл из-за JSX — я не понял смысла хуков. Классовые компоненты понравились больше, но на них уже никто не писал. Одним глазком взглянул на Angular — тоже ничего не понял. А потом увидел Vue — и влюбился. За два недели я сделал на нём два простых пет-проекта и понял, что пора искать работу.
Первая работа по найму
Я разместил резюме на HeadHunter, поставил минимальный порог по зарплате, указал скиллы: Vue, JavaScript — и начал откликаться на вакансии.
Чтобы подготовиться к собеседованиям, читал документацию JavaScript и Vue.js, смотрел на YouTube ролики в духе «50 вопросов, которые вам зададут на собеседовании», читал статьи, решал задачи на знание event loop и, конечно же, алгоритмические — на LeetCode, но сильно в них не углублялся. Мне больше нравится практика, чем абстрактные примеры.
Перед первым собеседованием ещё оставался мандраж, но к четвёртому я был уже совершенно спокоен.
За три дня я откликнулся на 100 вакансий. Мне отказали 99 раз, и лишь один работодатель спросил, когда я смогу выйти на работу. Я ответил — завтра. Он предложил мне 15 тысяч рублей при графике 5/8. Я согласился. Разница с Москвой у нас — плюс шесть часов: когда я прихожу из школы и сажусь за компьютер, там как раз начинается рабочий день.
Моей первой задачей было сверстать большой сайт под названием «Царь-плотник» — это такая викторина для детей. После этого был сайт на WordPress. С ним как-то сразу не заладилось: я даже положил продакшен-сервер при отправке файлов. Менеджер очень ругался, но меня пощадили. После этого я продакшен ни разу не ронял.
Так я проработал полгода и очень устал. Сначала взял отпуск на две недели, а потом попросил повысить зарплату. Мне отказали, и я ушёл. Искал новое место и параллельно занимался Vue.js, прокачивал скиллы.
Опыт — сын ошибок трудных
Через некоторое время мне на почту написал один программист из Чили. Он работал в нескольких местах, занимался кодингом и консалтингом. Ему понравилось моё резюме, и он порекомендовал меня в один из проектов вместо себя.
Сначала он давал мне задачи по написанию очень простых унифицированных тестов, с которыми справился бы любой, кто более или менее владеет английским. Например, зайти на определённую страницу и найти там кусок текста. Потом меня перебросили писать для бэкенд и фронтенд для платформы. Фронтенд был на старой технологии jQuery, а бэкенд, как ни странно, на Node.js и Express.
Первые таски тоже не представляли собой ничего сложного: поправить табличку, завести новую, сделать красивый скролл или красивые логи, удалить кнопку. А дальше мне поручили деплоить приложение под ClickHouse на Node.js. Это сулило компании огромные доходы, но я не справился и признался, что это недостижимая для меня задача. Очень огорчился и решил покинуть проект.
Снова начал искать работу, но положительных откликов не было. Мне дважды открыто отказывали из-за возраста: говорили, что у меня очень хорошие технические скиллы, но школьников они на работу не берут. Это сильно било по самооценке, но я не отчаивался и продолжал откликаться.
Наконец меня пригласили на собеседование; как назло, в это время я был на приёме у врача. Но мы всё-таки его провели. Меня расспросили про две технические штуки и спросили, писал ли я архитектуру. Я ответил: конечно, да! Хотя архитектурой до этого никогда не занимался. Меня взяли — пришлось осваивать с нуля в кратчайшие сроки :)
В этой компании я работал над искусственным интеллектом для медучреждений: нейронная сеть на сервере анализировала звуковые сообщения и ставила по ним диагноз. Я делал фронтенд на Vue.js: там были довольно сложные таски с созданием плеера, который должен был показывать различные участки кардиограммы, в том числе не распознанные «нейронкой». Это была самая сложная часть проекта, но у нас всё получилось.
После этого мне поручили сервис для авиакомпаний — приходилось делать множество табличек, ничем интересным я не занимался. Следующий проект тоже не очень понравился — это была платформа для поиска и найма экспертов в разных областях. Энтузиазма это не вызывало: не хотелось создавать очередной аналог HeadHunter. Я проработал на эту компанию девять месяцев, а потом увидел в чате по Vue.js предложение от стартапа. Требовалось знать Vue.js и TypeScript. Я откликнулся, им понравилось моё резюме, и уже через полчаса у меня было собеседование.
Стартап мечты и взрослая зарплата
Интервью прошло хорошо. Мне пообещали дать ответ к концу недели, но ответа не было. Лишь ещё через неделю сообщили, что не могут сделать оффер из-за возраста: непонятно, как я буду совмещать работу с учёбой в школе. Я сказал, что готов взять всю ответственность на себя, — и мне согласились дать тестовое задание, которое прежде никто не мог сделать. Срок выполнения поставили — три дня.
Я начал погружаться в тему: завалил технического директора вопросами — начиная от багов в примерах и заканчивая тем, что ТЗ неполное. Он ответил мне на всё, и я выполнил задание. Меня похвалили и предложили обсудить зарплату.
Я ещё ни разу не работал по Трудовому кодексу, но был знаком с той его частью, которая касается несовершеннолетних: нельзя работать больше четырёх часов в день, нужно писать заявление в школу и прочая ерунда. Я решил с этим не заморачиваться, поэтому оформил статус самозанятого и плачу небольшой налог.
Сказал, что готов приступить к работе с понедельника, и запросил 100 тысяч рублей в месяц. Теперь я ведущий разработчик, потому что предыдущий ушёл в Ozon. К моему возрасту команда отнеслась спокойно. Мне нравится моя команда — в рабочем чате весёлое общение, хотя ребята старше меня минимум лет на восемь.
Как проходит рабочий день программиста-школьника
Я встаю в 7:30, десять минут прихожу в себя, полчаса собираюсь, иду в школу и провожу там шесть часов. В это время стараюсь не думать о работе. Прихожу домой, обедаю и жду daily meeting, который длится полчаса-час. После него сразу сажусь писать код. Когда заканчиваю, коммичу последние изменения и пушу их.
Потом могу погулять часа два, до полуночи, и ложусь спать около часа ночи. Домашние задания делаю уже в школе. Учусь хорошо: стих могу выучить за 20-минутную перемену. Родные во всём меня поддерживают и рады, что у меня получается.
В школе у меня шестидневка, а на работе выходные — суббота и воскресенье. В эти дни я высыпаюсь и отдыхаю на неделю вперёд. Гуляю, смотрю подкасты, айтишные ролики, могу писать пет-проекты. А иногда могу просто лежать и смотреть в потолок, это тоже хорошо помогает перезагрузиться.
Усталость накапливается, но я стараюсь дожить до праздников и отдохнуть. Ещё я придерживаюсь правила, что, когда код не идёт, не нужно себя мучить, а лучше отвлечься — сделать зарядку, потягать гантели, поотжиматься. Если в моём возрасте не заниматься спортом, я буду выглядеть как палочка или, наоборот, — как шарик. Когда силы вновь возвращаются, сажусь дальше работать.
Очень хочу уйти в полноценный отпуск. Когда год отработаю в стартапе, обязательно пойду отдыхать.
Одноклассники и друзья моей работой особо не интересуются: спрашивают, сколько я зарабатываю, иногда просят купить какое-то угощение.
Друзей-коллег у меня пока нет, но я занимаюсь менторингом — помогаю ребятам учить вёрстку, готовиться к собеседованиям на позиции junior-разработчиков. Кому-то из моих учеников 30 и 40+ лет, но есть и ровесники по 15–16 лет. Взрослые ученики спрашивают меня про эйджизм. Сейчас мы с ними находимся в равных условиях: им, как и мне, часто отказывают из-за возраста.
Мне нравится учить других. Люблю поговорку: если вы можете объяснить что-то пятилетнему ребёнку — значит, вы действительно хорошо это знаете.
Планы на ближайшее будущее и советы новичкам
Через месяц мне будет 17 лет. К 19 годам хочу стать сеньором и выйти на заработок в 300 тысяч, а потом дорасти до тимлида. Писать код — не самое весёлое в жизни, общаться с людьми гораздо интереснее.
Ещё одна из ближайших целей — сдать ЕГЭ на 70–80 баллов, поступить в московский вуз, где не будут очень много требовать, чтобы я смог продолжать работать.
Ещё хочу съехаться со своей девушкой, пойти в спортзал и съездить в Испанию. В будущем неплохо бы жить на Филиппинах, потому что для ПМЖ там достаточно 75 тысяч долларов, а ещё мне близка американская культура, которая там распространена.
В моих планах — продвинуться на Vue.js и TypeScript, заняться изучением React, почитать документацию, сделать пет-проект. Также думаю доучить Fastify на бэкенде, чтобы стать полноценным фулстек-разработчиком. А ещё хочется рисовать красивые архитектуры и базы данных. Это моя мечта.
Тем, кто собирается стать программистом или находится в начале пути, советую:
- Учиться, учиться и ещё раз учиться. Молодые люди хорошо впитывают информацию, но если не учиться хотя бы четыре часа в день, ничего не выйдет.
- Практика должна преобладать над теорией. В начале пути я почти не читал документацию — занимаюсь этим сейчас, когда практическая база уже есть.
- Учить английский. Я смотрю ролики на английском и выступления с конференций, читаю статьи.
- Заниматься спортом, иначе потом будут проблемы со здоровьем из-за сидячей работы.
- Не бояться и как можно больше общаться. Задавайте даже глупые вопросы, иначе вы никогда не получите ответы на них. Я задавал вопросы на «Хабре», порой мне там грубо отвечали, но я не обижался.
- Не хвататься за всё подряд. Я начал с Python, и частично это было упущенное время — мне стоило сразу начать с веба. Если нравится разрабатывать под мобильные устройства, скачайте Android Studio и пробуйте. Если не понравится — в любой момент можете переключиться на другой язык. В любом случае это будет опыт, потому что все языки программирования и технологии похожи.