Приветствую на нашем канале!
Сегодня в рубрике посвященной разработке игр поговорим о квалификации программистов в IT.
Сегодня устоялось мнение, что развитие разработчика в IT проходит следующий путь:
Студент
Джун
Миддл
Сеньор
Архитектор
Действительно ли такой путь нужно пройти чтобы стать сеньор программистом или архитектором?
Попробую объяснить ситуацию на российском рынке с учетом своего опыта.
Пока человек не погрузился в IT его можно назвать студентом, то есть учеником который еще ничего толком не знает и ничего реализовать не может. Например я свой путь в IT начал с изучения книги FreeBSD 6 и первым делом учился переустанавливать операционные системы и ремонтировать компьютеры.
Особых навыков программиста мне это не дало, но я запрограммировал внутри ubuntu видимо на С подобие калькулятора который может складывать и умножать переменные. Это был файлик который при компиляции запускался и получал на вход числа и нужную операцию.
К чему я веду? К тому, что будучи этим самым студентом, по сути ни о каком написании программы в срок и тем более соответствии этой программы каким то стандартам качества не может быть и речи. Это конечно зависит от технологий, порог входа в С++ и скажем html совсем разный.
Что должен знать студент/новичок в IT
Базовые навыки работы с ПК
Умение работать с ПК, сейчас все дети это умеют еще со школы. Пользоваться мышкой, перетаскивать файлы, настроить разрешение экрана.
Желание учиться
Если человек при первой возможности откладывает книги и переключается на что то более увлекательное, то тут далеко не уедешь. Путь IT это путь бесконечного обучения новым технологиям.
Базовый синтаксис языка, его конструкции, циклы и ветвления.
В общем основы основ, которые позволят начать осваивать уже настоящее программирование.
Опыт
Небольшой опыт решения примеров из книг, курсов или лабораторных работ.
Как правило никто не берет студентов на работу, так как по ним сложно составить картину получится ли у них в итоге принести хоть какую то пользу компании. Поэтому на должности младших программистов ищут уже хотя бы джуниор разработиков.
Задача студентов пройти первый этап и реализовать несколько более менее успешных мини-проектов чтобы считаться джуниор разработчиком. Например сейчас много курсов которые на выходе обеспечивают более менее сносный проект который создается с нуля по ходу обучения. Например создание небольшого сайта с нуля или мини игры.
Набравшись опыта, студент трансформируется в джуниор разработчика.
В компаниях такие вакансии как правило называются: младший программист, программист-стажер, джуниор программист.
Что должен знать джуниор / младший программист в IT
Продвинутые навыки работы с ПК
Он должен сам разобраться с какой то проблемой, а не сидеть и ждать решения. Например как настроить под себя IDE
Желание учиться
Первые полгода в новой компании это постоянное обучение новым технологиям и инструментам.
Полностью понимать стэк технологий
Человек не должен задаваться вопросом, а что это за странная конструкция языка и синтаксис. Если что то не знает то сразу находит решение в интернете. Быстрое освоение новой технологии.
Опыт
Серьезный опыт разработки модулей каких то проектов, собственные проекты по курсам или книгам. В портфолио есть например небольшой сайт или программа для демонстрации.
В общем джуниор разработчик это полноценный разработчик который должен приносить пользу компании и закрывать проблемные позиции. Срок освоения новых технологий обычно у него не более 3х месяцев как раз на испытательный срок. Как правило джуниор задает вопрос, как правильно это сделать? Подскажите как это реализовать? И тому подобные, а после ответа может изучить рекомендованный блок и самостоятельно что то запрограммировать.
В течении 1-3 лет джуниор МОЖЕТ трансформироваться в миддл разработчика. Именно может, так как никто гарантии не дает, в каких то компаниях не нужны мидлы, нужны именно джуниоры и вы будете 5 лет решать задачи джуниор разработчиков если самостоятельно не приложите усилия по саморазвитию.
Путь из джунира до сеньора в одной и той же компании очень редок, поэтому закладывайте смену профессии через полгода-год и всегда имейте запас денег чтобы протянуть 4-6 месяцев без доходов. Если на одном месте вы уже не растете, то смело выходите на рынок и ищите новые варианты, с ЗП в 1.5-2 раза выше, если вы чувствуете в себе рост навыков.
Итак чтобы стать миддлом, джуниор должен иметь опыт разработки на нескольких стэках и архитектурах в IT. То есть вы должны освоить несколько новых языков программирования, например C++, PHP, javascript, java, go и.т.д
Экспертом вы конечно становиться не должны, но реализовать пару проектов из курсов нужно обязательно, тогда вы сможете увидеть разницу и преимущества тех или иных технологий.
Что должен знать миддл/программист в IT
Экспертные знания по работе с ПК
Настройка IDE, адаптация плагинов, разворачивание рабочего окружения где угодно.
Исследование библиотек и новых технологий
Необходимо быстро исследовать несколько технологий на рынке. Нужно внедрить на сайт яндекс карты? Легко, дайте только пару недель на изучение их API. Нужно интегрироваться со сторонним сервисом? Аналогично дайте недельку изучить их API и будет готово.
Опыт работы с несколькими стэками технологий
Большой опыт работы в разных языках программирования и системах, использование и знание различных фреймворков.
Опыт
Миддл способен сам с нуля реализовать часть какого то приложения или само приложение за приемлемый срок. То есть он полноценно отвечает за результат головой. Большое портфолио готовые реализованных проектов.
В общем миддл это и есть классический программист, он может за приемлемый срок реализовать какое то решение хорошо в нем разобравшись. Когда сеньор или архитектор меняют стэк технологий то они превращаются на какое то время в мидла. То есть архитектор стэка javascript+PHP, превратиться мидла если перейдет на стэк react+nodejs.
А переход такого архитектора в другое направление разработки, например на изучение unity+3D превращает его в студента, так как ничего полезного он сходу сделать не сможет.
С мидлом разобрались, а кто же такой сеньор?
Как правило это опытный и ленивый миддл который за свою жизнь реализовал так много проектов, что ничего особо нового каждый новый проект ему не дает и обычно задача сеньора предотвращать безумные и рискованные идеи и гасить их в зародыше, задавая новичкам, разрушающие их вдохновение вопросы. Тем самым сохраняя компании деньги и позволяя просачиваться наверх только действительно реальным идеям.
Сеньоры могут легко перемещаться между проектами с одинаковым стэком и адаптироваться к новым условиям. Когда кто то говорит что работает удаленно в Таиланде с высокой ЗП, то как правило такое могут позволить себе только сеньоры, будучи уверенными в том что легко найдут другую работу.
Что должен знать сеньор/ведущий/старший программист IT
Установка окружения для других, в том числе младших разработчиков
Настройка рабочего окружения для всей команды, решение любых вопросов и проблем.
Уверенное ориентирование по всем технологиям
Большой опыт использования большинства технологий в своей сфере. Знает точный срок внедрения любой технологии.
Опыт работы с несколькими стэками технологий
Полное понимание философии функционирования любого выбранного инструмента и его best practice. Сеньор знает как правильно использовать ту или иную технологии в соответствии с ТЗ и оценивает ее масштабирование.
Опыт
Большое портфолио самостоятельно реализованных проектов на разных стэках технологий.
Во многих компаниях тимлиды и архитекторы выполняют именно функции сеньор разработчика совмещая сразу несколько должностей. Многое зависит от самого проекта, чем он крупней тем ярко выраженной будет должность сеньор программиста и его функции.
Часто программисты освоившись в должности сеньор программиста не спешат переходить в другие компании или повышаться из-за риска потерять хорошие условия работы и отлаженный процесс разработки. Рост до архитектора, тимлида, менеджера или руководителя проекта может привести к добавлению обязанностей и рост ответственности с потерей рычагов прямого управления ситуацией.
Итак с сеньор разработчиками разобрались. Куда им расти дальше? Если говорить по финансам то возможно некуда, так как часто ЗП подобных должностей сопоставимы, а уровень ответственности и нервотрепки сильно повышен.
С технической точки зрения, дальнейший путь сеньора лежит к должности архитектора. Архитекторы бывают разные, бывают обычными программистами (играющий тренер), бывают проектировщиками-согласовальщиками, бывают руководят командой. В сложных системах уровня SAP архитектор может быть единственным разработчиком на проекте.
Как правило архитектор отвечает за весь технологический стэк проекта. Скажем это docker+админить сервера+ приложение + команда разработки + согласование документов + совещания. Задача архитектора чтобы это все работало и функционировало 24/7. То есть любые проблемы и сбои в проекте на совести архитектора. По сравнению с сеньор программистом у архитектора значительно повышаются обязанности и масштаб работ. Из преимуществ – часть задач можно делегировать на других.
Что должен знать архитектор IT
Выбор и настройка технологий для функционирования проекта
Архитектор должен выбрать и поддерживать в рабочем состоянии весь технологический стэк проекта, сервера, ПО, прикладные программы, инструменты интеграции, пользовательское по.
Опыт разработки комерчески успешных проектов с нуля
В портфолио архитектора должно быть большое количество различных коммерчески успешных проектов в разных компаниях на разных технологических платформах.
Проектирование технологического стэка
Архитектор должен уметь до кодирования быстро спроектировать технологическое решение и разбить его на подзадачи для анализа и согласования точных сроков.
Опыт
Большой опыт 5+ лет реализации успешных и провальных проектов. Понимание причин успеха или провала конкретного проекта.
То есть кто такой архитектор? Это человек который реализует техническую часть бизнес идеи. Если серьезной компании нужно разработать сайт, то они не пойдут к Васе веб мастеру. Они пойдут к архитектору чтобы проект был реализован в указанный срок с указанным бюджетом. Поэтому значительная часть работы архитектора требует софт скиллы и умение вести переговоры и аргументированно обосновать свою позицию.
Архитектор это вершина технической должности, дальнейший рост уже превратит вас в менеджера или руководителя. То есть поработать с кодом у вас уже не получится с тем же размахом что и раньше.
Таким образом в этой статье я попытался объяснить разницу между уровнем квалификации программистов на российском рынке труда. Быстрый рост из студента до мидла возможен в нескольких областях, при соответствующем таланте и трудолюбии, например во фронтенде и дизайне. Но в общем и целом чтобы уверенно расти по всей технологической лестнице нужно получать фундаментальные знания во всех связанных областях. В отдельной статье я расскажу через какой путь пришлось пройти от студента до архитектора ПО.
Если понравилась статья, то подписывайтесь на наш канал. Тут публикуются статьи о самых важных играх в истории, никакого шлака, только действительно достойные вашего внимания образцы, а так же разбор игр от нашей студии и занимательные статьи об игровых механиках.