Как без высшего образования сделать карьеру в ІТ — опыт 23-летнего тимлида
Меня зовут Влад Пронский, мне 23, и я руковожу отделом разработки в Lucky Labs. В компанию пришел в январе
Еще в
Так начался мой путь самоучки в IТ. Путь, признаюсь, не самый легкий, но вполне преодолимый. Пришлось много работать над собой и многому учиться: отсутствие «университетских знаний» компенсировал самообразованием — курсы, мастер-классы, книги, репетиторы...
За это время накопилось достаточно опыта и профессионального багажа, которые могут быть полезны начинающим разработчикам. Вот решил поделиться лайфхаками, как можно переехать из небольшого города в столицу и стартовать в ІТ без высшего образования.
В 13 я получил свой первый опыт reverse engineering, в 14 изучил языки HTML, JavaScript и PHP, в 15 железно знал, что стану программистом.
Главная ценность подросткового возраста — мы не боимся экспериментировать, окунаться с головой в неизвестность, не боимся обжечься, если что-то пойдет не так. В этом возрасте море по колено, и уже можно использовать свои будни эффективно.
Преимущества раннего программирования
Учишься не бояться своих желаний
У меня все началось с безумной одержимости игрой S.T.A.L.K.E.R. На форуме познакомился с ребятами, которые делали модификации для этой игры, я напросился к ним в команду. Что нужно делать, понимал смутно. Но меня взяли. Тогда я понял, что нет ничего невозможного. Я менял текстуры оружия в игре, и так в 13 лет я получил свой первый опыт reverse engineering.
Борешься с сомнениями, становишься решительным
В 14 я создал свой первый игровой сайт. Для этого пришлось посещать компьютерные курсы, где я изучил HTML, JavaScript и PHP. Мой первый проект — сайт, на который можно загружать картинки и голосовать за них. Поначалу много сомневался, кидался из крайности в крайность в поиске оптимального решения вопроса. Вечные сомнения заставляют перепробовать разные варианты, вынуждают докапываться до истины. Решительность приходит в тот момент, когда не остается места для новых попыток, и ты готов сделать четкий выбор (даже если этот выбор — бросить проект, так как «не твое»). Зато спустя годы все видится не в таком страшном свете — проекты выглядят вполне на уровне.
Начинаешь зарабатывать
В программировании главное — начать. Дальше проекты сыпятся с разных сторон. Когда учился в колледже на компьютерном факультете, писал различные несложные программы, любил все автоматизировать. Начали появляться заказы, а с ними — и первые деньги. Тратил в основном на обучение (и вам рекомендую!), так как ощущал «голод знаний». Посещал курсы и мастер-классы, где не только получал массу полезной информации, но и расширял свой круг думающих людей. С первыми деньгами также появляется независимость от родителей, начинаешь задаваться таким вопросом, как финансовая грамотность.
Обучение нон-стоп
На фрилансе я делал HTML-верстку, разрабатывал сайты под ключ, занимался интеграцией различных CRM. Не во всех заданиях разбирался основательно, и это вынуждало меня искать и изучать дополнительную информацию в разных источниках. Такой подход учит быстро искать нужную информацию и разбираться в ней.
Важно не останавливаться, не лениться и впитывать максимум знаний. Параллельно я изучал другие языки программирования — Ruby и C++. Решал олимпиадные задачки на сайтах, выступал на топкодере. Обратите внимание на усиление алгоритмических навыков. Они позволяют браться за решение различных задач.
Правила первого собеседования
Мое первое собеседование в жизни в 2014 году (в компанию Lucky Labs, где работаю по сей день) было по скайпу. Готовился к нему тщательно, благо, что интернет завален статьями на эту тему.
Я понял, что на собеседовании важно быть честным, не бояться признавать, что ты чего-то еще не знаешь, но важно быть готовым идти на диалог и обсуждать задачу. Это ценится. Все понимают, что ты еще молодой специалист и многих шишек не набил, поэтому на первом собеседовании, как правило, оценивают не технические навыки, а способность слушать, обсуждать, быть готовым учиться.
Хорошим ответом на вопрос «как сделать что-то, чего вы не знаете?» будет вспомнить книжку или ресурс, где можно найти решение этой задачи. Работа программиста обычно подразумевает «помнить, где и как найти решение», чем само решение непосредственно.
Лайфхак. Обычно на собеседовании просят написать какой-то алгоритм или решить несложную задачу. Не стоит заморачиваться над кодом, если чувствуете, что теряетесь. Для собеседования в офисе нормально будет расписать алгоритм решения на псевдоязыке. Во время скайп-собеседования я просто открыл реализацию нужного алгоритма в «Википедии» на втором мониторе и переписывал его. А вообще для хорошего работодателя важно, чтобы вы могли оперативно сориентироваться в ситуации и найти нужное решение, а не знали все наизусть.
Что важно в первый рабочий день
Не паниковать и не бояться ошибиться
Важно не дать волнению «задавить» свои знания. В первый день в Lucky Labs мне поручили разработать несложный компонент для фронтенда. Я тогда еще не понимал, за сколько времени нормально сделать этот кусок работы, поэтому сильно волновался. Свой первый коммит я сделал уже вечером первого дня, правда, с ошибкой. Так я начал знакомиться с корпоративной культурой: таск трекеры, код ревью, тестирование, релизы...
Не бояться проявлять инициативу
Предлагайте свои решения. Они могут быть не всегда правильными, а могут заставить посмотреть на вопрос с другого ракурса, которого раньше никто не замечал. В любом случае в выигрыше будут все — и вы, и команда. А со временем коллеги сами начнут обращаться к вам за помощью с просьбой подсказать решение или проверить их.
Улыбаться и общаться
С первых дней стоит позаботиться об отношениях с коллегами. Вы вместе будете проводить минимум по 8 часов в сутки, поэтому должно быть комфортно. Так вас запомнят как общительного и открытого человека и будут приглашать на разные события и после работы. В будущем эти связи пригодятся. Нет лучшего способа начать общение, чем с улыбки.
Книжная полка программиста
Книг для программиста не бывает много. Помню, читал все подряд и даже инициировал создание корпоративной библиотеки в Lucky Labs.
Мне понравились «Типы в языках программирования» Бенджамина Пирса, «JavaScript. The Good Parts» Дугласа Крокфорда и «Паттерны проектирования» от Банды Четырех. А книги «С++ за 21 день» Джесса Либерти или «Язык программирования С++» Страуструпа будут очень кстати для понимания того, как низкоуровнево работают языки программирования, что такое стек, куча, как работает память и т. п.
Также советую подкасты. Для меня самые крутые — Radio-T и DevZen, которые дали мне понимание того, что программирование — это не только код в IDE и коммиты. Программирование — это понять проблему и убедиться, что она действительно есть, выбрать правильные инструменты, написать код, проверить его, задеплоить и сообщить всем, для кого эта задача была критична. Со мной многие могут поспорить, что это не компетенции программиста, но именно желание брать ответственность немного шире позволит мне в будущем стать руководителем отдела.
Сейчас в основном пользуюсь аудиокнигами, которые слушаю везде: на тренировке в зале, по дороге на работу, на прогулке...
Лайфхаки первого управленческого опыта
Моя первая команда состояла из трех технических писателей, с которыми мы создавали документацию по интеграции нашего продукта. За эти несколько месяцев общей работы я извлек парочку полезных уроков:
Нужно постоянно расширять компетенции
Приходилось много читать, учить вещи, которые нужны для работы в компании сейчас и которые никто не может подсказать из коллег. Например, для решения задачи нужны были знания математической статистики — и я ходил к репетитору, чтобы заполнить этот пробел.
Не сжигать время в спорах
В командной работе главное — конечная цель и конструктивный подход к ее достижению. Нужно снизить порог «личной важности», не доказывать свою правоту и дать возможность высказаться каждому. По истине волшебным считаю умение уступать, оно порой творит чудеса.
Просите помощь у старших коллег
Книги книгами, а реальный опыт и общение никто не отменял. Тем более люди любят, когда к ним обращаются за советом.
Тимлид по умолчанию
Новое серверное решение, которые мы написали в стиле микросервисов, изначально планировалось как замена старому решению, однако в конечном результате выросло в отдельный продукт. В связи с этим в Lucky Labs появилась необходимость создавать новый отдел, который будет заниматься сугубо этим ПО. Так я перешел на уровень тимлида и начал формировать уже свою команду для поддержания и дальнейшего развития этого продукта. Через год в моей команде работало 10 крутых ребят.
В этот период я понял:
1. Работа тимлида — одна из самых сложных в IT по причине многовекторности задач. Тебе нужно хорошо разбираться в продукте, понимать что и как сделать, разбирать и приоритизировать задачи, поддерживать настрой команды, стараться развивать коллег.
2. Не бояться быть перфекционистом. Это качество помогает выжать максимально возможный результат и выйти на новый уровень в работе.
3. Часть работы, которую не знаешь, лучше отдать на аутсорс, чем самому копаться в проблематике.
4. Работать последовательно. Перед тем как что-то делать нужно хорошо подумать. На примере с программированием: сначала нужно нарисовать архитектуру, понять возможные ошибки, исправить их и только после приступать к реализации.
5. Безвозмездно трудиться.
Считаю это важным личностным качеством — безвозмездно стараться делать мир вокруг себя лучше. В будущем это всегда возвращается!
6. Важно постоянно заботиться о своих отношениях с коллегами Никогда не знаешь, в какую сторону сегодняшняя ситуация обернется в будущем. Чаще помогайте людям из альтруистических соображений.
7. Отдыхать и больше проводить времени с любимыми людьми.
Без отдыха вы просто устанете, у вас «сядут батарейки», а работа перестанет приносить удовольствие. Кто, как не родные и близкие, может по-настоящему искренне радоваться вашим достижениям?
Оглядываясь назад сегодня, понимаю: практика, саморазвитие и всесторонний подход к программированию сыграли в моей истории важную роль. Плюс желание создать что-то новое, это всегда вдохновляет. Но самое важное (даже на работе!) — это человеческие отношения. Поэтому отдельно хочу сказать спасибо своей команде, ребятам, с которыми мы делаем общее дело и которые всегда готовы поддержать!