Когда и чем меня заинтересовало программирование
С лет 14 я начал интересоваться программированием. Сначала это были дополнительные занятия по информатике в школе, включавшие решение олимпиадных задач на языке Pascal. Затем я делал домашние задания для старшеклассников за деньги, это был мой первый заработок.
Потом, когда мне в 15 лет купили компьютер, я сначала начал играть в игрушки взахлеб, и программирование отошло на второй план. Но спустя пару месяцев я уже наигрался и начал заниматься и дома.
Благодаря районной локальной сети познакомился с людьми, которые занимались программированием и зарабатывали на этом. Они мне скинули много уроков по разработке веб-сайтов (в то время по медленному модему найти/скачать нужную информацию было крайне сложно). Я начал изучать HTML, CSS, PHP.
Немного о первом опыте
Свой первый сайт я сделал за 50уе, для меня это были большие деньги. Я потратил где-то месяц на его разработку, но заказчик остался доволен (когда сейчас смотрю на эту работу, мне становится очень стыдно:)).
Параллельно я участвовал в олимпиадах и конференциях от школы по программированию. Я всегда мечтал стать программистом; как сказали мои родители, они с детства мне это прививали (я не помню такого).
Находя все новых и новых заказчиков для разработки простых сайтов, я начал делать уже и более сложные приложения на PHP. Например, сделал сайт и crm-систему для ведения курсовых и дипломных работ под заказ. Система отображала заказы, исполнителей, сроки, стоимость, комментарии и статусы. Честно говоря, перед началом работы я не был уверен, что я это сделаю, но сделал все в срок, и все остались довольны. С тех пор я понял, что не нужно браться за простую работу; я хочу все время делать для себя челлендж.
Мое образование и поиск работы
В 2010 я поступил в Белорусский Государственный Университет Информатики и Радиоэлектроники на специальность Программное Обеспечение Информационных Технологий. Чувствуя в себе уверенность после поступления, я захотел найти работу по специальности, но тут меня ждал сюрприз…
Первый месяц лета до поступления я пытался найти работу, но результат был нулевой. Пришлось работать охранником на стройке по ночам. Это когда ты приходишь к 16:00 и уходишь в 8 утра, а к 16 тебе уже опять на работу. Проработав месяц, я понял, что это не мое.
Прошел год обучения в университете, можно сказать, не совсем полезный, т.к. 90% предметов были гуманитарные. Я опять пробовал найти себе работу, хотел пойти на курсы PHP в компании с последующим трудоустройством, но меня не брали после собеседований. Тогда я уже пошел на курсы QA, но меня опять же не брали. Почувствовав некоторую безысходность, пошел работать грузчиком, а потом официантом. Проработав опять же месяц, я сделал окончательный вывод, что физическая работа — не моя, я не хочу так зарабатывать. Это стало толчком к самостоятельной подготовке и к решительным действиям.
Я начал читать статьи, учебники, писать самостоятельно приложения. Начал проявлять активность в конференциях в университете, получал дипломы 3 степени на республиканских соревнованиях, чтобы привлечь к себе какое-то внимание и возможно получить работу. Но нет, я бежал впереди поезда, я был слишком молод.
И тут я понял, что это было не зря
Когда после второго курса я опубликовал свое резюме и на него откликнулись, моему восторгу не было предела. Я съездил на собеседование, и мне предложили удаленную работу. Я начал разрабатывать модули и интернет-магазины на платформе CS-Cart.
Пришлось довольно быстро вникать в технологии, которые я не знал до этого (Smarty, JS, MVC в рамках CMS). Через 2 месяца я уже начал приносить вэлью компании и делать необходимые модули самостоятельно.
Так я проработал удаленно 3 года. Под конец мне это уже надоело, выходили все новые и новые версии движка, нужно было каждый раз адаптировать модули под них, работа стала однообразной. В то время я как раз был на последнем курсе университета и надо было двигаться куда-то дальше.
Есть ли жизнь после защиты диплома и первая официальная работа
Защитив диплом, я начал опять искать работу, на этот раз как JavaScript-разработчик, потому что хотел развиваться в этом направлении, а на текущем месте возможности не было. Получив отказ от десятка компаний, я не расстроился, а просто сделал выводы. После такого количества собеседований я узнал много нового, узнал, что нужно для собеседований, и начал это изучать. Через пару недель я прошел собеседование в одну из компаний, которая согласилась быстро поднять мой уровень JS, дав мне ментора.
Когда я пришел на работу в офис, мне сразу дали задание на самостоятельную разработку иерархического дерева папок на чистом JS. Глаза у меня были по 5 копеек, но я же люблю челленджи. После изучения гугла в течение двух дней и не написав почти ни одной строчки, я придумал решение и смог реализовать его. Отправив на код ревью, я конечно же получил по полной, так началась моя карьера полноценного разработчика 🙂
Приходилось каждый день читать статьи, чтоб прокачаться.
Почему важно все время обучаться и прокачивать свои знания
После двух месяцев менторинга и прокачки мне начали давать задачи на самостоятельное выполнение. В таком интенсивном режиме я проработал год. При переводе на новый проект встал вопрос выбора: бэкенд или фронтенд. Бэкенд — Laravel, а фронтенд — Backbone.js/Marionette.js (то чувство, когда не знаешь ни того, ни другого, а только Vanilla JS и чистый PHP).
Я выбрал фронтенд, и с этого начался мой марафон. Это были 3 месяца без выходных и с ежедневным овертаймом, чтоб разобраться в фреймворке и закончить проект качественно и в сроки.
Затем был проект для full stack, Node.js + Backbone.js, я с радостью согласился, т.к хотел научиться работать с Node.js.
И опять же началось плотное изучение материалов по ноде, но на этот раз все было гораздо проще, поскольку у меня уже был опыт работы с JS-стеком и понимать нюансы было легче. Так я пробыл full stack разработчиком на протяжении года, решая разного рода задачи, особенно связанные с перформансом обработки данных (так как это была общая CRM-система для автошкол).
Не стоит забывать о реальной практике
На волне популярности React.js я стал интересоваться и им. Я попросил о переводе на проект на React, но таких проектов было мало на тот момент, и я начал самостоятельное изучение. Дождавшись места на проекте, я столкнулся с реальностью и понял, что примеры и жизнь это разные вещи. У меня не получалось нормально работать с React + Redux (сейчас даже смешно от этого). Прокачавшись в этой технологии, я понял, что от компании на тот момент я получил все, что мог для роста, и нужно было расти дальше.
Первый стартап или как потерять бизнес и жить дальше
Параллельно с основной работой мы с моим компаньоном делали сайты и интернет-магазины по фрилансу, в будущем мы хотели открыть свою web-студию.
Достигнув некоторого максимума, я хотел масштабироваться. Поэтому пошел на курсы по SMM, чтоб узнать, как найти больше клиентов и масштабировать бизнес. После прохождения очень интенсивного курса у меня возникла идея стартапа.
На тот момент хайпом были динамические обложки для групп VK. Недолго думая, я проанализировал рынок конкурентов, и их оказалось всего трое. Собрав команду из 3 человек, мы начали на коленке писать прототип, но конкуренты нас опережали по функционалу. Пришлось переманивать клиентов у конкурентов, выкатив бесплатную версию, пока мы допиливали новые фичи. Догнав конкурентов, мы уже имели базу клиентов и начали монетизировать наш сервис. Но останавливаться было нельзя.
Мы продолжали разработку, но, спустя год, сил и времени у некоторых членов команды не осталось, перегорели. Я один не смог вытащить все, и сервис пришлось закрыть. Это был мой первый позитивный и негативный опыт.
Новая компания, новые возможности
Параллельно со стартапом я перешел в другую компанию в медиа домен. У них были интересные проекты на React.js, React Native, видео плееры, стриминговые платформы: возможностей для роста была масса. Я начал усердно изучать уже React Native и работу с видео, поскольку это основное направление компании. После успешного завершения проекта меня поставили на проект по разработке видео портала для Smart TV и Web. Тут опять же был получен опыт разработки с нуля архитектуры проекта для Web и разработки приложений для LG и SmartTV.
Спустя 4 месяца разработки для Web и чтения статей по разработке арихитектуры, я понял, какие ошибки допустил при проектировании, и сделал для себя выводы, чтоб не поступать так в будущем.
Разработка под SmartTV стала для меня колоссальным опытом работы с оптимизацией приложения, вплоть до хранения и отображения картинок, т.к. память на телевизоре ограничена.
Довелось сделать SSR (Server side rendering), с которым в последующем выступал на конференции The Rolling Scopes и на митапе в Латвии. Выступления на конференциях в роли спикера позволили пообщаться с разработчиками из Facebook, Uber, Google, Mozilla, обменяться опытом и узнать о жизни разработчиков в разных странах.
Потом был проект чистый бэкенд с микросервисной архитектурой и новым для меня фреймворком Nest.js, TypeScript, Kubernetes для парсинга использования инфраструктуры AWS. Опять же учился и изучал для себя новое за короткое время.
Прокачка софт скилов
В какой-то момент я захотел прокачать себя в софт скиллс. Для этого я начал участвовать в хакатонах на разные тематики, даже на тех, в которых практически не разбирался (например, по блокчейну).
Практически два месяца я каждые выходные участвовал в хакатонах, питчил идеи и показывал прототипы, тесно общался с менторами, что в дальнейшем позволило мне немного раскрепоститься, получить известность в хакатон-комьюнити. Если люди меня не видели на очередном хакатоне, они начинали мне писать в Facebook и спрашивать все ли хорошо 🙂
Такая активность не могла пройти незамеченной, и меня пригласили стать техническим ментором и судьей на международном хакатоне #hack4history.
Опять же, это был челлендж: помочь командам за отведенные 10-15 минут советами, как им лучше сделать приложение, какие технологии использовать, как выступать на питче.
Нужны ли алгоритмы?
Начал изучать алгоритмы и структуры данных заново, после университета не помнил уже деталей, да и думал, зачем оно мне надо. Но после мой мозг начал думать совершенно по-другому. На работе меня начали привлекать для решения проблем с перформансом, оптимизацией высоконагруженных приложений, проводить аудит проектов и давать рекомендации по улучшению. Моя жизнь перевернулась и заиграла новыми красками. Сейчас каждая задача это для меня вызов, а можно ли лучше?
Выводы:
Учитесь учитесь и еще раз учитесь.
Без самостоятельного изучения вы не вырастете в скилованного разработчика, а просто будете рядовым, неприметным разрабом.
Не бойтесь сложных задач и вызовов для себя, это всегда рост, даже в случае провала.
Выступление на конференциях и хакатонах прокачает ваши презентационные навыки, ну и если вы, как и я, скорее интроверт, то уберет эту неловкость в общении. Дополнительным плюсом станет общение с разработчиками из топовых компаний.
Учите алгоритмы, мир не будет прежним.
Автор статьи — Тишко Ян, Senior Software Engineer в компании Oxagile (профиль на Facebook и LinkedIn). Разрабатывает крупные стриминговые видео-платформы (OTT) для Web и SmartTv для многомиллионной аудитории. Занимается разработкой и проектированием микросервисной архитектуры для обработки видео с помощью Machine learning, видеоредакторов с использованием Machine learning, оптимизирует приложения и проводит аудиты проектов.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]
Круто! Автор молодец, что постоянно старается расти и развиваться. Но к сожалению не всегда есть возможность самосовершенствоваться. Довольно часто тебя на работе сильно загружают рутиной и уже не остаётся времени на что то ещё.
Спасибо 🙂
Возможность есть всегда, главное желание)
Сейчас мой день начинается с 7 утра, т.к после работы я понимаю, что сил уже нет на это, 2 часа перед работой — это самообучение (решение задач на leetcode, чтение статей).
С утра продуктивность максимально эффективная получается
Это пока спина не болит, потом в 7 утра начинаешь вставать, чтобы в бассейн сходить)