{"id":14291,"url":"\/distributions\/14291\/click?bit=1&hash=257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","hash":"257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","title":"\u0420\u0435\u043a\u043b\u0430\u043c\u0430 \u043d\u0430 Ozon \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043c \u043d\u0435 \u043f\u0440\u043e\u0434\u0430\u0451\u0442","buttonText":"","imageUuid":""}

Как стать разработчиком?

В данной статье хотелось бы поделиться опытом и ответить хоть и на банальные, но достаточно важные и частые вопросы становления на путь коммерческой разработки и пути развития в этом направлении.

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

Кем является разработчик?

Разработчик, как правило, человек с математическим складом ума, не гаснущей жаждой к потреблению новой информации и постоянным желанием расти, развиваться, проектировать и создавать.

Но неужели гуманитариям в это направление путь заказан? Из опыта могу сказать что нет, все зависит от человека и его желания учиться, развиваться и справляться с трудными задачами. У меня в компании есть немало тому примеров: люди гуманитарного склада ума, которые отлично справляются с задачами в роли разработчиков.

Как выяснить своё направление разработки?

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

Так как же выбрать своё направление?

В первую очередь, с начинающими разработчиками или студентами нашей академии я выясняю склонность или примерный вектор интересов.

Я привожу разные аналоги, но давайте остановимся на примере с автомобильной промышленностью.

Представьте себе, что вы решили спроектировать и создать собственный автомобиль. Только вы. Без помощи. С чего вы начнете проектирование?
Кто-то, в первую очередь, задумается о технических деталях и характеристиках, кто-то начнет с кузова и внешних составляющих (цвет, формы, расположения деталей и взаимодействие между ними). Вот с этого и начинается первичный анализ

Да, можно сказать, что это банально и так всем понятный бред, но исходя из опыта могу сказать, что данная простая аналогия действительно работает. А те, кто устроился, чувствуют себя на своем месте и довольны своим направлением, которое им не было навязано и которое они фактически выбрали подсознательно.

Давайте разберемся более детально.

Как правило люди, выбравшие проектирование с внешней части, начинают работу в IT в качестве Frontend разработчиков, направление дизайна мы тут рассматривать не будем. Разработка и реализация пользовательского интерфейса - это направление, где результат своей работы можно увидеть своими глазами, по взаимодействовать с ним. Создать интерактивный и удобный пользовательский интерфейс, получать, обрабатывать и размещать данные для их отображения. В целом, интерфейс это то, с чем пользователь взаимодействует в первую очередь.

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

- Анализ и обработка больших объемов данных

- Хранение и предоставление данных

- Ядра искусственного интеллекта

- Разработка различных методов и алгоритмов по работе с данными

- Разработка алгоритмов работы цифровых устройств и т.д.

В зависимости от того какое из ветвлений ближе и интереснее человеку, уже можно подобрать необходимый и удобный ему набор инструментов, языков, с которыми разработчику будет комфортно работать.

Есть ли перспективы перехода между направлениями?
Очевидно, да! Как показывает практика чаще переход с одного направления в другое, происходит от Frontend к Backend, обуславливается это тем, что потолок профессионального роста в направлении Backend гораздо выше, а задачи сложнее и интереснее. Но бывает переход и в обратном направлении, но уже гораздо реже.

Как понять есть ли у тебя перспективы?

Начнем с того, что рассматривать IT только как способ хорошего заработка и идти в эту сферу только за деньгами нельзя! Перспектив с таким подходом практически нет, так как обычно такие люди сталкиваясь с первыми реальными трудностями в решении задач, формируют мнение что данная сфера переоценена и требует слишком высокую степень ответственности, усилий и постоянного выхода из зоны комфорта. Разработчик с таким мнением либо в скором времени покинет данную сферу, либо будет работать без надлежащего качества, а профессионального роста добиться от такого сотрудника будет практически невозможно.

