Результати пошуку за запитом: Курс - Практикум по frontend разработке*
Чи не пізно починати навчання після 30 років?
Автор: Редакция ITVDN
Коли мова заходить про зміну професії або навчання з нуля, багато хто ставить собі запитання: «А чи не запізно вже? Мені ж 30, а в когось у цьому віці вже 10 років досвіду».
Цей страх знайомий дуже багатьом. Але насправді він не має під собою серйозних підстав.
Міф 1. Після 30 вже занадто пізно
Як думають:
У 20 років люди швидше сприймають нову інформацію, легше адаптуються до змін і мають більше часу «на помилки». А після 30 начебто потрібно просто «триматися» за стабільність і не ризикувати.
Насправді:
30 — це навіть кращий вік для початку. У вас вже є:
життєвий досвід і вміння робити усвідомлений вибір;
чітке розуміння своїх сильних і слабких сторін;
внутрішня мотивація, яка базується не на чужих очікуваннях, а на особистих цілях.
Більшість студентів після 30 кажуть, що навчаються ефективніше, ніж у 20. Чому? Бо вони знають, навіщо їм ці знання: щоб отримати нову роботу, підняти зарплату, відкрити власний проєкт чи просто відчути розвиток.
Університети часто жартують: у 18 років студенти приходять «за компанію», а в 30+ — «за результатом». І це працює на користь.
Міф 2. Роботодавці не беруть “новачків” у цьому віці
Як думають:
Компанії шукають молодих і «гнучких». Якщо вам 30–35, ви вже «застаріли» для першої роботи в новій сфері.
Насправді:
У сучасному ІТ-ринку головне — знання й уміння. Паспортний вік ніхто не питає на співбесіді, а от портфоліо та практичні навички — так.
Більше того, дорослі новачки часто навіть цікавіші для роботодавців, ніж студенти без досвіду. Чому? Тому що вони приносять із собою бекграунд:
менеджери — вміють організовувати процеси й команду;
бухгалтери — розуміють цифри та відповідальність;
маркетологи — вміють мислити клієнтоорієнтовано;
вчителі — знають, як навчатися і навчати інших.
Ці навички часто стають потужною конкурентною перевагою. У багатьох командах сьогодні працюють спеціалісти, які прийшли в ІТ у 32, 35 і навіть у 40+.
Є навіть окремий термін — «career switcher» (той, хто змінює кар’єру). Для багатьох компаній це вже норма, а не виняток.
Міф 3. Вчитись після 30 складніше
Як думають:
Пам’ять вже «не та», концентрація падає, часу менше — значить, вчитися буде надто важко.
Насправді:
Так, у дорослому віці навчання виглядає інакше. Але сучасні формати роблять його максимально доступним:
гнучкі графіки — ви самі обираєте, коли навчатися;
курси у записі — можна зупинити, переглянути ще раз, повторити;
онлайн-заняття з викладачем — підтримка й пояснення «наживо»;
практика замість теорії — ви бачите результат одразу у власному коді чи проєкті.
Крім того, дорослі студенти виграють завдяки своїй дисципліні. Вони вміють планувати час, поєднувати навчання з роботою чи сім’єю, краще розуміють пріоритети.
І головне: мотивація у 30+ набагато сильніша. Якщо ви сіли вчитися після роботи чи вихідними, значить, вам це справді потрібно. І саме ця мотивація «тягне» далі навіть тоді, коли матеріал стає складним.
Чому саме після 30 варто задуматися про нову професію?
Свідомий вибір. Ви вже знаєте, що вам подобається, а що — ні. Це означає, що новий напрям ви оберете осмислено, а не «бо всі так роблять».
Фінансова стабільність. У більшості випадків у вас вже є певний дохід, і ви можете інвестувати у своє навчання.
Кар’єрні перспективи. Навіть якщо ви починаєте з нуля, через 1–2 роки ви можете отримати першу роботу в ІТ. А далі — все залежить від вашої наполегливості.
Особистий розвиток. Навчання тримає мозок у тонусі, розвиває нові навички, допомагає залишатися гнучким у світі, що швидко змінюється.
Реальні історії
У нашій практиці багато прикладів студентів, які почали навчання після 30 і сьогодні успішно працюють в ІТ.
Олена, 34 роки, бухгалтер у минулому. Пройшла курси FrontEnd і через 7 місяців отримала першу роботу в аутсорсинговій компанії.
Андрій, 37 років, колишній вчитель. Вивчив Python і сьогодні працює у стартапі, розробляє автоматизацію для освітніх процесів.
Сергій, 41 рік, колишній військовий. Завдяки курсам QA тестування змінив професію і зараз працює тестувальником у міжнародній компанії.
Ці історії доводять: вік — це лише цифра. Головне — бажання та готовність вчитися.
Чому варто обрати саме наші курси?
Актуальні програми. Усі курси створені практикуючими спеціалістами й регулярно оновлюються.
Гнучкий формат. Ви можете обирати коли та де навчатись.
Практика з перших уроків. Усі студенти виконують реальні завдання й проєкти, що формують портфоліо.
Кар’єрний сервіс. Ми допомагаємо скласти резюме, підготуватись до співбесіди та навіть пропонуємо стажування.
Висновок
Починати новий шлях після 30 — це не пізно. Навпаки, це часто найкращий момент: ви маєте мотивацію, досвід і бажання змінити життя.
Якщо ви давно думали про ІТ чи іншу сферу — саме зараз час спробувати.
👉 Ваші 30, 35 чи навіть 45 можуть стати точкою відліку для нової, успішної кар’єри.
Яку IT-спеціальність обрати у 2021 році?
Автор: Влад Сверчков
Добрый день! Сегодня мы попробуем разобраться с тем, какие IT-специальности сейчас в тренде и какие прогнозы можно строить на 2021 год.
IT-отрасль привлекательна со всех сторон - и для тех, кто выбирает профессию, и для бизнесменов, это один из самых динамично развивающихся секторов экономики. Такая ситуация не удивительна, ведь IT — достаточно молодая и перспективная сфера, чьи плоды существенно упрощают нашу жизнь.
При всем этом, информационная сфера снижает порог вхождения и с каждым годом становится искушением для всё бо́льшего количества людей. Каждый, кто интересуется IT — будь то новичок, желающий освоить IT-специальность, либо опытный разработчик, следящий за тенденциями — хочет знать, какие направления и профессии будут востребованы в следующем году. Но даже внутри столь многогранной отрасли есть как те профессии, которые теряют актуальность, так и те, которые возникают на ровном месте. Поэтому мы изучили респектабельные аналитические ресурсы и готовы рассказать вам, какие направления и специальности с наибольшей вероятностью будут популярны в ближайшем будущем. Начинаем!
Особенности 2020 года и их влияние на IT отрасль
Наибольшим сотрясением 2020-го года для мировой экономики стала эпидемия коронавируса, из-за которой множество стран ввели жесткие карантинные ограничения, чем и был нанесен ощутимый удар по всем отраслям. Это явление не обошло стороной и IT-сферу.
Если говорить об Украине, то помимо массовых сокращений на рабочих местах мы получили заметное проседание по количеству вакансий. Как пример, информационный ресурс для украинских разработчиков DOU с апреля 2020-го года начал проводить кризисную аналитику и показал, как менялась кривая количества опубликованных вакансий на данном ресурсе в Украине.
На графике бросается в глаза существенное проседание по вакансиям в апреле. Два месяца спустя кривая не смогла достичь ни одного из минимальных показателей как минимум с марта 2019-го года. Только в июле удалось получить предкризисное количество вакансий. Потеря предложений была вызвана не только карантинными ограничениями внутри страны, но и тем, что украинский IT-рынок в подавляющем большинстве ориентирован на аутсорс (заказчики в основном с Запада), а не на производство собственного ПО. Следовательно, наши разработчики сильно зависят от иностранного бизнеса, который также вынужден был остановиться вследствии введенных ограничений. А нет заказчиков — нет и работы.
Однако, не все так плохо. Аутсорс означает зависимость от иностранных компаний. А поскольку большинство клиентов из развитых стран, где бизнес быстро восстанавливается, проседание украинского IT-сектора не такое и страшное.
Более того, карантинные ограничения постепенно смягчаются, люди начинают привыкать и адаптироваться под новые условия работы. Дистанционный режим работы хоть и не самый продуктивный, однако он максимально подходит большинству IT-работников, чего нельзя сказать о тех, кто занят в других секторах экономики.
Также, текущие осложнения экономической ситуации в мире отличаются от тех, которые были прежде — в 2001 и 2008 годах. Сейчас отсутствует разочарование инвесторов — все готовы вернуться не прежнюю колею, как только уйдут карантинные ограничения. Поэтому, последствия эпидемии не должны сыграть решающую роль в определении ориентиров IT-сферы в 2021 году.
О чем говорят аналитические обзоры
Давайте воспользуемся ежегодным опросом от Stack Overflow и взглянем на то, какие профессии были наиболее популярны в 2019 году и каких изменений они претерпели к августу 2020 года. Будем руководствоваться данными из Stack Overflow Developer Survey 2020 и Stack Overflow Developer Survey 2019.
Небольшая ремарка для тех, кто не знаком с данным сервисом. Stack Overflow (произносится как “стэк оверфлоу”) — специальный интернет-ресурс для IT-специалистов различных направлений, где каждый может задать свой вопрос и получить профессиональный ответ от других участников сервиса. Другими словами, это интернациональная система вопросов-ответов для айтишников.
Итак, взглянем на статистику, собранную Stack Overflow за 2019 год, в которой указано, с какой должностью себя ассоциируют участники данного сервиса. В опросе приняло участие около 90 000 разработчиков. В среднем, каждый респондент идентифицировал себя с тремя должностями сразу, что и отразилось на необычном процентном соотношении на картинке ниже:
Вот та же статистика, только уже за февраль 2020 года (65 000 опрошенных):
Как можно видеть, лидирующие специальности за последние годы принадлежат Full Stack и BackEnd направлениям. За ними прочно закрепились FrontEnd девелоперы, энтерпрайз разработчики (создают ПО для бизнес-заказчиков) и разработчики мобильных приложений. Также, на несколько позиций вверх пробился и DevOps специалист, который синхронизирует все этапы разработки программного продукта — от написания кода до тестирования и релиза.
В целом, резкие и непредсказуемые перемены в профессиональной деятельности разработчиков не наблюдаются. Из этого можно сделать вывод, что примерно та же тенденция в профессиях сохранится и на следующий год.
Также, посмотрим на популярность используемых языков и технологий. Из опроса 2019-го года и 2020-го, соответственно:
На первом месте обоих рейтингов от Stack Overflow язык программирования JavaScript, который находит широкое применение в веб-разработке (как BackEnd, так и FrontEnd). За ним следуют языки верстки — HTML & CSS, без которых немыслим уже упомянутый фронтенд. Далее идет уклон в сторону баз данных. Если мы говорим о реляционных БД, то без языка запросов SQL не обойтись. Их используют различные IT-специалисты — от разработчиков ПО до тестировщиков и системных администраторов.
Python, Java, C# — универсальные языки программирования, которые используются во множестве сфер разработки. Последние годы они не покидают ни один ТОП-10 языков, и у них достаточно серьезные аргументы, чтобы гарантировать себе пик славы на многие годы вперед.
Инструменты Bash/Shell/PowerShell применяются зачастую системными администраторами и DevOps инженерами, поскольку позволяют автоматизировать большинство рутинных процессов, благодаря чему они и оказались на высоких местах в опросе от Stack Overflow.
Также рассмотрим рейтинг языков согласно индексу TIOBE, который оценивает популярность языков программирования каждый месяц и является респектабельным показателем — на него ссылается множество аналитиков в ходе своих исследований:
Рейтинг индекса TIOBE отличается от аналогичных на Stack Overflow. Это связано с тем, что TIOBE-рейтинги основаны на количестве квалифицированных инженеров по всему миру, а также количестве курсов и сторонних поставщиков. Популярные поисковые движки, такие как Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube и Baidu, используются для расчета рейтингов. Важно отметить, что индекс TIOBE — не о лучшем языке или языке, на котором было написано наибольшее количество строчек. Он может быть использован, чтобы узнать, соответствуют ли ваши навыки современным запросам, либо, чтобы принять стратегическое решение касательно того, какой язык должен быть использован в разработке новой программной системы. Подробнее с методами определения индекса вы можете ознакомиться по ссылке.
Итак, в данном рейтинге появились языки программирования C/C++, которые известны даже большей универсальностью, чем Java, Python, C# и JavaScript вместе взяты, поскольку помимо прочего они могут работать с памятью, что очень важно в ресурсоемких задачах — играх, тяжеловесных ПО, микроконтроллерах и т. д. Также, C/C++ часто изучаются во многих технических ВУЗах.
PHP до сих пор остается классическим языком серверной разработки и не собирается покидать эту нишу, что и обеспечивает ему 9-е место в рейтинге.
Рассмотрим список популярных веб-технологий согласно Developer Survey за 2019-й и 2020-й годы соответственно:
Как видно из диаграмм, главные позиции принадлежат FrontEnd-библиотекам и фреймворкам — jQuery, React.js, Angular, а также технологиям .NET платформы — ASP.NET и ASP.NET Core. Наряду с ними библиотека Express, которая используется в бекенде на Node.js (JavaScript). Только после них идут фреймворки Spring (Java) и Django (Python).
Список других фреймворков, библиотек и инструментов разработки:
Максимальный процентный отрыв у платформы Node.js (веб-разработка), за ней идут .NET и .NET Core. Технологии компании Майкрософт удерживают хорошие позиции. Далее идут библиотеки Python: Panda (анализ данных) и TensorFlow (платформа для машинного и глубокого обучения). За ними — React Native (фреймворк для кроссплатформенной разработки под iOS и Android) и движок Unity 3D (разработка игр под различные устройства и платформы).
Полученные сведения уже дают достаточное представление о том, что сейчас происходит на рынке IT-услуг и позволяют делать определенные прогнозы касательно востребованности IT-профессий.
Какие IT-специальности будут востребованы?
FrontEnd Developer
Как мы выяснили в ходе анализа Stack Overflow Developer Survey и индекса TIOBE, фронтенд-триада HTML, CSS и JavaScript по сей день востребована и используется множеством разработчиков. Эти языки находят широкое применение в разработке клиентской стороны веб-приложений (визуальная часть + пользовательская логика).
Также, ресурсы по поиску работы имеют множество вакансий FrontEnd Developer. Как пример, на украинском ресурсе для IT-разработчиков DOU на момент написания статьи было опубликовано 564 вакансии по данному направлению, в то время, как на Java, Python и .NET специальностям припадало 266, 179 и 268 предложений соответственно.
Фронтенд разработчики востребованы, и у нас нет никаких сомнений, что данная тенденция сохранится в 2021-м году.
BackEnd Developer
Разработчик серверной стороны веб-приложений. В своем арсенале имеет один из популярных языков программирования — C# / PHP / Python / Java / JavaScript / Ruby / Perl либо иной. Также, бекенд-разработчик знает множество серверных технологий и техник разработки.
Данные специалисты ответственные за все, что происходит по ту сторону любого приложения в вебе. Если сравнить FrontEnd и BackEnd направления с айсбергом, то FrontEnd — его верхушка, которая выглядывает над поверхностью, а BackEnd — все то, что скрыто от наших глаз под водой.
Mobile Developer (Android / iOS)
Мобильная разработка как таковая появилась буквально два десятка лет назад. За это время она прошла серьезную трансформацию и сегодня занимает одну из доминирующих позиций в IT-сфере. При этом, наработками специалистов из этой отрасли пользуется чуть ли не каждый человек — это не только смартфоны и планшеты, но и фитнес-браслеты, наручные часы, электронные книги, компоненты “интернета вещей” и другие гаджеты. Наиболее популярные языки мобильной разработки: Java / Kotlin под Android разработку и Objective-C / Swift под iOS.
DevOps Engineer
DevOps — это методология, которая совмещает в себе разработку (Development) и системное администрирование (Operations) с целью увеличения частоты выпуска релизов. Данные специалисты также должны обладать навыками использования облачных технологий и автоматизации инфраструктуры.
DevOps инженеры в качестве основного языка программирования выбирают Python за его простоту, мощность, надежность, многозадачность, поддержку большого количества специальных пакетов, которые повышают эффективность данного языка программирования и за другие преимущества. Python используют, в основном, вместе с командной оболочкой Bash для упрощения процессов развертывания ПО и автоматизации различных задач системного администрирования (написание скриптов).
Можно сказать, что DevOps инженеры — это смесь программиста и системного администратора. Бизнес очень любит универсальных игроков, так что данная профессия очень актуальная и престижная.
CyberSecurity
IT индустрия растет, а значит, растет и спрос на тех, кто должен ее оберегать. Этим и занимается специалист по кибербезопасности. На самом деле, данное направление также имеет несколько ответвлений и вы можете как защищать программные системы от проникновения (направление “защиты”), так и быть пентестером — специалистом по выявлению уязвимостей в подобных системах (направление “атаки”).
Можете уйти в анализ и риски (должность Security Analyst и Risk Compliance Specialist, соответственно), заниматься поиском компьютерных вирусов и выстраиванием линии защиты от них (Malware Researcher), а также испытать себя во многих других CyberSecurity-специальностях — сфера кибербезопасности дает большие возможности для самореализации.
Database Administrator (DBA)
Нормальное функционирование современного мира невозможно без баз данных и тех, кто умеет их грамотно обслуживать. С каждым годом спрос на таких специалистов растет пропорционально разрастанию IT-инфраструктуры. Помимо обслуживания в обязанности DBA входит выработка требований к базам данных, их проектирование, реализация, эффективное использование и поддержание целостности БД, включая управление учетными записями пользователей БД и защиту от несанкционированного доступа.
Тут не обойтись без знаний языка запросов SQL, одной из СУБД (PostgreSQL, например), а также различных технологий и приемов системного администрирования.
PM (Project Manager)
В мире IT ощущается сильный дефицит хороших проектных менеджеров — управленцев, которые руководят IT-проектом в целом. В большинстве случаев это бывшие программисты или тестировщики. Однако, чтобы стать PM-ом необязательно иметь за плечами кодерское прошлое.
Ключевыми обязанностями этих специалистов являются: проектирование и расстановка приоритетов, планирование выполнения задач, контроль, коммуникации, а также оперативное решение проблем внутри проекта. Ну а самая главная задача — сделать так, чтоб идея заказчика была реализована в срок в условиях ограниченности ресурсов.
Конечно, это очень обобщенный список обязанностей PM-а. На самом деле данные специалисты часто работают сверх нормы и их рабочее состояние можно описать как “белка в колесе”. Однако послевкусию успешно выполненного проекта тяжело что-либо противопоставить.
Загвоздка этой профессии в том, что должность PM-а предусматривает большую конкуренцию. Согласно данным, в июле 2020-го года на сайте DOU на одну вакансию проджект менеджера откликнулось почти 30 кандидатов (всего 183 вакансии). Поэтому, чтобы заполучить желаемую позицию, необходимо обладать не только необходимым опытом и знаниями, но и хорошими организаторскими способностями, а также другими важными для этой профессии личностными качествами.
QA Engineer (Quality Assurance)
Специалист по обеспечению качества, он же — тестировщик. Призван выявлять неисправности в ПО, которые допустили разработчики. Востребованность данных специалистов тяжело оспорить, ведь каждый программный продукт перед выходом в свет может пройти не одну итерацию тестирования, где выявляется приличное количество багов. Выходит, без QA мы бы имели очень недоработанное ПО, а производитель — провал продукта на рынке и падение репутации.
Тестировщиков делят на два вида — Manual QA Engineer и Automation QA Engineer. Первый выполняет всю работу вручную, а второй использует инструменты автоматизации, в том числе и языки программирования (Java, Python) что влияет на заработную плату и ценность такого сотрудника. Конкуренция за место тестировщика довольно высока, а потому получить первую должность может быть не таким простым заданием.
Data Scientist
Ученый-эксперт, главные задачи которого — извлечение из большого массива данных полезной информации, которая потом может использоваться в различных сферах; в основном, это бизнес и наука.
Данный специалист должен иметь прекрасное аналитическое мышление, владеть математическим аппаратом (включая мат. статистику и мат. моделирование), знать программирование (Python, R) и базы данных (как SQL, так и NoSQL). С начала 2010-х годов профессия Data Scientist считается одной из самых привлекательных, высокооплачиваемых и перспективных в IT.
Data Analyst
В то время, как Data Scientist ориентируется на предиктивную аналитику, Data Analyst работает с информацией постфактум. У данного профессионала менее техническая роль — он работает с уже готовыми данными, а именно: проводит дескриптивный анализ, интерпретирует и визуализирует результаты, а также презентует отчет своим заказчикам.
Заключение
В данной статье мы постарались дать ответ на вопрос “Какую IT-специальность стоит выбрать в 2021 году?”. Такие ресурсы, как Stack Overflow, DOU и TIOBE помогли нам проанализировать текущую ситуацию в IT и проследить взаимосвязь с прошлым, 2019 годом. В целом, уклон на веб, энтерпрайз и мобильную разработку сохранился и каких-то кардинальных изменений не ожидается. Также, никуда не исчезла востребованность тестировщиков и специалистов, которые работают с данными.
Естественно, карантинные ограничения из-за распространения коронавирусной инфекции отразились и на IT-секторе (снижение ЗП, увольнения, переход на дистанционную форму работы), но мировое население привыкает и адаптируется под новые условия — все постепенно приходит в норму, а сами инвесторы готовы ринуться в бой, как только все ограничения будут сняты.
Зачем ждать подходящего момента? Берите момент и делайте его подходящим! ITVDN - это образовательная платформа для онлайн обучения программированию и информационным технологиям.
Наш портал насчитывает более 190 видео курсов и имеет собственные программы обучения по 12 самым популярным IT-профессиям, среди которых:
Верстальщик сайтов
FrontEnd Developer
Java Developer
Python Developer
C# / .NET Developer
Android Developer
iOS Developer
Unity / Game Developer
Database Developer
и другие
Формат обучения - записанные видео курсы, по которым можно обучаться в любое удобное время. Таким образом, вы сможете освоить IT-профессию не выходя из дома. Со всеми специальностями можно подробно ознакомиться, перейдя на страницу специальностей ITVDN.
Помимо записанных видео курсов, наша образовательная платформа предоставляет обучение в новом формате - Live Online. Он предусматривает регулярные онлайн занятия с ментором в небольших группах из 6-15 человек, на которых объясняется новый материал, обсуждаются нюансы выполнения практических заданий, есть проверка ДЗ и чат для общения с одногруппниками, а также доступ к видео курсам ITVDN. В процессе обучения учащиеся также разрабатывают собственный курсовой проект, который в конце защищают и добавляют в свое портфолио.
На данный момент Live Online обучение проводится по четырем самым популярным IT-специальностям:
C#/.NET Developer
Frontend Developer
Java Developer
Python Developer
Если вас заинтересовал формат Live Online, переходите по ссылкам и ознакомьтесь с подробностями предложений по каждой из четырех специальностей.
Надеемся, что наша статья была полезной для вас. С радостью примем любые пожелания и замечания. Выбирайте IT-профессию вашей мечты и пускай ничто не останавливает вас на пути к ней!
Изучайте программирование на ITVDN
Яку ІТ-спеціальність обрати у 2023 році?
Автор: Влад Сверчков
Коротко про українське ІТ в 2022 році.
Український ІТ-спеціаліст у 2022 році.
Аналітичні огляди сучасного ІТ.
Які ІТ-спеціальності будуть затребувані у 2023 році?
Кому потрібне гарне володіння англійською мовою?
Висновки.
Вітаємо наших читачів!
Українське ІТ демонструє чудові міцність та адаптивність навіть в умовах повномасштабної війни. Так, багатьом айтішникам довелося здійснити вимушене переселення в інші регіони країни, ба навіть інші держави, аби знаходитися у відносній безпеці. Однак більшість зберегла за собою роботу і доходи, які дозволяють не тільки забезпечувати себе та свої родини необхідними умовами та засобами для життя, але ще й активно донатити на армію та різноманітні волонтерські проєкти – середній донат станом на червень 2022 року становив $270 на місяць (відповідно до результатів опитування на DOU).
Стабільність та гарні умови праці, можливість віддаленої роботи з будь-якої точки світу, де є інтернет, велика кількість ІТ-напрямків на вибір – ці та інші особливості стали вельми затребуваними у багатьох українців. З’явилася велика кількість бажаючих спробувати свої сили в ІТ, і піднялися одні з найголовніших питань: “З чого почати? Яку ІТ спеціальність обрати у 2023 році?”.
А й дійсно – як грамотно оцінити ситуацію на ринку ІТ та обрати собі спеціальність, яка:
буде подобатися;
матиме гарні кар’єрні перспективи;
буде забезпечувати задовільні умови праці та ЗП?
Будемо розбиратися з цим у даній статті. Ми розглянемо найголовніші спеціальності, які будуть оптимальними для новачків та матимуть попит на ринку ІТ ще довгий час.
Коротко про українське ІТ в 2022 році
Не встиг світ оговтатися від кризи, спричиненої коронавірусом, як одразу з’явилася нова внаслідок повномасштабного вторгнення росії на територію України.
Відповідно до аналітики Opendatabot – українського ресурсу, що надає доступ до державних даних та аналізує відкриті дані, – ІТ-послуги стали єдиним напрямком бізнесу, який показав приріст у 2022 році в порівнянні з 2021 – аж на 27% (січень-травень 2022). А друге дослідження показує, що за 8 місяців даного року відбулося зростання експорту ІТ-послуг на 16% у порівнянні з відповідним періодом у 2021 році. У серпні 48% усіх послуг, що експортувалися Україною, належали саме ІТ-галузі.
Красномовною є і статистика Джину – українського ресурсу з анонімного пошуку вакансій.
Попит на Djinni перевищує кількість пропозицій майже втричі. У вересні – 18 779 відкритих вакансій і 52 405 кандидатів.
З посту в телеграм-каналі Джину легко бачити, що у серпні 2022 було понад 250 тисяч відгуків на вакансії – це при тому, що з серпня 2021 по лютий 2022 кількість відгуків кожного місяця коливалася в межах від 77 до майже 111 тисяч.
Ще один серпневий пост демонструє залежність середньої кількості відгуків на вакансію від вимоги до досвіду кандидата. Таким чином:
кандидати без досвіду – 75.25 відгуків на вакансію;
1 рік досвіду – 31.36 відгуків;
2 роки – 12.39;
3 роки – 5.76;
5 років – 4.1.
У новачків сезон справжніх “голодних ігор”.
Тим не менш, ІТ-сектор демонструє гарну стійкість та позитивну динаміку попри негаразди війни. Це перспективна галузь, яка не тільки дає масу переваг українцям-айтішникам, але й гарно підживлює економіку.
Варто не забувати, що така успішність багато в чому залежить від закордонних замовників, адже переважна більшість українських ІТ-продуктів та ІТ-послуг експортуються за кордон – приблизно 95% (за матеріалами “Економічної правди”).
Український ІТ-спеціаліст у 2022 році
Звернемося також і до свіжого портрету українського ІТ-спеціаліста від DOU за 2022 рік (15 135 респондентів).
Найбільша кількість чоловіків відповідно до напрямків:
DevOps, SRE (97.3%);
системне адміністрування (95.8%);
CTO, найвищі керівні посади (92.9%);
розроблення ПЗ, Software Engineering (91.3%);
розроблення ігор (89.5%);
Data Science (80.3%);
технічна служба підтримки (70%);
тестування (65.8%);
менеджерські посади (64.9%).
Найбільша кількість жінок у HR/Recruiting (90%), маркетингу (64%) та технічному письменництві (62%). За ними йдуть дизайн (45.6%), сфера продажів (44%) та аналітика (42.5%).
Відповідно до картинки вище, найбільша кількість опитаних українських айтішників працює у якості розробників. Далі йде професія тестувальника, менеджера, HR/рекрутера і т. д.
З картинки вище видно, що найчастіше респонденти мають тайтл Middle (1-5 років досвіду) та Senior (3-9 років). Розробники рівня Junior складають 16.2% (до 2-х років досвіду), а інтерни – всього 1.3% (без досвіду).
Найбільша кількість початківців (Junior та Intern) серед:
HTML Coder (45%);
Data Science (27%);
Game Developers (25%);
аналітики (24%);
тестувальники (23%).
При цьому ІТ України нараховує багато початківців. 6% опитаних знаходяться в ІТ менше року, 59% працевлаштовані в ІТ 5 років або менше, а 71% мають до 6-ти років досвіду за своєю поточною спеціалізацією.
87% респондентів мають вищу освіту, а 8% з них – навіть дві. Ще 5% є студентами і тільки на шляху до отримання диплому. Науковим ступенем володіє близько 2% опитаних. Найчастіше це ті, хто розробляє ПЗ під різну електроніку (Hardware Engineers – 9%), Data Science спеціалісти (7%) і представники найвищих керівних посад – CTO/CEO (6%).
Щодо англійської: в цьому році 53% респондентів оцінили свій рівень як Upper Intermediate (вище середнього) або Advanced (поглиблений). 33% визначають свій рівень як Intermediate (середній).
На зображенні бачимо, що найбільш цікава робота у керівників найвищої ланки (а хто б сумнівався?), спеціалістів у сфері маркетингу та HR/рекрутерів (критерії “цікава” та “дуже цікава”).
Найбільш невдоволеними виявилися сисадміни, Support та спеціалісти з продажів. Фахівці перших двох напрямків спеціалізуються на вирішенні технічних проблем, тому часті смикання під час роботи, необхідність швидко все полагодити та афілійовані із цими процесами стреси для них не є рідкістю. Ще можна додати відносно невисоку медіанну ЗП – $1000-$1045 – трохи вища за Junior розробника. А невдоволення спеціалістів із продажів можна пов’язати з великою відповідальністю і наслідками частого спілкування з різними клієнтами: Sales Manager-и повинні завжди демонструвати впевненість, знати все про свою компанію та свій продукт, діяти так, аби не заплямувати їх імідж, швидко знаходити відповіді на запитання клієнтів та виконувати інші професійні обов’язки.
Аналітичні огляди сучасного ІТ
Скористаємося аналітикою всесвітньовідомого ресурсу Stack Overflow, яким користується абсолютно кожний програміст сучасності. Порівняємо останні на сьогоднішній день опитування, проведені даним ресурсом – Stack Overflow Developer Survey 2022 (70 000 респондентів) та Stack Overflow Developer Survey 2021 (80 000 респондентів). В опитуваннях брали участь фахівці із різних куточків світу.
З ілюстрації вище видно, що найпопулярнішими напрямками, в яких працюють ІТ-спеціалісти, є:
Електронна комерція – інтернет-магазини, фінансові та торгові угоди і транзакції, проведені через інтернет тощо.
Фінансові технології – оптимізація та вдосконалення фінансових послуг, які надає той чи інший бізнес, компанія, корпорація і т. д.
Розроблення мобільних додатків під Android та iOS.
Медіа сфера.
Медичні технології – поліпшення якості та безпеки медичних послуг різноманітного характеру.
Розроблення ігор під різноманітні платформи.
Далі йдуть напрямки, що цьогоріч не перетнули 5-відсотковий бар’єр.
Із зображення вище бачимо, що найбільша кількість спеціалістів належить до наступних ІТ-напрямків:
FullStack – розроблення серверної + клієнтської частини вебдодатків;
BackEnd – серверна сторона вебдодатків;
FrontEnd – клієнтська частина вебдодатків;
Desktop or enterprise – розроблення настільних додатків (Desktop-додатків), розроблення додатків для потреб бізнесу (Enterprise).
На наступних сходинках йдуть:
розробники мобільних додатків – як для Android, так і для iOS;
DevOps спеціалісти – синхронізують всі етапи розроблення ПЗ: від створення коду до тестування та релізу;
інженери з хмарних технологій – займаються хмарною (cloud) інфраструктурою;
адміністратори баз даних;
системні адміністратори.
Переглянемо перші позиції цього ж рейтингу, але за 2021 рік.
Спостерігаємо аналогічну картину: перші позиції зайняті напрямками FullStack, BackEnd, FrontEnd, Desktop, Enterprise, Mobile Development, DevOps.
Звернемося і до рейтингів мов програмування. Опитування Stack Overflow 2022:
Опитування Stack Overflow 2021:
Перше місце в обох рейтингах займає мова програмування JavaScript, яка широко застосовується у web девелопменті (і у FrontEnd, і в BackEnd царинах). Далі йдуть мови верстання – HTML & CSS – інструменти, які застосовуються під час створення візуальної складової вебсайтів та вебдодатків (FrontEnd). На третє місце цьогоріч потрапляє SQL – мова запитів для роботи з реляційними базами даних (БД), яку обов’язково використовують розробники серверної частини вебдодатків, адміністратори БД та інші спеціалісти.
Python, Java та C# – дуже затребувані серед роботодавців та популярні серед розробників мови програмування, які вирізняються широким спектром застосування, зрозумілістю синтаксису, відносною простотою. Вони потрапляють у кожен ТОП-10 різноманітних мовних опитувань вже протягом багатьох років; їхня перспективність та актуальність обіцяє утримуватися ще довгий час. Особливою популярністю користується Python, оскільки його синтаксис максимально простий та лаконічний.
TypeScript – це та сама JavaScript, тільки з декількома нововведеннями та строгою типізацією для збільшення читаності коду і зменшення кількості ймовірних помилок. Використовується у веброзробці разом із відповідними фреймворками та платформами.
Node.js – платформа, яка розширює можливості та область застосування JavaScript (бекенд, настільні додатки, мікроконтролери).
Bash/Shell/PowerShell – інструменти, які найчастіше стають у нагоді системним адміністраторам та DevOps інженерам, бо дозволяють автоматизувати різноманітні рутинні процеси, завдяки чому вони і отримали високі позиції в рейтингу.
C/C++ – це сучасні корифеї від світу ІТ-розроблення. Непрості у вивченні мови, які при цьому мають дуже великі можливості та потужності. Незамінні під час створення ресурсоємного ПЗ, ігор, мікроконтролерів тощо.
PHP – класична мова серверного розроблення. Незважаючи на її вік, досі популярна та затребувана.
Розглянемо також і рейтинг мов відповідно до індексу TIOBE. Він щомісячно оцінює популярність мов програмування та вважається респектабельним джерелом – маса аналітиків посилається на нього в ході своїх досліджень.
Рейтинг TIOBE відрізняється від опитування Stack Overflow – це пов’язано з різницею опорних точок цих аналітик. Стек оверфлоу спирається на опитування, а статистика TIOBE ґрунтується на кількості кваліфікованих інженерів у всьому світі, а також на кількості курсів та сторонніх постачальників. Такі відомі пошукові рушіїі та сервіси, як Google, Yahoo!, Wikipedia, Amazon, Bing, YouTube та Baidu використовуються у розрахуванні рейтингів. Варто зазначити, що TIOBE не вказує, яка мова є найкращою, або якою написано найбільшу кількість коду. Він може бути використаний, аби виявити, чи відповідають ваші навички запитам сучасності, або, щоб прийняти стратегічне рішення щодо того, яку мову слід використати для створення нового додатку або програмної системи. Більше інформації стосовно методів визначення індексу за посиланням.
Рейтинг мов відповідно до індексу PYPL має наступний вигляд:
PYPL створений за рахунок аналізу того, наскільки часто люди шукають в пошуковій системі Google туторіали (інструкції) з мов програмування. Простіше кажучи, чим більше гуглять туторіали до тієї чи іншої мови, тим вища її позиція в рейтингу.
Розглянемо список популярних вебтехнологій відповідно до опитування Stack Overflow за 2022-й та 2021-й роки відповідно:
Як видно з діаграм, головні позиції належать FrontEnd бібліотекам та фреймворкам – jQuery, React.js, Vue.js, Angular, BackEnd-технологіям (Node.js, Express) а також технологіям .NET платформи – ASP.NET та ASP.NET Core. Після них йдуть фреймворки Django і Flask (Python).
Список інших фреймворків, бібліотек та інструментів розроблення:
Наразі перше місце посідає платформа .NET від компанії Майкрософт. Потім йдуть технології напрямку Python: NumPy (дає доступ до низки математичних конструкцій), Pandas (маніпулювання даними та їх аналіз). За ними – фреймворк Spring (Java), який призначений для веброзроблення. Менш популярними є інструменти Python для роботи з даними та ML – TensorFlow, Scikit-learn, а також платформи для мобільного розроблення – Flutter та React Native.
Отримані відомості вже дають достатньо уявлення про те, що зараз відбувається на ринку IT-послуг і дозволяють робити певні прогнози щодо затребуваності IT-професій.
Які ІТ-спеціальності будуть затребувані у 2023 році?
FrontEnd Developer
FrontEnd – це відгалуження у розробленні, спрямоване на створення клієнтської сторони вебдодатків, вебсайтів або іншого ПЗ та інформаційних систем: зовнішній вигляд застосунків, користувацька логіка, анімації – все, із чим користувач може взаємодіяти напряму.
Коли кажуть про FrontEnd або BackEnd, найчастіше мають на увазі саме Web стихію. Насправді ж, фронтенд і бекенд бувають не лише у вебі але й у десктопних та мобільних застосунках. Однак історично склалося, що під цими двома термінами розуміють саме веб складову, тому і в цій статті ми будемо притримуватися цих традицій.
Відповідно до аналізу Stack Overflow Developer Survey 2022 та 2021 років, а також аналізу індексів TIOBE та PYPL, ядро фронтенду – HTML, CSS та JavaScript – досі є затребуваним і використовується багатьма розробниками.
Крім того, ресурси з пошуку роботи в ІТ містять велику кількість вакансій FrontEnd Developer. Наприклад, на вже згаданому Djinni на момент написання статті було опубліковано 1399 пропозицій за напрямком JavaScript / FrontEnd, тоді як на C# / .NET, Java та Python спеціальності припадало 678, 884 та 514 вакансій відповідно.
ІТ-індустрія має великий попит на FrontEnd розробників, тому немає жодних сумнівів, що цей напрямок буде актуальним і у 2023-му році.
BackEnd Developer (Python, Java, C#, PHP)
BackEnd – це відгалуження у розробленні, спрямоване на створення серверної сторони вебдодатків або вебсайтів: взаємодія застосунку з БД, робота з даними користувача, серверна та обчислювальна логіка, програмно-апаратна частина сервісу – все, що приховано від користувача і знаходиться “під капотом”.
На озброєнні BackEnd девелопер тримає одну з популярних мов програмування: C# / PHP / Python / Java / JavaScript (Node.js) / Ruby тощо. Також даний спеціаліст знає безліч супутніх технологій та інструментів серверного розроблення.
BackEnd розвивається паралельно з FrontEnd-ом, айті-ринок має багато відповідних пропозицій з гарними умовами праці, тому перспективність вивчення даного напрямку є очевидною.
Full Stack Developer
Синтез двох вищеописаних спеціальностей. Не секрет, що будь-який працедавець цінує співробітника, який може успішно виконувати декілька задач, поєднуючи в собі обов’язки інших спеціалістів. Так само і в ІТ – особливо цінними є розробники, які здатні своїми знаннями та навичками покрити декілька професій, а в даному випадку – FrontEnd та BackEnd.
Детальний розбір спеціальності Full Stack Developer ви знайдете в нашій статті. В ній ми пояснюємо специфіку даного напрямку, необхідні для вивчення технології, переваги та недоліки професії, а також даємо важливі поради щодо опанування цього фаху.
Mobile Developer (Android / iOS)
Мобільне розроблення є відносно молодим, оскільки зародилося трохи більше двох десятків років тому. За цей час воно зазнало багатьох змін і сьогодні очолює одну з головних позицій в ІТ. При цьому напрацюваннями фахівців цієї сфери користується майже кожна людина — це не лише смартфони та планшети, а й фітнес-браслети, смарт годинники, електронні книги, складові “інтернету речей” та інші гаджети.
Найбільш популярні мови мобільного розроблення: Java / Kotlin під Android розроблення та Objective-C / Swift під iOS.
DevOps інженер
DevOps – це методологія, котра є симбіозом розроблення (Development) та системного адміністрування (Operations). Її головна мета – збільшення частоти випуску релізів. Фахівці даного напрямку також повинні розбиратися у використанні хмарних технологій та мати навички автоматизації інфраструктури.
DevOps Engineers обирають Python у якості основної мови програмування за її лаконічність, багатозадачність та підтримку великого різноманіття спеціальних пакетів, створених для підвищення ефективності цієї мови програмування, а також за інші переваги. Python в основному використовують разом із командною оболонкою Bash, маючи на меті спростити процеси розгортання ПЗ та автоматизувати різні завдання системного адміністрування (написання скриптів).
Фактично, DevOps спеціалісти – це програмісти-сисадміни. Бізнес дуже любить фахівців-мультитулів, тому ця професія дуже актуальна, престижна та є однією з найбільш високооплачуваних в ІТ.
CyberSecurity
IT-індустрія нарощує свої об’єми та потужності, а отже, зростає затребуваність і тих, хто має її захищати. На це і направлена діяльність фахівця з кібербезпеки. Цей напрямок має декілька відгалужень, і ви можете як захищати інфраструктуру від проникнення та вибудовувати надійну оборону (напрямок "захисту"), так і виявляти вразливості шляхом різноманітних хакерських методів – такі фахівці називаються пентестерами (напрямок "атаки").
Можете зануритися в аналіз та ризики (посада Security Analyst та Risk Compliance Specialist відповідно), займатися захистом інфраструктури та пошуком комп'ютерних вірусів (Malware Researcher), а також випробувати себе в багатьох інших «кібербезпекових» спеціальностях – ця сфера дає багато можливостей для реалізації людям із сильними аналітичними здібностями, уважністю, розсудливістю та стресостійкістю.
Database Administrator, DBA
Комфортна життєдіяльність у сучасному світі дуже залежить від баз даних: картотека пацієнтів лікарні, облік студентів та їх успішності, облікові записи користувачів різних сервісів, банківські рахунки, різноманітний контент в інтернеті тощо. Існує реальна потреба у спеціалістах, які вміють грамотно обслуговувати ці БД і супутню інфраструктуру.
Крім цього DBA бере на себе такі функції, як вироблення вимог до баз даних, їх проєктування, реалізація, ефективне використання та підтримка цілісності БД, включаючи керування обліковими записами користувачів БД та захист від несанкціонованого доступу.
Тут важливо володіти мовою запитів SQL, однією із СУБД (PostgreSQL, наприклад), а також різними технологіями та прийомами системного адміністрування.
PM (Project Manager)
Сучасне IT має гострий дефіцит гарних, талановитих проєктних менеджерів – управлінців, котрі керують IT-проєктом загалом. Часто це колишні програмісти чи тестувальники. Однак щоб стати проджект менеджером, необов'язково мати айтішне минуле.
Ключові обов’язки PM: проєктування та розстановка пріоритетів, планування виконання завдань, контроль, комунікації, а також оперативне вирішення проблем всередині проєкту. Найголовніше завдання – зробити так, щоб ідея замовника була реалізована в межах заданих термінів з урахуванням обмеженості ресурсів.
Звичайно, даний перелік обов'язків виконаний широкими мазками. Насправді PM-и часто працюють понаднормово і їхній робочий стан можна описати як "білка в колесі". Але важко щось протиставити післясмаку успішно виконаного проєкту.
Нюанс цієї професії полягає в тому, що посада PM-а передбачає значну конкуренцію. Відповідно до даних, у вересні 2022-го року на сайті DOU на одну вакансію PM-а відгукнулося більше 34-х кандидатів (всього 184 вакансії). Більша кількість відгуків лише у FrontEnd, HR, QA та Legal (право). Тому, щоб отримати бажаний job-офер, необхідно мати не тільки досвід і знання, а й гарні організаторські здібності, а також інші важливі для цієї професії особистісні якості.
QA Engineer, тестувальник
Фахівець із забезпечення якості, він же – тестувальник. І хоча QA та тестувальник – це трішки не одне і те ж саме, але ми прирівняємо їх один до одного, бо це не грає значної ролі в даній статті.
Сфера відповідальності тестувальника – виявлення несправностей, багів ПЗ, допущених розробниками. Затребуваність цих фахівців важко оскаржити, адже кожний програмний продукт перед появою може пройти не одну ітерацію тестування, де виявляється вагома кількість багів. Виходить, без QA ми мали б дуже недопрацьоване ПЗ, а виробник — провал продукту на ринку, падіння репутації та, ймовірно, навіть банкротство.
Тестувальників ділять на два види – Manual QA Engineer та Automation QA Engineer. Перші виконують всю роботу вручну, а другі використовують інструменти автоматизації, у тому числі мови програмування (наприклад Java, Python), що підвищує цінність такого співробітника, і, відповідно, його зарплату. Конкуренція за місце тестувальника в українських реаліях надзвичайно висока, тому для отримання першого job-оферу потрібно буде докласти багато зусиль.
Data Scientist
Вчений-експерт, головними завданнями якого є вилучення з великого масиву даних корисної інформації, яка потім може використовуватися в різних сферах; в основному, це бізнес та наука.
Даний фахівець повинен мати чудове аналітичне мислення, володіти математичним апаратом (включаючи мат. статистику та мат. моделювання), знати програмування (Python, R) та бази даних (як реляційні, так і нереляційні). З початку 2010-х років професія Data Scientist вважається однією з найбільш привабливих, високооплачуваних та перспективних в IT.
Data Analyst
Якщо Data Scientist орієнтується на предиктивну аналітику, то Data Analyst працює з інформацією постфактум. У цього спеціаліста менш технічна роль — він працює зі вже готовими даними, а саме: проводить дескриптивний аналіз, інтерпретує та візуалізує результати, а також презентує звіт своїм замовникам.
При цьому з БД, мовами Python і SQL та іншими інструментами збору та оброблення інформації аналітик також має бути гарно знайомий, аби ефективно виконувати покладені на нього задачі.
Кому потрібне гарне володіння англійською мовою?
Відповідно до вже згаданого портрета ІТ-спеціаліста, високий рівень англійської у тих, хто спілкується з іноземними замовниками та клієнтами або займається просуванням продуктів: Customer Success Manager, Project Manager, найвища ланка керівництва, спеціалісти з продажів, архітектори, техліди.
Також англійська на рівні Upper Intermediate+ у технічних письменників та спеціалістів з роботи з даними (Data Scientists, аналітики).
Розробникам буде достатньо рівня Intermediate, аби читати технічну документацію без зайвих проблем. Однак бажано мати Upper Intermediate та вище, оскільки це не тільки сприяє більш комфортній взаємодії з англомовними ресурсами та іноземними колегами, але й підштовхує вас вгору кар’єрними сходами і, звичайно ж, позитивно впливає на ЗП (відповідно до зарплатного опитування від DOU за літо 2022 року).
Висновки
У цій статті ми постаралися дати вичерпну відповідь на запитання: “Яку IT-спеціальність варто обрати у 2023 році?”. У наших судженнях та висновках ми спиралися на такі авторитетні ресурси (міжнародні та українські), як Stack Overflow, Djinni, DOU, індекси TIOBE та PYPL. Також була проведена кореляція з минулим роком, аби продемонструвати стабільність ринку ІТ-професій та показати, що вкладені вами сили та час у навчання не будуть марними, а обраний вами напрямок нікуди не зникне.
На лідерських позиціях, як і в минулі роки, залишаються Web, Enterprise та Mobile розроблення. Тестувальники також затребувані, хоча і мають надзвичайно велику конкуренцію серед початківців, оскільки це один із найлегших способів потрапити в ІТ, а з початком повномасштабного вторгнення інтерес до ІТ зріс так само стрімко, як і під час ковіду.
Висока затребуваність також і у DevOps інженерів при відносно невисокій конкуренції – 3.7 відгуки на одну вакансію у вересні 2022 року (всього вакансій – 243, джерело).
Звичайно, повномасштабна війна наклала свій відбиток на ІТ у вигляді міграції бізнесів та айтішників на захід України, різкого притоку новачків, збільшення “дистанційних” вакансій та проблем з електроенергією через обстріли росіянами нашої енергетичної інфраструктури, але зарплати залишилися високими – десь навіть підвищилися, – та й в цілому ІТ стоїть і забезпечує як айтішників, так і нашу армію.
То ж навіщо чекати відповідного моменту? Беріть момент та робіть його відповідним! ITVDN – це освітня платформа для онлайн навчання програмуванню та інформаційним технологіям.
Наш портал налічує понад 230 відео курсів та має власні програми навчання за 15 найпопулярнішими IT-професіями, серед яких:
Верстальник сайтів
FrontEnd Developer
Java Developer
Python Developer
C# / .NET Developer
Android Developer
Unity / Game Developer
PHP Developer
та інші.
Формат навчання – записані відео курси, за якими можна навчатися у будь-який зручний час. Таким чином, ви зможете опанувати IT-професію, не виходячи з дому. З усіма спеціальностями можна детально ознайомитись, перейшовши на сторінку спеціальностей ITVDN.
Окрім записаних відео курсів наша освітня платформа надає навчання у новому форматі – Live Online. Він передбачає регулярні онлайн заняття з ментором у невеликих групах із 6-25 осіб, на яких пояснюється новий матеріал, обговорюються нюанси виконання практичних завдань, є перевірка ДЗ та чат для спілкування з одногрупниками, а також доступ до відео курсів ITVDN. У процесі навчання учні також розробляють власний курсовий проєкт, який наприкінці захищають та додають до свого портфоліо.
На даний момент Live Online навчання проводиться за чотирма найпопулярнішими IT-спеціальностями:
C#/.NET Developer
Frontend Developer
Java Developer
Python Developer
Якщо вас зацікавив формат Live Online, переходьте за посиланнями та ознайомтеся з подробицями пропозицій щодо кожної з чотирьох спеціальностей.
Також пропонуємо вашій увазі підбірку вебінарів, які допоможуть вам розібратися в головних моментах тієї чи іншої мови програмування або спеціальності:
Чи варто вчити Ruby у 2023 році?
Як стати Java розробником у 2023 році?
Яку мову програмування вчити в 2023 році?
Огляд корисних ресурсів для вивчення C# та .NET з нуля
Як швидко вивчити Python. Покроковий план з нуля
Як стати PHP розробником та отримати офер від ІТ-компанії
Старт кар’єри в Java розробці. Особистий досвід, актуальні тренди та підводні камені
Що таке DevOps
та інші корисні вебінари – у нашому каталозі.
Сподіваємось, що наша стаття була корисною для вас.З радістю приймемо будь-які побажання та з розумінням і повагою – будь-які зауваження. Обирайте IT-професію вашої мрії та нехай ніщо не зупиняє вас на шляху до неї!
Вивчайте ІТ-спеціальності на ITVDN!
FAQ програміста-початківця
Автор: Влад Сверчков
Приветствуем вас!
Все, кто решились выбрать для себя путь программирования очень часто сталкиваются со стандартными вопросами: “С чего начать?”, “Что учить?”, “Сколько времени мне надо потратить на обучение, чтобы получить должность разработчика и зарабатывать N-ную сумму денег?” и т. д.
Мы решили собрать наиболее часто задаваемые вопросы (от англ. “Frequently Asked Questions” - F.A.Q.), которые интересуют будущих программистов, и дать на них максимально информативные ответы. Надеемся, что наша статья окажется для вас ценной находкой.
Какой язык программирования выбрать?
Самыми легкими для изучения обычно называют такие языки программирования:
Python
JavaScript
Ruby
Java
C#
Если решитесь изучать один из них, будьте готовы к многочисленной конкуренции, ведь о простоте этих языков известно не только вам.
Однако, мы советуем ориентироваться не на язык программирования, а на сферу разработки, в которой желаете себя реализовать и которая будет вам при этом интересна.
Если вам хочется создавать красивые и эффектные веб-страницы вместе с пользовательской логикой - выбирайте направление FrontEnd разработки и изучайте JavaScript + языки верстки HTML и CSS, а также смежные технологии.
Хотите создавать то, что находится “под капотом” веб-приложений? Тогда вам больше подойдет BackEnd разработка, которая представлена следующими языками: PHP, Java, C#, Python, JavaScript, Ruby и другими.
Хотите посвятить себя созданию мобильных приложений? Обратите внимание на C#/Java/Kotlin (для ОС Android), Objective-C/Swift (iOS).
Любите компьютерные игры и горите желанием их разрабатывать? Для более легковесных игр подойдет C# со средой разработки Unity либо язык Java, в то время, как создание серьезных игр невозможно без высокопроизводительного С++.
Программирование роботов и прочих устройств, в которых используются микроконтроллеры требует владения низкоуровневым языком программирования Assembler, а также C/C++.
При выборе сразу отбросьте мысли, мол, “буду учить тот язык программирования, за который больше платят”.
Во-первых, потому что помимо самого языка необходимо знать еще целый стек вспомогательных технологий: сборщики проектов, пакетные менеджеры, системы управления базами данных и/или другие важные компоненты разработки ПО (для каждой специальности свой набор). Вы должны отдавать себе отчет касательно готовности освоения того или иного стека. Конкретный список технологий под каждую специальность можно найти в требованиях к вакансиям либо на различных ресурсах, которые специализируются на IT. Как пример, в каталоге специальностей ITVDN вы сможете узнать о специфике работы порядка 20 IT-профессий.
Во-вторых, такой денежно-ориентированный подход имеет один существенный минус, который перечеркнет все ваши старания - рано или поздно вы просто-напросто морально выгорите. Деньги - это хороший стимул, однако, если вы не будете получать от своей работы удовольствия, она превратится в каторгу, ваша трудоспособность упадет и в итоге вы будете вынуждены искать себе другой источник заработка.
Поэтому вначале выберите ту сферу разработки, которая вам по душе, а затем уже выбирайте язык программирования и вспомогательные технологии. Ведь то, что вам нравится, будет легче и интереснее изучать. А солидные деньги вы сможете зарабатывать в любой IT-области. Главное - вырасти как профессионал и любить свое дело.
Нужно ли высшее образование?
Чтобы стать программистом, не обязательно получать высшее образование. В конце-концов, на собеседовании диплом вам вряд ли чем-то поможет, если вы не справитесь с тестовым заданием, либо не сможете дать достойные ответы на теоретические вопросы и произвести положительное впечатление на рекрутера.
На деле в большинстве компаний диплом не требуют (он “для галочки”), а смотрят лишь на ваши профессиональные навыки и личные качества. Крупные компании, однако, очень часто поступают иначе - отказываются рассматривать кандидата без высшего образования (либо требуют, чтоб кандидат был в процессе получения соответствующего образования).
Не секрет, что большое количество отечественных ВУЗов имеет устаревшую программу обучения (лет на 10 в лучшем случае) и способно дать студентам только фундаментальное понимание программирования и его концепций.
Если говорить о развитых странах, то там все серьезнее. Учеба в “вышке” тяжелее, к выпускникам ВУЗов относятся лучше и диплом действительно играет более значимую, нежели у нас, роль. Довольно часто иностранные компании вне зависимости от ваших навыков и опыта требуют диплом бакалавра либо, как минимум, чтоб вы на момент подачи резюме учились в ВУЗе и были на финишной прямой. Более того, диплом упрощает процесс получения рабочей визы, без которой вы не сможете легально работать программистом, например, в Чехии или США.
А вот на какие должности вас 100% не примут без диплома как в родной стране, так и в зарубежье - это руководящие позиции в IT. Их занимать имеет право только человек с полным высшим образованием.
Несмотря на все противоречивые моменты, университет - это неплохая школа жизни. Самое важное, что можно для себя вынести из ВУЗа - это связи. Вы можете заиметь хорошие знакомства и получить очень полезные советы касаемо вашего дальнейшего развития в IT буквально из первых уст. Идеальным вариантом будет отучиться 2 года на очной форме обучения, затем перейти на заочную и параллельно работать по специальности. Как итог - по окончании бакалавриата вы имеете и университетскую базу, и диплом, и опыт работы.
Надо ли знать математику?
Если вы собираетесь реализовывать себя в научной области, либо в таких IT-сферах, как машинное и глубокое обучение, Data Science, Big Data, разработка искусственного интеллекта, то без высшей математики никак не обойтись. Это именно тот случай, когда необходимо по максимуму знать и применять математический аппарат для разработки сложных алгоритмов, а также систем, которые работают с огромными массивами данных.
Однако, зачастую IT не требует знания глубоких материй и необходимый мат. аппарат ограничивается первыми курсами университета (теория множеств, графов, автоматов, алгоритмов, базовая логика) ну и плюс стандартная школьная программа, естественно. Наименее зависимыми от математики являются такие специальности, как верстальщик и FrontEnd разработчик.
Вообще-то, математика в программировании - это прежде всего о математическом и аналитическом мышлении, которое помогает критически мыслить, абстрагироваться и развязывать задачи, умело используя логику. Именно правильный взгляд и рациональный подход к решению задач является главным оружием программиста. С развитием мат. мышления вам помогут различные книги, а также практика - кодинг, решение математических задачек и прочие упражнения, которые можно найти на просторах интернета.
Сколько учиться на программиста?
Зависит от выбранной специальности и способа обучения. Быстрее всего освоение программирования происходит на курсах, поскольку вы изучаете все необходимые технологии в компактном и структурированном виде. Также над вами есть ментор, который не дает расслабиться, поддерживая дисциплину и помогая в случае необходимости.
Выбрав самообучение, вы увеличите время освоения IT-профессии, поскольку будете сами выбирать программу обучения, составлять план занятий и подбирать информационные ресурсы. Более того, очень тяжело будет поддерживать мотивацию, что чревато прокрастинацией, и, как следствие, вы рискуете “забросить” учебу так и не достигнув желаемой цели.
Подробнее о том, как необходимо планировать самообучение вы можете прочесть в нашей статье “Онлайн обучение программированию: подводные камни и советы”.
Обычно на обучение с помощью курсов уходит от нескольких месяцев до 6-8, а при самообучении - от 6 месяцев до года либо полутора года при условии организации систематических занятий и практик.
Как попасть на работу, не имея опыта?
Если вы практикуете классический вариант поиска работы, то вначале необходимо составить достойное портфолио, в котором вы продемонстрируете все ваши знания и навыки. Разработайте несколько удачных проектов, которые максимально раскроют вас как разработчика в выбранной IT-сфере. Не менее важным является и грамотное оформление резюме, ведь это ваша визитная карточка, ваш крючок, за который должен зацепиться рекрутер. Оно должно быть составлено без ошибок и без лишних деталей. При этом в резюме желательно указывать все ваши заслуги в сфере вашей будущей работы либо в смежных областях: диплом технического ВУЗа, сертификаты пройденных IT-курсов, победы в состязаниях программистов и т. д. Указывайте все то, что повышает вашу ценность как сотрудника.
Однако, в программировании есть и другие варианты поиска первой работы:
Попасть на стажировку. Вы учите необходимые технологии и языки самостоятельно, а затем ищете вакансии, которые предусматривают данную форму занятости. Стажировка хороша тем, что она ориентирована на тех, кто хорошо владеет теорией, но не имеет практики. Во время ее прохождения вы учитесь применять ваши знания. Стажировка не всегда оплачивается, зато опыт, приобретенный во время ее прохождения - бесценен. Даже если вас не приняли на полноценную работу после стажировки, у вас уже будет минимальный набор профессиональных навыков и опыт, что даст фору перед другими новичками в дальнейших поисках работы.
Успешно пройти курсы от IT-компании по выбранной специальности и затем попасть к ним на стажировку. Многие компании набирают желающих и учат их “под себя”. Если вы демонстрируете хорошие показатели в ходе обучения и выполняете все домашние задания, проходите все тесты, успешно разрабатываете и защищаете свой курсовой проект, вам по завершении учебы предложат стажировку в этой компании. Это отличный вариант, поскольку вам дают актуальные знания, не учат лишнему и при этом вы обогащаетесь опытом. Единственный нюанс - чтобы попасть на такие курсы, необходимо пройти предварительное тестирование и последующее собеседование (техническое либо нетехническое). То есть, этот вариант предусматривает априорное владение изучаемыми на курсе технологиями на определенном уровне.
Знакомства, они же связи (^^). За подробностями обращайтесь к вашим друзьям и знакомым.
Какие личные качества должны присутствовать у будущего программиста?
Стрессоустойчивость.
Работа программистов связана с дедлайнами - конечными сроками, в которые необходимо выполнить ту или иную задачу. Иногда могут возникать ситуации, когда не все идет по плану - вы замечаете какие-то неполадки в вашем коде либо попросту не успеваете выполнить свою часть работы. В таких случаях стрессоустойчивость позволяет вам сохранять спокойствие и не бросаться в панику, подходя к решению проблем рационально и с холодным умом.
Коммуникабельность и умение работать в команде.
В сегодняшних реалиях никто не занимается разработкой коммерческого ПО в одиночку. Хороший программный продукт требует команды разработчиков с отлаженным механизмом взаимодействия внутри ее. Каждый член коллектива - это как шестеренка в механических часах, без нормального функционирования которой останавливается весь механизм. Необходимо уметь перенимать опыт коллег и обмениваться им с другими, делиться своим мнением, обсуждать различные производственные моменты и просто быть со всеми на короткой ноге. Здоровая атмосфера в коллективе порождает хороший конечный продукт. Более того, навыки коммуникабельности вам помогут не только на работе, но и во всех других сферах жизнедеятельности.
Умение всегда учиться
Мир имеет высокую динамику развития, и такие люди, как программисты, очень хорошо ощущают перемены в IT и зачастую сами их порождают. Возникновение новых технологий, концепций и подходов к разработке ПО, различные обновления спецификаций языков программирования - все это и даже больше заставляет программистов постоянно учиться и обновлять свои знания.
Математическое мышление и аналитический склад ума
Мы уже упоминали о мат. мышлении в разделе “Надо ли знать математику?”. Оно помогает быстрее и эффективнее решать программистские задачи. Аналитический склад ума позволяет смотреть на проблемы со всех ракурсов, выцепливая самые рациональные подходы. Без этих качеств программисту не обойтись. Да и по жизни такой способ восприятия и обработки информации явно будет не лишним.
Упорство
Работа программистов очень сильно привязана к моральной выносливости. Не все решения приходят в голову сразу и не все задачи имеют очевидные ответы. В такие моменты очень важно не опускать руки. Комбинируйте эту пассивную способность с другими - обращайтесь за помощью к коллегам, абстрагируйтесь от текущей задачи, попробуйте проанализировать все возможные пути подступа к решению. Главное - не отступать и не сдаваться.
Усидчивость и внимательность
В данном пункте обойдемся без комментариев.
Сколько денег можно получать, работая программистом?
Это зависит от опыта работы на позиции, а также от набора технологий, которые вы знаете и применяете на практике. Актуальную зарплату программистов можно узнать на сайте jobs.dou.ua (Украина), jobs.dev.by (Беларусь), itmozg.ru (Украина, Россия, Беларусь, Казахстан) или на Stack Overflow (все страны).
Насколько важно знать английский язык?
Английский язык очень важен для программиста. Большинство материалов, документаций и просто хороших советов находится на англоязычных ресурсах. Для работы в команде разработчиков обычно знаний языка на уровне чтения технической документации и комментирования кода вполне достаточно. Однако если вы планируете самостоятельно вести переговоры и переписку с иностранным заказчиком, либо находитесь в интернациональной команде, ваш уровень английского должен быть выше.
Итоги
Мы разобрали самые популярные вопросы, которыми задаются новички в программировании, и постарались сделать ответы максимально развернутыми, чтобы вы понимали, в каком направлении вам следует двигаться дальше. Надеемся, статья была полезной для вас. Пишите в комментариях свое мнение и задавайте интересующие вас вопросы!
Будьте здоровы и не останавливайтесь на пути к вашим целям!
Выбирайте ITVDN!
Що має знати C# .NET розробник у 2023 році
Автор: Влад Сверчков
Мова програмування C#
ООП
Алгоритми та структури даних
Шаблони проєктування
Бази даних
SQL
Entity Framework Core
LINQ
ASP.NET
ASP.NET Core
Git
Основи FrontEnd
Англійська мова
Підсумки
На сьогоднішній день .NET програміст може застосовувати свої навички у різних сферах розроблення програмних продуктів:
створення веб-застосунків та веб-сервісів;
створення настільних додатків;
створення хмарних сервісів;
створення ігор;
створення мобільних застосунків.
Коли говорять про .NET розробників, мають на увазі програмістів, які пишуть мовою C#. Ця мова програмування, як і вся платформа .NET, була створена, розвивається та підтримується компанією Microsoft, котра стабільно вже кілька десятиліть входить до ТОП-10 компаній – світових лідерів ринку інформаційних технологій. Усі продукти компанії Microsoft створено на платформі .NET. Які ж технології необхідно вивчити, щоб стати .NET програмістом?
Оскільки левова частка .NET-вакансій припадає саме на веб-сегмент, дана стаття буде охоплювати як фундамент, яким зобов’язані володіти усі розробники цієї платформи, так і основні технології серверної сторони веб-девелопменту.
Мова програмування C# (“сі шарп”)
Будь-який .NET розробник не може називатися і бути таким, якщо він не вміє гарно програмувати мовою C#.
Це універсальна об'єктно-орієнтована мова, яка є потужним інструментом створення програмного забезпечення з широкою сферою застосування. При такій високій функціональності вона досить нескладна у вивченні і відмінно підійде тим, хто збирається зробити перший крок назустріч програмуванню.
Завдяки широкому спектру застосування С# є дуже затребуваною мовою. Різні ресурси з пошуку роботи пропонують велику кількість вакансій, причому як на великі проєкти з чітко визначеним консервативним стеком технологій, так і в компанії, які створюють новий програмний продукт із застосуванням найсучасніших інструментів.
Компанія Microsoft активно розвиває своє дітище – .NET напрямок, тому C# завжди актуальна, йде розширення функціоналу, додаються нові можливості. Тенденція останніх років - кросплатформність, що реалізується в .NET Core. Безліч навчальних матеріалів, якісна офіційна документація, відео курси та освітні вебінари, дружнє ком’юніті – все це створює максимально комфортні умови для грамотного поетапного вивчення даної мови.
ООП
Об'єктно-орієнтоване програмування - це методологія розробки програмного забезпечення, в основі якої лежать чотири головні принципи: абстракція, інкапсуляція, наслідування та поліморфізм. Оскільки C# є об'єктно-орієнтованою мовою, необхідність вивчення та повного розуміння ООП парадигм є обов'язковою. Однак, є і приємна новина: всі принципи швидко та легко засвоюються під час вивчення C#.
Алгоритми та структури даних
Розуміння алгоритмів та структур даних – також обов'язкові знання для будь-якого програміста.
Вивчивши структури даних, ви зможете управляти складністю своїх програм, роблячи їх більш доступними для розуміння, а також розробляти високопродуктивні програми, які ефективно працюватимуть з пам'яттю.
Знання алгоритмів дозволить вам створювати складні конструкції для ефективного розв'язання широкого спектру завдань.
Шаблони проєктування
Патерни (вони ж шаблони) являють собою архітектурні конструкції, які описують типові способи вирішення поширених завдань, що виникають у ході проєктування програмного забезпечення. Усього існує понад два десятки шаблонів, проте знати їх усі - це обов'язок архітектора, а не .NET розробника. Зазвичай в одному проєкті використовується невелика кількість патернів, тому вам достатньо пам’ятати лише найпопулярніші з них.
Бази даних
Кожний додаток оперує даними – від інтернет-магазинів та банківських систем до корпоративних застосунків і соціальних мереж. Реєстрація, авторизація та автентифікація користувача, прийом, зміна та відправлення даних на сервер або навіть просте збереження конфігурації застосунку – все це є даними, які потребують окремого місця для їх збереження.
Цим сховищем слугують бази даних (БД), що являють собою організовану структуру для прийому, зберігання та оброблення даних різного формату – від ПІБ та номерів телефону до зображень і відео контенту.
Саме тому знання БД є дуже важливими в тому числі і для .NET розробників. Необхідно володіти базовою теорією з БД: основні терміни, реляційні та нереляційні бази даних (ви працюватимете саме з реляційними – такими, які мають реляційну структуру), нормалізація, відношення one-to-one, one-to-many та many-to-many, пошук і впорядкування інформації, робота з таблицями тощо.
SQL
Structured Query Language – декларативна мова структурованих запитів, яка створена для взаємодії з базами даних. Особливість SQL полягає в тому, що вона лише описує необхідні компоненти та бажані результати, не вказуючи, як саме ці результати мають бути отримані.
Вивчення мови запитів дуже тісно пов’язане з вивченням теорії баз даних, тому заглиблюючись в БД ви неодмінно почнете практикуватися та набивати руку і з SQL.
Entity Framework Core
Entity Framework – спеціальна об'єктно-орієнтована технологія на базі фреймворку .NET, яка дозволяє розробникам отримувати доступ до даних, використовуючи концептуальну об'єктну модель, а не безпосередньо реляційну базу даних. Це дає можливість абстрагуватися від самої БД і працювати з даними на більш високому рівні абстракції, який є зрозумілішим та зручнішим для людини. Завдяки такому підходу зменшується кількість коду, необхідного для отримання доступу до бази, зростає продуктивність та зменшується час на підтримку об'єктів у застосунках, що працюють з даними.
У двох словах, ця технологія дозволяє програмісту абстрагуватися від самої бази даних та працювати з даними незалежно від типу сховища.
LINQ
Language Integrated Query (мова інтегрованих запитів) – це проста та зручна .NET-технологія доступу до даних. Особливість даної мови запитів: можливість застосування до всіх джерел даних (XML-документи, XML-потоки, набори даних ADO.NET, бази даних SQL, масиви та колекції .NET тощо) одного й того ж самого підходу вибірки даних.
ASP.NET
Active Server Pages для .NET - платформа, що використовує середовище виконання .NET Framework та надає необхідні служби для створення серверних веб-застосунків та веб-сервісів. Є розвитком більш ранньої технології Microsoft ASP.
ASP.NET базується на середовищі виконання Common Language Runtime (CLR), яке є основою всіх застосунків Microsoft .NET. Також дана платформа має перевагу у швидкості порівняно зі скриптовими технологіями.
ASP.NET MVC є розширенням ASP.NET і представляє собою платформу для створення веб-сервісів за допомогою патерну MVC. Даний шаблон передбачає поділ застосунку на три компоненти: Модель, Представлення, Контролер, завдяки чому реалізується концепція поділу і закріплення відповідальності за кожним компонентом, що спрощує розробку проєктів.
ASP.NET Core
Фреймворк від компанії Microsoft, який використовує середовище виконання .NET Core, призначений для розроблення якісних сучасних веб-застосунків і є продовженням розвитку платформи ASP.NET. Однак це не просто оновлена технологія. Вихід ASP.NET Core фактично позначив якісну зміну усієї платформи. Остання версія 7.0 була випущена нещодавно – навесні 2022 року. Головні особливості ASP.NET Core:
наявність відкритого вихідного коду на GitHub;
кросплатформність;
модульність;
розширюваність;
можливість застосування хмарних технологій.
Докладнішу інформацію про всі нововведення можна знайти на офіційному сайті Microsoft.
Таким чином, платформа .NET Core істотно розширила сфери застосування технології ASP.NET і надала розробникам велику кількість можливостей щодо створення програмного продукту.
Git
Найбільш популярна система контролю версій, яка дозволяє вести історію розроблення проєкту з можливістю доступу до кожної збереженої версії.
Дані системи дозволяють команді програмістів працювати над одним проєктом одночасно, зберігаючи внесені зміни, а також відслідковувати виконання завдань кожним членом групи.
Не у всіх вакансіях можна зустріти серед вимог володіння системою контролю версій, проте знання Git або її аналогів дасть вам додаткову перевагу перед рештою кандидатів.
Основи FrontEnd
У великій кількості вакансій роботодавці очікують, що .NET розробник серверної частини також має бути знайомий і з фронтенд-технологіями, які використовуються на клієнтській стороні під час створення веб-застосунків:
HTML & CSS – мови верстання веб-сайтів та веб-сервісів. HTML служить каркасом, який визначає основну архітектуру зовнішнього вигляду, а CSS – каскадні таблиці стилів, котрі допомагають збагатити зовнішній вигляд застосунку. Дуже легкі мови верстання, які вивчаються швидко та без проблем.
Основи JavaScript (JS) – це мова програмування, якою створюється програмна логіка клієнтської сторони веб-застосунків, а також різні анімації. JavaScript є однією з найлегших мов програмування, тому якщо ви гарно знатимете C#, розібратися в JS для вас буде дуже швидкою справою.
Основи Angular або React. React – фронтенд-бібліотека, яка має відносно невисокий поріг входження і користується великою популярністю завдяки своїй універсальності, в той час як Angular – потужний фреймворк, який є більш складним, але при цьому краще себе проявляє у масивних масштабованих проєктах.
Знання FrontEnd-стеку не в усіх вакансіях є обов’язковим, але в багатьох вони відзначені. Відповідно, володіння основами цих інструментів дає великий бонус під час розгляду резюме або на співбесіді.
Англійська мова
Традиційна вимога для кожного розробника в ІТ. Знання мови на рівні читання технічної документації та коментування коду цілком достатньо. Але чим вищий рівень англійської у вас буде, тим більше шансів отримати job-офер, оскільки англійська може використовуватися як для комунікації з іншими членами команди, так і для взаємодії із замовником.
Підведемо підсумки
У статті були перераховані основні технології, які повинен знати кожен .NET-програміст. Оскільки веб-розроблення нині є дуже популярним та затребуваним, ми також додали до списку .NET засоби, які використовуються під час створення відповідних серверних веб-рішень. Однак серед усіх пунктів найбільш важливим є знання мови С# - кожен "дотнетчик" зобов'язаний нею володіти на високому рівні.
У свою чергу, перелік можна доповнити такими технологіями, як TDD (розробка через тестування), WCF, Unit тестування, рефакторинг додатків. Їхнє знання не є обов'язковим для джуніорів, проте вигідно виділяє вас серед інших кандидатів і показує, що ви приділяєте особливу увагу чистоті, охайності та читабельності коду.
Також ви можете ознайомитись зі списком усіх необхідних для вивчення технологій на сторінці спеціальності .NET Developer. Комплексна програма навчання складається із 55 відео курсів загальною тривалістю понад 410 годин. Перейшовши на сторінку, ви знайдете багато корисної інформації як для новачка, так і для розробника, який бажає поглибити та доповнити свої знання.
Якщо вас більше цікавить живе онлайн навчання в групі з ментором та іншими студентами, рекомендуємо звернути увагу на формат Live Online навчання. Регулярні заняття в Zoom, виконання і перевірка д/з, розроблення курсових проєктів, спілкування та підтримка в телеграм-групі з ментором та одногрупниками – це та багато іншого сприяє максимально якісному та швидкому опануванню спеціальності .NET Developer на ITVDN.
Корисні ресурси для вивчення C# та .NET ви знайдете у нашому вебінарі «Огляд корисних ресурсів для вивчення C# та .NET з нуля».
ITVDN бажає вам досягнення ваших цілей та готовий бути надійним помічником у питаннях вивчення програмування.
Залишайтеся з ITVDN!
З чого розпочинається створення сайтів? Спеціальність верстальник
Автор: Влад Сверчков
Кто такой верстальщик?
Языки верстки HTML & CSS
Техники верстки
Препроцессоры
Графический редактор и векторная графика
Инструмент упрощения верстки Bootstrap 4
Язык программирования JavaScript
Библиотека jQuery
Методология БЭМ
Вспомогательные инструменты
Система управления версиями Git
Английский язык
Итоги
Всем привет!
Вы когда-либо задумывались о том, как происходит полный цикл разработки современного веб-сайта? С чего все начинается и как мы приходим к такому сервису, который имеет привлекательный и гармоничный внешний вид, а также богатый функционал? Давайте разберемся с этим вопросом, а заодно поближе познакомимся с героем данной статьи.
Прежде всего стоит знать, что сегодня человек-оркестр, который мог бы осуществить полный цикл создания веб-сайта — очень редкое явление. Процесс реализации одной только клиентской стороны уже является трудом целой команды специалистов.
Если говорить о профессиональной веб-студии, то разработка несложного корпоративного веб-сайта осуществляется следующим образом. Вначале за заказчика сайта берется менеджер по продажам. Он общается с клиентом через телефон, электронную почту, при личной встрече. Обсуждает все детали возможного сотрудничества. Задача менеджера по продажам — решить все финансовые и юридические нюансы, связанные с созданием сайта.
После заключения договора и оплаты услуг наступает звездный час PM`а (менеджер проекта), который и управляет проектом. Он ответственен за координацию действий команды разработчиков: проектирование и расстановка приоритетов, планирование выполнения задач, контроль, своевременное решение проблем, согласование промежуточных и конечных этапов создания и продвижения сайта. PM является связующим звеном между заказчиком и разработчиками: он плотно сотрудничает с клиентом, выясняет его требования, желания, предпочтения, затем конвертирует всю информацию в понятный команде девелоперов вид.
После определения требований за работу берется веб-дизайнер. Данный специалист занимается графической и художественной составляющими сайта. В этой секции веб-кухни происходит создание красивого и приятного интерфейса с удобным размещением кнопок, меню и других элементов веб-сайта. На выходе получаются макеты, которые учитывают различные платформы потенциальных посетителей (стандартные и широкоформатные экраны ПК, планшеты, мобильные устройства и т. д.). Результат работы веб-дизайнера — графическая схема с указанием оттенков, отступов и других параметров веб-сайта в статическом виде, которая максимально точно отображает внешний вид будущего сайта. Фактически, это точный рисунок сайта.
Готовый макет передается в руки верстальщика. Теперь при помощи различных элементов языка разметки веб-страницы графические элементы дизайна (рисунки, шрифты, таблицы и т. д.) будут переведены в понятный для браузера формат. Можно сказать, что он создает текстовый макет того, что придумал дизайнер. После того, как страница сверстана и проверена в различных браузерах на правильность отображения, она передается в работу специалисту, который подключает необходимый клиентский функционал, используя JavaScript-фреймворки, библиотеки и сопутствующие технологии. Как правило это FrontEnd разработчик.
Затем начинается работа BackEnd разработчика, который занимается реализацией серверной стороны веб-сайта (базы данных, серверная архитектура, программная логика). Обработка пользовательских запросов, хранение и оперирование пользовательскими данными, аутентификация, оптимизация функциональных возможностей сайта и многое другое — обязанности бэкендщика.
С уже готовым сайтом работают те специалисты, которые ответственны за его наполнение и продвижение в поисковых системах: контент-менеджер, специалист по контекстной рекламе, SEO-специалист, копирайтер и другие.
Сегодня же нас интересует именно тот, кто превращает графику в узнаваемый браузером формат — верстальщик. Разберемся в специфике его работы и навыках, которыми должен обладать потенциальный кандидат на данную должность.
Кто такой верстальщик?
Сразу дадим определение терминам, которые важны для составления целостной картины. Верстальщик — это специалист, который занимается версткой интернет-страниц. Верстка — процесс создания визуальной составляющей сайта. Структура самого сайта задается языком гипертекстовой разметки HTML, а каскадная таблица стилей CSS описывает его внешний вид. Проще говоря, HTML задает каркас страницы, а CSS занимается его облагораживанием (цвет, шрифты, стили, расположение, отображение блоков и т. д.).
Если говорить о профессиональной верстке, то она происходит согласно заранее разработанному макету, который обычно создает веб-дизайнер, знающий тонкости своего ремесла. После получения графического документа от дизайнера верстальщик использует Photoshop или другие аналоги для извлечения необходимой информации (Illustrator, Sketch, Figma и другие): используемые шрифты, иконки, картинки, точные кодировки цветов, размеры элементов в пикселях, их точное расположение. Только после такой подготовительной работы герой нашей статьи может открыть среду написания кода и приступить к верстке. Давайте узнаем, каков арсенал инструментов использует верстальщик в своей работе.
Какие языки / технологии / инструменты применяет верстальщик?
HTML & CSS
Языки верстки, которые мы уже упоминали. Являются главными инструментами верстальщика. Без них не обходится создание ни одного веб-сайта. HTML определяет его структуру (костяк), а CSS — внешний вид (вся остальная надстройка).
Техники верстки
Для создания качественных веб-сайтов необходимо использовать специальные техники, которые упрощают верстку, делая код понятным и легко масштабируемым. Таким образом, выделяют три вида верстки:
фиксированная;
резиновая;
адаптивная.
Фиксированную верстку применяли еще при создании самых первых сайтов. Тогда они были простые, не требовали какой-либо оптимизации и кроссбраузерности, а потому не было потребности в разработке новых сайтостроительных техник. При фиксированной верстке ширина сайта всегда одинаковая вне зависимости от разрешения экрана. Это самый простой подход к реализации верстки, но при этом самый непопулярный, поскольку сегодня пользователи используют множество моделей компьютеров, ноутбуков, телефонов и планшетов для выхода в сеть. В связи с этим, разрешение экранов варьируется от 200 до 3000 пикселей.
Резиновая верстка способна менять размеры сайта в зависимости от размерности экрана. Таким образом, проблемы фиксированного вида решаются, однако сама процедура набора страницы усложняется. Верстальщику приходится думать о том, как растянуть картинки, чтобы они не потеряли в качестве и корректно отображались на всевозможных девайсах. Ну и о производительности не забывать. Кому нужен сайт, который будет прогружаться вечность?
Адаптивная верстка является самой сложной. Сайт помимо размеров меняет свой внешний вид в зависимости от размеров устройства, на котором воспроизводится. Ориентирована в первую очередь на мобильные устройства, оттого и имеет сегодня большой спрос.
Также, качественная верстка должна обладать следующими свойствами:
семантичность;
кроссбраузерность;
валидность.
Семантика в верстке означает соответствие тегов информации, которая находится внутри них. С ее использованием код становится чище, читабельнее и лаконичнее. Более того, поисковые системы начинают лучше воспринимать такие сайты, повышая их позиции при ранжировке.
Кроссбраузерность означает, что разработанный сайт должен качественно отображаться во всех популярных браузерах (Mozilla Firefox, Opera, Google Chrome, Safari, IE). Почему она так важна? Все дело в том, что один и тот же сайт может по-разному отображаться в разных браузерах. Не будем заглядывать за кулисы этого явления — просто подчеркнем, что современные сайты обязаны отвечать требованию кроссбраузерности.
Валидность веб-сайта означает соответствие его HTML-кода стандартам W3C (Консорциум Всемирной паутины). Валидация предусматривает соблюдение корректности кода страниц, отсутствие синтаксических ошибок, наличие вложенности тегов и т. д. Проверка HTML-кода выполняется при помощи специальной программы — валидатора кода. Она находит и фиксирует все несоответствия со стандартом, указывая на их местонахождение и формулируя, где проблемный участок и почему он должен быть исправлен.
Естественно, важным является и тот нюанс, что ваш код должен быть минимален, а интернет-страница, созданная с его помощью, должна быстро прогружаться. Ниже мы также рассмотрим вспомогательные инструменты, которые обеспечивают выполнение этих условий.
Sass/SCSS
Препроцессор, который является расширением CSS. Если современный CSS сам по себе простой и мощный инструмент, то в комбинации с препроцессором это вовсе боевая машина для качественного оформления контента на интернет-страницах. Польза Sass/SCSS особенно отчетливо ощущается в больших проектах, когда количество строчек кода кажется бесконечным. Препроцессор позволяет использовать функции, недоступные в самом CSS. Например, переменные, вложенности, миксины, наследование и другие вещи, которые упрощают и делают удобным написание CSS-кода.
Photoshop / Illustrator / Sketch / Figma / Avocode
Графический редактор, как мы уже упоминали, необходим верстальщику для извлечения необходимой информации из предварительно подготовленного макета: используемые шрифты, иконки, картинки, точные кодировки цветов, размеры элементов в пикселях, их точное расположение. Какой редактор был использован для создания макета, такой следует использовать и для изъятия необходимых данных.
SVG
Вдогонку за графическими редакторами упомянем об SVG. Это язык разметки масштабируемой векторной графики. Изображения на странице, сделанные с помощью SVG, корректно отображаются на экранах с различным разрешением не теряя при этом своего качества, в отличии от традиционных растровых .jpeg, .png и других. Верстальщик должен уметь работать с SVG, поскольку он важен для оптимизации и быстродействия сайта, а также используется для реализации анимации векторных изображений, разработки прелоадеров и других интерактивностей.
Bootstrap 4
Это HTML, CSS, JS фреймворк для разработки кроссбраузерных веб ориентированных интерфейсов. Bootstrap являет собой набор инструментов от Twitter, созданный для облегчения разработки веб-приложений и сайтов. Он использует CSS и HTML для типографии, форм, кнопок, таблиц, сеток, навигации и т. д., а также дополнительные расширения JavaScript, упрощающие работу веб-разработчика. Данные свойства позволяют коду, написанному с применением Bootstrap, быть переиспользуемым, понятным и компактным.
Основные преимущества фреймворка:
высокая скорость верстки;
кроссбраузерность и кроссплатформенность;
наличие хорошей документации, большого сообщества и огромного количества разнообразных обучающих материалов;
низкий порог вхождения (необходимо знать лишь основы HTML, CSS, JavaScript и jQuery).
JavaScript
Язык программирования, который повсеместно используется в создании сайтов, даже в реализации их серверной стороны. Становиться ниндзя JavaScript верстальщику не нужно — это задача FrontEnd разработчика, который прорабатывает логику клиентской стороны веб-приложений. Герою статьи JS необходим для реализации различных динамических элементов на странице: анимации, слайдеры, калькуляторы и т. д. Также, этот язык применяется для подключения различных библиотек и определенных взаимодействий с ними. Знание базы JavaScript необходимо для комфортного использования библиотеки jQuery, подробнее о которой пойдет далее речь.
jQuery
Небольшая, быстрая и многофункциональная JavaScript-библиотека, для работы с которой необходимо владеть HTML, CSS и JavaScript на базовом уровне. Она упрощает процесс программирования на JS и представляет объемные решения распространенных задач в виде методов, которые вызываются одной строчкой кода.
Этой особенностью jQuery приносит ощутимую пользу верстальщикам. Вместо углубления в JavaScript и написания тонны кода, можно просто использовать уже готовые решения в различных задачах.
Методология БЭМ
“Блок, Элемент, Модификатор” — методология, предусматривающая компонентный подход к разработке веб-страниц, в основе которого лежит принцип разделения интерфейса на независимые блоки. Подход БЭМ позволяет повторно использовать существующий код в создании других страниц с сохранением всех его свойств (размеры, шрифт, цвет и т. д.). Таким образом обеспечивается расширяемость и повторная используемость компонентов интерфейса. Соблюдение принципов БЭМ повышает качество, читаемость кода, увеличивает производительность и упрощает командную работу.
CMS (Wordpress / Opencart / Joomla / Bitrix)
Content Management System — система управления контентом, являющая собой движок для обеспечения и организации процесса создания, редактирования и управления контентом. В случае отсутствия CMS разработчики были бы обязаны реализовывать дополнительную функциональность для каждой новой страницы, вносить новый контент самостоятельно программным путем и т. д. Ниже приведем пример для наглядности.
Допустим, вы ведете собственный блог на специализированной платформе и у вас появилась необходимость сделать новую рубрику. Вы же не будете просить целую команду разработчиков создать новую интернет-страницу с нуля со всей функциональностью либо дорабатывать уже существующую под каждый новый пост? А в случае с интернет-магазином вы были бы вынуждены проделывать такие манипуляции для каждого нового товара. Вот для этого и существуют CMS. Они предоставляют удобную администраторскую панель вашему сайту, с которой в дальнейшем работает контент-менеджер. В профессиональной среде процесс настройки взаимодействия движка и готового шаблона сайта называется “натяжкой” шаблона на CMS.
Основные функции CMS:
предоставление инструментария для работы над контентом;
управление контентом — хранение, управление потоком документов, соблюдение режима доступа, контроль версий;
публикация контента;
представление необходимой информации в удобном для навигации и поиска виде.
Gulp / Webpack
Gulp — система сборки, которая автоматизирует рутинные задачи верстальщика. В число ее обязанностей входят: минимизация кода, оптимизация изображений, тестирование, анализ качества кода и прочее. Другими словами, она используется для сбора верстки. Webpack по сравнению с Gulp обладает более широкими настройками и функционалом. Предназначенный для удобной разработки одностраничных веб-приложений с использованием JavaScript.
Git
Самая популярная распределенная система управления версиями, которая позволяет вести историю разработки проекта с возможностью доступа к каждой сохраненной версии. Таким образом, если в процессе создания программный продукт стал неправильно функционировать, есть возможность вернуться к предыдущей рабочей версии вместо длительных поисков ошибок.
Также системы управления версиями являются неотъемлемым инструментом командной разработки, который дает возможность девелоперам работать над одним проектом одновременно, сохраняя внесенные изменения. Заодно удобно отслеживать выполнение задач каждым членом команды. Очень важный инструмент для любого IT-разработчика.
Английский язык
Знание английского языка является одним из основных требований к верстальщику, поскольку большое количество полезной информации находится именно на англоязычных сайтах. Уровень чтения технической документации будет достаточным для комфортного пользования иностранными ресурсами.
Итоги
Верстальщик — это специалист по верстке веб-страниц. Несмотря на довольно лаконичное определение, список требуемых от него знаний и навыков гораздо красноречивее. Верстальщик в 2020-м году должен владеть неплохим стеком технологий. Более того, мы привели лишь общий список инструментов. В реальности он может немного отличаться согласно направлению деятельности компании/веб-студии. Если к перечисленному добавить углубленные познания JavaScript и хорошее владение одним из фреймворков (Angular, Vue.js, React) + парочка смежных технологий, получится полноценный FrontEnd разработчик.
Отдельно отметим портфолио верстальщика. Оно должно быть в наличии у данного специалиста в обязательном порядке, иначе шансы получить job-оффер ничтожно малы (не забывайте и о конкуренции). В портфолио вам необходимо продемонстрировать все свои навыки и умения. Это может быть десяток проектов с использованием по крупице различных технологий в каждом, либо пара-тройка, но с концентрированием всех ваших умений и познаний в верстке. В этом случае пригодятся специальные ресурсы с опубликованными бесплатными макетами, которые можно брать и верстать, набивая руку и набираясь опыта.
Также, если вы заинтересованы в изучении ремесла верстальщика, ITVDN имеет для вас хорошие новости. На нашем образовательном ресурсе вы сможете освоить данную специальность за 4 месяца.
Учебная программа каждой специальности, в том числе и верстальщика, содержит:
тщательно подобранный пакет видео курсов;
план обучения с нуля до уровня специалиста, который вы можете адаптировать под свой уровень;
Интерактивный Тренажер навыков для формирования навыков написания кода;
учебные материалы, исходники программного кода, опорный конспект, презентации к урокам;
доступ к Форуму, где каждый учащийся может общаться с другими студентами, тренерами и единомышленниками;
возможность персональной консультации с тренером согласно выбранному пакету подписки;
возможность проходить тестирование для подтверждения знаний, полученных в результате прохождения видео курса;
электронный сертификат об окончании курса после успешного завершения тестирования.
Все видео курсы записываются опытными разработчиками, которые проходят соответствующую сертификацию, чем подтверждают свое мастерство владения той или иной технологией. Наши преподаватели работают в IT и в курсе всех современных тенденций в своей сфере разработки.
Знакомство со специальностью мы рекомендуем начать с просмотра бесплатных вебинаров по специальности верстальщик, в частности, с вебинара Елены Хижняк “Как стать верстальщиком?”, в котором отражены все самые актуальные тренды и требования.
Возможно, нас читают практикующие верстальщики? С удовольствием прочтем вашу точку зрения на позиции, изложенные в данной статье. Также, будем рады любым вопросам и замечаниям от всех читателей!
Ну а тем, кто решил выбрать профессию верстальщик мы желаем быть упрямыми, оптимистичными и с неугасаемым огоньком жажды знаний в глазах.Успехов и вдохновения на вашем пути!
Як не провалити своє IT-навчання
Автор: Влад Сверчков
Приветствуем вас, друзья!
Сегодня мы хотим затронуть критически важную и актуальную тему, от которой зависит успех всех, кто берется за изучение программирования. Практически всегда новички в IT сталкиваются с такими проблемами, как:
непонимание учебного материала;
сложности с написанием кода;
прокрастинация (лень);
отсутствие мотивации;
другие проблемы.
Все эти и другие вещи создают серьезные препятствия на пути к освоению желанной IT-профессии. Однако, всё выше перечисленное — не корень проблемы, а лишь её симптомы. Чтобы сделать свое обучение эффективным, необходимо взглянуть правде в глаза. Какие действия приводят к подобным неудачам? Почему новички быстро “выгорают” и теряют интерес к обучению, а иногда даже перестают видеть смысл в дальнейшем изучении программирования? Почему затрачиваемое на изучение время приносит так мало пользы? Ниже приводим список того, как НЕ стоит поступать, если вы с нуля изучаете программирование и хотите стать хорошим разработчиком.
Не писать код
Программирование — это занятие, которое очень сильно привязано к практике. Понятное дело, что любому новичку вначале необходимо понять в целом, куда он попал, что будет делать и как правильно это делать. Без теории никак не обойтись. Однако читать массу книг либо иных учебных материалов по написанию кода и не практиковаться — все равно, что учиться ездить на велосипеде по книгам, ни разу не попробовав прокатиться на нем самолично.
Обычно такая привычка рождается из-за стандартного обмана нашего мозга. Мы смотрим на код в учебных материалах, на его объяснение, и нам кажется, что все кристально чисто и понятно — зачем тратить время и самому составлять такой же? Однако, стоит только сесть за написание кода, убрать все подсказки, как выяснится, что вы не можете реализовать работающую программу.
Каждый теоретический материал должен быть обязательно закреплен практическими задачами. Вы их можете самостоятельно придумывать на ходу; обычно именно так и происходит. Вы читаете, например, о массивах, у вас в голове всплывают какие-то вопросы в стиле “А можно ли сделать вот так? А что будет, если...” и это будет отличным способом попрактиковаться. Также не забывайте о множестве задач под каждую тему — вне зависимости от того, обучаетесь вы по книге, либо по другим материалам — никогда не упускайте возможность отточить навыки программирования.
Копировать код
Данное действие нежелательно для новичков, ведь суть их обучения состоит в понимании концепций, а тупое копирование кода напрочь убивает это понимание.
Старайтесь не поддаваться такому искушению и после изучения экземпляра кода обязательно попробуйте воспроизвести его самостоятельно. Очень важно, чтобы вы осознавали что за чем идет, как и почему происходит. В будущем это знание пригодится при решении новых задач, ведь опыт написания кода отложится у вас в голове, чего не скажешь о методе “копипаста”.
Уделять мало внимания основам
Один из самых важных пунктов для любого обучения в принципе. На нем мы сделаем особый акцент и распишем данный раздел как можно подробнее.
Бывало ли у вас чувство, что продуктивность вашего обучения (школа, университет, то же программирование) идет на спад — вы очень слабо понимаете теорию, новый материал никак вам не поддается, а практика особой ясности в происходящее не вносит? Такое может случаться и в повседневной жизни, когда необходимо освоить какой-то навык, но объем информации давит всем своим весом, истребляя всяческое желание развиваться и что-то учить.
Чтобы такого не случалось, важно знать принцип, который поможет достичь успеха в любых начинаниях и повысит эффективность вашего обучения. Зайдем издалека.
Есть три уровня овладения какой бы то ни было дисциплиной. Их ключевое отличие в количестве внимания и концентрации, которые необходимо выделить для применения знаний на практике:
Знание. Вам необходимо выделять порядка 90% всего вашего внимания и концентрации, чтобы применить знания на деле. Как пример, школьник младших классов, который решает простейшие примеры на умножение и деление — ему необходима львиная доля усилий, чтобы каждый раз вспоминать таблицу умножения.
Умение. На этом уровне человек оказывается, когда он набил руку и уже может выделять на практическое применение знаний меньше концентрации и внимания, а именно — порядка 40%.
Навык. Вы выполняете задачу практически не концентрируясь на ней, однако качество выполненной работы сохраняется. Для примера можно сравнить начинающего водителя и водителя со стажем, который рассекает по дороге и практически не обращает внимания на нюансы, при этом соблюдая все правила дорожного движения. У него все процессы происходят словно на периферии сознания, позволяя без напряжения вести транспорт и чувствовать себя как рыба в воде. Водитель-профессионал на практическое применение знаний выделяет около 10% концентрации и внимания.
А теперь смоделируем интересную ситуацию: водитель-новичок принимает участие в гонках. Его уровень концентрации на базовых моментах вождения будет настолько высок, что он попросту разобьется. Или возьмем человека, который хочет научится рисовать красивые портреты. Ему показывают, как правильно какие линии рисовать. Затем он сразу пытается нарисовать портрет. Что в этот момент произойдет? Начинающий художник не сумеет нарисовать чего-то стоящего, ведь уровень его концентрации на базовых вещах будет очень высок. Этот человек будет сосредотачивать свое внимание на положении руки, степени нажатия на карандаш, плавности отрисованных контуров и т. д.
Что следует делать, чтобы избежать ошибок, как в продемонстрированных примерах? Начинающему художнику необходимо отрабатывать базовые движения карандаша и кисти достаточно долго, пока не будет достигнут уровень навыка. Тогда тело привыкнет работать без постоянного контроля ума и будет проще занимать корректное положение руки, вести ровную линию и концентрироваться на чем-то более масштабном, а не на “низкоуровневых” нюансах. Точно такой же подход нужен и начинающему водителю.
Другими словами, нашим новичкам необходимо отработать базу до максимума. При этом скорость их обучения будет расти по экспоненте, ведь каждая новая ступень информации имеет меньше принципиально новых знаний, поскольку основывается на уже известных им данных. Это означает, что с каждым новым шагом концентрировать внимание им надо будет всё в меньшей степени. Каждая новая ступень будет даваться нашим друзьям все легче и легче, ведь у них будет достаточно сил, дабы сконцентрироваться на новой информации, а не страдать от непонимания из-за плохо усвоенной информации предыдущего этапа.
Проецируем всё выше изложенное на обучение в IT. Вы начали заниматься программированием — найдите основу, базу, главный набор навыков, который стоит освоить. Тренируйтесь до полного совершенства над базисом, не проскакивайте темы и не изучайте их лишь поверхностно. Однако, если чувствуете, что на данный момент ну никак не можете осилить материал, можете перейти к следующей теме или взять небольшой перерыв (желательно физическая активность), но по истечению определенного количества времени обязательно вернитесь и закройте пробел.
Добейтесь полного понимания и владения всеми базовыми вещами дисциплины и только потом переходите к новому кругу информации. Когда вы возьмете его (новый круг информации) в оборот и изучите все необходимое на данном этапе, то заметите, что на это ушло гораздо меньше усилий и времени, чем вы ожидали. Так делайте с каждым следующим этапом на пути к освоению языка программирования. В один момент вы обнаружите, что обогнали тех, кто проходил все темы поверхностно и будете гораздо сильнее их в кодинге. Конечно, этот путь требует добротных временных затрат, но если вы хотите стать хорошим программистом, то на этапе обучения вы просто обязаны уделять базе этой дисциплины солидный объем времени.
Бояться спросить
Фобия, актуальная не только в обучении программированию, но и в других сферах нашей жизни: в школе/лицее/гимназии/колледже, в вузе, на работе, да и вообще где угодно. Спрашивать можно и даже нужно. Однако, стоит учитывать несколько нюансов: 1) Вопрос не должен быть глупым. 2) Перед тем, как задать его, вы должны подумать над проблемой, поискать решения и попробовать самостоятельно прийти к развязке. Когда вы поймете, что действительно сделали все, что в ваших силах, но ничего не добились, можете смело обращаться за помощью, не забыв описать предпринятые вами шаги помощнику (-ам).
Сразу идти и писа́ть на форумы, предварительно не погуглив хорошенько (неумение искать информацию)
Вторая сторона медали тезиса под номером 4.
Навыки использования поисковой системы (обычно это Google) и таких сервисов, как Stack Overflow, habr и других является обязательными для любого, кто связан с IT сферой. Вы будете всегда сталкиваться с определенными трудностями и самый оптимальный подход к их решению — поиск ответов в интернете. Если вы новичок, то практически на любой возникнувший у вас вопрос, уже был ранее дан ответ на одном из ресурсов, и это важно всегда помнить.
Бывают случаи, если человек задает откровенно глупый вопрос на каком-то из форумов, либо вопрос, на который уже много раз отвечали, то такого товарища начинают банить, отрезая возможность что-либо спрашивать на сервисе в принципе. Так что гуглите, гуглите и еще раз гуглите. Один из самых полезных навыков в IT-отрасли.
Если никак не получается найти нужную информацию — смотрите пункт 4 этой статьи.
Рассчитывать ТОЛЬКО на курсы
Также одна из распространенных ошибок среди желающих освоить IT-специальность. Изучение программирования и смежных технологий требует достаточно большого количества времени. Это значит, что занятия 3 раза в неделю по 2 часа — слишком мало для полноценного освоения специальности. Так что же получается, вас обманывают на курсах и просто выкачивают деньги? Вовсе нет.
Такая ситуация абсолютно нормальная; более того, она даже необходима. Сфера информационных технологий очень динамична, в ней постоянно что-то меняется, что-то устаревает, что-то обновляется и предстает в совершенно новом виде. Разработчик должен всегда учиться, дабы соответствовать требованиям даже не сегодняшнего, а завтрашнего дня. Подход к обучению на курсах предусматривает большую самостоятельную работу, которая будет вашей неотъемлемой спутницей во время будущей профессиональной деятельности. Умение самостоятельно учиться и постоянно развиваться как специалист — обязательный атрибут разработчика в IT.
Поэтому для освоения любого языка программирования или IT-специальности в целом недостаточно простого посещения курсов. Вы должны уделять много времени внеурочному обучению: выполнять все д/з и учебные проекты, самостоятельно практиковаться на задачках. Большое количество практики вне занятий даст вам максимальный экспириенс от курсов. Как результат, вы преуспеете в обучении и станете кандидатом на желаемую должность, и при этом будете иметь прочную базу знаний и умений.
Заниматься обучением нерегулярно
Утверждение тесно связано с предыдущим пунктом. Только там мы делали акцент на курсы по программированию и IT-специальностям, а здесь речь пойдет о самостоятельном обучении.
Чуть ли не самые главные камни преткновения всех айтишников-самоучек — слишком мало времени на обучение + нерегулярные занятия.
Недостаток выделяемого на обучение времени выливается в его чрезмерную длительность и потерю мотивации. Вы вроде и учитесь, а результата как такового нет. Нерегулярность занятий также убивает мотивацию и искореняет приложенные до этого усилия. Из вашей головы “вытекают” уже имеющиеся знания, теряются обретенные умения.
Обязательно разработайте план своего обучения и всегда придерживайтесь его. Старайтесь не поддаваться лени; если надо — заставляйте себя. Это вполне нормально, что ваш мозг сопротивляется учебным процессам, ведь его задача — уберечь подконтрольный ему организм от лишних забот и телодвижений, оставаясь при этом в максимальном физическом и психическом комфорте. Но, как мы знаем, без труда не вытащишь и рыбки из пруда.
Излишний перфекционизм
Перфекционизм опасен бездействием и лишними нервами. Вы хотите выполнить какую-то задачу идеально, но не знаете, как это сделать, поскольку не обладаете тем уровнем знаний и опыта, которые для этого требуются. В итоге вы просто ничего не делаете, растрачивая время впустую. Соответственно, и нервишки шалят — работа стоит, время идет, а ни результата нет, ни эйфория от выполненной задачи не наступает.
Пока вы учитесь, старайтесь выполнять задания без оглядки на то, насколько это решение идеально. Для начала сделайте так, как знаете. В будущем, используя новые знания и навыки, вы сможете выработать более оптимальное решение.
Учить множество языков (бросаться со стороны в сторону)
Часто бывает, что новички не сразу определяют “своё” IT-направление, в котором хотят развиваться. В таком случае некоторые начинающие предпринимают решение выучить и первое, и второе, и пятое, и десятое, а там уже будет видно. Так вот этой стратегией лучше не пользоваться, хотя в теории всё звучит более чем логично.
Каждый язык программирования требует определенных временных затрат и активных умственных усилий. Поскольку программирование — это в подавляющем большинстве практика, с каждым новым языком вы будете все больше и больше забывать все, что выучили до этого, ведь вы не практикуетесь. Если у вас феноменальные умственные способности, позволяющие учить языки очень быстро и не забывать все выученное — вам это не страшно, однако, среднестатистический человек не потянет такую планку. Плюс каждый из нас хочет достигать своих целей как можно быстрее, а путь с длительным изучением различных языков программирования явно не то, на что вы рассчитываете.
Вы постоянно что-то изучаете, пишите код, но с ростом знаний и навыков вы скоро почувствуете, что нуждаетесь в чем-то большем. Чтобы обучение программированию давало свои плоды, оно должно в какой-то момент начать применяться в реальных боевых задачах. Если на этом ответственном этапе вы примете решение бросить язык и переключится на изучение нового, ваши знания и умения касательно текущего языка начнут забываться. Как результат — время потрачено впустую (причем приличный объем времени), а поскольку изученное не было подкреплено реальным боевым проектом, мотивация будет также вас покидать. Вас попросту не хватит для того, чтобы сделать хороший охват всех популярных языков. Гуру программирования могут себе позволить изучение основных принципов нового языка программирования за пару недель, однако у него уже есть недюжинный опыт и знания. Вам, как начинающему разработчику, не стоит предпринимать подобные действия.
Но как тогда выбрать свой путь в IT? Все достаточно просто. В сети интернет вы можете найти множество материалов касательно того, где можно реализовать себя в IT. Изучите все возможные сферы и выберите 1-2, которые вам больше всего понравились. Теперь можете поверхностно опробовать инструментарий каждой из них. Опять-таки, углубляться никуда не стоит — вам необходимо понять, все ли вас устраивает, нравится ли вам выбранный язык программирования и те задачи, которые вы будете на нем реализовывать. Когда сделаете окончательный выбор, можете приступать к изучению всех необходимых языков и технологий, оттачивать навыки написания кода и разрабатывать проекты для портфолио.
Чтобы изучить предметную область вы можете, к примеру, воспользоваться записанными вебинарами образовательной платформы ITVDN. На момент написания статьи были выпущены следующие вебинары, касающиеся IT-профессий:
Как стать Андроид разработчиком?
Как стать Python разработчиком?
Как стать C# / .NET разработчиком?
Как стать Java разработчиком?
Как стать FrontEnd разработчиком?
и другие.
На нашем YouTube канале вы также можете найти множество полезного контента.
Если вы хотите узнать о том, какое из популярных направлений в разработке выбрать, можете взглянуть на 3.5-часовой вебинар под названием “Как стать программистом? Frontend, Java, Python или .NET - что выбрать?”. Его автор — Дмитрий Охрименко — CEO CyberBionic Systematics, сертифицированный тренер Microsoft и автор курсов по .NET и FrontEnd разработке с опытом в разработке более 10-ти лет.
Следите за нашим каналом и соцсетями, чтобы не пропустить новые вебинары и тренинги! Все полезные ссылки оставим в конце статьи.
Слишком глубоко копаться в языке/технологии vs поверхностное изучение
Данный пункт также в определенной степени относится к предыдущему. Но что он подразумевает?
Например, если вы решили учить какой-то популярный высокоуровневый язык программирования, не надо лезть к нему под капот. Безусловно, вы должны узнать, на чем держится выбранный язык, что лежит в основе его функционирования, но тщательно изучать его фундамент не надо. Вы не обязаны лезть в глубины, добираться до низкоуровневого Assembler, затем изучать работу процессора в принципе и т. д. Вам это не нужно.
Если провести аналогию между программированием и вождением автомобиля, то программист — это водитель. Водитель должен знать, из чего состоит его транспортное средство, но знать всё до мельчайших подробностей нет нужды — это уже работа автомеханика. Задача водителя — управлять машиной, так же само, как задача программиста — писать код.
Обратная сторона медали заключается в поверхностном изучении языка программирования и примыкающих к нему технологий. Поверхностное изучение хорошо, когда вы делаете выбор между несколькими языками и желаете узнать, какой вам больше по душе. Но когда вы определились с направлением и языком, прыжки по верхам — то, от чего вы должны отказаться. На данном этапе углубление и тщательное изучение технологий для вас очень важно. Однако, напомним, что уходить в самые низы выбранного языка и технологий тоже не следует.
Избегать общения с IT-специалистами
Достаточно важный момент, которому, однако, уделяется мало внимания. Рассмотрим ситуацию с двух сторон: 1) Вы посещаете соответствующие курсы по программированию. 2) Вы самостоятельно обучаетесь.
Первый случай. Вы изучаете программирование на курсах, но неактивны с преподавателем и вашими одногруппниками. Это неправильная ситуация. На занятиях всегда возникают вопросы, и их надо задавать. Стесняться ни в коем случае не надо. Один из важных навыков программиста — коммуникабельность; в данной ситуации вы и тренируете свою общительность, и получаете ответы на возникающие вопросы. Кстати, хороший преподаватель всегда рад вопросам от своих учеников.
Как результат — ваше обучение более продуктивное, вы чувствуете хорошую отдачу и выносите из каждого занятия действительно ценную информацию, получая больше знаний.
Второй случай. Вы учитесь самостоятельно, сами практикуетесь, но вам некому показать результаты своей работы. Никто не может оценить ваши труды. Это также не есть хорошо, ведь теряется обратная связь — вы банально не знаете, а грамотно ли составлена программа, правильно ли выполнена верстка веб-страницы и т. д. На этапе обучения было бы очень здорово иметь собственного ментора — наставника, который занимается профессиональной разработкой в том направлении, которое вас привлекает.
Если порыскать в гугле, можно найти сообщества, занимающиеся организацией менторства, или на крайний случай можно просто пользоваться помощью пользователей специализированных форумов. Главное — не задавать глупых вопросов, хорошенько формулировать свои мысли/вопросы и не быть пассивным.
Бросать дело на полпути
Популярная среди новичков, школьников и студентов практика из оперы “И так сойдет!”. На самом деле ничего подобного. Вы изучаете программирование для себя, для своего успешного будущего. В ваших же интересах стать хорошим востребованным разработчиком. А как этого достичь, если ваши проекты напоминают, скорее, огрызки, чем полноценную реализацию задуманного?
Здесь могут быть 2 варианта: либо вы плохо понимаете какую-то тему и не уделили ей должного внимания (пробел в знаниях), либо у вас дурная привычка, которая мешает вам учиться, а в будущем будет мешать и вашей карьере. С этим нужно бороться и не пренебрегать такой, на самом деле, большой проблемой.
В конце концов, в резюме добавлять такие проекты стыдно. Да и на работодателя такая визитная карточка будет действовать отрицательно. Будьте грамотны и всегда доводите свои работы до конца. Это полезный навык для любой сферы жизнедеятельности.
Не искать работу, когда ты уже к ней готов
Проблема, возникающая на поздних этапах обучения, когда вы уже в целом готовы подавать резюме в компании, однако, вас сдерживает неуверенность в своих силах. Вашими спутниками становятся такие мысли, как: “А вот, может, это мне еще стоит подучить...”, “Тут надо еще подтянуть”, “Да мне еще проектов так N надо реализовать...”, “Я 100% потерплю неудачу на первом же собеседовании” и другие.
Суть в том, что коммерческая разработка — это, фактически, новый этап вашего обучения. Этап, на котором вас ожидают настоящие нагрузки и задачи, ответственность за написанный код, командная работа, митинги с обсуждениями задач и многое другое. Если вы не перейдете на этот этап, то так и останетесь болтаться на предыдущем, теряя мотивацию, а вместе с ней и полученные навыки и знания.
Не уверены в своих силах, но весь необходимый материал усвоили и умеете применять на практике? Рискните и подайте резюме, сходите на собеседование — так вы по крайней мере сможете адекватно оценить свой уровень знаний и умений и уже будете отталкиваться от фактов, а не от собственных страхов и предубеждений.
Как определить, что вы уже готовы искать работу? Открываете описание целевых вакансий, смо́трите на требования; если вы, условно, знаете 8 из 10 требуемых фреймворков, значит, полный вперед! “Знаете фреймворки” — это: а) Вы их использовали в каком-либо из своих проектов; б) Эти проекты работают, причем работают нормально.
Незнание английского
Английский язык вам понадобится в любом случае — кто бы что ни говорил и как бы вы себя не убеждали в обратном. На этапе обучения вы будете использовать его во время поиска ответов и различных дополнительных сведений о выбранном языке программирования и/или смежных технологиях. Сюда входят как официальные специализированные источники, справочные материалы, книги, так и всевозможные форумы, статьи, заметки и отзывы других разработчиков/учащихся. Русскоязычные ресурсы сильно уступают по своему количеству и насыщенности иностранным, потому все дороги таки приведут вас к зарубежным.
Для успешного взаимодействия с подобными источниками ваш уровень инглиша должен быть не ниже Intermediate.
На работе вам также нужен английский: для профессионального развития, подтягивания знаний, их обновления, для того же поиска решений возникающих проблем. Помимо этого, этот язык будет важен при работе на иностранных заказчиков и/или в том случае, когда работаете в команде с иностранцами.
Здесь уже желательно обладать английским не ниже уровня Upper Intermediate.
Заключительное слово
Надеемся, что данная статья стала ценной находкой для вас. Здесь мы постарались затронуть самые важные ошибки, которые допускают начинающие разработчики. Если вы их устраните, продуктивность вашего обучения гарантировано пойдет вверх и принесет нереальный профит. Старайтесь, прикладывайте усилия и у вас все обязательно получится!
Здесь вы сможете отслеживать все самые главные вкусности от ITVDN: FB, VK, Linkedin, Twitter, Instagram, Telegram.
Желаем вам побед в обучении! Обогащайтесь новыми знаниями и скиллами на ITVDN!
ITVDN для корпоративних клієнтів Інтерв'ю із Дмитром Охріменком.
Автор: Редакция ITVDN
Дмитрий Охрименко – один из создателей ITVDN, автор видео курсов, консультант по построению распределенных и веб-ориентированных приложений, сертифицированный специалист Microsoft (MCTS, MCPD, MCT). Более 10 лет Дмитрий проводит корпоративные тренинги для IT специалистов в таких компаниях как 3Shape, GlobaLogic, Ciklum, Terrasoft, Simcorp и других.
Мы попросили Дмитрия ответить на ряд вопросов, связанных с обучением IT специалистов и о том, в какой мере ITVDN может помочь в решении этих задач.
Как HR-специалисту узнать, какие новые технологии нужно изучить разработчику?
Для этого есть много инструментов, которыми можно воспользоваться для определения действительно важных для разработчика тем. Так как бизнес должен зарабатывать деньги, то неправильно будет идти только на поводу у разработчика. Если говорить о мотивации, то все люди любят платить деньги за то, что приносит пользу, либо за то, что приносит удовольствие. Если брать разработчиков, то пользу им приносит все то, что может помочь в решении их повседневных задач. Если компания, например, разрабатывает какие-то веб-приложения, то, возможно, стоит обратить внимание на изучение их популярных библиотек, которые используются в проектах, на изучение разработки BackEnd-части. Это то, что можно отнести к пользе, которую получит разработчик. Если говорить об удовольствии, то все разработчики любят говорить, что они знают все самые последние технологии, что они имели опыт с последними версиями: C#, JavaScript, C++ и т.д. Поэтому мотивация может заключаться в том, чтобы проводить обучение, может, не совсем полезное для проекта, но зато - это новые технологии, и разработчик будет чувствовать себя частью передовых технологий.
Также необходимо проводить обучение для поднятия общего уровня знаний специалистов в проекте. По сути, как узнать, что нужно разработчикам? Лучше всего на этот вопрос ответит не сам разработчик, а тимлид или человек, который занимается организацией всей команды. Потому что четко понятно, что у этих ребят не хватает опыта работы с таким-то языком, инструментом и необходимо подтянуть именно эти навыки.
Можно сделать, например, общий опросник для всех разработчиков и узнать, что они хотят. Как показывает практика, это обычно разбросанные требования: хочу учить С#, хотя человек пишет на Java, или хочу учить Python, хотя в проекте он не будет вообще использоваться.
Для того, чтобы обучение мотивировало разработчиков и было полезно для самой компании, то HR-специалисту нужно собрать информацию не только от конкретных разработчиков, а еще и уточнить, что действительно необходимо для реализации тех задач, которые стоят перед командой в целом. Чтобы команда смогла поставить действительно качественный продукт.
Как происходит процесс построения корпоративного тренинга?
Чаще всего компания понимает, что ей не хватает каких-то знаний в определенных направлениях. По своему опыту, если возникает какая-то задача у HR-специалиста или у тимлида, что команду нужно подтянуть по знаниям, например, по JavaScript, то мы просто приезжаем от Учебного центра CyberBionic Systematics и предоставляем перечень тех курсов и материалов, которые уже существуют. Если компании необходимо подготовить, допустим, Frontend-разработчиков, то мы приезжаем с теми наработками, которые уже есть. Также предварительно готовим конкретное предложение, если от компании уже поступили рекомендации, что, например, нужно сделать больший акцент на объектно-ориентированное программирование, на библиотеку, на определенные инструменты. То есть, мы подготавливаем предложение таким образом, чтобы высветлить те проблемы, которые возникают перед разработчиками и дополнительно добавляем какие-то материалы, которые могут поспособствовать дальнейшему росту специалистов.
Мы проводим встречу с компетентными лицами. Собираемся с тимлидерами, с senior-разработчиками, они высказывают свои пожелания, они корректируют эту программу, и мы берем время на доработку дополнительных материалов. У нас очень много опыта по работе с киевскими компаниями. Очень часто компания Terrasoft заказывала именно абсолютно новую, индивидуальную программу. Они смотрели на то, что у нас есть, но вносили корректировки, которые требовали разработки 30-40 часов, под свои проекты.
Чтобы обучение было действительно качественным и эффективным, чтобы компания получила из этого выгоду, специалистам компании необходимо озвучить, какие проблемы есть и в каком направлении нужно учить команду. В большинстве случаев тимлид и senior-разработчик понимают, что у его 10-ти мидлов, джуниоров и других специалистов не хватает опыта в определенных заданиях. Обычно это знания выборочные и их нужно подтянуть, или их просто нет, тогда нужно донести до слушателей.
Наша задача понять, чего не хватает для того, чтобы специалисты были действительно продуктивными, и их работа была результативная. Для этого нужно подготовить программу, которая принесет пользу компании и специалисты будут удовлетворены. Мы расскажем им, что нужно знать и как нужно работать. Задачи компании будут решатся, а рабочих проблем должно стать меньше после того, как тренинг успешно закончится.
Какие формы обучения наиболее подходят для IT-специалиста?
Чтобы обучение было максимально эффективным, я думаю, его необходимо комбинировать. Использовать обучение вместе с тренером, когда он будет своим примером мотивировать разработчика, заставлять что-то новое учить и двигаться дальше. Также комбинировать обучение необходимо с добавлением онлайн-составляющих, дополнительной литературы. Если брать корпоративное обучение, то максимально эффективное будет очное и онлайн, когда приезжает тренер или обучает через скайп и подобные ресурсы. Непосредственно взаимодействуют все группы слушателей и дополнительно к этому добавляется обучение в видеоформате.
Для большинства проектов не всегда есть возможность оторвать людей от производственного процесса, есть определенные часы, в которые тренеру можно пообщаться с коллективом, рассказать теоретическую часть, но не всегда у разработчиков есть возможность полностью переключиться на подобного рода обучение. Обучения, когда в течение 5 дней в неделю по 5 часов учат определенную технологию, я считаю не очень эффективным, потому что информации очень много, не хватает времени, чтобы её освоить и закрепить. Я считаю, что обучение должно быть постоянным, интенсивным, но при этом в меру, чтобы была возможность переварить саму информацию.
Чтобы был максимальный эффект, необходимо комбинировать очное и онлайн-обучение, когда тренер рассказывает материал и добавлять видеоформат обучения. Конечно, в идеале было бы перевести все на видеоформат и сделать так, чтобы слушатели только смотрели видеоматериалы, но у многих часто возникают вопросы.
Если брать, например, проект ITVDN, то корпоративное обучение подразумевает еще и консультации, то есть команда может взять себе набор видеоуроков.
Создатели и авторы курсов ITVDN хорошо понимают, что именно и в какой последовательности учить и какой эффект будет максимально достигнут. Мы можем составить индивидуальную программу, сделать временные метки и консультировать команду уже по ходу обучения, чтобы они смотрели все в видеоформате и не отрывались от рабочего процесса, при этом мы будем проверять результаты тестирования и отвечать на возникшие вопросы в ходе обучения.
Мы открыты для диалога с компаниями, которые хотят мотивировать своих разработчиков и организовывать для них обучение. Наша команда готова разрабатывать индивидуальные программы, создавать индивидуальный график и подход к каждой компании в отдельности. У каждой компании свои собственные бизнес-процессы, своя корпоративная культура и всех под одну гребенку поставить не выйдет, поэтому мы готовы свои процессы подстроить под график конкретной организации.
Как ты посоветуешь "расшаривать" знания, делиться опытом внутри команды?
Я считаю, что лучшего всего организовывать мастер-классы, когда сама команда для себя что-то полезное рассказывает. В команде всегда есть разработчики, у которых больше опыта. Неплохо было бы организовать день мастер-классов, составить график, где каждый разработчик должен выступить в течение 10-20-ти минут, рассказать о чем-то новом, показать технологию, сделать минимальную презентацию и просто поделиться знаниями, которые он получил на последнем проекте или вычитал, например, в статье. Польза в этом всем в том, что все понимают, над чем они работают, с какими сталкиваются задачами и технологиями, поэтому такие мастер-классы могут быть максимально эффективными для команды.
Если компания пишет, например, используя Angular, то все мастер-классы нужно заточить под Angular и культивировать освоение тех частей этой библиотеки, которые необходимы для работы в проекте. Тимлидер может составить список докладов, и каждый сможет их проводить, будет общая копилка тех тем, по которым разработчик может провести мастер-класс и сделать расписание – это будет наиболее эффективный способ поделиться знаниями в команде.
Также как способ - экстремальное программирование, вместе работать с одной задачей. Кто-то один знает процесс и диктует, а второй набирает код. Экстремальное программирование никто не отменял, но не в каждом проекте оно может примениться, чтобы более опытный специалист смог передать свои знания.
Кар'єра в IT: хто такий Embedded-розробник, завдання та обов'язки
Автор: Влад Сверчков
Хто такий Embedded-розробник?
Сфери застосування Embedded-розробки.
Що має знати Embedded-розробник.
Як стати Embedded-розробником.
Де отримати знання.
М’які навички.
Ключові тренди в Embedded.
Кар’єрні перспективи та заробітна плата Embedded Engineer.
Кількість вакансій.
Конкуренція.
Заробітна плата.
Кар’єрні можливості.
Висновки.
Переважна більшість новачків в Україні обирає тестування або розробку із залученням C#./NET, Java, Python, JavaScript (фронтенд та Node.js). Ці напрямки мають найбільшу кількість вакансій в ІТ, низькі вимоги до вищої освіти, потужну розпіареність майже в усіх навчальних центрах, а також відносно простий перехід в ІТ з будь-якої не айтішної професії.
Спеціальність, яку ми сьогодні розглядатимемо, не є настільки популярною, трендовою. Однак вона є не менш важливою за інші ІТ-напрямки. Герой нашої статті займається розробленням вбудованих (embedded) систем, і його іменують Embedded-розробник.
Що це за спеціальність, наскільки вона важлива і де використовується, що потрібно вчити для її опанування, як виглядає день Embedded-ера, які кар’єрні перспективи та зарплати у фахівців цього напрямку – розбір цих та інших інтригуючих питань читайте нижче.
Хто такий Embedded-розробник?
Почнемо з поняття “Embedded система”. Трактування в різних джерелах відрізняється, але якщо звести все під один знаменник – це комп’ютеризована система, яка вбудована у механічну або електронну систему і виконує певну функціональність. Тобто, це система, в якій комп’ютер (як правило мікроконтролер або мікропроцесор) є невід’ємною частиною іншої системи.
Як приклад: мікроконтролер у вашій кавовій машині, мікрохвильовці або пральній машинці; пристрій, який забезпечує спрацювання подушок безпеки в автомобілі, контролер у літаку, який збирає певні дані про політ – навіть Bluetooth-навушники містять свою власну вбудовану систему.
Відповідно, Embedded-розробник – це спеціаліст, який займається розробкою подібних вбудованих систем, використовуючи програмування (software) та навички роботи із “залізом” (hardware).
Життєвий цикл продукту дуже тісно зав’язаний на розробнику вбудованих систем. Обов’язки Embedded-розробника можуть різнитися в залежності від мікроконтролерів / мікросхем / пристроїв тощо, з якими він працює, але основні фази, де відчутна роль цього спеціаліста, наступні:
Аналіз вимог. Комунікація з клієнтами, дизайнерами та інженерними командами для визначення функціональних і технічних вимог до вбудованої системи.
Проєктування системи. Розроблення архітектури та дизайну вбудованої системи, вибір апаратних та програмних компонентів.
Перевірка базової працездатності. Перед початком роботи Embedded розробник повинен перевірити функціонування плати, оновити драйвери за потреби і переконатися, що “залізо” справне.
Програмування. Написання програмного коду, вбудованих програм і системних протоколів.
Тестування та налагодження. Проведення тестів для перевірки працездатності embedded-системи.
Інтеграція. Забезпечення взаємодії вбудованої системи з апаратурою, зовнішніми пристроями та іншими складовими системи.
Оптимізація продуктивності. Вдосконалення ефективності та продуктивності вбудованої системи, враховуючи обмежені ресурси.
Документація. Формування діагностичних звітів, технічних інструкцій та документації щодо розроблення ПЗ. Також читання форумів, статей та інструкцій до плат та компонентів, з якими ведеться робота.
Співпраця з іншими командами. Взаємодія з hardware та software розробниками, участь в різних мітингах, обговореннях, комунікація з замовником тощо.
Безпека та надійність. Забезпечення високого рівня безпеки, надійності та працездатності вбудованої системи.
Типовий робочий день Embedded-розробника складається з усього потроху:
написання та налагодження коду, пошук багів;
робота з апаратною начинкою – інколи доводиться і паяльником почаклувати, і щось мультиметром виміряти, і осцилограф застосувати тощо;
читання документації, пошук інформації на форумах;
тестування вбудованих систем та їхніх складових;
код-рев’ю;
рефакторинг;
взаємодія з командою, керівництвом: мітинги, ділова переписка, зідзвони з певних питань (або живе спілкування) і т. д.
Сфери застосування Embedded-розробки
Embedded у XXI столітті має гарний приріст затребуваності у зв’язку з розвитком ІТ-індустрії, в особливості – мережевих технологій, операційних систем, мов програмування та внаслідок модернізації “заліза”. Наразі сфера застосування вбудованих систем досить об’ємна:
Побутова електроніка. Вбудовані системи є невід’ємними атрибутами затишного житла: це смарт-телевізори, холодильники, мультиварки та інша кухонна електроніка, пристрої безпеки, смарт-девайси для будинку.
Машинобудівна промисловість. Embedded технології є ключовими для сучасних транспортних засобів, починаючи від цивільного автопрому і закінчуючи потужними будівельними гуліверами. Вони входять до складу двигунів, навігаційних систем, клімат-контролю, розважальних блоків тощо.
Медицина. Сучасна медицина неможлива без комплексного цифрового обладнання, включаючи пристрої моніторингу пацієнтів, системи візуалізації, діагностичні інструменти тощо.
Промислова автоматизація. Вбудовані системи використовуються в промислових системах керування, програмованих логічних контролерах (PLC) і робототехніці для автоматизації та керування процесами.
Телекомунікації. Вбудовані системи – невід’ємна частина мережевого обладнання, маршрутизаторів, комутаторів і комунікаційних пристроїв для ефективної передачі даних.
Аерокосмічна промисловість. Сучасна авіоніка використовує ембедед для керування функціями літака, системами навігації та зв’язку. Якщо хтось хоче тераформувати Марс – без Embedded-у буде дуже важко.
Військова галузь. Вбудовані системи відіграють вирішальну роль у оборонних програмах як у мирний час (спостереження, аналіз, прогнозування, наведення тощо), так і під час війни (згадайте ті ж джавеліни, дрони, хаймарси, петріоти і т. д. – там дуже багато електроніки).
Розумні мережі. Розвиток розумних мереж (smart grid) підвищує ефективність і надійність розподілу електроенергії.
IoT (Інтернет речей). Пристрої IoT значною мірою залежать від вбудованих систем для збору, обробки та передачі даних для різних програм. Приклади: розумний будинок, автоматизовані системи поливу, розумні міста тощо.
Що має знати Embedded-розробник
В Embedded-і ціла палітра спеціальностей. Наприклад, приставки “Software”, “Firmware” вказують на фокус саме на створенні ПЗ, а "Hardware" та "Hardware Design" – на апаратній частині. Тайтл на кшталт "Embedded Systems Engineer" говорить про необхідність мати однаково гарні hardware та software знання. Також треба розуміти, що в різних компаніях один і той же тайтл може мати під капотом зовсім різні технології в залежності від апаратної начинки, різновиду вбудованої системи абощо.
Наш опис необхідних технологій буде охоплювати і апаратне, і програмне крило вимог, що робить його ближчим до тайтлу "Embedded Systems Engineer". Якщо ви хочете більше в software, вивчайте глибше технології, спрямовані на розроблення софту; якщо ж у hardware – більше уваги приділяйте апаратним навичкам.
Отже, ми проаналізували тематичні статті, думки популяризаторів ембедеду та вакансії українського ринку, і на виході отримали наступний технологічний стек Embedded девелопера.
Математика, фізика, електроніка
Найперше ембедед-розробники повинні гарно знати математику та фізику – особливо теми, пов’язані з електротехнічним напрямком, аби гарно розуміти принципи функціонування hardware: розбиратися в начинці плат, вміти правильно розводити всі сигнали на платі, правильно рахувати всі доріжки, перекриття сигналів, їхню цілісність тощо. Ці знання важливі як під час розроблення, так і на моменті проєктування, тестування, комунікування з іншими колегами і не тільки.
Які розділи потрібно знати:
базова математика та обчислення;
дискретна математика;
електричні кола;
основи електроніки;
цифрова та аналогова мікросхемотехніка;
цифрові та логічні схеми;
комп’ютерна архітектура.
Тестове обладнання
Перераховане нижче обладнання ви будете широко використовувати для перевірки працездатності мікросхем, пошуку несправностей тощо. Вам знадобляться наступні інструменти:
мультиметр;
логічний аналізатор;
осцилограф.
Мультиметр є досить відомим приладом серед “електротехнарів” – ним вимірюють низку фізичних величин, як-от сила струму, опір, напруга та інші.
Логічний аналізатор використовується для роботи з цифровими сигналами в електронних системах, а осцилограф – для візуалізації та дослідження електричних сигналів, а також відображення їхніх параметрів в режимі реального часу.
Мікроконтролери
Одні з головних об’єктів зацікавленості Embedded-розробників. Під них і пишеться код мовами C/C++ і не тільки. МК являє собою невеликий електронний пристрій з великою кількістю “ніжок”, якими відправляються/приймаються відповідні електричні сигнали.
Що важливо знати з цієї теми:
GPIO
ADC
DAC
Таймери
PWM
Переривання
Сторожовий таймер (watchdog)
Керування тактовою системою (clock management)
Кожна модель МК має свої особливості, з якими вам треба буде знайомитися через відповідну документацію. Також вам треба знати периферію обраного вами мікроконтролеру і бібліотеки для керування нею.
Найпопулярнішим сімейством МК наразі є STM32. Досвід роботи з Arduino також вітається.
RTOS
Real Time OS – операційна система реального часу. Надає середовище виконання для програм, які мають строгий графік виконання завдань. Embedded-розробники використовують RTOS для обробки завдань з високою точністю і низькими затримками.
Linux
Якщо ви плануєте працювати з вбудованими пристроями на базі Linux (а їх зараз дуже багато), вам слід гарно знати і цю операційну систему. Вона має відкритий вихідний код і є безкоштовною.
Говорячи про приклади проєктів, лінукс використовує велика кількість систем IoT, промисловий, мережевий, автомобільний, медичний Embedded тощо.
Паяльник
Так, в даній професії необхідно інколи й паяльником попрацювати. Якісь компоненти можуть потребувати пайки – десь щось вилучити/додати/замінити, поекспериментувати з макетом, зібрати проєкт тощо. Може виникнути будь-яка ситуація на “залізі”, і ембедед-фахівець має бути готовим до цього.
Основи програмування
Фундамент, який зробить ваш процес програмування продуктивним. Сюди віднесемо наступні теми:
алгоритми та структури даних – ембедерам потрібні сильні знання з алгоритміки;
шаблони проєктування – так, в ембедеді є свої патерни, які полегшують життя девелоперам, наприклад Opaque Pointer pattern;
UML (діаграма стану, state machine) – для моделювання та аналізу поведінки системи.
Програмування на C/C++
C/C++ – це потужні мастодонти у світі програмування. В порівнянні з іншими мовами є складнішими у вивченні, натомість дають можливість писати низькорівневий код з високим ступенем контролю “заліза”.
Також C/C++ дозволяють напряму керувати пам’яттю (а це дуже важливо при роботі з hard-елементами, які мають досить обмежений ресурс), контролювати велику кількість low-level процесів, а також підходять для програмування широкого спектру “заліза”. Обов’язковий інструмент в скарбничці Embedded-девелопера – можна вивчити або C, або C++, або обидві мови.
Інтерфейси та протоколи
Обмін інформацією між Embedded-елементами та їхніми складовими здійснюється через спеціальні інтерфейси та протоколи:
UART, I2C, SPI – базові, їх треба знати обов’язково;
Ethernet, USB – для роботи на високих швидкостях;
Bluetooth – дуже відома безпровідна технологія;
TCP/IP, UDP – для роботи з мережею;
CAN – система, яка використовується в транспортних засобах;
Modbus – для роботи на промислових об’єктах.
Git
Git – система керування версіями проєкту, дуже популярний інструмент під час написання будь-якого коду, оскільки дозволяє відслідковувати зміни в коді, створювати гілки для роботи над різними функціями, ділитися своїм кодом з іншими колегами і навпаки тощо.
Agile/Scrum
Agile – це сімейство гнучких (agile) методологій розроблення ПЗ, яке сприяє випуску продукту порціями, крок за кроком розширюючи та покращуючи його. Як результат – команда здійснює розроблення відносно невеликими інтервалами, сам продукт постійно покращується, якість коду – підвищується. Познайомитися з Agile вам допоможе відповідний маніфест з детальним описом основних принципів.
Scrum є однією з найпопулярніших реалізацій даного підходу, яка часто використовується в багатьох ІТ-командах, в тому числі і під час роботи з вбудованими пристроями.
Англійська мова
English на рівні вільного читання документації має бути у кожного Embedder-а, оскільки левова частка роботи припадає саме на вичитування матеріалів до тих чи інших мікроконтролерів та супутніх пристроїв. Якщо ж ви будете працювати в команді з іноземцями, то треба підтягнути ще й розмовну англійську.
Як стати Embedded-розробником
Де отримати знання
Є декілька опцій для вивчення розробки вбудованих пристроїв:
Можна вчитися самостійно за допомогою безкоштовних ресурсів у вільному доступі: YouTube, roadmap-и з посиланнями на GitHub-і, статті, тематичні форуми, безкоштовні курси та матеріали (MIT OpenCourseWare, embedded.com) тощо. На плати Arduino, паяльник, мультиметр і т. д., звісно, таки доведеться розщедритися.
Проходження відео курсів (платно) на Udemy, Coursera, edX, Pluralsight та інших платформах, придбання спеціалізованих книг.
Менторинг з боку діючого розробника – найефективніший спосіб навчання, оскільки у вас завжди буде допомога, наставництво, поради, чіткий напрямок руху та необхідні навчальні матеріали.
Проходження онлайн/офлайн навчання при компаніях. Такий формат пропонують, наприклад, GlobalLogic, Ajax Systems тощо. Мінуси: потрібна певна база знань перед стартом навчання, а головний плюс – можливість стажування і повноцінного працевлаштування в компанії.
Вища освіта в цій спеціальності не завадить, хоч і не є обов’язковою. Потрібну базу ви можете отримати у школі та вищих навчальних закладах на відповідних технічних спеціальностях – там же є і можливість потрапити на стажування, якщо кафедра таке практикує або має відповідні зв’язки з компаніями.
Soft skills
Вимоги до Embedded-розробників можуть різнитися в плані стеку, але що 100% знадобиться кожному, це наступні “м’які” навички:
критичне, алгоритмічне, аналітичне мислення;
навички problem-solving;
комунікативність, вміння працювати в команді;
організованість, зібраність, вміння ефективно розпоряджатися часом;
самомотивація;
увага до деталей;
терпіння та адаптивність;
пристрасть до Embedded;
бажання постійно розвиватися та вдосконалюватися.
Останні три пункти дуже важливі в професії, оскільки ембедед – це непроста галузь, і за 3-6 місяців “увійти в ІТ” не вийде. Потрібно більше зусиль, часу та витримки.
Ключові тренди в Embedded
ІТ-індустрія рухається вперед, і ембедед не відстає. Проаналізувавши низку ресурсів, ми визначили наступні тренди:
Інтеграція штучного інтелекту та машинного навчання в Embedded-системах стає все більш привабливою, що сприяє використанню вбудованими системами інтелектуальних алгоритмів та ML. Ця синергія дозволяє системам адаптуватися до змін в реальному часі, підвищуючи їхню ефективність.
Розвиток безпровідних технологій відкриває нові перспективи для вбудованих систем, особливо в областях Інтернету речей (IoT) та безпілотних систем, які керуються віддалено або за допомогою AI.
System-on-chip рішення. Інтеграція всіх ключових компонентів системи на одному чіпі (SoC) продовжує набирати оберти та використовуватися різними бізнесами. Їхня компактність в сукупності з високою продуктивністю, дешевизною, енергоефективністю та інтегральними мікросхемами спеціального призначення (ASIC), наприклад, вже успішно застосовується в гаджетах, які збирають та аналізують різні параметри здоров’я.
Більше уваги безпеці. Зростання кількості вбудованих систем, які мають вихід в Інтернет, призводить до збільшення кількості кіберзагроз, що підкреслює важливість удосконалення заходів безпеки для ембедед-пристроїв.
Оптимізація споживання енергії embedded-системами стає актуальною – на це впливають ідеї сталого розвитку, що сприяє поширенню більш енергоефективних рішень.
Розвиток AR та VR (доповнена та віртуальна реальності). Інтеграція вбудованих систем у AR та VR відкриває нові горизонти для інтерактивних інтерфейсів та розважальних застосунків. Embedded-розробники активно працюють над цими технологіями для створення вражаючого досвіду та візуальних ефектів.
Окремо зазначимо і розвиток вбудованих пристроїв у військовій сфері. Наразі зростає попит на ембеддерів, які здатні працювати з дронами (повітряними та морськими), БПЛА тощо. Сьогодні саме ці роботизовані системи дозволяють ефективно виявляти та ліквідовувати ворога, здійснювати розвідку, наводити та корегувати вогонь і – що найважливіше – берегти життя та здоров’я особового складу. Сьогодні це один з трендових напрямків конкретно в нашій державі.
Кар’єрні можливості в ІТ та заробітна плата Embedded Engineer
Кількість вакансій
Для визначення цього параметру використаємо дані з найвідоміших українських ресурсів для пошуку роботи в ІТ – DOU та Djinni – і порівняємо результати з найпопулярнішими спеціальностями.
Почнемо з DOU:
Embedded – 44 вакансії;
QA – 167;
FrontEnd – 160;
DevOps – 158;
PHP – 140;
Python – 138;
Java – 108;
.NET – 104;
Node.js – 101.
На Djinni пошук роботи кандидатами здійснюється анонімно. Кількість вакансій наступна:
C / C++ / Embedded – 170 вакансій;
JavaScript / FrontEnd – 354;
PHP – 295;
DevOps – 273;
Python – 208;
Node.js – 191;
C#/.NET – 166;
Java – 161;
QA Automation – 139;
QA Manual – 128.
Конкуренція
Для визначення конкуренції ембедерів на нашому ринку ІТ скористаємося співвідношенням кількості відгуків до кількості вакансій на DOU за листопад 2023 року (беремо найбільш відомі спеціальності). Ось що маємо:
Конкуренція у ембеддерів (від новачків до професіоналів) дуже низька: на 1 вакансію припадає приблизно 5 претендентів, що є дуже гарним результатом під час нинішньої ситуації на ринку ІТ.
Справжні “голодні ігри” традиційно у QA та FrontEnd: за 1 вакансією полюють в середньому 120.9 та 100.5 кандидатів відповідно.
Відповідно до ринкової статистики Djinni, для новачків конкуренція посилюється:
Зазначимо, що тут демонструється кількість кандидатів на вакансію, котрі зараз перебувають в “онлайні”. На Джині так позначаються ті кандидати, які знаходяться в активному пошуку роботи.
Бачимо, що в категорії “C / C++ / Embedded” без досвіду 27.75 шукачів на вакансію (окремої категорії для Embedded немає). Багатенько, але подивіться на аналогічну ситуацію в більш популярних напрямках:
JavaScript / FrontEnd – 426.55
C#/.NET – 200.5
Python – 185.6
Manual QA – 132.83
Node.js – 98
DevOps та FullStack – 83.5
Заробітна плата
Спершу розглянемо зарплатну статистику на Djinni для “C / C++ / Embedded” (за останні 6 місяців). Картина наступна:
Зарплатні вилки досить високі – 2300-4700 USD. При цьому зарплатні очікування кандидатів скромніші – від 700 USD до 4500 USD.
А скільки отримують Embedded за межами України? Звернімося до аналітики Stack Overflow Developer Survey 2023 (більше 90 000 респондентів із США, Індії, Німеччини, Сполученого Королівства, Канади тощо).
Деякі несуттєві для нашої статті спеціальності були прибрані з діаграми задля більшої компактності зображення.
Отже, медіанна зарплата Embedded-спеціалістів з різних країн складає 77 104 USD на рік, а це приблизно 6425 USD на місяць. Що цікаво, розробники вебу (FrontEnd, BackEnd, FullStack), ігор, мобільних та десктопних застосунків отримують меншу ЗП, хоча ці спеціальності більш поширені, а веб взагалі є найпопулярнішим в ІТ.
Вищу винагороду отримують ті, хто спеціалізується на базах даних, DevOps-процесах, великих даних, апаратній частині, блокчейні, безпеці тощо.
Кар’єрні перспективи
Embedded розробник – поняття досить розмите і обширне, оскільки фахівець цієї спеціалізації може працювати над:
створенням робототехнічних систем;
медичною апаратурою;
автомобільними системами;
аерокосмічними апаратами;
IoT-екосистемою;
AR та VR індустрією;
мережевими системами;
гаджетами для цивільних потреб;
безпекою embedded-пристроїв;
промисловими системами;
військовими розробками;
тощо.
В кожній із цих сфер будуть свої технологічні стеки, мікроконтролери, плати, інтерфейси, протоколи і т. д.
Ще не забувайте про ембедерський “фронтенд”, “бекенд” і “фулстек” – в кожній галузі ви можете концентруватися більше на програмній частині, апаратній, або ж на обох одразу.
Звісно, кожен напрямок може мати власну “кухню”, і щоб “скуштувати страву” в кожному із цих “ресторанів” цілого життя може не вистачити, але погодьтеся – список для самореалізації скромним не назвати.
Також ви можете в будь-який момент заглибитися в Software розробку і займатися написанням програмного коду (найпопулярніші стеки в Embedded-і – C/C++, Java, Python, Go), а можете піти у Hardware і більше уваги приділяти “залізу”. Якщо трохи підкачати знання, то можна перекваліфікуватися і в тестувальники, і в спеціаліста з безпеки, мережевого спеціаліста тощо. Можливості дуже широкі та дуже різноманітні.
Якщо ж говорити про вертикальний потенціал професії, розробник вбудованих систем стартує зі стандартної Intern/Trainee/Junior позиції. Далі – зі збільшенням досвіду, навичок та знань – отримує підвищення до Middle та Senior, а вище – керівні позиції на кшталт Team/Tech Lead, архітектор і т. д.
Висновки
Embedded – дуже цікава, незвична та багатогранна ІТ спеціалізація. Вона дозволяє відчути себе Архітектором, котрий вдихає життя в пристрої, дає їм все необхідне для їхнього руху, думок, аналізу навколишнього середовища, спілкування один з одним тощо. Так, для цього потрібно мати багато знань, але хто сказав, що бути Творцем – це так просто?)
Цей напрямок дає дуже важливий фундамент для інших ІТ-галузей, які сьогодні в зеніті популярності. Завдяки вбудованим системам ми можемо насолоджуватися безліччю автоматизованих процесів, починаючи ранковою свіжомеленою кавою та оглядом нашого сну у health-трекері, і закінчуючи автомобільною та медичною апаратурою.
Ембедед створений для справжніх любителів “заліза” та його програмування. При цьому він має багато нішевих розгалужень і щороку зростаючий попит. Сьогодні в Україні розробники вбудованих пристроїв мають великі можливості для реалізації, а в решті світу – тим більше.
Професія непроста, але вона щедро винагороджує сміливих, терплячих та цілеспрямованих, котрі не бояться складнощів та перешкод і готові на все, аби досягнути бажаного.
Бажаємо успіхів та натхнення всім, хто прагне розвиватися в напрямку Embedded!
Яку мову програмування варто вчити першою
Автор: Влад Сверчков
На що впливає вибір мови програмування?
Які мови обирають першими?
Рейтинги мов програмування.
Індекс TIOBE.
Індекс PYPL.
Stack Overflow Developer Survey 2022.
Рейтинг від GitHub.
Які мови найпопулярніші відповідно до цих рейтингів?
Які мови обирають українські розробники?
Кількість вакансій та відгуків в Україні.
Висновки.
Перша мова програмування (скорочено – МП) відкриває світ створення коду перед новачком. І від обраної мови дуже часто залежить те, яким буде цей «світ» – цікавим та захоплюючим, або ж недружнім та занадто складним. Якщо ви хочете з цього знайомства винести максимальну користь для себе, варто уважно підійти до вибору першої мови програмування – і наша стаття вам у цьому допоможе.
Ми розберемо мови програмування, які можуть бути чудовими у якості перших мов. Ви дізнаєтесь, в яких ІТ-професіях затребувана та чи інша мова – а також багато іншої корисної та цікавої інформації.
На що впливає вибір мови програмування?
Для новачка обрання першої мови – важливий крок, який може визначити його подальший шлях розвитку в якості розробника. Головні пункти, на які впливає МП:
Швидкість опанування бази. Мови програмування мають різну складність вивчення. Наприклад, JavaScript досить легко вивчається, в той час як C++ носить більш хардкорний характер, а мови сімейства Assembler можуть кинути виклик навіть тим, хто вже є розробником. Мови з динамічною типізацією (JavaScript, Python, Ruby тощо) вивчаються швидше за мови зі статичною (C#, Java, C/C++ та ін.).
Парадигма мислення. Мови мають різні парадигми, відповідно до яких ви створюватимете код: процедурна, імперативна, об’єктно-орієнтована, функціональна тощо. Від парадигми обраної вами мови залежить те, як ви будете підходити до вирішення задач. Наприклад, якщо ви вивчаєте ООП-мову, то при зіткненні з мовою з функціональною парадигмою ви витратите додатковий час, аби зрозуміти її і писати код по-іншому (наприклад перехід з Java на Scala).
Перспективи працевлаштування. Кожна мова має свої сфери використання – і ви маєте це враховувати, якщо плануєте після опанування МП шукати роботу. Інакше доведеться вчити нову, втрачаючи дорогоцінний час.
Напрямок розробки. Хоча найпопулярніші мови програмування є досить універсальними, все ж є напрямки, в яких вони цінуються найбільше. Наприклад, для Java – це Enterprise та мобільне розроблення, JavaScript – веб-розроблення, Python – BackEnd веб-розроблення, написання скриптів, нейронні мережі, C# - корпоративні додатки, бекенд та ігри на Unity, C/C++ - високонавантажені застосунки, Embedded розроблення тощо. Відповідно, якщо ви оберете JavaScript, то працювати за Embedded напрямком у вас не вийде – якісь бібліотеки для роботи з мікроконтролерами з використанням JavaScript ви, можливо, таки знайдете, але роботодавця – навряд чи. Навіщо забивати цвях монітором, якщо є молоток?
Пошук ментора та ком’юніті. У кожної МП своє ком’юніті та свої джедаї, що готові брати до себе юних падаванів. У популярних мов більша аудиторія, є гарні та детальні документації, легше знайти ментора – це дозволяє зручніше та швидше навчатися. У більш нішових МП ком’юніті скромніше, тому знайти практикуючого розробника, який візьме до себе учня, аби навчити його програмувати, а також знайти якісні гайди – ще ті задачі. Ментор важливий тим об’ємом знань та практичних навичок, які може вам передати: підказати, як правильніше робити, де ви помиляєтеся, на чому зосередити увагу. Ці поради пришвидшать ваше вивчення МП і дозволять швидше рухатися далі назустріч омріяній ІТ-спеціальності.
Стиль програмування. Пункт дуже схожий на 2-й, але якщо там справа стосувалася етики мови програмування, то тут мова більше про етику самого програміста. У різних мовах можуть бути різні правила написання коду, погоджені спільнотою програмістів. Тому опанувавши одну мову, ви можете зіштовхнутися з геть інакшою кодерською етикою при переході до іншої МП (як приклад – перехід із Go на Java).
Легкість пошуку відповідей. Чим популярніша мова, тим легше гуглити та шукати відповіді, оскільки багато інших розробників до вас цікавилися тими ж питаннями (високоймовірно). Однак якщо ви захочете використати мову в екстравагантних цілях – для яких вона не призначена – можуть виникнути проблеми з відповідями.
Перехід на іншу мову. Деякі технології та мови застарівають, і доводиться вчити новий стек. Наприклад, так сталося з мобільними iOS розробниками, котрі писали мовою Objective-C і були змушені перейти на Swift, оскільки компанія Apple так вирішила. Зважайте і на це при виборі мови.
Які мови обирають першими?
Раніше вивчення програмування починалося в школах з мов Pascal або Basic. Ці мови гарно підходять для знайомства з алгоритмічним підходом, структурами даних та фундаментальними концепціями програмування. Вони навчають грамотності та раціональному підходу до вирішення програмістських задач, але у комерційній розробці сьогодні майже не використовуються.
Наразі у школах дедалі більш розповсюдженими стають такі популярні мови, як Python та JavaScript (JS). Вони досить прості в опануванні і дозволяють швидко подолати відстань між початком навчання і отриманням справжнього кінцевого результату. Скрипт на JS взагалі можна написати за допомогою звичайного блокноту у Windows і запустити в будь-якому браузері – навіть встановлювати додаткове ПЗ не треба. Простіше кажучи, ці дві мови просто цікавіші та дають більше зручностей та можливостей, аніж Pascal або Basic.
Вивчення JavaScript та Python у школі має на меті зацікавити учнів програмуванням і показати, наскільки легко та просто це може бути, які можливості може дати вміння писати код.
Аби відчути силу тієї ж пайтон, можете глянути цікаву підбірку з 10 проєктів довжиною у 10 рядків коду за посиланням.
Таким чином, ці мови не тільки знайомлять з програмуванням, але й дозволяють максимально швидко влитися в ІТ і створювати сучасні застосунки.
Рейтинги мов програмування
Аби краще розуміти, які мови нині користуються попитом, розглянемо декілька відповідних рейтингів.
Індекс TIOBE
Перша десятка мов відповідно до індексу TIOBE (за січень 2023 року):
Python
C
C++
Java
C#
Visual Basic
JavaScript
SQL
Assembly language
PHP
Аналітика індексу TIOBE відштовхується від кількості кваліфікованих інженерів у всьому світі, а також від того, яка кількість курсів та сторонніх постачальників є наразі.
Індекс PYPL
Перша десятка мов відповідно до індексу PYPL (січень 2023 року):
Python
Java
JavaScript
C#
C/C++
PHP
R
TypeScript
Swift
Objective-C
Аналітика даного індексу вибудована навколо частоти пошуку туторіалів (навчальних матеріалів) з тієї чи іншої мови програмування у пошуковій системі Google.
Stack Overflow Developer Survey 2022
Тепер подивимось на опитування Stack Overflow Developer Survey 2022 (більше 70 000 опитаних з усього світу). На картинці нижче можна побачити, які мови найчастіше використовують ті, хто тільки вивчає програмування та ІТ (на двох картинках нижче продемонстровано не всі мови з рейтингу):
Найбільший попит серед новачків викликають мови верстання HTML & CSS (ними створюють візуальне оформлення веб-сайтів), а також мови програмування JavaScript та Python. Решта мов йде з відривом у більше 19%. Тобто, сучасні початківці все більше і більше відходять від класичних Java, C#, а також Pascal і Basic, обираючи більш прості мови, з якими швидше потрапиш в ІТ.
Наступна картинка показує, якими мовами найчастіше користуються професійні розробники:
На першому місці JavaScript – маст хев мова для створення клієнтської логіки веб-сайтів та веб-сервісів, далі йде HTML & CSS, мова запитів SQL для роботи з базами даних, вже відомий лаконічний Python, синтаксичний цукор для JavaScript – мова TypeScript (TS), класичні Java і C# та інші мови.
Рейтинг від GitHub
Аналітика нижче побудована на основі того, які мови найчастіше використовуються у проєктах, котрі публікуються на GitHub. Це найвідоміший ресурс для розробників, де вони розміщують свої проєкти, що дозволяє не тільки демонструвати свої розробки іншим, а ще й зручно вести командне розроблення.
В лідерах – JavaScript, Python та Java, за ними – строго типізована TypeScript, C#, C++ та інші.
Які мови найпопулярніші відповідно до цих рейтингів?
Дуже часто на перших позиціях стоїть Python. Це і не дивно – вона проста, лаконічна і має безліч бібліотек та модулів, які ще більше спрощують процеси створення застосунків і сприяють швидшому вирішенню задач. Основні сфери застосування: системне адміністрування, DevOps інженерія, оброблення даних, Big Data, Data Science (великі масиви даних), ML (машинне навчання), серверне веб-розроблення (BackEnd).
У зв’язку з припиненням підтримки пайтона версій 2.x (наразі підтримується лише 3.x), виникла потреба переписувати старий код (legacy) у відповідності до третьої версії – це створює додатковий попит на пайтон розробників.
JavaScript також вирізняється простотою та лаконічністю, але її основна сфера використання обмежена WEB-ом, хоча JS має достатньо засобів, аби нею вести зручне розроблення серверного ПЗ, мобільних та десктопних додатків тощо.
Рейтинг від Stack Overflow показав, що саме цим двом мовам програмування найчастіше віддають перевагу початківці.
TypeScript – це та сама JavaScript, але зі строгою типізацією та іншими фішками, котрі роблять код більш структурованим та зменшують кількість потенційних помилок.
Наступні позиції зазвичай займає Java – класична та універсальна мова, яка була створена наприкінці 20 століття, але яка при цьому досі популярна і затребувана. Найуспішніше себе зарекомендувала в кросплатформних застосунках, Enterprise (створення ПЗ для великого бізнесу), а також у мобільному розробленні, хоча її сфера застосування ними не обмежується. Також існує багато легасі коду на Java, який вимагає підтримки та оновлення, що створює додаткову затребуваність грамотних Java девелоперів.
Часто згадуються C/C++ - це корифеї серед сучасних мов програмування, часто вивчаються у ВНЗ. Складні в опануванні, але дуже потужні у використанні. Саме вони застосовуються у ресурсоємних застосунках, мікроконтролерах та інших додатках, яким важливо контролювати затрати пам’яті. Якщо хочете швидко потрапити в ІТ – C/C++ не варіант, але у якості мов для вивчення програмістської бази вони – те, що треба. Вивчивши «плюси», ви зможете з легкістю переходити на інші мови.
C# - популярна універсальна мова від компанії Microsoft, яка перш за все орієнтована на створення застосунків під ОС Windows, однак вихід платформи .NET Core дозволив створювати ПЗ і під інші популярні платформи. Найбільше застосовується у розробленні корпоративних застосунків, серверної сторони веб-додатків (BackEnd), ігор на Unity, десктопних додатків.
PHP – популярна мова для серверного веб-розроблення. Не дивлячись на її поважний вік, досі активно використовується у бекенді. Має своєрідний синтаксис і неоднозначне відношення зі сторони кодерської спільноти, хоча за своєю легкістю нагадує Python та JavaScript. Мовою PHP наразі написано багато legacy коду, тому окрім створення нових застосунків є потреба переписувати код іншими мовами.
SQL – класична мова запитів для маніпуляцій із даними. Використовується усіма розробниками, котрі працюють з реляційними базами даних, тому і має відносно високу популярність.
Bash/Shell – це командні оболонки для написання скриптів, котрі дозволяють автоматизувати виконання рутинних задач. Важливі інструменти в роботі системних адміністраторів та DevOps інженерів.
Які мови обирають українські розробники?
Також звернімося і до аналітики від DOU – спільноти професійних українських розробників, а саме – розглянемо зарплати українських девелоперів (зима 2023). Дізнаємось, які МП наші розробники використовують у якості основних:
Першими йдуть мови для створення фронтенду, оскільки майже весь веб FrontEnd створюється мовами JavaScript та/або TypeScript. За ними – універсальні мови C#, Java, Python та мова серверного розроблення PHP. Kotlin та Swift – це мобільне розроблення під Android та iOS відповідно. Далі йдуть менш популярні напрямки.
Таким чином, наразі більше 85% українських розробників-респондентів у якості основної МП використовують одну з восьми вищенаведених мов.
Тепер розглянемо медіанні зарплати українських розробників відповідно до МП, які вони використовують у якості основних:
Найбільш високооплачуваними для вітчизняних Junior розробників-респондентів є Ruby та C++. Але інші мови від них не сильно відстають. На рівень заробітньої плати також впливає навичка проходження співбесід, оскільки багато працедавців просто не вказують в оголошеннях конкретну суму, а отже, чим краще ви пройдете співбесіду, тим більшу суму вам зможуть запропонувати.
Динаміка зарплат для джунів за останні пів року:
JavaScript – не змінилася.
Java – на рівні грудня 2021.
C#/.NET – підвищилась на 50 USD.
PHP – знизилась на 50 USD.
Python – знизилась на 45 USD.
C++ - зросла на 100 USD.
Ruby/Rails – зросла на 125 USD (але кількість респондентів невелика, тому число може не відображати реальної ситуації).
Swift – підвищилась на 50 USD.
Kotlin – підвищилась на 100 USD.
TypeScript – підвищилась на 60 USD.
Кількість вакансій та відгуків в Україні
Розглянемо ще одну аналітику від DOU, яка стосується кількості вакансій та відгуків станом на грудень минулого року.
До деяких позицій наведемо мови програмування, котрі там використовуються:
Найбільше співвідношень відгуків до вакансій у FrontEnd (окрім JavaScript та TypeScript використовують ще мови верстання HTML & CSS) – конкуренція одна з найвищих на ринку ІТ.
Менше конкуренції у Java, Python, .NET – їхні сфери використання та мови вже розібрали вище.
Node.js – платформа для серверного розроблення мовою JavaScript або TypeScript.
Big Data та Data Science – у цих сферах найчастіше використовується Python.
iOS/macOS розроблення ведеться мовою Swift, рідше – Objective-C.
Flutter – це мобільне розроблення під Android та iOS мовою Dart.
Unity – створення ігор мовою C# на рушії Unity.
React Native – розроблення мобільних та десктопних застосунків мовами JavaScript & TypeScript.
Blockchain – розроблення за допомогою Java, Node.js, Golang, Rust та ін.
Android – створення мобільних додатків мовами Java & Kotlin (Kotlin – набагато затребуваніша тут).
DBA (Database Administrator) – розроблення ведеться мовою SQL, PL/SQL з використанням різноманітних СУБД (PostgreSQL, MySQL тощо).
Ruby – бекенд розроблення мовою Ruby.
DevOps – використовується мова Python, інструменти Bash/Shell.
Висновки
Тож яку мову програмування обрати у якості першої? Є три основні варіанти в залежності від того, яку мету ви перед собою ставите:
Якщо ви хочете опанувати програмістський фундамент, сформувати правильне алгоритмічне мислення, а вже потім орієнтуватися на більш прикладні речі – починайте свій шлях у програмуванні разом з Pascal, Basic або C++. Перші дві мови вивчаються ще в школі і закладають правильні кодерські звички, надійну базу, в той час як C++ - це значно складніша мова, котра зачасту розглядається в університетах, але вона також гарна у вивченні фундаменту. Варто відмітити, якщо ви будете успішні у C++, інші мови зможете дуже легко опановувати і швидко розвиватиметеся далі за конкретним напрямом розроблення. Цей варіант підійде тим, у кого є час (якщо йти шляхом Pascal, Basic) або ж тим, у кого є не тільки час, а й любов до викликів (C++).
Якщо ви хочете опанувати правильний програмістський фундамент, але прагнете вивчати мову, яка вже активно застосовується у розробленні і при цьому не потребує таких зусиль для вивчення, як більш складні C/C++ – обирайте між Java або C#. Це класичні мови, які навчать вас базі і при цьому будуть досить затребувані на ІТ-ринку ще довгий час, що дозволить відносно швидко знайти роботу. Це найкращий варіант з усіх трьох з точки зору компромісності між легкістю вивчення, швидкістю становлення в подальшому розробником і отриманням кодерської бази.
Якщо ви хочете максимально швидко потрапити в ІТ – зверніть увагу на JavaScript та Python. Вони легкі в опануванні, швидко вивчається синтаксис, ринок має досить багато вакансій під JavaScript. Також ці мови мають велике ком'юніті, тому матеріалів для вивчення ви знайдете вдосталь.
Багато хто хоче потрапити в ІТ саме через останній – третій варіант. Але в чому його недоліки? Почнемо з JS:
велика конкуренція (згадували під час розгляду аналітики);
надто велика варіативність – кожен розробник може писати код за своїми власними правилами і буде важко читати та розуміти логіку його роботи;
в інтернеті багато відповідей низької якості;
з джаваскрипту важче переходити на інші мови програмування, аніж навпаки;
значний шанс пропустити базові концепції програмування і високий ризик написання поганого коду.
У Python приблизно ті самі проблеми плюс наявність своєрідного синтаксису, який може плутати.
Це не означає, що дані мови – погані. Абсолютно кожна має як свої плюси, так і мінуси – і це нормально.
МП треба обирати, відштовхуючись від сфери, в якій ви збираєтеся себе реалізовувати. Тільки тоді цей вибір буде максимально вдалим і корисним для вас.
Коротенько резюмуючи: якщо вас цікавить розроблення веб-сайтів – всього того, що на стороні клієнта, ви хочете постійно бачити наочний результат своєї роботи, – обирайте JavaScript. Якщо цікавить кросплатформне ПЗ, Enterprise або мобільне розроблення під Android – вчіть Java (у мобільному розробленні потім довчите Kotlin). C# - гарний вибір для тих, хто хоче працювати з інструментами від Microsoft, створювати корпоративні застосунки, BackEnd веб-додатки, ігри, десктопні додатки під Windows. Python – незамінний у автоматизації рутинних задач, популярний у роботі з великими даними, BackEnd-ом, штучним інтелектом. Ці 4 мови покривають досить великий відсоток ІТ-спеціальностей, тому обравши одну з них ви не прогадаєте.
Де можна вивчити мови програмування? Наші курси допоможуть кожному, хто збирається вивчати популярні мови програмування та супутні технології. Портал ITVDN налічує понад 230 відео курсів та має власні програми навчання за 15 найпопулярнішими IT-професіями, серед яких:
Верстальник сайтів
FrontEnd Developer
Java Developer
Python Developer
C# / .NET Developer
Android Developer
Unity / Game Developer
PHP Developer
та інші.
Навчання відбувається у форматі записаних відео курсів – ви можете навчатися у той час, який є для вас комфортним. З усіма спеціальностями можна детально ознайомитись, перейшовши на сторінку спеціальностей ITVDN.
Якщо вас цікавить вивчення тільки мови програмування, відповідні курси ви знайдете у нашому каталозі.
Бажаємо успішного навчання та досягнення ваших амбіцій в ІТ!