А как бы мне «вайти»?

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

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

В IT сейчас кого только нет. Есть специалисты широких направлений (мастера на все руки), есть люди более узкого профиля. Ранжирование простое: чем больше компания, тем более узкие специалисты требуются, чем компания меньше, тем больше требуются «швейцарские ножи».

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

Backend engineer

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

В определённый момент (обычно после джуниорства) кроме сухого знания языка, появляется необходимость разбираться в шаблонах программирования, структурах данных и прочих темах из обширной дисциплины «computer science».

Frontend engineer

Занимается клиентской частью приложений, это то что происходит на клиенте. Проще говоря, это про интерфейсы (морду) на сайтах и в приложениях. Может разбиваться на более узкие специализации, тех кто занимается созданием интерфейса (обычно HTML + CSS) и тех кто занимается проработкой логики и связкой с серверной частью (обычно JS). Распространено мнение, что в создание интерфейса порог входа минимальный, потому что HTML и CSS сравнительно простые языки, плюс результат написанного можно почти мгновенно увидеть в браузере. Сложности начинаются когда проект начинает масштабироваться, появляются целые системы интерфейсов, тогда требуется глубокое понимание технологий, подключается аналитическое мышление и поехали. Бытует мнение, что современный фронтенд сошёлся на реакте (React.js — популярный Фреймворк), но это лишь одно из мнений.

QA (QE, SDET) engineer

Занимается качеством приложения. Глобально можно поделить на ручное и автоматизированное, но сейчас тренд всё больше складывается в сторону т.н. «евангелистов” или “консультантов» по качеству, которые знают технологии и лучшие практики в этой среде и делятся ими с командой или компанией по необходимости. Здесь так же применяют технологии и языки программирования которые есть и в BE и в FE, но не так глубоко.

Software engineer

Некая средняя роль между тремя перечисленными выше. Это инженер программного обеспечения, был распространённый ранее, до широкого охвата веба, обычно относилась к разработчикам т.н. desktop apps (приложений, который устанавливаются на компьютер). Сейчас все меньше встречается в заголовках вакансий и ролей.

Full stack engineer

Очередная роль, объединяющая в себе FE и BE, обычно это специалисты, которые повидали многое и умеют и в то, и в другое. Их интерес не смог остановиться на чём-то конкретном.

DevOPS engineer

OPS — значит operations. Грубо говоря, они тащат на себе ответственность за инструменты для разработки. Требуются в командах от ~50 инженеров.

SysOPS engineer

Очередной OPS, только в этот раз он про инфраструктуру для приложения. В этой роли, люди занимаются подготовкой и настройкой железа к тому, чтобы оно тащило всё приложение и делало это максимально эффективно (опять же описание грубое).

Site reliability engineer

Загадочная роль, может включать в себя много разного, в зависимости от контекста. Обычно объединяет DevOPS и SysOPS в одном лице. Как говорит википедия их главная цель — создавать масштабируемые и очень надёжные системы для приложений.

Tech/team lead

Роль лидера, которая может появится в команде любых специалистов. Это как «вожак» команды, с опытом и хорошо развитыми софт-скиллами. Требования варьируются от компании к компании (впрочем как и для всех остальных ролей).

Engineering manager

Роль появляется в более крупных организациях ~50 инженеров, но тоже довольно распространённая в последнее время. Обычно это специалист из инженеров, глубоко разбирающийся в цикле разработке ПО, прокаченный в софт-скиллс. Каждая компания выставляет свои зоны внимания для таких менеджеров и они могут называться по разному, но обычно главное это создание эффективных команд разработки (через мотивацию людей, выстраивание процессов и множество прочих сопутствующих тем).

CTO

Chief Technology Officer, ключевой человек в инженерной организации. Обычно это люди с опытом от 10-15 лет в сфере, с опытом работы в различных организациях и хорошо разбирающиеся в технологиях в целом. Отвечают за развитие инженерной организации в целом (слишком много тем и специфик, даже нет смысла начинать перечислять).

<specific> Engineer

Чуть не забыл про инженеров узкой специальности. Иногда бывают люди специализирующиеся на конкретных системах. Так например из популярных, сейчас есть Machine Learning или Block chain инженеры, которые конкретно разбираются в своих областях.