Успехов в IT добиваются в основном люди получающие "кайф" от решения сложных задач, от возможности быстро и качественно развиваться, делиться опытом, развивать собственный "Бренд". Зарплата как правило является в такой ситуации приятным бонусом к твоему хобби и увлечению, а приятный бонус в таком случае будет расти как на дрожжах.

На собеседовании я пытаюсь выяснить мотивацию начинающих разработчиков косвенным путем, а именно некоторыми наводящими вопросами. Приведу пример:

Представь, на тебя ставят задачу, внедрить технологию в продукт, с которой ты никогда не работал, а возможно даже не слышал, сколько тебе потребуется на это времени? А так же расскажи порядок действий который ты будешь выполнять для выполнения этой задачи?

Остановись на этом этапе и задай себе этот вопрос и проследи за ходом своих мыслей!

Согласен вопрос каверзный, но я не жду четкого ответа, что "Сделаю за неделю.", я жду адекватного и зрелого хода мыслей, например: "Мне необходимо n времени, чтобы разобраться в документации, затем попробовать запустить или внедрить эту технологию в тестовый проект, только потом я назову более четкие сроки!" Подобный ход мысли несет в себе как раз то самое зерно здравого подхода и задатки перспективного развития в разработке.

Чаще всего на практике 7 из 10 собеседуемых отвечают что то вроде «Я не знаю что это за технология и не знаю сколько времени мне на это потребуется" или просто "Я не готов ответить». В данном случае ты уже косвенно понимаешь, что от такого сотрудника будет тяжело добиться хороших результатов или же просто есть риск быстрого выгорания и как следствие финансовые потери, на обучение такого сотрудника, из-за частого срыва сроков или не выполнения поставленных задач.

Поэтому перед выбором данного направления что бы хотя бы косвенно понять есть ли у вас перспективы, задайте себе несколько вопросов.

- "Готов ли я к сложным задачам?"

- "Готов ли я брать на себя высокую ответственность за выполняемые задачи?"

- "Готов ли я постоянно выходить из своей зоны комфорта?"

- "Всегда ли я завершаю задачи и довожу их до конца несмотря на их сложность?"

- "Получаю ли я удовольствие от решения сложных задач?"

- "Готов ли я развиваться и постоянно учится чему то новому в свободное от работы время?"

Если на все эти вопросы вы подсознательно ответили положительно, то с большой долей вероятности у вас хорошие перспективы в разработке, да и не только =)

Важные качества разработчика?

Главными качествами разработчика, из опыта могу сказать являются:

- Усердность

Тренировка данного качества и его наличие позволяет эффективнее учиться, выполнять задачи и не бросать задачи на пол пути только из-за того что вы не смогли придумать решение или найти ответы в интернете. Это качество очень ценится руководством, а усердные сотрудники чаще получают поощрения.

- Стрессоустойчивость

Многие собеседуемые первым делом чаще всего заявляют об этом качестве одним из первых, но как показывает практика, далеко не всегда это является действительностью. Часто в нашей практике бывают ситуации когда, по требованиям заказчика меняется на лету техническое задание, возникают инциденты в приложениях в продакшене, на которые нужно срочно реагировать, ротация разработчиков между командами. Такие ситуации как раз таки и выявляют реальную степень стрессоустойчивости сотрудника. Представьте себе такие ситуации и задайте себе вопрос, на сколько вы готовы к ним.

- Самообучение

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

- Ответственность

Понятие ответственности также является важным качеством особенно для тех кто работает в сфере фин. тех. или по другому проектов работающих с финансами, где любая ошибка может нанести материальный вред компании в которой вы работаете и заказчику чей проект вы разрабатываете. Это качество позволяет относится к работе максимально внимательно, а перед принятием любого решения, необходимо 100 раз взвесить все за и против и провести аналитику безопасности принимаемого решения. Как говорится - "Семь раз отмерь, один отрежь." Также понимание и принятие ответственности за сроки выполнения задач отличают

- Хладнокровность

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

- Умение продать себя и развивать свой собственный бренд

