Сколько времени реально нужно, чтобы освоить программирование?

Сколько времени реально нужно, чтобы освоить программирование?

Ориентировочные сроки для овладения программированием на разных уровнях

Этот текст для тех, кто хочет оценить трудовые и временные затраты на изучение профессии разработчика. Посмотрим, какие результаты реально получить за неделю, месяц, полгода и далее. 

Спонсор проекта — буткемпы «Яндекс Практикума». Буткемпы — это как обычные курсы Практикума, только вдвое более интенсивные и поэтому короткие. Если классический курс «Аналитик данных» проходится за 6 месяцев, то буткемп по той же специальности длится всего 4 месяца.

  • Буткемпы требуют выделять на обучение около 40 часов в неделю. Обычные курсы — около 20 часов. 
  • Буткемпы нужны тем, кто хочет вот прямо сейчас уйти с работы и попасть в новую специальность. Обычные курсы — для тех, кто изучает новую специальность параллельно с основной работой.  

Подробнее про буткемпы: practicum.yandex.ru/bootcamp

Сколько времени реально нужно, чтобы освоить программирование?

1 неделя: базовые конструкции и простые алгоритмы

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

За неделю занятий вы сможете:

  • Писать и запускать свой код.
  • Объявлять любые типы данных.
  • Делать простые вещи с помощью циклов и условных операторов.
  • Работать с массивами, строками и числами; производить математические операции.
  • Объявлять функции.
  • Работать с объектами.
  • Если изучаете JavaScript и HTML, то вы даже сделаете простую интерактивную веб-страницу.

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

⚠️ Подводный камень: вам может начать казаться, что теперь вы умеете программировать, и вы начнёте решать все данные вам задачи теми базовыми инструментами языка, которые вы знаете. Часто ваши решения будут громоздкими и нестабильными. Как с этим быть — вы узнаете дальше. 

Сколько времени реально нужно, чтобы освоить программирование?

1—3 месяца: основные задачи, которые решают этим языком

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

На примере фронтенд-разработки: 

  • Вы начинаете использовать фреймворки для работы с веб-страницей.
  • Узнаёте про стандартные компоненты интерфейсов.
  • Начинаете общаться с сервером с помощью асинхронных запросов.
  • Познаёте силу современных верстальных инструментов типа CSS Grid.
  • Учитесь показывать всплывающие и модальные окна, валидировать формы, настраивать анимации.

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

⚠️ Очень важно здесь не впасть в состояние самоуверенности. На этом этапе вы ещё не можете идти на работу разработчиком, но уже можете идти джуном, например писать документацию и заниматься рутинной технической работой. 

Сколько времени реально нужно, чтобы освоить программирование?

3—6 месяцев: фреймворк, или набор инструментов для решения специфической задачи

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

  • В случае с веб-разработкой это будут Angular, Vue или React — смотря куда вас понесёт.
  • Если вы пишете на Python — вы начнёте специализироваться на каком-то виде вычислений: либо провалитесь в веб-разработку и Django, либо начнёте глубоко изучать математические и визуализирующие библиотеки.

✅ После этого этапа вы уже уверенный разработчик, которого можно нанимать на коммерческие задачи. 

⚠️ Вы ещё не знаете, что работа в ИТ-компании — это не только разработка (и далеко не она).

Сколько времени реально нужно, чтобы освоить программирование?

6 месяцев и далее: отраслевой опыт, лучшие практики и боль работы в ИТ-компаниях

Где-то здесь вы уже начинаете искать работу и попадаете в свою первую ИТ-компанию. Скорее всего, первая работа будет на позиции джуна, хотя по уровню знаний вы уже можете претендовать на позицию мидла

Тут вам открывается, что работа в ИТ-компании несколько больше, чем просто разработка. А именно: 

  • Вы контактируете с менеджерами и другими разработчиками. Выясняется, что нужно уметь общаться, и это не такой очевидный навык. Договорённости искажаются, поручения теряются, менеджеры приходят с противоречивыми заданиями.
  • Вы должны будете научиться управлять собой, своим временем, психологическим состоянием и работоспособностью.
  • Некоторые задачи будут скучны настолько, что вы будете адски прокрастинировать. 
  • Вы поймёте, что писать код для любимых хобби-проектов — это не то же самое, что работать на чужом проекте внутри группы поддержки скучных служебных модулей. 

✅ Вы будете уставать и выгорать, но если вы справитесь с этим этапом, у вас откроется второе дыхание и вы станете настоящим мастером разработки. 

⚠️ Раньше вы смеялись над людьми, которые выгорают, работая за компьютером. Теперь вы этот человек.

Сколько времени реально нужно, чтобы освоить программирование?

12—24 месяца: оптимизация, рефакторинг, политика

Пройдя долину выгорания и скучных задач, вы узнаете о себе три вещи: 

  • В мире разработки есть вещи, которые вам искренне интересны.
  • Если применить софт-скиллы и навыки переговоров, вы сможете загрузить себя именно такой работой. А всё неинтересное скинуть на других бедолаг. 
  • Программирование — это своего рода спорт высоких достижений. Ваша программа может работать быстрее. 

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

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

⚠️ Простые люди перестают вас понимать, считают гиком и занудой. 

Сколько времени реально нужно, чтобы освоить программирование?

2—5 лет: вставки на ассемблере, экзотические языки, духовность, квантовая физика

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

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

Вы начинаете изучать ассемблеры, но теперь с полным пониманием, зачем вам это.

Чтобы отвлечься от мыслей об оптимизации кода, вы начинаете программировать микроконтроллеры и случайно воссоздаёте Doom на инженерном калькуляторе

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

❌ Люди боятся говорить с вами о разработке.

Сколько времени реально нужно, чтобы освоить программирование?

6+ лет: сопромат, проектирование загородного дома

Вы в понимании разработки уже так преисполнились, что решаете любую задачу силой мысли. Ваша клавиатура — кастомная 12-клавишная разработка с десятью функциональными слоями. Вы напечатали её на 3Д-принтере, а логическую плату для вас изготавливали в Гонконге. 

Вы начинаетесь задумываться о других аспектах своей жизни: 

  • Начинаете думать о покупке земли и строительстве дома. Правда, дом вам интересен в первую очередь как инженерный проект: можно ли его сделать полностью автоматизированным, используя микросхемы времён СССР? 
  • Нейронка на вашем облачном сервере считает идеальное расположение несущих конструкций вашего будущего дома. 
  • Вы изучаете вопрос создания собственной системы навигации на базе ГЛОНАСС, чтобы промаркировать своих будущих кур и гусей. Телеметрия и дистанционная ветеринария. Математические модели для выпаса овец. Квадрокоптер-пастух. Непрерывное энергоснабжение. Лазерное энергоснабжение. 
  • Однажды на рыбалке вам является оптимизация кода в одной из рабочих задач. Вы видите красоту в движении волн. 
  • Глядя на водную рябь, вы размышляете о критериях разумности машин
  • Вы используете Linux с доработанным вами же ядром. Вам не нужен монитор.
  • Вы из тех людей, которые входят в комнату, и все компьютеры резко перестают глючить. 

Ну вот как-то так. 

Призыв к действию

Нажимайте:

👉 practicum.yandex.ru/bootcamp

Текст:

Максим Ильяхов

Ссылки:

Миша Полянин

Иллюстратор:

Леша Сухов

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Виталий Вебер

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
easy