Этот текст для тех, кто хочет оценить трудовые и временные затраты на изучение профессии разработчика. Посмотрим, какие результаты реально получить за неделю, месяц, полгода и далее.
Спонсор проекта — буткемпы «Яндекс Практикума». Буткемпы — это как обычные курсы Практикума, только вдвое более интенсивные и поэтому короткие. Если классический курс «Аналитик данных» проходится за 6 месяцев, то буткемп по той же специальности длится всего 4 месяца.
- Буткемпы требуют выделять на обучение около 40 часов в неделю. Обычные курсы — около 20 часов.
- Буткемпы нужны тем, кто хочет вот прямо сейчас уйти с работы и попасть в новую специальность. Обычные курсы — для тех, кто изучает новую специальность параллельно с основной работой.
Подробнее про буткемпы: practicum.yandex.ru/bootcamp
1 неделя: базовые конструкции и простые алгоритмы
Если у вас есть наставник, советчик или просто нормально организованный учебный процесс, первый код на любом языке программирования вы напишете уже в первый день. На второй день вы напишете простую работающую программу.
За неделю занятий вы сможете:
- Писать и запускать свой код.
- Объявлять любые типы данных.
- Делать простые вещи с помощью циклов и условных операторов.
- Работать с массивами, строками и числами; производить математические операции.
- Объявлять функции.
- Работать с объектами.
- Если изучаете JavaScript и HTML, то вы даже сделаете простую интерактивную веб-страницу.
✅ Этого этапа хватит, чтобы начать писать собственные простые программы и экспериментировать. Но пока что вы будете сталкиваться с проблемами на каждом шагу, потому что любой минимально амбициозный проект будет казаться неподъёмным.
⚠️ Подводный камень: вам может начать казаться, что теперь вы умеете программировать, и вы начнёте решать все данные вам задачи теми базовыми инструментами языка, которые вы знаете. Часто ваши решения будут громоздкими и нестабильными. Как с этим быть — вы узнаете дальше.
1—3 месяца: основные задачи, которые решают этим языком
Следующий этап — вы начинаете погружаться в специфику языка программирования и узнавать, какие именно задачи им лучше всего решать и как. Это этап узнавания основных паттернов языка.
На примере фронтенд-разработки:
- Вы начинаете использовать фреймворки для работы с веб-страницей.
- Узнаёте про стандартные компоненты интерфейсов.
- Начинаете общаться с сервером с помощью асинхронных запросов.
- Познаёте силу современных верстальных инструментов типа CSS Grid.
- Учитесь показывать всплывающие и модальные окна, валидировать формы, настраивать анимации.
✅ Это этап всемогущества: вам кажется, что любую задачу, какую вы только можете представить, вы сможете решить с помощью своих знаний этого языка. Это всё ещё не так, но ваши возможности заметно выросли.
⚠️ Очень важно здесь не впасть в состояние самоуверенности. На этом этапе вы ещё не можете идти на работу разработчиком, но уже можете идти джуном, например писать документацию и заниматься рутинной технической работой.
3—6 месяцев: фреймворк, или набор инструментов для решения специфической задачи
На этом этапе вам открывается истина: чтобы делать коммерчески востребованные продукты, нужно не просто владеть языком, но и пользоваться специфическим стеком технологий — фреймворков и библиотек. Вы понимаете, зачем в первый месяц обучения вам рассказали про классы, наследование, прототипы. Вы понимаете, зачем нужны компоненты. Ваш код становится всё более абстрактным и высокоуровневым, потому что иначе вы просто утонете в нём. Вы погружаетесь в специфические фреймворки.
✅ После этого этапа вы уже уверенный разработчик, которого можно нанимать на коммерческие задачи.
⚠️ Вы ещё не знаете, что работа в ИТ-компании — это не только разработка (и далеко не она).
6 месяцев и далее: отраслевой опыт, лучшие практики и боль работы в ИТ-компаниях
Где-то здесь вы уже начинаете искать работу и попадаете в свою первую ИТ-компанию. Скорее всего, первая работа будет на позиции джуна, хотя по уровню знаний вы уже можете претендовать на позицию мидла.
Тут вам открывается, что работа в ИТ-компании несколько больше, чем просто разработка. А именно:
- Вы контактируете с менеджерами и другими разработчиками. Выясняется, что нужно уметь общаться, и это не такой очевидный навык. Договорённости искажаются, поручения теряются, менеджеры приходят с противоречивыми заданиями.
- Вы должны будете научиться управлять собой, своим временем, психологическим состоянием и работоспособностью.
- Некоторые задачи будут скучны настолько, что вы будете адски прокрастинировать.
- Вы поймёте, что писать код для любимых хобби-проектов — это не то же самое, что работать на чужом проекте внутри группы поддержки скучных служебных модулей.
✅ Вы будете уставать и выгорать, но если вы справитесь с этим этапом, у вас откроется второе дыхание и вы станете настоящим мастером разработки.
⚠️ Раньше вы смеялись над людьми, которые выгорают, работая за компьютером. Теперь вы этот человек.
12—24 месяца: оптимизация, рефакторинг, политика
Пройдя долину выгорания и скучных задач, вы узнаете о себе три вещи:
- В мире разработки есть вещи, которые вам искренне интересны.
- Если применить софт-скиллы и навыки переговоров, вы сможете загрузить себя именно такой работой. А всё неинтересное скинуть на других бедолаг.
- Программирование — это своего рода спорт высоких достижений. Ваша программа может работать быстрее.
Это этап, на котором вас начинает раздражать легаси-код. Вы хотите всё переписать под новые фреймворки, оптимизированные под новое железо. Вы начинаете заморачиваться читаемостью кода, скоростью работы и нагрузкой на исполняющие машины; у вас на столе появляются классические учебники по алгоритмам. Вы наконец-то прочитали «Искусство программирования» и всё там поняли (хотя эта книга была у вас уже год).
✅ Ваш софт начинает работать быстрее, стабильнее и просто элегантнее. Вы получаете истинное удовольствие, когда ваши программы запускаются на старом железе.
⚠️ Простые люди перестают вас понимать, считают гиком и занудой.
2—5 лет: вставки на ассемблере, экзотические языки, духовность, квантовая физика
Если не остановить этот необратимый процесс, дальше вас ждёт погружение в глубины машин. В голове рождается мысль, что вы используете недостаточно оптимизированные фреймворки, и вы начинаете разбирать их по частям, выбрасывая лишнее. Но оставшиеся во фреймворках функции тоже оказываются недостаточно оптимизированными, и вы погружаетесь на самый низкий уровень, чтобы оптимизировать этот код с помощью ассемблерных вставок.
Если говорить языком автомобилей, вы разбираете свою машину до двигателя и растачиваете цилиндры, чтобы добавить ещё сотню лошадиных сил.
Вы начинаете изучать ассемблеры, но теперь с полным пониманием, зачем вам это.
Чтобы отвлечься от мыслей об оптимизации кода, вы начинаете программировать микроконтроллеры и случайно воссоздаёте Doom на инженерном калькуляторе.
✅ Почти любую разработческую задачу вы можете решить на одноядерном процессоре с тактовой частотой 500 мегагерц, как в девяностых.
❌ Люди боятся говорить с вами о разработке.
6+ лет: сопромат, проектирование загородного дома
Вы в понимании разработки уже так преисполнились, что решаете любую задачу силой мысли. Ваша клавиатура — кастомная 12-клавишная разработка с десятью функциональными слоями. Вы напечатали её на 3Д-принтере, а логическую плату для вас изготавливали в Гонконге.
Вы начинаете задумываться о других аспектах своей жизни:
- Начинаете думать о покупке земли и строительстве дома. Правда, дом вам интересен в первую очередь как инженерный проект: можно ли его сделать полностью автоматизированным, используя микросхемы времён СССР?
- Нейронка на вашем облачном сервере считает идеальное расположение несущих конструкций вашего будущего дома.
- Вы изучаете вопрос создания собственной системы навигации на базе ГЛОНАСС, чтобы промаркировать своих будущих кур и гусей. Телеметрия и дистанционная ветеринария. Математические модели для выпаса овец. Квадрокоптер-пастух. Непрерывное энергоснабжение. Лазерное энергоснабжение.
- Однажды на рыбалке вам является оптимизация кода в одной из рабочих задач. Вы видите красоту в движении волн.
- Глядя на водную рябь, вы размышляете о критериях разумности машин.
- Вы используете Linux с доработанным вами же ядром. Вам не нужен монитор.
- Вы из тех людей, которые входят в комнату, и все компьютеры резко перестают глючить.
Ну вот как-то так.