Есть много людей которые из-за закрытости и неуверенности в себе боятся просить повышения, боятся потерять работу, боятся критики от руководителей пусть даже и конструктивной. Это все не позволяет двигаться по карьерной лестнице и обычно такой тип людей и заводит разговоры о том что зарплаты в IT это миф, а на самом деле дела обстоят совсем не так.. Небольшой спойлер, руководству не выгодно держать такого сотрудника вопреки мнению о том, что чем меньше получает зарплату сотрудник и больше выполняет работы, тем лучше. Как правило такие сотрудники могут выполнять много простых рутинных и операционных задач, но из-за личных психологических блоков не могут шагнуть дальше, потому что сами не считают себя способными выполнить более сложные задачи и готовыми получать более высокую зарплату.
Не бойтесь принимать конструктивную критику, это не более чем инструмент работы над собой, не бойтесь просить повышения, если вы считаете что вы можете и делаете больше чем от вас требуется, не бойтесь делиться опытом с другими это повышает ваш авторитет и статус внутри коллектива и руководства, не бойтесь проходить собеседования в других компаниях, чтобы более объективно понять уровень своих знаний и компетенций, а также свой реальный возможный уровень зарплаты.

- Умение декомпозировать и задавать правильные вопросы самому себе

Встречаются случаи когда разработчик увяз в одной задаче с комментарием "Я не знаю как это сделать и не знаю почему это не работает!". Такие ситуации случаются тогда когда человек не может правильно разбить задачу на более мелкие подзадачи и не может правильно сформулировать вопрос самому себе. Разберемся на абстрактном примере:- У меня сломалась машина! Теперь она не может ехать.. Я не знаю что делать. <Не верно>- У меня сломалась машина! Нужно разобраться почему. Попробую завести. Заводится и работает! Попробую тронутся. Не получается, может быть дело в трансмиссии или ходовой части? Может попробовать попереключать скорость? Хмм.. вроде бы реагирует. Нужно осмотреть ходовую часть автомобиля. Бинго, у автомобиля отсутствует колесо, точно, я же забыл его прикрутить.<Верно>Да, конечно аналогия глупая и банальная, но эта аналогия показывает правильный ход мыслей в плане декомпозиции задач и ряда правильных вопросов и как итог либо решение задачи либо понимание точной области возникновения неисправности.

Что с онлайн курсами?

Очень часто знакомые или просто начинающие разработчики спрашивают о полезности курсов и вообще какой выбрать, но понимания направления а векторов развития у них самих еще нет.
Основная проблема как раз кроется в этом. Практически любые источники информации пестрят рекламой платных курсов по IT технологиям, где обещают огромные зарплаты после их прохождения, но в основном эти курсы предлагают вам обучится поверхностной работе с теми или иными инструментами без глубоких деталей. Приведу аналогию. Вас обучают пользоваться гаечным ключом и отверткой, для того чтобы научиться откручивать и закручивать гайки и болтики, но мало кто объясняет что делать с закисшими и заржавевшими гайками, почему для разных задач используются разные материалы, от чего зависит шаг резьбы в тех или иных случаях, а ведь эта информация как раз делает из вас не просто работника с парой навыков, а высококвалифицированным специалистом. В разрезе разработки приложений инструменты это языки, фреймворки, библиотеки, что может вас сделать неплохим кодером который способен выполнять шаблонные задачи, а понимание как эти инструменты и технологии работают «под капотом», почему именно так, а не иначе, понимание как они устроены низкоуровнево, позволяет вам стать, хорошим и опытным разработчиком который может проектировать, создавать, совершенствовать и производить качественный продукт.

Но все же, есть ли смысл покупать и проходить курсы? Скорее да! Но вы должны понимать перед приобретением того или иного курса несколько аспектов:
- Сначала определяемся с выбором направления
- Взвешиваем все преимущества и недостатки этой профессии
- Не забываем что 99% информации из курсов есть в открытом доступе на любых источниках в интернете
- Помним что информация и навыки полученные при прохождении курсов это только вершина айсберга и что бы стать востребованным специалистом нужно самостоятельно углубиться и залезть «под капот» изучаемым технологиям и связанным с ними инструментам.
- Не стоит ожидать высоких зарплатных предложений сразу после прохождения курсов

