Здравствуйте! Сегодня я хочу поведать вам свой путь становления как разработчика. Сейчас, на волне множества курсов и вездесущей рекламы «как войти в IT», много людей устремилось в эту бескрайнюю, интересную и очень непростую область. Я написал эту историю для них и для себя. Как некоторый взгляд в прошлое. На всё, что было сделано и чего это стоило. Кому интересно, прошу под кат.
Сперва немного о себе. Сейчас я работаю главным инженером по разработке в компании ДомКлик и отвечаю за создание внутренней BI-системы. Но, как вы поняли из заголовка статьи, так было далеко не всегда.
Глава первая. Откуда есть пошла земля русская
Несмотря на профессию телохранителя, которой я отдал много лет жизни, я не был совсем далёк от IT. Ещё в школе я программировал дома на Delphi, писал калькуляторы и прочие несложные вещи. Постоянно обсуждал с одноклассниками последние новинки игрового железа, мог сам переустановить винду, настроить дома интернет и так далее. А после школы я учился в МИЭМ (ныне вошел в состав ВШЭ) по специальности «Наноматериалы», где благополучно закончил три семестра и понял, что с выбором профессии не угадал. И тут сработал один из моих жизненных принципов, во многом благодаря которому я в итоге и стал IT-инженером.
Если тебе что-то не нравится, в твоих силах что-то поменять. Ты же не дерево, сидеть всю жизнь на одном месте.
Так мне с детства говорила мама.
Я ушел из института, хотя декан отговаривал. У меня была хорошая успеваемость. «Зачем тебе уходить?» — недоумевал он.
И пошел в армию. Почему в армию, а не перевёлся на другую специальность? В тот момент я ещё не определился куда я бы хотел пойти и военной кафедры в институте не было. Служить бы все равно пришлось, ведь «косить» от армии я все равно не собирался. Это был отдельный период моей жизни, достойный своего рассказа. А когда он прошёл, передо мной встал выбор, что же делать дальше. Я хотел пойти учиться на вечернее в свой же родной институт, но уже на что-то связанное с вебом. И днём найти подработку. Но судьба распорядилась иначе, и я стал телохранителем. С физо у меня всегда было всё в порядке, с армии осталась отличная характеристика, и меня позвали работать на хорошие по тем временам деньги в сферу охраны. Я долго думал над этим непростым решением, но в итоге согласился. Сыграло немаловажную роль мое желание поскорее стать финансово независимым и не отягощать своих родителей поддержкой меня в этом плане.
Тут будет небольшой таймлапс и мы сразу переместимся на годы вперёд, когда я решил снова сделать крутой поворот в своей жизни.
Глава вторая. Перемен требуют наши сердца
Шли годы, я рос на работе. Рос оклад. Я получил высшее образование по специальности «Психология». В тот момент мне казалось, что это будет наиболее полезно для моей работы и личного развития. Но удовлетворения от жизни не прибавлялось. Сама суть каждодневного труда вгоняла меня во всё большее уныние. При накоплении критической массы внутри снова щёлкнул тумблер и я решил, что нужно что-то менять.
Совет первый: будьте рациональны. Всегда старайтесь подготовить финансовую подушку безопасности на время перемен. Если можете это сделать — сделайте. Даже если не просто, постарайтесь. Не бегите с шашкой наголо, не подумав про тыл. Но и не затягивайте. «Ещё чуть-чуть подкоплю и вот потом начну» может стать вечной мантрой, которая похоронит все ваши начинания в зародыше. Не давайте этому стать источником вашей прокрастинации.
Подушку безопасности я на тот момент подготовил и начал искать, куда зовёт меня сердце и разум. Признаюсь честно, я не сразу посмотрел в сторону IT. Точнее, я смотрел не только на IT. Но в конечном итоге я сделал свой выбор и снова вернулся к желанию пойти в веб. Одним из факторов повлиявших на мой выбор стал опыт создания и поддержки сайта на WordPress. Однажды ко мне пришли знакомые у которых открылся новый салон красоты и попросили меня сделать для него небольшой сайт. Я согласился и в свободное от работы занимался им, что дало мне возможность немного прикоснуться к этой сфере. Не последнюю роль сыграло в моем выборе и регулярное чтение научно-популярной литературы, статей и новостей из мира технологий. Мне постоянно казалось, что где-то там люди создают будущее, творят своими руками наш удивительный новый мир. С полётами на Марс, искусственным интеллектом, современным интернетом и квантовыми вычислениями. Пока я остаюсь в стороне от всего этого. В первую очередь мне хотелось стать одним из них.
Совет второй: голая финансовая мотивация не должна быть вашим единственным мотиватором. Деньги приедаются, к уровню жизни рано или поздно привыкаешь. Если каждый день по восемь часов минимум заставлять себя заниматься разработкой, когда нет внутренней любви к этому самому процессу разработки, то можно очень быстро выгореть дотла. Тут можете погуглить другой сорт статей «Из программистов в садовники. Почему я ушёл из IT». Деньги важны и нужны. Они дают человеку возможности. Но если можете, постарайтесь не ставить только их во главу угла, делая свой выбор.
Я начал искать пути входа в индустрию. И, естественно, устремил свой взор на разного рода курсы. Без профильного образования с чего-то нужно было начинать. Я выбрал контору (называть не буду, дабы не делать рекламу) и программу профессиональной переподготовки для лиц с высшим образованием с выдачей соответствующего диплома. Не гособразца, их отменили. Но уже что-то. На безрыбье и рак рыба.
Отдельно расскажу про само обучение. Формат я выбрал очный. Из всей серии курсов только один у меня был в режиме реального времени, когда преподаватель читает всё лично аудитории. Как все мы привыкли. А все остальные курсы были для меня в новом и необычном формате. Ты приходишь в аудиторию, там стоят столы и по два монитора на каждом. На одном ты смотришь запись лекции, на втором делаешь задания. Всё время занятия с вами находится преподаватель, который ведёт курс, транслируемый в записи. В любой момент ты можешь поставить на паузу и пойти к нему, чтобы доставать любыми вопросами. При этом записи доступны дома, можно их пересматривать сколько угодно во время обучения и ещё какое-то время после. В общем, неожиданно для себя я нашёл такой формат невероятно удобным. Если ты что-то не понял, то можешь хоть 50 раз переслушать непонятную часть. При этом ты также можешь намного больше общаться непосредственно с преподавателем. В разы больше, чем когда он начитывает тебе всё в живую. Отдельно хочу сказать, что мне попался хороший преподаватель, который реально долгие годы преподавал в ВУЗе и занимался прикладной разработкой. Его было интересно слушать, и на вопросы он всегда отвечал подробно и развёрнуто, как и полагается хорошему преподавателю.
Обучение длилось долгие месяцы. И тут начинается самое интересное.
Совет третий: берите всё, до чего сможете дотянуться. Любые знания, в любом формате. Поглощайте их жадно и с упоением, словно не можете утолить жажду в пустыне. Читайте одно и то же из разных источников разными словами снова, снова и снова. Пока это не начнёт глубоко откладываться в вашу подкорку. И помните про совет номер два. Если вами движет исключительно желание заработать денег, вам будет очень и очень сложно разжечь в себе этот неутолимый огонь внутри. А свет этого огня будет очень нужен вам не только в процессе обучения в самом начале пути, но и спустя долгие годы работы. Когда снова и снова вам будет нужно изучать что-то новое в выбранном вами направлении.
Глава третья. Вгрызаемся в гранит науки
Ты востребован настолько, насколько востребованы твои знания.
Так мне с детства говорила мама.
Совет четвертый: вкладывай в себя. Постоянно. В мире есть не так много путей к успеху. Родиться с золотой ложкой во рту, иметь связи, которые тебя будут тянуть всю жизнь, или твой тяжелый и упорный труд. Всегда помни — ты товар на рынке труда. И цена товара зависит от его качества. А твоим качеством являются твои знания и компетенции.
С началом обучения мои будни и выходные стали проходить как один. Всё свободное время я учился. Я ехал на работу и читал, смотрел ролики на ютубе, проходил все приложения на тему IT, которые только мог скачать или найти в интернете. После работы я снова учился, учился и ещё раз учился. До глубокой ночи. Одно и тоже в разных формах я перечитывал бесчисленное количество раз. Пересматривал в десятках, а то и сотнях роликах. В том числе и на английском. И писал код. Делая все задания своего уровня, которые я мог найти.
Совет пятый: английский — твой друг. Если не знаешь его, начинай учить и не останавливайся. Документация, доклады, лекции, статьи и книги. Огромное количество полезной и актуальной информации написано и рассказано на этом языке.
Сам я знал английский достаточно хорошо ещё со школы. Спасибо родителям, отдавшим меня и брата к чудесной преподавательнице, которая очень хорошо нас учила. Но с техническим английским я не был знаком от слова совсем, плюс за годы без практики мой уровень заметно снизился. Но меня это не останавливало. Я смотрел индусов на ютубе с субтитрами и словарём под рукой. Читал статьи и книги всё с тем же словарём в руках. И через упорство со временем начало становиться всё легче и легче. В какой-то момент я посмотрел CS-50 в оригинале и понял всё, что говорит лектор. Это была первая радостная победа на этом поле. Но это не далось само собой. Сотни часов были потрачены на освоение только этого навыка.
Под конец моей работы телохранителем у меня накопились переработки, на несколько месяцев сидения дома с получением зарплаты. И все эти месяцы я продолжал учиться по той же схеме. В том числе и все выходные. С раннего утра и до глубокого вечера. Художественный фильм? Книга? Нет, очередная лекция на ютубе и книга от O'Reilly.
Совет шестой: выходите за границы курсов. Настолько далеко, насколько можете. Учат Python? Изучайте, как он работает внутри. Изучайте потоки, процессы, операционные системы в целом. Изучайте сети, регулярные выражения, системы контроля версий. Помимо самих знаний, вам нужно перестроить свое мышление. Вы должны начать мыслить как разработчик. Для этого и нужно постоянно все глубже и глубже погружаться в саму суть изучаемого вами направления. Например, в моих курсах не было языка C, но я сам начал изучать и его. Мне хотелось глубже понять, как происходит ручное управление памятью. И самому это попробовать на практике. Я начал писать на С все базовые алгоритмы сортировок и решать другие фундаментальные задачи, которые я находил во время обучения. Изучайте всё, до чего сможете дотянуться. Это я буду повторять вновь и вновь.
Глава четвёртая. Один в поле воин
И вот пришла пора менять работу. Курсы окончены, переработки отгуляны. Что делать? Как быть? Я пошёл прямо на один большой сайт с вакансиями, разместил там своё резюме и стал откликаться на вакансии сам. Сразу скажу, что я лучше всего умел после всех этих месяцев обучения писать на Python и работать с PostgreSQL. Я пошёл на несколько собеседований и на одном из них попал в небольшой стартап в сфере работы с маркетплейсами. Интервьюеры показались мне очень приятными людьми, а атмосфера на собеседовании была крайне доброжелательной и открытой. Техническое собеседование я прошёл успешно и мне предложили работу. Только одно «но» закралось в эту историю. Проект был написан на Perl. Который я вообще на тот момент в глаза не видел. Мне предложили попробовать свои силы и научиться прямо в бою. И я согласился.
Если жизнь предоставляет тебе возможность, бери её и ничего не бойся. Делай.
Так мне с детства говорила мама.
Так началась моя первая работа разработчиком. Проект был написан двумя людьми, один из них работал на удалёнке на полставки. А второй был заместителем генерального директора стартапа и техлидом всего проекта. И я ни на секунду не сбавлял темп. Проснулся, позавтракал, и снова обучение. Полтора часа в дороге за чтением и полтора часа с работы обратно. В офис я приезжал одним из первых и часто закрывал его за собой, уходя последним. Попутно мне пришлось осваивать JS, CSS и вообще работу с фронтом. Помимо бэка на Perl, там еще был веб-интерфейс на jQuery. Ах да, база оказалась MySQL. И работу с ней тоже пришлось изучать с нуля.
Шли месяцы, компания росла, и где-то чуть меньше чем через полгода ко мне подошли с новой задачей. Нужно было сделать проект для обработки и модификаций XML-документов для маркетплейсов. Я мог сам выбрать любые языки и инструменты, которые посчитаю нужными. За время работы у руководства появилось определённое доверие ко мне как разработчику, и мне решили дать карт-бланш. Заряд мотивации в этот момент я получил колоссальный. И в то же время понял весь груз ответственности, который ложится на мои плечи. Среди клиентов, которые будут использовать наше решение, будут компании с очень известными названиями. Нужно было удвоить своё трудолюбие, чем я благополучно и занялся.
На тот момент со мной в паре работал ещё одни разработчик. Молодой парень, студент магистратуры. Де-факто я стал в этот момент руководить маленькой командой из меня и него. И снова я начал учиться, читать и учиться. Я вечерами изучал современные JS-фреймворки и пытался понять, какой из них нам лучше взять на проект. Думал над архитектурой приложения. К тому времени я уже знал, кто такой Роберт Мартин, Мартин Фаулер, Стив Макконнелл и в целом понимал, чему они нас пытаются учить в своих книгах. Но всё равно необъятный груз нависшей ответственности висел надо мной каждый день.
И опять я вспоминал слова свой мамы:
Если жизнь предоставляет тебе возможность, бери её и ничего не бойся. Делай.
Когда разработка началась, первым делом я начал активно писать тесты на весь создаваемый код. В тот момент я уже много читал о TDD (разработке через тестирование) и был вдохновлён этой идеей. С моей педантичностью и стремлением к перфекционизму я полюбил тесты. Хотя до написания тестов перед написанием кода дело в итоге так и не дошло.
Совет седьмой: тесты делают лучше ваш код, ваши интерфейсы и ваши API. Если не можете писать тесты на работе, пишите их в своих проектах для себя. Особенно когда вы ещё начинаете разрабатывать и за спиной у вас мало опыта. Они позволят вам в первую очередь попробовать ваш код на вкус как пользователю и понять, насколько удобно использовать то, что вы написали. По моему опыту, это понимание значительно ускоряет осознание того, как нужно писать более качественный код. А потом, в будущем, уже написанные тесты помогут вам вносить изменения в ваш код намного увереннее и спокойнее.
Время шло, шли месяцы. Проект был успешно запущен, стабильно работал 24/7 и в режиме онлайн обрабатывал и последовательно пересобирал сотни многогигабайтных XML в соответствии с тем, как в веб-интерфейсе их изменяли менеджеры. Команда росла. В момент моего ухода из компании я руководил четырьмя разработчиками и сам каждый день писал код. А также появилась пара дополнительных маленьких проектов внутри компании.
Совет восьмой: не забывайте давать себе отдохнуть. Наша нервная система как пружина. Умеет напрягаться и сжиматься, но при этом она умеет и расслабляться. Если вы будете постоянно в напряжении, она может забыть, как расслабляться, и тогда вас ждёт целый спектр неврозов.
Эпилог
На этом моменте я хочу закончить рассказ. Какой вывод и какую мораль я тут хочу вывести? Из моего личного, субъективного опыта, залог движения вперёд к намеченной цели — упорный труд. В какой-то момент я понял, что меня абсолютно не устраивает моя скорость печати. И я сел за слепую печать. Три месяца, по паре часов каждый день, стараясь не пропускать ни дня, я долбил и долбил пальцами по клавиатуре, пока не освоил этот навык.
Менять что-то в своей жизни непросто. Это борьба. В первую очередь с самим собой, со своей ленью, прокрастинацией и своими страхами. Когда вам говорят: «Пройди курсы Х! Трудоустройство гарантировано, вернём деньги. После нашего курса ты сможешь всё!» — это маркетинг. Мои курсы мне помогли, я до сих пор благодарен своему преподавателю за те знания, которые он мне дал. Но это лишь толика в безграничном океане под названием IT. И далеко не все курсы будут действительно так же хороши, а преподаватели компетентны. В конечном итоге, если самому не прикладывать усилия изо дня в день, никакие курсы вас ничему не научат.
Я до сих пор постоянно учусь, спустя уже много лет с начала моего пути. И глядя на своих коллег, многие из которых намного дольше меня в IT и обладают самыми высокими компетенциями и навыками, вдохновляясь в том числе их примером, я постоянно стараюсь закрыть пробелы в своих знаниях. Вы не сможете стать хорошими специалистами, один раз пройдя курсы и потом с этим багажом знаний двигаться вперёд до самой старости. Курсы могут стать для вас лишь первым шагом на очень длинном и извилистом пути. И работая от звонка до звонка по 8 часов в день после курсов, вы сначала встанете на месте, а потом начнете откатываться назад. Сейчас даже опытные специалисты должны постоянно получать новые знания, чтобы их квалификация оставалась актуальной и востребованной на рынке. IT очень бурно развивается, и входя в эти воды, вам придётся очень упорно плыть, чтобы достичь своей цели.
P. S. Эту статью я посвящаю своим родителям и особенно своей маме. Её слова не раз звучали в моей голове на протяжении всей моей жизни, ведя меня вперёд, как путеводная звезда. А также отдельное спасибо я хочу сказать своей супруге. Она была со мной рядом весь этот путь и всегда меня поддерживала. Спасибо тебе. Без тебя я бы не был сейчас там, где я есть.
Комментарии (14)
EvgeniiNx
17.08.2021 14:31+2Скорее обучение началось как освоили информатику в школе а продолжается по сей день
axmct
29.08.2021 23:34+1Несмотря на профессию телохранителя, которой я отдал много лет жизни, я не был совсем далёк от IT. Ещё в школе я программировал дома на Delphi, писал калькуляторы и прочие несложные вещи.
Строго говоря, практически junior программист пошел в другую сферу, потом вернулся.
Примеры когда реально с нуля - они все же интереснее.
CodeShaman Автор
29.08.2021 23:44Все таки программирование в школе на Delphi в рамках факультативного интереса - это не уровень junior-программиста. Программирование на Delphi для меня было интересным хобби. К моменту принятия решения сменить профессию с тех пор прошло столько лет, что все фактически пришлось осваивать снова с нуля. Этот факт из моей биографии отражает скорее то, что мне всегда была интересна эта сфера, но реальные знания в сфере IT я начал получать именно когда решил сменить профессию.
axmct
30.08.2021 18:25Согласен. Не уровень junior-программиста но все же мозг отформатирован со школьного возраста. Другое дело, что первичный опыт в школе как у вас - скорее норма 21 века. Соответственно и советы - актуальны.
Просто пример, когда мы делаем из откровенного отморозка и гоблина, с нулевым IT, человека и программиста - он более ломающий шаблоны.
Удачи и дальнейшего успеха!
P.S. Возможно я возбудился на табельный пистолет в названии статьи. Всколыхнуло. Иногда его так не хватает :)
third112
17.08.2021 15:16+2Как профессионал (имею сертификат от ACM :) могу сказать, что автор прошел не простой путь. Респект за это! ИМХО очень много верных замечаний:
Деньги приедаются, к уровню жизни рано или поздно привыкаешь. Если каждый день по восемь часов минимум заставлять себя заниматься разработкой, когда нет внутренней любви к этому самому процессу разработки, то можно очень быстро выгореть дотла.
Без достаточных денег очень трудно, но деньги не спасут от скуки и “выгорания”!
И это верно:английский — твой друг. Если не знаешь его, начинай учить и не останавливайся. Документация, доклады, лекции, статьи и книги. Огромное количество полезной и актуальной информации написано и рассказано на этом языке.
Далее:
В офис я приезжал одним из первых и часто закрывал его за собой, уходя последним. Попутно мне пришлось осваивать JS, CSS и вообще работу с фронтом. Помимо бэка на Perl, там еще был веб-интерфейс на jQuery. Ах да, база оказалась MySQL. И работу с ней тоже пришлось изучать с нуля.
Это похвально! Всем бы таких работников!
И это неоспоримо:не забывайте давать себе отдохнуть. Наша нервная система как пружина. Умеет напрягаться и сжиматься, но при этом она умеет и расслабляться. Если вы будете постоянно в напряжении, она может забыть, как расслабляться, и тогда вас ждёт целый спектр неврозов.
И благодарности очень уместны.
Что ИМХО спорно:В тот момент я ещё не определился куда я бы хотел пойти
ИМХО это недоработка школы или 1% сложного случая – в 99% школа должна обеспечить возможность определиться.
Ты востребован настолько, насколько востребованы твои знания.
К сожалению, нет. И сейчас ИМХО с каждым годом знания ценят всё меньше и меньше. (Есть еще примеры).
А твоим качеством являются твои знания и компетенции.
Твой возраст.
Например, в моих курсах не было языка C, но я сам начал изучать и его. Мне хотелось глубже понять, как происходит ручное управление памятью. И самому это попробовать на практике.
Разбрасываться м.б. опасно! Существуют тысячи ЯП – все изучить – жизни не хватит.
Но, мои замечания не уменьшают значения статьи! Автор написал:IT очень бурно развивается, и входя в эти воды, вам придётся очень упорно плыть, чтобы достичь своей цели.
ИМХО это неоспоримо. Респект за трудолюбие:
я постоянно стараюсь закрыть пробелы в своих знаниях
CrogST
17.08.2021 17:09+4Однако, это реально нужно любить, чтобы так пахать. Ну и не без работоспособности...
Отдельный респект за посвящение в конце статьи! Очень приятно видеть!!!
Спасибо за статью!
VIPDC
18.08.2021 08:11+3Хорошая статья. Единственно при таких водных, автор мог так же пробиться почти в любой отрасли. Когда родители тебя поддерживают и сам можешь пахать 24/7, отрасль практически не важна.
StVorpensi
18.08.2021 10:12"ты знаешь язык рабов? ты можешь мне пригодиться!" (С) х/ф "Мумия"
Статья не может не радовать. А можно продолжение с акцентом на XML? В рамках NDA, конечно.
polar_yogi
Для полноты картины, imho, было бы неплохо написать в каком возрасте вы решили сменить профессию и сколько времени заняло обучение.
CodeShaman Автор
Когда я решил сменить профессию мне было 27. А обучение заняло около 9 месяцев. При этом, как я написал в статье, несколько месяцев у меня были заняты обучением полностью, когда мне отдавали мои переработки. В эти месяцы я учился 7 дней в неделю с перерывами на еду и сон.
Inskin
Скажите, а жены/детей пока что нету, видимо? Я просто тоже занимался самопереучиванием, и наличие семьи всё же не даёт возможности пахать 24/7. Так что пока нет подобных обременений, то лучше пользоваться возможностью на полную катушку, конечно. И потом можно, но такого ресурса по времени уже не будет.
CodeShaman Автор
На тот момент я уже был женат и моя супруга была моей опорой во время этих перемен. Дети появились уже после. С совсем маленькими детьми было бы крайне трудно по наличию свободного времени, с подросшими уже проще.
Даже при наличии семьи и детей возможны перемены в жизни. Главное различие в том, что в этом случае нужно создать больший задел финансовой стабильности и закладывать большие сроки на все процессы. Банально свободного времени меньше. Но если сохранять настойчивость и главный принцип, что все свободное время, которое есть, тратится на достижение поставленной цели, все получится. Главное терпение и упорство.