Полгода - полёт нормальный

Опыт и ощущения от первых восьми месяцев работы программистом.
16 марта 2017677069Валерий Туров52971092

Добрый день, уважаемые участники сообщества GeekBrains!

Некоторое время назад я рассказал вам свою историю, в которой подробно описал то, как я стал программистом.

Сегодня я постараюсь примерно описать свой опыт и ощущения от первых восьми месяцев работы программистом в компании, которая имеет достаточно крупный, на мой взгляд, отдел разработки - около 200 человек. Начать, думаю, стоит с не менее важного этапа.

Поиск работы

Сейчас я на некоторых курсах по языку Java исполняю роль наставника для студентов, которые проходят путь от азов программирования до уровня . И чем ближе они приближаются к моменту поиска работы, тем больше недоумения возникает у них насчёт описаний различных требований к вакансиям. Так было и у меня когда-то: ты смотришь на перечисленные пункты, которые обязательны для получения работы, и тебя прошибает холодный пот. В голове крутятся мысли: «Я же никогда всего этого не выучу!» или «Я про это на курсах даже не слышал!». Ты думаешь, что до работы программистом тебе ещё очень долго придётся ползти и скрести зубами.

Да, я тоже так думал, но всё-таки решил попробовать и стал рассылать своё резюме. И знаете, не так страшен чёрт, как его малюют. Я не в курсе, зачем в вакансиях уровня Junior роботодатели пишут такие зубодробительные описания, которые потом всё равно не спрашивают. Я просто расскажу, как с этим справился сам.

Рассылайте резюме тоннами

Они вас заваливают требованиями? Завалите их своим резюме! Когда я искал работу, я прочесал все вакансии на популярных сайтах. Я подписался на все рассылки о работе, до которых дотянулся. Я просто слал и слал резюме. Помимо вакансий с сайтов, я просто лазил по сети, искал компании, в которых я хотел бы работать, и слал резюме им тоже, даже если у них не было вакансий вообще. Я слал резюме везде, где требовались Java-разработчики даже уровня Middle и с з/п от 100 000 руб. Я честно им сообщал, что я ни разу не Middle. Но, может, им и не надо столько тратить денег: «А джуниора возьмёте? Я меньше попрошу!».

Одна фирма ответила, что надо бы выполнить тестовое задание, и выслала его мне. Я с ним не справился и честно ответил, что не могу. Через некоторое время меня пригласили на собеседование в другую компанию, где после двухчасового общения с технарями я понял одно: на собеседовании на позицию Junior не столько важно, что именно вы знаете. Ведь, на самом деле, вы пока ещё почти не знаете ничего. Гораздо важнее, насколько хорошо и быстро вы соображаете и насколько у вас подвешен язык. Это как в институте: вы можете ничего не знать, но на заветное «удов» наскребёте.

Так же есть ещё один важный момент, который я узнал уже после того, как меня приняли на работу.

Аккуратность и педантичность

После собеседования мне прислали тестовое задание. Я его сделал процентов на 60%: всё работало криво, через одно место и не полностью. Но при этом код был везде покрыт комментариями, и в нём даже прослеживалась последовательная структура. Как мне сказал руководитель: «Даже, программист далёкий от Java смог лёгко разобраться в моём коде, так как переменные были названы правильно, программа выполнялась последовательно и логично, и над каждой строкой был комментарий-описание». Это и было основной причиной, по которой меня приняли на работу.

Первые шаги

Первое, с чем мне пришлось столкнуться, – я вообще не понимаю, что именно мне делать. Так вышло, что практически вся разработка в компании строится на .NET. Из всей компании не было ни одного человека, который знал бы Java и помог бы мне в качестве куратора. Мой непосредственный руководитель вообще писал на Pyton. И первое рабочее задание было такое: напиши систему, которая будет брать данные из БДшки и обновлять данные в поисковой машине ElasticSearch. Сам. Без наставника. Без более опытных коллег, пишущих на том же языке.

Тут надо сделать небольшое отступление и сказать, что на тот момент английский язык у меня был на уровне школы - четвёрка с минусом. На мои вопросы о предметной области мне просто дали ссылку на оригинальную документацию. Надо ли говорить, что она была на английском языке? После этого я за несколько месяцев подтянул язык, и стало намного проще посещать англоязычные сайты. В RU секторе по моим оценкам лежит около 10-15% нужной информации. Остальное – там.

