В первую очередь, хочу напомнить, что сроки окончания пандемии крайне смутные. И если не обманывать себя и доверять статистике, то в лучшем случае это сентябрь-октябрь. А трезвая оценка подсказывает, что на работу страна сможет выйти не раньше первой половины следующего года, когда выжившие из компаний опрянут после кризиса.
Таким образом впереди у нас минимум 4-5 месяцев самоизоляции. За это время реально освоить любую IT-специализацию и даже получить практический опыт разработки начального уровня, которого вполне хватит на то, чтобы устроиться на позицию разработчика уровня Junior.
Инвестируйте в самообразование прямо сейчас - такого шанса может больше не оказаться в вашей жизни. Тем более, что сегодня для этого есть все ресурсы как в открытом доступе, так и за не большую плату, сравнимую с годовой стоимостью фитнес-центра.
Итак, что необходимо для того, чтобы стать за это время Junior-программистом:
1. Окончательно решить, что это для вас
Необходимо определиться, что вы видите себя именно в IT-разработке, и это взвешенное решение, так как путь освоения программирования не близок и кропотлив. Если уж выбрали, то идти нужно до конца.
Если все же еще сомневаетесь, то смотрите в перспективу. В коротком будущем без цифровых технологий не останется ни одна сфера жизни. Об этом я писал в статье: «Наша жизнь через 10 лет: почему срочно необходимо осваивать IT»
Так что, как минимум, вы ничего не теряете: эти знания вы всегда примените. А с учетом реальных зарплат, которыми вознаграждает рынок специалистов со средним опытом, сомнения должны рассеяться окончательно. Об этом можно прочесть тут: «Сколько могут зарабатывать программисты на самом деле»
2. Определиться с направлением
Чтобы быстрее понять, что именно и на каком языке вы хотели бы кодить, я советую пройти бесплатный интенсив от Нетологии «Как стать программистом». Либо мастер-классы от других школ, главное чтобы их проводили реальные разработчики из разных сфер и компаний.
На интенсиве вам станут понятны основные векторы карьерного развития, где и какие языки программирования используются. Заодно немного попрактикуетесь.
Если коротко: мы не берем во внимание искусственный интеллект, VR/AR, DevOps и другие более современные сферы IT, а для начинающих разработчиков выделяем 4 основных направления:
⚡ веб-разработка (сайты, соц.сети)
⚡ десктопные приложения (все, что решает прикладные задачи - графические редакторы, бухгалтерские программы, CRM-системы и многое другое)
⚡ мобильная разработка (под Android и iOS)
⚡ игры (т.н. геймдев)
В свою очередь веб-разработка делится на фронтенд (клиентская часть, то, что видит пользователь) и бэкенд (серверная часть, которую пользователь не видит).
В каждой специализации используются определенные языки и программные технологии. Например, для фронтенд-разработки сайтов вместе с HTML и CSS в основном применяют JavaScript. Игры по большей части пишутся на С, C++ и С# . А Swift был создан компанией Apple для мобильной разработки соответственно под iOS.
Но большинство популярных языков могут использоваться и для разработки сайтов, и для приложений, и для игр, и для более сложных проектов: Python, Java, те же С# , C++ и другие. И тут мы как раз подошли к третьему пункту:
3. Определиться с программным языком
Так как опыта разработки у вас скорее всего нет, то в этом вопросе я советую в первую очередь отталкиваться от рынка и востребованности, рейтинга языков. Этот вопрос я разобрал в статье: «Как и какой язык выбрать, если вы таки решили стать программистом»
Если статья вас не очень убедила, то предлагаю ориентироваться на низкий порог вхождения. Т.е. освоение первого языка должно быть максимально простым в понимании и быстрым в плане написания кода, тем более, если у вас нет теоретической базы знаний.
Самые простые в плане синтаксиса языки - Python, PHP и Ruby, следом за ними по сложности идет Java. Изучение одного из них даст вам основу и логику понимания для освоения всех других языков и технологий. C, С++ и C# тоже относятся к так называемым объектно-ориентированным языкам, как и все перечисленные, но они слишком сложны для новичков.
4. Выбрать путь освоения теории и практики
Если с языком определились, нужно понять - сколько и на что есть средств, т.е. какое время и сколько денег вы готовы потратить на освоение новой специальности. Я выделю три самых доступных варианта. У каждого есть свои плюсы и минусы:
✔️ Полное самообучение
✔️ Подписка на базу знаний
✔️ Полноценный онлайн-курс
Остановимся подробнее на каждом:
▶ Самообразование
Самый экономный, но долгий и тернистый путь. Подходит для тех, кто не обременен семьей и обладает достаточным временем. При 2-3 часах изучения в день можно вполне освоить навыки уровня Junior за 5-7 месяцев.
Вы должны понимать, что нет никакого единого инструментария и одного источника. Вам необходимо будет самостоятельно найти и систематизировать материалы так, чтобы понять основные принципы программирования и вычислительного мышления, освоить множество инструментов (редакторы кода, утилиты, фреймворки, репозиторий и т.д.), научиться работать с базами данных и многое другое.
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
При этом изначально нужно ориентироваться на проектно-ориентированные курсы. Ведь основная задача начинающего разработчика - это научиться правильно применять полученные знания. Самый простой здесь совет - пошагово повторяйте написание кода за автором курса, вносите в него изменения, анализируйте результаты.
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Поэтому, если используете видео на ютубе - то лучше изучайте те, которые объясняют как создать какое-нибудь несложное приложение или игру. Имитация живой разработки научит вас гораздо большему, чем 2-3 книги теории. Хотя книг по основам программирования никто не отменял.
Из бесплатных англоязычных ресурсов, которые дают системные базовые знания и возможность применить их тут же на практике, могу порекомендовать:
Регистрируетесь, выбираете направление, последовательно проходите теорию по темам и в конце каждого тематического модуля выполняете проверочные тесты и задания. Таким образом за один курс вы нарабатываете свое первое портфолио с применением различных технологий. Более того, на FreeCodeCamp вы можете публиковать результаты своих работ, чтобы их оценивали другие пользователи.
Если английский вас отпугивает - проходите бесплатно русскоязычные курсы. Их можно найти через поисковик на платформах:
🔥 Coursera
🔥 edX
🔥 ИНТУИТ
🔥 Stepik
👉 Основной недостаток всех перечисленных площадок и в целом метода самообучения: каждый курс затрагивает какую-то отдельную часть технологий по тому или иному языку. И чтобы у вас сложилась вся картина знаний и стек необходимых навыков, вам необходимо самостоятельно искать и отбирать все материалы, определять последовательность их изучения, а главное - совместно применять разные технологии в одном проекте.👈
Так мы подошли как раз к следующему методу изучения:
▶ Подписка на базу знаний
Подходит тем, у кого нет времени на поиск информации и кто готов заплатить за системность всех материалов и их изучение в комфортном для себя темпе.
Есть платформы, которые предоставляют весь необходимый инструментарий и базу знаний за платную подписку. Из них я бы особо выделил:
🔸 IDTVN
🔸 Хекслет
Выбираете и приобретаете за небольшую плату (от 10$ в месяц) тариф и получаете на определенный период доступ к полной базе материалов по всем имеющимся на платформе курсам: записи уроков, тесты с автопроверкой, тренажеры с живыми проектами, форумы для общения, макеты с инструкциями и другие бонусы.
Таким образом вы можете осваивать сразу несколько языков, насколько позволяет доступ, и закреплять полученные знания на практике с помощью встроенного редактора кода.
По сравнению с самообучением подписка в разы ускоряет сроки обучения и избавляет от риска получить некачественные отрывистые знания. Но и в этом методе есть один большой недочет, который можно частично компенсировать приобретением более расширенного тарифа или индивидуальных консультаций. В итоге стоимость обучения значительно вырастает.
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Я имею ввиду менторство, т.е. поддержку реального разработчика. Дело в том, что по мере углубления в практику вы понимаете, что не можете найти все ошибки в коде или самостоятельно понять логику проекта. А без развернутого разбора каждого задания или полноценного проекта вы не сможете модифицировать чей-то или писать свой собственный код, что и является целью обучения.
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Ментор помогает последовательно преодолевать трудности, восполняет пробелы в знаниях, дает подробный фидбек по заданиям и советы по написанию правильного кода. Но для того, чтобы помощь наставника была также последовательна, как и модули изучения, он должен быть погружен в процесс обучения.
Поэтому я советую изначально искать именно онлайн-курсы, которые дают не только максимум информации и практики, но и наставничество от опытных разработчиков, желательно из крупных IT-компаний. Итак:
▶ Специализированные онлайн-курсы
Из российских онлайн-школ с IT-курсами, которые соответствуют указанным требованиям, я рекомендую только четыре:
✅ SkillBox
По-мимо живых вебинаров, на которых студенты и ведущий разбирают реальные бизнес-кейсы, у онлайн-школ есть и другие преимущества перед записями курсов:
⭕ Дипломный проект.
Собственно, командный опыт, который максимально приближен к боевым условиям. Полнофункциональное программное обеспечение по техническому заданию, которое не стыдно показать будущему работодателю. В зависимости от школы и курса это может быть: соц.сеть, сервис по поиску билетов, облачное хранилище по типу гугл-диска, многоуровневая игра и т.д.
⭕ Сертификация.
Персональный сертификат о прохождении курсов. Может предоставляться на английском языке или в виде документа о повышении квалификации гос.образца. Особенно важен тем, у кого нет диплома о техническом образовании.
⭕ Стажировка.
Все школы являются партнерами каких-либо крупных холдингов. Например, GeekBrains входит в состав Mail.ru Group. Поэтому множество ведущих курсов - это опытные разработчики из компаний Мэйл, Яндекс, Альфа-банк, S7, Сбербанк, X5 Retail Group, Lamoda и других. А сами партнеры заинтересованы в новых специалистах-стажерах. Опыт работы в любой из этих компаний, даже бесплатный, поднимет ваш рейтинг как соискателя.
⭕ Помощь в трудоустройстве. Вряд ли это непосредственный рекрутинг, скорее модуль от специалиста по HR по составлению резюме и подготовке к собеседованию. Вы можете получить бесценную практику живого прохождения интервью, а также начать искать вакансии уже во время обучения.
Это конечно же не все про онлайн-курсы. 👉 Мой совет - выбирайте не по ценам, так как они более менее у всех одинаковы. Внимательно изучите и сравнивайте между собой программу обучения, состав и опыт ведущих. Желательно пройти бесплатные вводные вебинары, которые есть у каждого курса, по интересующим вас направлениям: чаще всего их ведут авторы курсов.
Ну и напоследок, хочу привести несколько ресурсов и советов, которые вам помогут быстрее освоить любой язык программирования. Вы ведь помните, что самое главное:
5. Практика и еще раз практика 💪
Вернее так: самое главное - это развить в себе именно алгоритмическое системное мышление, которое позволит решать любые программные задачи, в том числе проектирование приложений. Кстати работодатели чаще всего проверяют кандидата именно эту на способность.
И здесь вам важно получать правильные рекомендации и совместный опыт от сообщества разработчиков. Отточить свои навыки вам помогут следующие сервисы:
Но это, скорее, уже следующий этап. О нем я еще подробнее напишу.
Надеюсь, общая картина, как пройти первые шаги в к новой специализации у вас сложились. Тут очень многое будет зависеть от вашего интереса, а программирование, поверьте мне - это безумно интересная сфера, которую можно изучать всю жизнь.
Если есть вопросы по теме - пишите в комментах, постараюсь ответить.
И подписывайтесь на канал