Чем заняться в IT: инструкция для новичков

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

Пост расчитан на людей не имеющих отношения к IT, но желающих узнать "что внутри".


Обо мне: 17 лет в IT, из них 11 в управлении разработкой.

Disclaimer: это все моё личное мнение и мой личный опыт. Не претендую на полное покрытие всех отраслей, скорее это обзор "сверху". Если есть что добавить - welcome в комментарии.

Я осознанно не буду писать тут про аналитиков, архитекторов, ML, data scientist и прочие специализации которые требуют реально глубоких знаний.

Ну поехали.


0. Рекомендуемые предпосылки для достижения успеха

- английский уровня "читаю техническую документацию" и выше;

- привычка при возникновении проблемы гуглить её самостоятельно;

- любовь к восприятию текстовой информации, а не роликов ютуба;

- любовь к самообучению в любое свободное время;


1.Есть фундаментальный выбор: программировать или нет.
Это не только вопрос желания, это еще вопрос образа мышления.
Есть специальности на стыке, но я буду специально упрощать.


2. Если НЕ программировать, то основные направления:

2.1 Ручное тестирование (manual qa): вам дают что-то (сайт, мобильное приложение, api, что угодно), нужно найти ошибки. Повторять несколько раз в день.

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

Плюсы: очень низкий порог входа (~месяц самостоятельного изучения)

Минусы:

- Достаточно низкий, быстро (за год-два) достижимый потолок зарплаты (не знаю QA с зп выше $2k при стартовой зп условно от $1k)

- Отсутствие карьерных перспектив, нерелевантный для других специализаций опыт.

Многие путают эту должность с automation qa, - это больше программист, чем тестировщик, оплачивается соответственно.

2.2 Верстка (html/css/базовый js): вам дают дизайн (картинки), на их основе нужно написать html и css. Этому очень любят учить на разных онлайн курсах.

Минусы:

- самостоятельное обучение займет не менее чем полгода, на курсах еще дольше;

- платят очень мало.

Плюсы:

- эти навыки нужны для того кто хочет стать frontend разработчиком.


2.3 Менеджмент
(управление проектами): вам дают тз и бюджет. Нужно сделать красиво :)
Плюсы:
- Любой опыт управления людьми и проектами не из IT будет тут полезен;

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

Минусы:

- на старте платят меньше чем разработчикам, реальные деньги зарабатываются в крупных корпорациях или при работе на себя;

- нужны собственно навыки по выстраиванию процессов и крутые soft skills. Считаю что чтобы достичь успеха нужно призвание;


2.4 Системное администрирование (Devops): все что касается управления инфраструктурой.
Тут могла бы быть шутка про красноглазого админа.

Зарплаты очень разные, где-то откровенные копейки (проектирование ЛКС например), где-то весьма неплохо (виртуализация, мониторинги и т.д)

В любом случае для входа это очень тяжелое направление.


2.5 Дизайн: вам дают тз (или не дают хе-хе), нужно нарисовать как это все выглядит.

Знаю людей которые пришли в IT дизайн, из дизайна например полиграфии и одежды, но они и там в принципе неплохо зарабатывали.

Есть ux дизайн - это дизайнер которые умеет думать не только про картинку, но и про поведение пользователя, оплачивается кратно выше.

Вообще есть много специфических ниш: web, mobile, game и т.д, в каждой своя специфика.


3. Если программировать:

Плюсы: это и есть собственно "настоящее" it, за это платят.

Минусы: нужны знания и набитая рука.


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


3.1 Web backend - разработка кода который крутится на сервере.

Важный момент: логика разработки в целом не принципиально зависит от конкретного языка программирования (далее ЯП). Конкретная специфика конечно есть, но как правило в ней можно разобраться за пару месяцев. Помимо знаний конкретного ЯП, важно знание конкретного фреймворка(платформа для разработки) используемого на этом ЯП. У одного ЯП может быть несколько популярных, можно посмотреть например на jetbrains. Отличия иногда учатся за неделю, а иногда за год. Если планируете эмиграцию полезно изучить язык популярный в целевой стране.

Конкретный ЯП во многом определяет типы проектов которые на нем делаются и уровень зарплат.


Очень важно! Вопрос выбора конкретного языка - очень холиварный.

Регулярно, на тематических форумах, кто-нибудь спрашивает "почему все еще не перешли на ЯП %name%". Мой ответ:
а) на самом деле нет хороших и плохих языков. Есть конкретные технические особенности, облегчающие или усложняющие применение в конкретном проекте

b) есть исторически сложившееся комьюнити которое работодатели вынуждены учитывать.


PHP / Python / Node.js - пожалуй самая популярная тройка в разработке сайтов. Проекты могут быть любые, от корпоративного портала, до интернет магазина или бекенда стартапа мобильного приложения.

PHP - много старого некачественного кода, много очень дешевых проектов на фрилансе, но вместе с тем много вакансий, много резюме и т.д

Python - в мире моднее, в рф вакансий меньше, требования и зп выше. Очень часто используется в задачах с востребованным нынче машинным обучением (ML) и всяких data analytic. Конкретно в эти направления вход очень высокий (там больше математики чем it)

Node.js - изначально задумывался как "а давайте будем писать бек на javascript который все знают", по факту это javascript, но написание бекенда на нем - отдельный скил. Набирает популярность, в USA вакансий много, в РФ практически нет.


Java - 2й по популярности язык в мире (после Python). Исторически популярен в enterprise секторе. Стартапы и сайты на нем практически не пишут. Так же является нативным языком для мобильной разработки под Android. Вакансий много, платят хорошо, но... это enterprise. Кому-то нравится, кому-то нет.

Go - очень хайповый язык разработанный внутри google. На него начали переходить некоторые крупные проекты изначально написанные на других ЯП. Вакансий мало, но те что есть нифига не закрываются и хорошо оплачиваются. Если вы вдруг знаете Go хотя бы на уровне middle - напишите мне в телеграм и я попробую вас перекупить, суммы удивят)


3.2 Web frontend

То что крутится у пользователя в браузере. По факту все пишут на javascript и одном из популярных фреймворков: Angular / React / Vue. В мире очень популярно, в РФ в последнее время тоже.


3.3 Mobile

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

Зарплаты хорошие, вакансий море и в РФ и зарубежом.
Считаю что сейчас это один из лучших способов войти в IT если привлекает программирование.


3.4 Desktop - разработка собственно программ которые запускаются на компьютере пользователя, имеют какой-нибудь интерфейс и т.д

Возможно это моё субъективное заблуждение, но мне кажется что сейчас практически вся разработка ушла в web/mobile, в desktop осталась или поддержка какого-то старого легаси кода на неактуальных языках, либо какие-то одиночные крупные проекты.

Популярные языки C#, Java, C++.

Постепенно появляются способы писать desktop приложения на популярных в web языках,... но зачем?

Особняком стоит разработка игр - это огромная индустрия, но я про неё знаю крайне мало.



Ну и напоследок меня часто спрашивают "какие онлайн курсы лучше".

Моё мнение: все онлайн курсы одинаковое дерьмо :)

Учитесь сами, читайте официальные инструкции и будем вам счастье.


Удачи.