Привет! Меня зовут Жан, мне 17 лет, я senior Java-разработчик в Beeline Казахстан и ученик 11 класса (из 12-ти) Назарбаев Интеллектуальной школы (НИШ) физико-математического направления в Алматы.
Да, всё верно, я ещё учусь в школе.
В статье расскажу свою историю и дам несколько рекомендаций школьникам, которые хотят начать программировать, и их родителям.
Я полюбил компьютеры ещё в детстве. Играм на улице предпочитал игры на своем новом ноутбуке. Любовь любовью, но о программировании я совсем ничего не знал и считал какой-то магией. Всё изменилось, когда я поступил в НИШ в 7 класс. Там я узнал про олимпиадный резерв по информатике, загорелся желанием попасть туда и пошел на отбор.
У меня всегда были проблемы с логикой и логическими заданиями, поэтому я успешно… провалил вступительные испытания. Это не остудило мой пыл, поэтому я попросил учителя взять меня в резерв и заверил, что буду заниматься. Учитель в меня поверил, и так я начал изучать свой первый язык программирования — С++.
Олимпиады по программированию: участвовать или нет?
Соревновательное программирование — это отдельная сфера, распространенная среди школьников и студентов. Задача на олимпиаде по программированию — написать максимально эффективную программу, которая будет решать поставленную задачу. Качество кода, применимость и удобство не играют роли — нужно быстро написать рабочее решение. Занятия тоже были специфическими. Мы решали кучу задач, чтобы набить руку, а потом ехали на олимпиады.
«Боевые» программисты зачастую недолюбливают начинающих разработчиков с олимпиадным бэкграундом. У олимпиадного программирования есть проблема — приоритет скорости над качеством в процессе написания программ для решения задач. Эти ложные ценности переносятся и на работу, поэтому разработчикам приходится отучивать джуниоров-олимпиадников от быстрого написания спагетти-кода.
У меня сразу возникли проблемы с олимпиадами — я ни разу не стал победителем. Отчасти потому что мне с самого начала показалось, что олимпиадное программирование — это не моё. Мне хотелось заниматься практической разработкой, а не решением нереальных задач. Меня бесила неприменимость в реальном мире написанных мной исключительно консольных приложений. В моей голове, к тому же, не укладывалось, как при помощи программирования вообще можно делать приложения и сайты.
Зато позже полученные знания позволили мне заняться робототехникой. Я понял, что можно не просто гонять на олимпиады, а делать что-то для конкурсов айти-проектов.
Так, я впервые написал практический проект по биологии. Создал автоматическую систему капельного орошения комнатных растений на Arduino, с которой участвовал во многих конкурсах по всему Казахстану и получил кучу наград в седьмом классе. С этой системой у меня всё настолько хорошо сложилось, что я получил возможность слетать в Ниццу на двухнедельные курсы за счет школы как перспективный ученик.
От С++ к С#
У меня сложились хорошие отношения с преподавателем информатики. Я хотел чего-то большего от разработки, чем олимпиадное программирование, и попросил у него рекомендаций. Он порекомендовал изучать С# параллельно с бэкенд фреймворком ASP.NET Core.
Около года по вечерам и в выходные я самостоятельно изучал все это дело на metanit.com. Это было скучно и сложно, ведь я еще не совсем понимал применимость моих знаний. Из-за этого изучение языка затянулось. Я шел к цели очень медленно, но верно.
С# — хорошо. Но как на нём заработать?
Летом после 9 класса я начал думать о программировании как о работе, хотя само решение искать работу было импульсивным. В один из вечеров рубился в CS:GO с друзьями и понял, что не хочу проводить так все свои каникулы, поэтому начал смотреть вакансии на HeadHunter.
Оказалось, что вакансий для новичков практически нет — я смог найти для себя штук пять. Так я осознал, что написывая программы на С# можно зарабатывать как минимум 150 000 тенге в месяц (около 400 $). Для меня, простого школьника, в тот момент, это было очень круто, и начало заработка разработчиком стало моей целью.
В ту ночь я откликнулся на несколько вакансий, а на следующее утро меня пригласили на одно собеседование. Мне предлагали неоплачиваемую стажировку в небольшой компании, занимающейся автоматизацией бизнес-процессов, преимущественно интеграциями с CRM-системами.
Собеседование выпало на начало пандемии. У людей зашкаливал уровень паники от коронавируса. Но, несмотря на это, претендентов, которые как и я хотели устроиться бесплатным стажером, было около 50-ти. В день собеседования все эти соискатели собрались в небольшом помещении, куда нас «загнали». Началась эдакая королевская битва, где нас начали оценивать.
Каким-то образом я вышел победителем из этого рубилова. Меня и еще нескольких ребят взяли на трехмесячную неоплачиваемую стажировку. В целом для меня это было шикарным стартом, хоть зачастую на неоплачиваемые стажировки поступать не рекомендуют вообще никогда.
Мне нравилось то, чем я занимался на работе. В основном моей задачей было создание различных ботов. Также я сделал программу для автоматической обработки банковских транзакций. В тот момент банк, процесс которого я настраивал, не предоставлял публичного API для обработки платежей по номеру телефона. Для решения этой проблемы я сделал программу, которая «ловит» все платежи и обрабатывает их.
К концу лета я уже понимал, что продолжать работать бесплатно — не очень хорошая идея, поэтому начал искать оплачиваемую работу. К тому же мне хотелось писать большие программы для большей аудитории, а на стажировке все мои разработки были небольших размеров, в них не было ничего высокотехнологичного.
Проблема поиска работы была в том, что если кандидату 16 лет, работодатель чаще всего не воспринимает его всерьез. Многие думали, что я шучу или уволюсь, если столкнуть с какой-то трудностью на работе. Также на своем примере я понял, что работодатели чаще всего боятся лишней ответственности при работе с несовершеннолетним.
Дайте пару недель, и я выучу Java
Я учил С# и не знал других языков программирования. Но в конце стажировки мне так хотелось найти интересную и оплачиваемую работу, что я откликался на все подряд.
Как уже писал, приглашений было совсем мало из-за моего возраста. Суммарно я отправил около пары сотен откликов на вакансии разработчика в HeadHunter. Найти работу C#-разработчиком не получалось, но меня пригласили на вакансию Java-разработчика. Я знал, что языки очень похожи, но был на стороне .NET.
Когда пришел на собеседование, пришлось перейти на сторону зла. Я сказал, что за пару недель выучу язык Java до уровня достаточного для решения реальных задач. Уверенность сыграла мне на руку, потому что 1 сентября я подписал трудовой договор и мне дали две недели на изучение языка. Таким образом, несмотря на трудности, я устроился на новую оплачиваемую работу, с оффером на заветные 150 000 тенге. Так как весь мир активно переходил на удаленку, я решил, что смогу совмещать работу и учебу в 10 классе.
Главной задачей было изучить синтаксис и базовые нюансы Java за этот срок. Это не было сверхсложной задачей. Задачей посложнее для меня стало знакомство с новым фреймворком Cuba Platform. К счастью, в компании у меня был ментор, и он достаточно доходчиво объяснял непонятные вещи и помогал с моими первыми рабочими задачами.
Из джуна в мидла за полтора года
Компания, в которой я работал была классной. В ней ощущалась семейная обстановка. У меня были опытные коллеги, которые помогали получать новые знания, поэтому за год-полтора я довольно хорошо вырос.
Со мной работали хорошие люди, но, к сожалению, многие опытные ребята начали уходить. Через время я понял, что и мое бурное развитие остановилось, и я начал касаться своего потолка. Позже мой главный идейный наставник сообщил, что решил покинуть компанию. В этот момент я тоже начал развивать профиль в LinkedIn, потихоньку приходили предложения о работе. Так я принял решение об уходе. Для меня важно расти и развиваться, иначе интерес к процессу проходит и начинается стагнация и выгорание.
Над решением уходить я думал немного, как и над многими критическими решениями в моей жизни. Почти все они сделали жизнь круче и интереснее. Поэтому в последнее время я начал понимать, что большинство крутых решений в моей жизни были импульсивными.
Из семейной компании в корпорацию
В один из дней мне написала рекрутер из Beeline Казахстан, и меня очень заинтересовала позиция разработчика здесь. Beeline — лидирующий мобильный оператор в Казахстане. К тому же я узнал, что не так давно компания взяла фокус на развитие собственного IT.
Поэтому перед собеседованием изучил информацию на сайтах и спросил у знакомого senior-разработчика из Beeline, как там вообще. Мы пообщались, и я подумал: «Блин, неплохая компания, хотел бы там поработать», поэтому был «заряжен» на собеседование.
В итоге успешно прошел два этапа собеседования — разговор с HR и техническое интервью — и вскоре получил оффер на позицию middle+ Java-разработчика. Давнее знание .NET также пригодилось, иногда сервисы пишу на С#.
Работа и учеба: как я всё успеваю
У меня бешеный распорядок дня, но хорошо, что сейчас можно работать на удаленке. Во время коронавируса я учился удаленно, поэтому мог посвятить работе больше времени. Это помогло мне вырасти.
Сейчас я учусь офлайн, но совмещать стало проще — самый сложный этап становления пройден.
Уроки начинаются в 8 утра и длятся до трех-четырех. В середине дня я могу освободиться на час-полтора, потому что могу не ходить на некоторые уроки. Например, на информатику. В этот момент я обычно решаю срочные вопросы и закрываю горящие таски..
После школы минут за 15 прихожу домой, обедаю и сажусь кодить до 17:00. В это время у нас обычно проходит дейли-митинг, где команда разработки обсуждает текущую работу и планирует задачи для решения. После дейли я немного отдыхаю, а потом работаю до глубокой ночи.
Плюс учебы в НИШе — нам задают мало домашних заданий. И, если честно, чаще всего я их вообще не делаю. В большинстве случаев я делаю только срочную домашку. Иногда меня ругают учителя, но чем-то нужно жертвовать. Все знают, что я работаю, и многие учителя меня понимают (за что им большое спасибо).
Спать ложусь поздно, как минимум в 12. Сплю, соответственно, мало. В среднем — 6–7 часов, но стараюсь высыпаться по выходным. Темп жутковатый, но меня он зажигает.
Выбери работу по душе, и тебе не придется работать ни одного дня в жизни
Сейчас я согласен с этой цитатой Конфуция, и она полностью описывает мою жизнь. Мне нравится заниматься программированием и видеть свой рост. Пока я расту в области, которая мне нравится, я не испытываю выгорания и чувствую себя хорошо. Когда у меня происходит стагнация, я чувствую, что становится тяжеловато. И это сигнал, что нужно что-то менять.
Также я стараюсь не работать в выходные, а посвящать их хобби. Зимой занимался сноубордом, это помогает отлично отдохнуть в выходные и ворваться в новую неделю с новыми силами. Для теплого сезона ищу что-то интересное, хочу попробовать MTB.
Я был первым среди одноклассников, кто начал работать. Но сейчас вижу, что многие тоже хотят пойти в программирование. Двоим одноклассникам я уже помог с этим. Я чаще всего прививаю любовь к IT своим друзьям, хотя делаю это не специально. Мне очень нравится то, чем я занимаюсь, поэтому зачастую помогаю тем, кто хочет войти в IT.
Мне комфортно общаться с коллегами несмотря на то, что они всегда старше. Мне кажется, что возраст не важен — важен сам человек, его внутренний мир и ценности. В Beeline работают классные люди, которые мотивируют развиваться.
Рекомендации школьникам, которые хотят стать программистами
Во-первых, нет правильного пути
Необязательно идти по тому пути, который предпочитают все: школа — университет — работа. Особенно в мире технологий. Но выбирать мой сценарий, потому что он якобы единственно правильный, тоже неверно. Важно мыслить критически, чтобы осознанно выбирать свой путь.
Вторая рекомендация — сначала хорошо задуматься, нужно ли тебе это
Я видел много ребят, которые хотят работать программистом, купаться в деньгах и в ус не дуть, но ничего для этого не делают. Правда в том, что вам в любом случае придется работать и работать много. Программирование — не самая простая работа, нужно хорошо задуматься и оценить свое желание и интерес.
Третья рекомендация — имей цель
На своем примере я понял, что без нормальной практики учить программирование невыносимо скучно. Поэтому я бы порекомендовал сразу создавать что-то практическое. Пойти на стажировку, запилить свой проект, придумать свой сайт. Важно практиковаться на чем-то, что тебе интересно, а не тупо выполнять задания из учебника.
Для меня это было главной ошибкой в начале пути. Хоть я и учил С# год, когда пришел на стажировку я понял, что ничего не знаю. То есть только через год ко мне пришло это осознание и всё из-за растянутого обучения. Я не делал ничего практического, у меня не было конкретной цели. Соответственно я ленился изучать язык, поэтому потратил кучу времени на учебу.
Рекомендации родителям школьников
Мне повезло, так как у меня не было проблем с родителями. К счастью, мама меня во всем поддерживает, и я хочу сказать, что это очень важно.
Без поддержки я скорее всего все равно пошел бы программировать, но это было бы в разы сложнее. Возможно, я бы пошел в программирование позже, а работу начал искать только после школы (а то и после вуза). Но мне повезло.
Поэтому я хочу сказать родителям — поддерживайте своих детей в их интересах. Даже если вам кажется, что им еще рано. На самом деле, никогда не рано. Если человек хочет делать что-то практическое уже сейчас, дайте ему эту возможность.
Иногда мама видит, что я очень устаю и задумывается о смысле работы для меня. Возникает вопрос, нужно ли все это такой ценой? Я думаю — да!
Нужно слушать свое сердце. Для меня работа — это не только способ заработка,это источник моей жизненной энергии,поэтому, несмотря на моменты усталости, я чувствую себя счастливым.