Как итог можно отметить, что курсы имеют безусловное преимущество в том, что у вас есть наставник, который может вам помочь в более простом и интерактивном изучении технологий. Курсы дают вам только 10-20% знаний и навыков, в остальное вы должны погружаться и изучать самостоятельно.

Опыт равно время?

Не редко слышал и продолжаю слышать от разных источников и людей, чтобы стать опытным специалистом требуются годы и годы работы. Это в корне не правильно! Отчасти это является одним из факторов почему люди которые хотели или хотят работать в этой сфере отдают предпочтение другим сферам так как послушав мнение «Опытного» специалиста, решили, что добиться успехов и той самой заработной платы которую они хотели бы, нужно пройти настолько долгий и тернистый путь, что это попросту невыгодно...

Сразу хочу сказать что это не так! У меня есть много тому примеров, где например человек в возрасте придя из сферы строительства, за год стал техническим руководителем на одном из крупных проектов с высокой заработной платой даже по Московским меркам, все благодаря упорству, усидчивости и пониманию направления развития. О том чем приходилось жертвовать расскажу в следующих пунктах.

IT это выгодно?

Очевидно да! Зарплата разработчика, даже начинающего, выше средней по стране.
В среднем зарплаты начинаются от 60 000р — 80 000р, а начать получать зарплату от 150 000 можно и через пол года после начала карьеры в качестве разработчика, но все зависит от него самого.
Зарплаты разработчиков уровня мидл могут варьироваться от 150 000р — 250 000р, а зарплаты разработчиков уровня сеньор или архитектор от 250 000 и до «бесконечности», в зависимотсти от уровня компании и компетенций самого разработчика.
Так что зарплатные перспективы в этой сфере очень высокие. Но повторюсь, такие зарплаты получают энтузиасты получающие удовольствие от работы, для которых зарплата не самое главное, поэтому не стоит рассматривать сферу только из-за высокой зп.

Чем приходится жертвовать?

Буду рассказывать на примере своего опыта и своих знакомых, на первых этапах приходилось жертвовать в первую очередь временем.
В силу того, что я пришел в опытный коллектив и был объективно гораздо ниже уровнем любого из разработчиков, жить приходилось в режиме 8 ми часовой рабочий день, затем еще весь вечер и ночь изучать тонны информации.
Я понимал что подойти и спросить как нужно сделать это гораздо быстрее, но мне хотелось понять не то, как это работает, а почему это так работает. Информацию потреблял как губка, сложные и непонятные термины выписывал, что бы подробно разобраться с ними. Как итог через 6 месяцев я получил свой первый проект на котором я стал руководителем, небольшой спойлер, этот проект успешно сдан.
В качестве руководителя пришлось, разрабатывать архитектуру, математические и поведенческие модели, быть на постоянной связи с заказчиком. Изначально сроки были оценены не верно, из-за этого приходилось работать по 16-20 часов в сутки что бы успеть к сроку. Как следствие жертвование временем. Это отмечалось на личной жизни, приходилось жертвовать прогулками, занятиями спортом, иногда едой. Только работа. Но каждый день, когда ты просыпаешься на работу, идешь туда не потому что надо, а потому что хочешь! Так как такой интересный проект и решение сложных задач вдохновляют, а организм поощряет тебя порцией дофамина.

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

Подводя итоги можно выделить несколько пунктов которыми в первое время возможно придется пожертвовать, что бы эффективно начать карьеру, такие как:
- Время
- Личная жизнь
- Хобби
- Занятия спортом
- Нервы

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

Итог

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

Тем кому была полезна эта статья и возможно остались вопросы, можете их задавать, я с радость отвечу и поделюсь своим опытом.

Всем спасибо!

0
Комментарии
-3 комментариев
Раскрывать всегда