Дальше просто по группам с некоторыми ролями в скобках:

  • Product — люди работающие напрямую с продуктом, стратегией развития, проводят эксперименты, общаются с пользователями и как и все в этой сфере «делают жизнь людей лучше» (Product Owner, Product Manager, CPO и т.д.)
  • Analytics and data — близкое к продукту, но про данные, особенно когда их много (Big Data) требуются особые алгоритмы для обработки и понимания что присходит. Без этих ребят работа над продуктом идёт почти вслепую (Business Analyst, BI-analyst, Data scientist, Big data engineer и т.д.)
  • UX&UI — это направление про интерфейс продукта и опыт пользователя, иногда специалистов отсюда называют дизайнерами, но дизайн это слишком обширно (UX-designer, Product designer, UI-specialist, UX copy, и т.д.)
  • Creative — тут больше про дизайн в его классическом виде, обычно здесь люди занимаются графикой и фирменным стилем, а ещё, если рассмотреть некоторые из этих позиций в мире разработки игр, то откроется целая вселенная (Graphic designer, Motion designer, Asset designer и т.д.)
  • Marketing — здесь понятно, это про распространение и воронки пользователей, в IT маркетинг использует невероятное количество инструментов и подходов, это очень глубокая тема, осторожнее (Digital marketing, Marketing Operations, Field marketing, User Acquisition и т.д.)
  • Sales — продажи, думаю очевидно, но как и в маркетинге очень много своих IT-особенностей.
  • IT — неожиданно, но да. Направление в котором люди занимаются обеспечением техники и систем, ноутбуки, корпоративные сети, сервера, Wi-Fi, периферия, митинг-румы (оборудованные комнаты для переговоров) и т.д.
  • Support — поддержка, обычно это шире чем просто ребята на линии, тут тоже могут быть свои инженеры, свои маркетологи, свои сообщества и т.д.
  • HR — как и везде, тут тоже есть «отдел кадров». Основное отличие, что эти ребята стараются использовать самые передовые инструменты и подходы, и от этого всё меньше напоминают привычный отдел.

Список можно продолжать, но я предпочту остановится тут, если упустил что-то очевидное и важное, дополните в комментах плз.

Курсы и вообще их необходимость

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

С этим разобрались, теперь можно продолжить про курсы.

Не хотелось бы рекламировать конкретные (но похоже прийдётся), лучше напишу по группам как я их вижу.

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

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

Отдельные проекты. Тут знающие ребята объединяют усилия и создают что-то, чтобы и денег заработать и реально научить других тому, что знают хорошо сами. Они похожи на курсы от специалистов, но главное отличие это бóльший поток, а там где больший поток, обычно растёт качество материала. Попутно, если повезёт, будет приятный интерфейс и индивидуальный подход. Из тех кто мне лично симпатизирует это bangbang, html academy, hexlet, но возможно в комментариях подскажут ещё.

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

  • Интернет — помойка, если не уметь им пользоваться. Кроме котов и слонов, здесь есть ещё множество образовательного материала. Если бы была статья, которая учила как пользовать поисковой строкой, я бы делился ею со всеми подряд. Даже youtube используют для обучения, правда всего 7% пользователей, источник. Научись пользоваться интернетом и поиском, здесь есть больше чем ты думаешь.
  • Самообучение — один из путей к успеху. Вспомни как тебе регулярно говорили в школе и универе, что самообучение это свет. В IT немало людей, который оказались здесь без всяческого образования, а по лихой случайности благодаря своей тяге к знаниям, правда потом некоторые из них начинают страдать синдромом самозванца, но это другая тема. 60% из 50 тысяч опрошенных Stackoverflow (популярный ресурс с вопросами и ответами) научились писать код благодаря онлайн ресурсам (видео, блог постам и прочему) источник, ещё вопросы?
  • Английский язык. Так уж вышло, что общепринятым языком в этой области является английский, так что его прийдётся знать по-любому. Как минимум для чтения и общения по переписке, как максимум для устного решения неоднозначных вопросов с участием разных акцентов. Всё зависит от того, насколько глубоко решишь забраться. Опять же, ресурсов для обучения английскому море, выбирай какой больше понравится.
  • Ментор. На первое время будет классно если у тебя появится кто-то, кто сможет хотя бы направлять тебя, а в идеале курировать и помогать в обучении, такие люди называются наставниками (по англ. mentor). У наставников своя мотивация помогать людям, но их не так просто найти с нуля. Однако для этого тоже есть ресурсы и отдельные продукты (чего только нет сейчас, и большая часть этого в интернете), всё так же легко ищется. Ещё наставника можно бесплатно получить на стажировке, возможно тебе ещё даже приплачивать будут за это.

Стажировка

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

1. Определиться с тем что интересно (надеюсь первая глава хоть как-то поможет в этом)

2. Найти свою стажировку и подготовить себя к тому, чтобы на неё попасть

Я попробовал сейчас забить в поисковике «стажировка в it» и всё, на этом я думаю можно ставить точку.

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

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

77
23 комментария

"В IT сейчас кого только нет. Есть специалисты широких направлений (мастера на все руки), есть люди более узкого профиля."
Правильней будет сказать что в IT сейчас сборище недоумков который без 100500 открытых вкладок Гитхаба, Стака и им пододбных не в состоянии написать, к примеру, парсер тегов, тайтлов или кейвордов. Если сейчас отключат интернет - то 99% сеньоров, джунов или мидлов моментально превратятся в персонал по обслуживанию картриджей принтеров, да и то всего процента полтора.
Напишите по памяти в блокноте, без интернета, парсер DNS записей по массиву IP. те кто сможет - программист и молодец, остальные - диванные скрипткиди и до программистов им как раком до Марса

5
Ответить

Позвольте, угадаю, вы тот самый админ, которого не берут в разработчики?

22
Ответить

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

5
Ответить

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

1
Ответить

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

Ответить

По себе людей не судят :-Р

Ответить

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

9
Ответить