Всем привет, я АйТишник уже 5 лет на удаленке, 25 лет в ИТ. Ко мне на собеседования приходит очень много джунов (новичков), и последние годы много без опыта в ИТ. К сожалению, 90% приходится отказывать; некоторые просят рассказать, что им улучшить. В этой статье решил написать план на год — как за год попасть в ИТ. Всех, кто пройдет этот план, я готов лично рекомендовать по своим каналам (вот он я в linkedin со своей сетью контактов). Вам, кстати, тоже надо прямо сейчас завести профайл в LinkedIn (нужен ВПН), пусть даже пока пустой; дальше я расскажу, как его наполнять. Для добавления ко мне в контакты просто отправьте ссылку на эту статью.
Продакты (Product Managers или Product Owners). Они придумывают фичи (функционал), который нужен бизнесу.
Дизайнеры. Они рисуют интерфейсы будущих приложений.
Разработчики (Developers). Они пишут код приложений и серверов.
Тестировщики (QA). Они проверяют, что все (приложения, сервера) работает согласно требованиям.
Аналитики данных (Data Science).
DevOps. Они создают и поддерживают инфраструктуру, на которой работают сервисы, серверы и приложения.
Всем этим управляет либо CTO, либо VP of Engineering, либо Директор Департамента или Блока ИТ.
Больше всего вакансий для разработчиков. На втором месте — тестировщики (QA). Дальше идут дизайнеры, аналитики данных, DevOps и продакты.
Я очень рекомендую сконцентрировать свои усилия на той области, где больше всего вакансий, то есть на разработке.
Скажу так: я знаю дизайнеров и тестировщиков, которые переходили в разработку, но никогда не было наоборот. DevOps-инженеров довольно мало, то есть рынок вакансий очень ограничен, и в небольших компаниях их функцию довольно легко выполняют, опять же, разработчики. В совсем небольших компаниях и функцию тестировщиков выполняют разработчики, хотя не любят это дело.
Единственный случай, когда вам нужно обратить внимание на продактов и, возможно, тестировщиков, — это если вы имеете хороший опыт работы с людьми; иначе говоря, если у вас прокачаны софт-скиллы (вы умеете успешно общаться с людьми). В этом случае у вас будет преимущество перед любым разработчиком, и вы сразу сможете стать заказчиком (продактом) внутри ИТ. Но таких вакансий мало, и вам все равно необходимо изучить базовые скиллы для ИТ. То же самое касается тестировщиков: вакансий достаточно много, но получить реальный опыт тестирования без стажировки или работы очень сложно, в отличие от опыта разработчика. Опять же, разрабатывая свои приложения (pet-проекты), вы будете сами их тестировать, что даст вам и опыт тестирования тоже.
Data Science тоже редкий зверь, и денег обычно платят меньше, чем в среднем в разработке. Я бы это рассматривал только как дополнительный важный навык для продакта. Product Manager должен уметь анализировать данные, чтобы понимать, какие фичи внедрять (Data Driven Development).
Короче говоря, переходим к плану A — стать разработчиком. Еще один плюс этого плана в том, что если вдруг вас сразу не возьмут на разработчика, то могут с руками оторвать, например, в тестирование (внутри тестирования тоже есть своя разработка — автоматизация тестирования). А дорожка из тестирования в разработку уже протоптана.
Какие бывают разработчики?
Бывают FrontEnd, бывают BackEnd, а бывают самые редкие FullStack.
FrontEnd делают приложения и интерфейсы сайтов (UI — User Interface). То есть весь визуал, который вы кликаете и тапаете.
BackEnd делают сервера и сервисы, к которым обращаются приложения и Front сайтов. Сюда же отнесем базы данных; они обычно еще на один уровень ниже, под сервисами BackEnd. И бывают отдельные крутые разработчики по БД. Бывают даже системы, где по сути нет UI, но требуется дикая производительность для расчетов. Там используются тяжелые, дорогие решения и всякие TeraData, Oracle и т.д. Рынок таких вакансий не велик, платят тут хорошо. Но чтобы сюда прорваться, скорее всего, сначала нужно стать разработчиком или аналитиком данных, а потом сместиться в большие БД. На коленке поработать с такими решениями будет сложно. Ограничения — это лицензии на софт и где вы возьмете такие большие данные? И где их хостить? Короче говоря, это длинный путь.
FullStack могут делать и то, и другое. Такие чаще встречаются на стеке Web-технологий, то есть в разработке сайтов. Значительно реже — в разработке приложений.
Причина проста: BackEnd — это набор серверов с сервисами, которые в 90% случаев работают сегодня на Web-технологиях (дают API для Front), то есть BackEnd Developer хорошо знает, как устроен Web, и до FrontEnd сайтов ему рукой подать; хотя там уже используются надстройки над Web в виде всяких крутых фреймворков (ReactJS например). Есть, конечно, BackEnd, который вообще никак с Web-технологиями не связан; например, высокоскоростные сервисы на C/C++, но таких меньше, чем Web-сервисов.
GameDev (разработка игр) стоит немного в стороне со своими Unity, Unreal Engine и т.д. Но это хороший способ познать базу, которая даст возможность двигаться дальше. Тут все языки — Cи подобные (аналоги языка Cи).
Мобильные приложения делятся на два больших мира — iOS и Android. Обычно это разные разработчики; у каждого целая вселенная, поэтому им не до BackEnd. Но знание базы Web-технологий очень сильно тут помогает, так как в мобильной разработке переиспользуются многие форматы и правила из Web.
Важно - у истоков всей современной разработки стоит Web. Ну может кроме Баз Данных, хотя форматы для данных там часто используется те же.
Короче, если вы нифига не понимаете в ИТ, то начинайте с FullStack Web-разработки. Вы сможете освоить:
Front и BackEnd программирование,
Си-подобный язык программирования (после легко учить другие языки),
Rest API как вариант самого популярного способа общения между Front и Back,
Понятие фреймворка и библиотеки,
Асинхронное программирование (когда для продолжения программы нужно ждать результат от других источников),
Все самые популярные форматы для передачи данных (JSON, XML),
Работу с базами данных (SQL, NoSQL).
Если хотите, чтобы и само Web давалось легче, очень советую потратить время на язык C/C++. Я включу это как необязательный пункт в начале плана.
Какие навыки (скиллы) нужно любой специальности ИТ?
Если только вы не хотите стать 1C-разработчиком, то первый навык — это английский язык. Хотя бы чтение и умение задавать вопросы.
Второй навык — это логическое (и, как более высокий уровень, алгоритмическое) мышление. Это блокер для 50% желающих войти в ИТ. Алгоритм — это последовательность команд, приводящих к заданной цели.
Я видел разработчиков, которые уже отработали 2 года, но не могли написать простейший алгоритм. Они даже знали язык программирования, но шаг влево или вправо полностью заводил их в тупик. Именно из-за этого навыка ИТшников считают душнилами и ботанами.
Именно по этой причине многие не могут реально работать в ИТ, даже пройдя курсы и изучив язык программирования. ИТшнику, когда он идет в магазин, нужен не просто список продуктов, а желательно в той последовательности, в которой они расположены в магазине. Или в правильной последовательности удобного складывания продуктов в корзину, или в обратной последовательности, чтобы потом удобно было перекладывать в пакет.
Видите, мы с вами уже коснулись здесь трех алгоритмов. Если после этого у вас возникли идеи еще нескольких алгоритмов закупки продуктов по списку, то вы будете очень успешны в ИТ. Если нет, или если вы вообще не поняли, в чем разница, то в ИТ вам будет сложновато.
Проще говоря, если вы не ищете причинно-следственные связи, то вам будет тяжело в ИТ. ИТшник уверен, что все можно разложить по полочкам и построить в стройный алгоритм.
ИТ — это набор иногда очень сложного кода, написанного людьми, который в реальном времени обменивается данными друг с другом и пользователями и производит ожидаемые результаты. При такой сложности систем как сейчас иногда кажется - это какая-то случайность (random), но ваша задача будет выяснить причину и ее починить или оптимизировать эту систему, чтобы она выдавала тот же результат быстрее или точнее. А иногда даже написать такую сложную систему с нуля.
Короче говоря, английский и логическое мышление — это must have (обязательно).
План по musthave скиллам:
Изучите термины. Иначе вам будет сложно понять, о чем говорят ИТшники.
Переключите все интерфейсы на английский язык на весь 2025 год.
Гуглите и разговаривайте с чатГПТ на английском в течении 2025 года.
Читайте reddit и stackoverflow на английском.
Уcтановите discord, читайте каналы по Gaming, Education, Science. Позволит Вам качать английский и привыкнуть к около ИТшным мессенджерам и темам.
Посмотрите лекции Макарова, про Сократический диалог и Науку о логической аргументации. Логика наше все!
Пройдите курс по BF. Это позволит Вам потренировать логику, и понять как компьютер работает на базовом уровне.
Понять что тебе лучше подходит
Если вы прямо творческий человек, рисовали и обожаете визуал, думаете о том, как можно улучшить интерфейсы, тогда вам в дизайн.
Если вы мегакоммуникатор и хороший организатор (ведете списки дел, можете делегировать), тогда вам в продакты.
Во всех остальных случаях — в разработчики или в тестировщики.
Качать хард скиллы в течении года
Будем говорить здесь о самой массовой теме — хард скиллах разработчика.
Написать ~5000 строк кода (3 месяца) на C/C++ или Си подобных языках. Все комитить на github, заодно изучив git. В крайнем случае можно на Python.
Написать ~10 000 строк кода (5 месяцев) на node.js (BackEnd) + html/css/js (FrontEnd)
Написать ~5 000 строк кода (4 месяца) на любом FrontEnd js framework (reactjs, и т.д.) + node.js (BackEnd)
В пункте 1 можно начать с GameDev, но только если вас прямо увлекают игры; иначе вы там застрянете и устанете. Рекомендую Unity + C#. Либо Roblox + Lua. Авторов Lua, конечно, надо "расстрелять", но все-таки он Си-подобный. Зато в Roblox вы изучите асинхронщину, и может быть, даже напишете успешную игру для школоты.
Либо, если совсем лень и тяжело идет C/C++/C#/Lua, на крайний случай — Python. Плюс Python в том, что он сейчас очень популярен, и по этому магическому слову вас будут искать HR (отделы кадров). По Python и не только подключайтесь к Python комьюнити, где каждый день постится кусок кода на разные темы. Берите этот кусок кода, отлаживайте, запускайте и расширяйте пример. Вы можете один пример увеличить с ~30 строк кода до 100-200. Затем комитьте этот код на GitHub. Это будет формировать ваш профайл. Очень важно, чтобы у вас были коммиты каждый день; так вы пройдете фильтры HR и Intro-интервью. И набьете руку на разных библиотеках и темах. Затем можете портировать (переводить) код на другие языки, например, на C/C++ или JavaScript. Вы поймете, чем все-таки Python со своими структурами данных и библиотеками хорош.
Для пункта 2 лучше брать более крупные задачи и делать какую-то мини-систему целиком. Например, сайт-калькулятор, который считает все на BackEnd. Или сайт, который валидирует почтовые адреса через внешний API. Вот список внешних API который можно использовать. Можно много идей получить из тех данных, которые дают сами API. Проект нужно закомитить на GitHub, или, точнее, в процессе делать комиты. Если там будет один комит и один MR, то с вами никто разговаривать в ИТ не будет. Множественные комиты в течение месяцев показывают, что это реально вы работали, а не просто кто-то дал вам готовый проект и показал, какие кнопочки нажимать.
Если выбрали GameDev в пункте 1, то рекомендую поучаствовать в old games remakes. Это большие проекты, которые выложены на GitHub и ставят своей целью сделать ремейк старой известной игры. Если в течение года вы покажете свои постоянные комиты, заревьювленые и заапрувленые другими участниками проекта, вас точно позовут на собеседование и будут долго расспрашивать про этот проект. Тут можно найти список таких проектов.
Для п.3 вы уже должны осознано выбрать Front фремйворк. Это может быть игра на Phaser.js. Либо портал с графиками на Grafana. Либо просто красивый интерфейс на ReactJS. Тут важно выбрать самому; потом, на собеседовании, если вы обоснуете свой выбор с деталями любого фреймворка, это даст вам +100 баллов над любым джуном.
Для GameDev можно пойти на Unity assets (или аналоги для Unreal и прочих), набрать там фришных (бесплатных) ассетов (это может быть целый уровень игры), и доделать игру дальше. Например сделать следующий уровень, или добавить какие-то ништяки или других врагов в игру.
Готовить и рассылать резюме + сопроводительное письмо
Начать составлять резюме нужно с первого дня, прямо в профайле linkedin. Пишите все чему вы учились. Примеры ниже.
По п.1 (~5000 строк кода):
Изучал Python. Написал X строк кода. Изучил библиотеки [список]. Написал код по темам [список]. + ссылки на github, где будут ваши еженедельные комиты с указанными темами и библиотеками.
Темы каждый день можно брать из Python комьюнити. Темы можно брать даже если вы не на Python, их будете писать.
По п.2 (~10 000 строк кода):
Написал валидатор почтовых адресов US на JavaScript. Backend: node.js + MongoDB + Google API. FrontEnd: JS/HTML/CSS.
Переписал валидатор на TypeScript.
+ ссылки на github с вашими комитами подтверждающимии вышеописанную историю.
За "переписал" вам +100 баллов в карму будет. Это повысит ваши шансы даже на стадии отбора резюме. И на техническом собеседовании вы сможете поговорить не о рандомных вопросах собеседующего, а о вашем коде, где вы как рыба в воде.
Написал игру-клон Mario (один уровень) на Phaser.js + Node.js + MongoDB.
Если вы прошли все вышеперечисленное и готовы начать поиск работы, это можно начинать делать еще в процессе, например, в момент написания своего большого проекта (п. 3). Я готов вас рекомендовать и провести ревью вашего резюме. Присылайте ссылку на резюме (лучше линк на LinkedIn профайл) админу Python комьюнити.
Тут же можно поделать челенджи по языку, который учили, и на который будет техническое собеседование. Например тут по JS, или тут по Python.
Пройти 10-20 собеседований
Важно проходить много собеседований, чтобы набить руку и получить несколько предложений — для возможности выбора.
Обычно бывают следующие этапы собеседований в ИТ:
HR - что вы за человек?
Hiring Manager interview (с нанимающим менеджером) - что вы за человек? И что у нас за компания?
Техничеcкое интервью - ваши hard skills.
Финальное интервью с Hiring Manager/его боссом или HR. Цель сделать вам оффер.
Если кратко, то все. С Наступшим 2025. Успехов в обучении. Пишите. Подключайтесь к Python комьюнити. Всем Добра!