В то же время я столкнулся с другими сотрудниками компании, которые тоже были на позиции Junior, но писали на C#. У них тут были и наставники и все-все-все. Оценивая себя и «их», могу сказать, что плюсы и минусы есть при обоих подходах. Мне приходилось справляться самому, что тяжелее. С другой стороны – мне приходилось вникать во всё глубже, так как мой код никто не ревьюит, никто не указывает на ошибки и, если лезут баги, то я же их и отлавливаю, потому что никто не хочет копаться в моём коде.

У ребят, которые были под руководством наставника, всё проходило более размеренно и «правильно». Но они были больше зажаты рамками, т.ак как наставник уже заранее знает «как правильно», и тут нет места исследованию и разносторонности. В целом, каждому своё.

Архитекторы

Данный абзац относится не только к архитекторам, но и в принципе к некоторым программистам. Я выделил его просто потому, что про них желательно узнать до того, как с ними столкнёшься. Иначе будет много обиды и некоторое разочарование. Как их можно вычислить? В некоторой степени по их заносчивости, надменности и отношению, которое можно увидеть в известном меме: «смотрит на тебя как на …».

При столкновении с этими персонажами желательно сохранять хладнокровие и невозмутимость. Не следует всё, что они говорят, принимать на свой счёт. Часто их слова будут обидными, но ребята они опытные, так что прислушиваться стоит. Смотрите не на форму, а на суть – будет легче.

Навыки

Моё мнение: первое, что следует прокачивать – английский язык (если ещё не прокачан). Как я уже писал выше, в RU-секторе лежит довольно мало информации. Тем хуже вам придётся без английского языка, если продукт, с которым вы будете работать,

  • не сильно освоен российским сообществом,
  • осваивают те, кто свободно владеет английским и не занимаются созданием туториалов на русском.

Например, сказали мне разобраться с тем, что такое Apache Flink, и можно ли его использовать применительно к моему проекту. Я полез искать в Яндекс, а информации практически нет. Даже по запросу «Апач флинк примеры использования» Яндекс выдаёт англоязычные сайты. Хотя этот продукт вышел уже несколько лет назад, а про него в RU-сегменте написали лишь пару обзорных статей и больше ничего.

Если пункт с английским языком уже выполнен, то второй по важности скилл – «гугление». Без него в профессии вообще никуда. Если вы думаете, что это так просто вбивать запросы и получать результаты, то боюсь вас разочаровать. Некоторые возникающие проблемы вы будете «гуглить» целыми днями. И порой именно интуиция, а не здравый смысл, подскажет вам, что именно спрашивать у гугла и в какой форме, чтобы он выдал полезный ответ.

Над всем этим преобладает навык самостоятельности. Если вам надо что-либо спросить, спросите у гугла. Не напрягайте своего руководителя. Если у вас ситуация, как у меня – вы один единственный по своему языку - тут у вас и выбора нет. Если же вы попали в «правильное» окружение - у вас есть наставник - часто вам будет хотется закидsdfть его вопросами, чтобы он подсказал. Из одного разговора с архитектором я кое-что уяснил. Когда я разворачивал тот самый Flink и у меня возникли вопросы, он мне ответил: «Если я за тебя всё буду решать, то на ... ты мне нужен?». Вывод – будьте самостоятельны. Если ошибётесь, вас поправят, не сомневайтесь. Но поправлять вас раз в 2-3 дня проще, нежели каждый час овтечать на очередной вопрос.

Специализация

Я не случайно хочу описать этот пункт в конце. Наш любимый портал GeekBrains ввёл среди курсов разделения по профессиям и, можно сказать, что вы, выбирая профессию, уже выбираете себе специализацию. Но есть и второй уровень. И он находится несколько глубже, чем просто выбор языка. Когда вы попадёте внутрь мира программирования и начнёте в нём вариться, вы с удивлением обнаружите, что простое разделение вроде «back-end/front-end/UI» - мизерная часть той многогранности, которая существует в мире программирования.

Вы можете тренировать нейросети и заниматься машинным обучением. Можете писать скрипты, которые будут работать 24/7, и дёргать за ниточки большую машину. Можете писать приложения, которые будут запускаться раз в месяц, и готовить огромный отчёт. А может, вас бросят сразу на баррикады латать дыру в уже имеющемся проекте, где будет всё и сразу. Держите глаза открытыми и смотрите, к чему сердце ляжет!

В качестве заключения

В конце хотелось бы сказать несколько слов тем, кто только начинает свой путь в мир программирования и ищет работу мечты. Это очень большое и интересное путешествие. На каждом этапе вас будут ждать большие открытия и невероятные высокотехнолгичные приключения. Дерзайте и помните: дальше будет ещё круче и интереснее!