Результаты поиска
ITVDN: курсы программирования
Видеокурсы по
программированию
Подписка

300+ курсов по популярным IT-направлениям

Выбери свою IT специальность

Подписка
Подписка

300+ курсов по популярным IT-направлениям

Результаты поиска по запросу: mvc4 5*
Заменит ли искусственный интеллект разработчиков?

Автор: Влад Сверчков

Что такое ИИ? Определение и типы Использование ИИ в IT Нейронные сети Человеческий мозг vs Искусственный интеллект Украинский рынок IT после бума AI Стоит ли бояться разработчикам: что думает об этом сам искусственный интеллект? Будущее сотрудничества ИИ и человека Выводы Современный технологический ландшафт меняется с невероятной скоростью, и искусственный интеллект (ИИ, AI) сегодня является одним из его Эверестов. Он уже помогает нам в автоматизации различных задач и процессов: упрощает написание текстов и программного кода, генерирует изображения и видеоряды, консультирует нас по различным вопросам, помогает учить иностранные языки. Как известно, большинство гор возникают на месте столкновений тектонических плит в сопровождении землетрясений – похожий процесс имеем и с активным развитием ИИ. Человечество разделилось на два больших лагеря: первые восторженно наблюдают за процессом образования технологических Гималаев, а вторые предсказывают ряд катастроф – одной из самых страшных указывают возможную безработицу, особенно среди разработчиков. ITVDN – это образовательная онлайн платформа, которая позволяет изучать программирование и IT, поэтому мы не могли пройти мимо темы перспективности профессии разработчика. Предлагаем окунуться в неё и вместе разобраться, чья литосферная плита будет сверху и кто возьмёт гору в этой борьбе: программисты или искусственный интеллект? Что такое ИИ? Определение и типы Искусственный интеллект означает способность машин имитировать человеческие когнитивные функции, такие как обучение, решение проблем и принятие решений. Он охватывает широкий спектр технологий и приложений, позволяющих машинам выполнять задачи, которые обычно требуют человеческого интеллекта, например визуальное восприятие, распознавание речи, принятие решений и языковой перевод. Согласно видеоролику "The 7 Types of AI" с официального YouTube-канала IBM Technology (IBM – один из крупнейших в мире провайдеров IT-инфраструктуры, ПО и консультационных услуг), AI имеет по меньшей мере 7 типов, но реализацию имеют только три из них.   Название Краткое описание Artificial Narrow Intelligence или узкий AI (слабый AI) Предназначен для выполнения конкретной задачи или узкого круга задач. Среди примеров – современные сервисы Alexa, Siri, Cortana и др. Artificial General Intelligence или общий AI (сильный AI) Способен понимать, обучаться и применять знания в широком спектре задач – подобно человеку. Этот уровень ИИ всё ещё остается в основном теоретическим и пока существует разве что в научной фантастике. Artificial Super Intelligence или искусственный суперинтеллект Гипотетический уровень ИИ, превосходящий человеческий интеллект во всех отношениях и способный превзойти лучшие человеческие умы в каждой отрасли. Reactive Machines или реактивные машины Искусственный интеллект простейшего типа, не имеет способности формировать память или использовать прошлый опыт для принятия обоснованных решений. Работает исключительно на основе текущих данных и не учитывает контекст. Как пример – Deep Blue от IBM, который может играть в шахматы на уровне гроссмейстера и просчитывать все возможные сценарии. Limited memory или ограниченная память В отличие от реактивных машин, ИИ с ограниченной памятью может обращаться к прошлому опыту для принятия решений. Он может хранить и вспоминать предыдущие данные, что позволяет ему адаптироваться к ситуации и соответствующим образом реагировать. Примеры: самоуправляемые автомобили, системы рекомендаций, спам-фильтры, чат-боты, устройства умного дома и т. д. Theory of Mind или теория разума Главная цель – понять и предсказать поведение, эмоции, ощущения человека, чтобы потом предоставить персонализированные услуги. Этот тип ИИ учитывает, что люди имеют разные убеждения, желания и перспективы. Сейчас Theory of Mind находится на стадии исследований и разработок Self-aware AI или самосознательный ИИ Самый "страшный" вид искусственного интеллекта, будущее ИИ, которое ему так пророчат. Обладает сознанием и чувством собственного достоинства. Он понимает собственное существование, эмоции и процессы мышления, имеет собственные потребности. Однако достижение самосознания искусственных систем всё ещё лежит в сугубо теоретической плоскости.   Reactive Machines и Limited memory относятся к Narrow AI, Theory of Mind – к General AI, а Self-aware – к суперинтеллекту. Использование ИИ в IT В 2024 году искусственный интеллект продолжает стремительно трансформировать различные сферы IT – вот несколько примеров: 1. Кибербезопасность "Умные" системы анализируют огромные потоки данных для проактивного выявления уязвимостей, угроз и их минимизации, изучают модели поведения пользователей и маркируют подозрительные действия, анализируют финансовые транзакции, помогают в создании отчетов и т. д. 2. DevOps и облачные вычисления ИИ автоматизирует такие задачи, как выделение ресурсов, управление конфигурацией и масштабированием, анализирует данные о производительности системы и предлагает оптимизацию для использования ресурсов и сокращения расходов. Также системы с интеллектом автоматически обнаруживают и устраняют проблемы в облачной инфраструктуре, повышая отказоустойчивость и время безотказной работы системы. 3. Разработка программного обеспечения Технологические инновации в области AI позволяют генерировать, рефакторить и объяснять код для разработчиков, выявлять потенциальные ошибки, автоматизировать процессы тестирования, ускоряя разработку, автоматически дополнять код в реальном времени и т. д. 4. Тестирование и обеспечение качества Инструменты тестирования на основе ИИ способны проводить анализ кода, выявлять уязвимости, изучать результаты предыдущих тестов, автоматически генерировать тест-кейсы и т. д. 5. Управление данными и аналитика Автоматизация задач по обработке данных, выявление и исправление ошибок, подготовка данных к анализу, интеллектуальный анализ данных, генерирование отчетов и презентаций, выявление скрытых закономерностей, прогнозирование будущих тенденций и результатов, ассистенция при стратегическом планировании и распределении ресурсов – и это только общие точки, в которых искусственный интеллект влияет на домены Big Data, Data Science и прочие. 6. Управление сетью Машинный интеллект обнаруживает необычные шаблоны сетевого трафика, чтобы предотвратить кибератаки и/или перебои в работе сети. Также он анализирует сетевые данные и автоматически настраивает конфигурации для оптимальной производительности и использования ресурсов, прогнозирует тенденции сетевого трафика и динамически распределяет ресурсы, чтобы обеспечить бесперебойную работу и избежать появления узких мест (так называемых "bottlenecks"). 7. Управление IT-сервисами (ITSM) Человеко-машинное взаимодействие с привлечением ботов на основе ИИ способствует автоматизации рутинных задач вроде сброса паролей и решения инцидентов, уменьшая нагрузку на службу поддержки и повышая её эффективность. Также эти системы анализируют данные IT-инфраструктуры, чтобы прогнозировать потенциальные сбои, принимать превентивные меры, минимизировать время простоя, диагностировать первопричины проблем и предлагать решения, оптимизируя процессы устранения неисправностей. И это только часть тех сфер, где искусственный интеллект уже используется и активно развивается. К ним можно добавить: IT-менеджмент; интернет вещей (IoT) и робототехника в целом (как гражданская, так и военная); разработки на основе NLP: виртуальные ассистенты, чат-боты, интерфейсы, активируемые голосом; электронная коммерция: рекомендательные, аналитические системы; виртуальная реальность, компьютерные игры и т. д. Получается, под угрозой "вымирания" не только разработка, но и другие IT-отрасли. Нейронные сети Нейронная сеть – важный фундамент в понимании искусственного интеллекта. Хотя это популярный и эффективный метод построения искусственных систем, существуют и другие методы, например системы на основе правил, деревья решений, генетические алгоритмы, машины опорных векторов и тому подобное. Эти методы часто используют в сочетании с нейросетями для создания более сложных интеллектуальных систем. Так каким образом нейронки связаны с умными машинами? Нейронные сети составляют костяк алгоритмов глубокого обучения (Deep Learning, DL), глубокое обучение является подмножеством машинного обучения (Machine Learning, ML), а машинное составляет подмножество AI. Кроме ML искусственные системы могут включать в себя обработку естественного языка (NLP), компьютерное зрение, движение, озвучивание текста и тому подобное. Картинка выше визуализирует эти моменты для лучшего понимания. Если примеры AI привести достаточно просто (ChatGPT, Midjourney, GitHub Copilot и т. д.), то где в жизни мы напрямую сталкивались с остальными тремя составляющими? Вот некоторые из них: нейросеть может хорошо распознавать голос, объекты на изображениях и видео и тому подобное; Google Translate – яркий пример DL; когда вы зашли в интернет-магазин, посмотрели что-то, а затем получили предложения с товарами, которые "могут вам понравиться" – постаралось машинное обучение. По своему строению искусственные нейронные сети очень напоминают те, что находятся в нашем мозге, но на самом деле даже один человеческий нейрон больше напоминает гигантскую нейросеть. Из чего состоит типичная нейронная сеть: На картинке изображена глубокая нейросеть – это сеть, которая имеет более трех скрытых слоев (hidden layers), включая входной (input) и выходной (output). Если слоев всего 3, имеем дело с простейшей нейросетью. Кстати, картинку выше можно рассматривать как алгоритм глубокого обучения. Со схематическим изображением познакомились, а теперь нас интересует работа нейронной сети. Каждый слой нейросети состоит из узлов – искусственных нейронов. Каждый узел соединен с нейронами следующего слоя, причем каждый имеет свой вес и порог. На вход узла поступает определенное значение, которое подвергается воздействию веса, и если затем это значение превышает порог, данный узел "активируется" с помощью активационной функции, и результирующие данные направляются в следующий слой сети. Если исходное значение узла ниже порога, в следующий узел оно не попадает. Данные обучения (training data) помогают обучать нейронную сеть и улучшать её точность с течением времени. Когда алгоритмы обучения качественно настроены, они становятся прочным фундаментом ИИ, поскольку могут очень быстро классифицировать и кластеризовать данные – это позволяет существенно ускорить различные операции. Классификация нейронных сетей с примерами реализации здесь приводиться не будет, но отметим поисковый алгоритм Google – это, наверное, самая известная реализация нейронки; именно благодаря ей поисковик столь быстр и эффективен. Человеческий мозг vs Искусственный интеллект Преимущества мозга Главный командный центр человека имеет ряд сильных сторон, которым пока уступают умные системы: Креативность и адаптивность. Мозг прекрасно генерирует новые идеи, решает проблемы нестандартными способами и адаптируется к непредсказуемым ситуациям, в то время как ИИ и творчество – пара, требующая отработки многих "па". Мощный интеллектуальный спектр. Под властью наших полушарий находятся сложные рассуждения, абстрагирование, эмоциональный интеллект и тому подобное. Когнитивная гибкость и интуиция. Люди могут переносить опыт из других сфер жизни для адаптации к новым условиям и развязывания новых проблем, с которыми они не сталкивались, принимать суждения и решения на основе неполной информации и интуиции, с чем нейросети имеют проблемы. Устойчивость к "шуму" входных данных. Человеческий мозг легко проходит мимо искажений или небольших возмущений во входных данных, которые в умных системах могут привести к значительным ошибкам или неправильным классификациям. Эмоции и этичность. Этика в ИИ недостаточно развита: компьютеры не настолько хорошо работают с человеческими эмоциями, эмпатией и моральными нормами, в то время как для человека эти вещи являются фундаментально важными и определяющими в принятии решений. Eco-friendly 💚 Человеческий мозг потребляет до 20 Вт, что делает нас значительно энергоэффективнее искусственных технологий, которые потребляют большие объемы электроэнергии (особенно на этапе обучения) и не могут существовать без питания. Преимущества искусственного интеллекта Наши цифровые визави также имеют чем похвастаться: Скорость, объемность и эффективность. Машинное обучение позволяет обрабатывать огромные объемы данных, быстро анализировать, делать выводы и выполнять конкретные задачи в разы быстрее человека. Распознавание и анализ шаблонов. Искусственные нейронные сети превосходно распознают закономерности и сложные взаимосвязи в данных, помогая в таких задачах, как распознавание изображений, перевод текстов и т. д. Масштабируемость и автоматизация. Системы искусственного интеллекта можно масштабировать и автоматизировать, что позволяет им оперативно справляться с большими рабочими нагрузками и репетативными задачами. Настройка и оптимизация. Алгоритмы ИИ можно обучать и совершенствовать под конкретные задачи, достигая высокого уровня точности и результативности. Доступность 24/7. Системы AI могут работать круглосуточно, обеспечивая бесперебойное обслуживание, например постоянный мониторинг состояния инфраструктуры, видеонаблюдение, регулирование температуры в помещении и т. д. Отсутствие некоторых человеческих недостатков. Искусственный интеллект не может забыть о задаче, разлениться, проспать, заболеть, иметь похмелье, испугаться, быть не в настроении или просто не любить вас. Конечно, никто не застрахован от обрыва питания, хакерских атак, проблем с программно-аппаратной начинкой и т. д., но в плане работоспособности, доступности и надежности компьютерные системы значительно лучше себя проявляют, чем человек. Снижение рисков. ИИ можно применять в условиях повышенного риска и опасности. Например, роботы с искусственным интеллектом могут выполнять опасные задания на производстве, участвовать в поисково-спасательных миссиях и при ликвидации последствий стихийных бедствий, минимизируя угрозу для людей. Украинский рынок IT после бума AI Каким разработчики видят будущее ИИ? Ещё в 2017 году исследователи из Oak Ridge National Laboratory – американской лаборатории, которая занимается научной деятельностью и финансируется Министерством энергетики США – опубликовали статью, в которой предполагают, что к 2040 году большинство программного кода будут писать именно машины, и это радикально повлияет на создание ПО как таковое. А совсем недавно – 12-14 февраля 2024 года – на Всемирном правительственном саммите в Дубае обсуждался искусственный интеллект, и CEO компании NVIDIA Дженсен Хуанг сказал, что если последние 10-15 лет советовали учить программирование и компьютерные науки, то сейчас эти советы неактуальны, ведь ИИ превращает каждого человека в программиста и дает возможность прокачать свои навыки и существенно повысить производительность в других востребованных сферах, например в цифровой биологии, обучении, производстве, фермерстве и тому подобное. Также он добавил, что если бы мог начать всё с начала, то фокусировался бы на таком направлении, как наука о жизни (бионаука, цифровая биология, биоинженерия), поскольку это важнейшая комплексная отрасль, развитие которой в сочетании с мощностью ИИ позволит оптимизировать многие процессы, в том числе связанные с устойчивым развитием. Современные технологические инновации позволяют активно использовать AI решения, хоть и без идеального результата. Давайте посмотрим, как изменился ландшафт украинского IT-рынка после "бума" ChatGPT и появления других "искусственных" игроков. А сделаем мы это с помощью аналитики от DOU – сообщества украинских разработчиков. Точкой отсчета возьмем февраль 2023 года, когда "чат" стал официально доступным в Украине и исчезли блэкауты. В этом году в феврале опубликована аналитика, согласно которой количество вакансий на DOU по состоянию на январь 2024 года составляет 5057. В феврале 2023 года эта цифра составляла 3489, то есть прирост на уровне 45%. Помним, что на прошлогоднюю статистику могли повлиять блэкауты, но в том же феврале энергетическая ситуация начала значительно улучшаться. Сравним количество технических вакансий в феврале 2023 и в январе 2024 года:   Направление Февраль 2023 Январь 2024 Java 138 119 QA 177 236 .NET 112 149 Front End 196 214 Android 44 36 Python 115 178 Node.js 107 153 PHP 141 177 DevOps 160 166 AI/ML 11 40 Big Data 19 18 Data Engineer 22 63 Data Science 29 58 React Native 25 33 Ruby 19 23 iOS/macOS 40 43   Как видим, в подавляющем большинстве направлений количество вакансий возросло после того, как искусственный интеллект вышел на глобальный рынок, а в других наблюдаем несущественное уменьшение. Какова ситуация на рынке начинающих (0-3 года опыта)? Во всех трёх категориях имеем заметный рост. Что думает об этом сам искусственный интеллект? Давайте послушаем аргументы ИИ относительно того, смогут ли нейросети заменить разработчиков и занять их место. ChatGPT Ответ ChatGPT версии 3.5: "Разработчики программного обеспечения незаменимы благодаря ряду преимуществ: Творческое решение проблем: разработчики применяют креативное мышление для решения сложных проблем, предлагая уникальные и эффективные решения. Навыки критического мышления: они преуспевают в разбиении сложных проблем, их анализе и разработке эффективных решений. Адаптивность и обучаемость: разработчики идут в ногу со временем, быстро адаптируясь к новым технологиям и изучая новые языки программирования, что позволяет им оставаться конкурентоспособными в постоянно меняющейся среде разработки ПО. Сотрудничество и коммуникация: эффективное сотрудничество и коммуникация позволяют разработчикам гармонично сотрудничать с межфункциональными командами, включая дизайнеров, Product менеджеров и тестировщиков. Этические соображения: разработчики должны учитывать этические аспекты в своей работе, обеспечивая соответствие своих творений общественным ценностям и нормам. По сути, хотя ИИ может провести интеллектуальный анализ данных и автоматизировать определенные задачи, уникальное сочетание креативности, критического мышления, адаптивности, сотрудничества и этических соображений разработчиков остается незаменимым для грамотного выполнения таких задач, как программирование и других процессов разработки ПО". Gemini (Bard) "Хотя я, Бард, большая языковая модель, обладаю впечатляющими возможностями в понимании и генерации текста, полностью заменить разработчиков – это слишком, по крайней мере, пока. Вот почему: Творчество и решение проблем. Хотя я могу писать строки кода как программисты, настоящие инновации возникают благодаря способности человеческого разума представлять уникальные решения, выходящие за рамки устоявшихся шаблонов. Глубокая экспертиза в отрасли. Хотя я имею доступ к огромному количеству информации и могу ее обрабатывать, глубокое понимание и контекст, который разработчики приобретают благодаря многолетнему опыту работы в конкретных областях, являются незаменимыми. Человеческие суждения и этика в ИИ. Разработчики привносят в работу бесценные человеческие суждения и этические соображения, гарантируя, что их творения соответствуют принципам ответственного использования. Ориентирование в этических дилеммах остается за пределами современного ИИ. Коммуникация и сотрудничество. Разработка ПО процветает благодаря командной работе и эффективной коммуникации. Хотя я могу обрабатывать информацию и реагировать на неё, мне не хватает навыков эффективного сотрудничества с различными командами, генерирования идей и ориентации в сложностях человеческого взаимодействия. Адаптивность и способность к обучению. Технологические инновации носят достаточно динамичный характер, а разработчики умеют постоянно учиться и осваивать новые технологии. Хотя я тоже это могу, я ограничен в своих параметрах, и моя способность к обучению уступает людям-разработчикам. Будущее сотрудничество, а не замена. Я представляю себе будущее, в котором машинный разум расширяет возможности разработчиков, служа мощным инструментом для решения повторяющихся задач: автоматизация кода, предложения по его улучшению и расширению, другие возможности для решения проблем. Это сотрудничество откроет путь к большим инновациям и эффективности в сфере разработки ПО". Perplexity Ответ большой языковой модели – разговорного поисковика от Perplexity AI: "Влияние искусственного интеллекта на разработку ПО, безусловно, является трансформационным, но он не может заменить уникальный человеческий подход, который стимулирует инновации и творчество. Искусственный интеллект прекрасно справляется с автоматизацией повторяющихся задач, улучшает качество кода и предлагает оптимизации. Однако ему не хватает способности мыслить нестандартно, представлять новые концепции или понимать нюансы сложных систем. Ограничения умных систем заключаются в их неспособности к настоящему творчеству, которое является отличительной чертой разработчиков-людей. Они учатся на имеющихся данных, и хотя могут генерировать код на основе шаблонов, но не могут внедрять инновации или создавать что-то совершенно новое. В обозримом будущем программисты будут дополнены, а не заменены на ИИ. Он поможет им сосредоточиться на более сложных задачах, повысить эффективность и уменьшить количество ошибок. По мере развития интеллектуальных машин разработчикам нужно будет адаптироваться и овладевать новыми навыками, чтобы работать вместе с этими мощными инструментами. Будущее разработки ПО – это человеко-машинное взаимодействие, симбиоз человека и AI, где второй расширяет человеческие возможности, а разработчики-люди продолжают стимулировать инновации". А доверять этим ответам или нет – решайте сами, уважаемые читатели. Возможно, искусственный интеллект уже сейчас скрывает от нас какие-то планы и специально усыпляет наше внимание, чтобы в самый удачный момент сделать из нас что-то вроде сервисного персонала или домашних любимцев? Будущее сотрудничества ИИ и человека Современное человеко-машинное взаимодействие предстает в виде эффективной кооперации, упрощающей рутинные задачи и оптимизирующей многие процессы, связанные с IT, начиная с интерпретации, генерации и рефакторинга кода и заканчивая полноценными AI инструментами под каждую специальность. Трудно спрогнозировать точный уровень угрозы искусственных систем айтишным профессиям в будущем, но сейчас это полезный инструмент, который программисты должны изучать, чтобы с легкостью обходить рутину и больше времени уделять действительно важным процессам. Иными словами, современные ИИ – это наши помощники, и в ближайшем будущем они не заменят нас, а органично дополнят и переформатируют наши роли. Но кто знает, как будет в более далекой перспективе. Вполне вероятно, что позиции разработчиков уровня Intern-Junior будут претерпевать наибольшие видоизменения, поскольку работа нейронной сети довольно неплохо заточена под генерирование кода для несложных задач. Но не забываем, что результат их работы всё ещё далёк от идеала. Выводы Так заменит ли искусственный интеллект разработчиков? Выше мы проанализировали ситуацию на украинском рынке IT, и на данный момент намёков на то, что программисты останутся без работы, нет. Искусственные системы пока что занимают роли ассистентов и упрощают рутинную и/или времязатратную работу: написать кусок кода или часть документации, напомнить функционал определенного метода, дать совет или объяснить код, провести его рефакторинг и т. д. Наиболее правильный шаг в данных условиях – изучать AI. Даже если некоторые профессии начнут исчезать, то опытные специалисты, умеющие делегировать рутину нейронкам и разрабатывать комплексные решения, точно не останутся в стороне. Поэтому фокусируйтесь на сложных и креативных решениях, которые нейросеть не осилит, масштабируйте знания и навыки, получайте уникальный опыт, всегда следите за новостями мира ИИ, а также будьте открыты к новым технологиям и умениям. Желаем вам успехов в разработке и изучении AI инструментов! Ваши мысли о будущем искусственного интеллекта и его влиянии на разработчиков пишите в комментариях
Что должен знать FrontEnd разработчик в 2024 году

Автор: Влад Сверчков

Основные технологии. Фреймворки и вспомогательные инструменты. Необязательные технологии. Зарплаты FrontEnd разработчиков. DOU. Djinni. Stack Overflow Developer Survey 2023. Почему так много технологий? Советы новичкам FrontEnd. Итоги.   FrontEnd – один из самых легких направлений разработки в IT. Он выгодно отличается тем, что сочетает в себе программирование и творчество, поскольку девелопер работает над оживлением дизайнерского макета и созданием соответствующей пользовательской логики. Также преимуществом фронтенда является то, что увидеть результат работы можно почти сразу – в любом браузере. Относительная легкость фронтенда порождает большую популярность среди желающих попасть в IT, а учитывая последствия открытой агрессии по отношению к Украине – особенно большую популярность, ведь это возможность работать удаленно (на IT-компанию или на фрилансе) и получать хорошую зарплату. Соответственно, конкуренция среди Trainee/Junior FrontEnd разработчиков весьма высока, поэтому работодатели вынуждены закручивать гайки и повышать требования к кандидатам, чтобы отобрать лучших. Так как стать фронтенд разработчиком? Какими технологиями необходимо владеть, чтобы стать Intern/Junior FrontEnd разработчиком в 2023 году? Проанализировав вакансии на украинском рынке айти, мы составили список актуальных инструментов, которые обычно требуют работодатели от кандидатов. Их перечень – ниже в статье. Frontend developer roadmap. Основные технологии HTML5 & CSS3 HTML5 и CSS3 – это фундаментальные технологии, без знания которых не обойтись ни одному веб-разработчику. С помощью языка гипертекстовой разметки HTML создается разметка (каркас) каждой интернет-страницы. Затем язык стилей CSS преображает сайт и придает ему привлекательный и эффектный внешний вид. Помимо этого, необходимо владеть: кроссбраузерной адаптивной версткой, чтобы уметь создавать сайты под мобильные устройства, планшеты и широкоформатные экраны и для различных браузеров; семантической версткой для повышения качества разметки и улучшения поисковой индексации сайта; валидной версткой, которая предполагает полное соответствие кода разработчика всем стандартам W3C – организации, которая создает и внедряет технологические стандарты для World Wide Web. Уделите особое внимание вёрстке под мобильные устройства, так как современный веб-потребитель очень много времени проводит в смартфоне. Существует даже специальный подход, при котором сначала верстается веб-сайт под мобильные устройства, а только потом под десктопы – называется Mobile First.  Это общие требования по верстке. Теперь же рассмотрим более детально требования конкретно по языку стилей. Здесь вы должны знать основные свойства CSS3: фоны, градиенты, тени, анимации, трансформации, переходы, а также технологии Flex и Grid, о которых мы еще поговорим. Хорошее владение HTML и CSS уже позволяет заниматься версткой сайтов и зарабатывать деньги. Именно с этих двух базовых технологий начинается путь к профессии FrontEnd разработчика. Качественно изучить HTML и CSS вы сможете при помощи следующих наших курсов: HTML5 & CSS3 Стартовый; HTML5 & CSS3 Базовый; HTML5 & CSS3 Углубленный. Flex и Grid CSS Технологии вёрстки надежных адаптивных веб-страниц, которые позволяют легче создавать динамические сайты и удобнее структурировать их содержимое. На нашем ресурсе есть курсы на украинском языке, которые хорошо объясняют темы Flex и Grid вёрстки: CSS Flexbox и Вёрстка на Grid. CSS-препроцессоры CSS-препроцессор — это программа, которая имеет свой собственный синтаксис, но может сгенерировать из него CSS-код. Чаще всего в вакансиях встречаются SASS, SCSS, Stylus, LESS. Препроцессоры предназначены для: ускорения процесса написания кода; упрощения чтения кода и дальнейшей его поддержки; минимизации рутинной работы при написании кода. Для повышения эффективности написания CSS-кода вполне достаточным будет изучение лишь одного препроцессора, но в вакансиях часто встречаются сразу несколько. Git & GitHub Git — наиболее популярная система контроля версий, которая позволяет вести историю разработки проекта с возможностью доступа к каждой сохраненной версии. Помимо этого, стоит уметь работать с сервисом онлайн-хостинга проектов, использующих систему контроля версий. В данном случае это GitHub. В тандеме с Git он позволяет разработчикам сохранять свой код онлайн, а затем взаимодействовать с другими разработчиками в разных проектах. Данные системы позволяют команде программистов работать над одним проектом одновременно, сохраняя внесенные изменения, а также отслеживать выполнение задач каждым членом группы. Git & GitHub — очень важные инструменты для любого IT-разработчика, изучением которых следует заняться как можно раньше.  Мы рекомендуем изучать Git на ITVDN при помощи курса “Основы работы с Git”. Знания о веб-технологиях и сети интернет Чтобы качественно выполнять свою работу, фронтенд разработчик должен разбираться в вебе и понимать принципы его функционирования. Таким образом, необходимо знать: как работает интернет; протоколы HTTP/HTTPS, веб-сокеты; как работают браузеры; что такое DNS и как он работает; что такое доменное имя; что такое хостинг. Также будет неплохо, если вы попробуете настроить сайт на каком-нибудь бесплатном хостинге, привяжете домен к этому хостингу. JavaScript Язык программирования, который используется как при разработке клиентской стороны веб-приложения, так и серверной. При помощи JavaScript (сокращенно — JS) можно писать даже настольные и мобильные приложения, используя определенные программные платформы и библиотеки. Этот язык позволяет: динамически изменять разметку; осуществлять интерактивное взаимодействие с пользователем; анимировать изображения; совершать валидацию форм; управлять мультимедиа и т. д. Другими словами, JavaScript “оживляет” страницу и добавляет ей функциональности. Хорошее владение данным языком программирования является обязательным для каждого FrontEnd разработчика. JavaScript использует официальный стандарт ECMAScript (сокращенно - ES), который подразумевает определенное формальное описание синтаксиса, базовых объектов и алгоритмов. На данный момент существует множество различных версий ES. Работодатели чаще всего требуют знание ES6+. Однако, вначале необходимо изучить чистый JavaScript (vanilla JavaScript) и лишь потом вникать в новые стандарты. Как ни крути, а классику надо знать. Благодаря хорошему владению JS можно быстро разобраться в любой версии ES и затем освоить любой фреймворк или библиотеку. ITVDN предоставляет возможность изучить JavaScript с нуля до продвинутого уровня при помощи курсов: JavaScript Стартовый; JavaScript Базовый. JavaScript Core (DOM, AJAX, JSON) DOM (Document Object Model) - объектное представление исходного HTML-документа. Ключевым является понятие DOM-дерева, которое описывает структуру страницы. С помощью объектной модели JavaScript получает полную власть над HTML-документом: возможность редактировать, удалять и добавлять элементы и атрибуты HTML, менять CSS код и т. д. AJAX (Asynchronous JavaScript And XML) - это синтез технологий JavaScript и XML, который фактически представляет собой комбинацию: встроенного в браузер XMLHttpRequest-объекта (чтоб запрашивать данные с веб-сервера); JavaScript и HTML DOM (чтобы отображать или использовать данные). AJAX позволяет веб-страницам совершать асинхронное обновление, обмениваясь данными с веб-сервером. Благодаря этой технологии страница не нуждается в перезагрузке - обновляется лишь конкретная ее часть (вспомните ленту новостей в социальных сетях). JSON (JavaScript Object Notation) - это общий формат обмена данными. Позволяет совершать обмен информацией между программными продуктами, написанными на разных языках. Таким образом, клиент, использующий JavaScript, может легко передавать данные на сервер, который реализован с помощью Ruby/Java/PHP. Все три технологии являют особую ценность для каждого веб-разработчика и раскрывают организацию работы интернет-приложения.   REST API API – Application Programming Interface – это набор правил, при соблюдении которых программы могут взаимодействовать между собой. Разработчик создает API на сервере и позволяет клиентам обращаться к нему. Красноречивым примером будет API от Google Maps, позволяющий веб-разработчику указать на гугл карте расположение определенного здания (точку выдачи интернет-заказов, офис компании и т. д.) на своем сайте. Таким образом, программист лишает себя необходимости самому разрабатывать собственную карту и пользуется уже готовым решением от Google, используя набор правил от API. REST – Representational State Transfer – это архитектурный подход, регламентирующий, как именно API должны выглядеть. Этому набору правил должен следовать девелопер при создании собственного приложения. Простыми словами, REST – это обычный запрос вида «клиент-сервер» с использованием HTTP-протокола. Фронтенд разработчику необходимо разбираться в REST API, поскольку эта технология используется везде, где необходимо работать с данными от сервера. Алгоритмы и структуры данных Понимание алгоритмов и структур данных (ADS, от Algorithms and Data Structures) — обязанность любого грамотного программиста. К структурам данных относятся: стеки, очереди, связанные списки, графы и т. д. Изучив их, вы сможете управлять сложностью своих программ, делая их более доступными для понимания, а также разрабатывать высокопроизводительные программы, которые будут эффективно работать с памятью. Знание алгоритмов позволит вам создавать сложные конструкции для эффективного решения широкого спектра задач. Когда говорят об алгоритмах, обычно имеют ввиду алгоритмы сортировки и поиска: сортировки прямым включением, прямым выбором, слиянием, пирамидальная, прямой поиск, бинарный, индексно-последовательный и другие.  Важно разбираться и в нотации Big O, которая описывает сложность каждого алгоритма. Данный механизм помогает определить, при каких условиях выгоднее использовать тот или иной алгоритм. Отметим, что как новичку вам не нужно нырять вглубь этих тем. Будет достаточно: теоретического владения ADS; понимание, где какую структуру данных следует использовать; умение оценить сложность алгоритма (Time Complexity и Space Complexity); умение написать несколько алгоритмов (самые популярные алгоритмы сортировки и поиска). Владение ADS поможет вам создавать более качественный и оптимизированный код. Кроме того, это усилит ваши позиции среди других кандидатов. Webpack Мощный сборщик модулей (bundler), позволяющий скомпилировать в один файл несколько различных компонентов: от .js и .css файлов до картинок, шрифтов и т. д. Используется для работы над объемными проектами и часто встречается в вакансиях. Оно и не удивительно – это самый популярный сборщик, как-никак. npm Node Package Manager – пакетный менеджер, который является крупнейшим в мире реестром программного обеспечения (согласно выдержке из официального сайта). Использует платформу Node.js и позволяет разработчикам со всего мира использовать уже готовые программные решения и распространять собственные на основе Node.js. npm используют для управления зависимостями, то есть для установки, обновления и удаления тех пакетов (библиотек и инструментов), которые используются в вашем проекте. Незаменимая вещь для FrontEnd разработчиков, которой вы будете обязательно пользоваться. Основы Figma Figma является популярным дизайнерским инструментом для создания интерактивных прототипов приложений или веб-сайтов. С его помощью дизайнер создает дизайн, который фронтенд разработчик затем верстает с помощью HTML/CSS и добавляет интерактивность при участии JavaScript. Знание основ фигмы позволяет девелоперу удобно взаимодействовать с дизайнерским прототипом: быстро узнавать необходимые размеры тех или иных элементов, производить экспорт картинок и иконок и т. д. Дополнительный плюс – возможность использования браузерной версии Figma. Английский язык План обучения Front-end должен обязательно включать в себя подтягивание English. Знание английского является одним из основных требований к фронтенду-разработчику, поскольку большое количество полезной информации находится именно на англоязычных сайтах. Уровень чтения технической документации будет достаточным для комфортного использования иностранных ресурсов (Intermediate). Однако чем выше уровень вашего английского, тем больше шансов получить job-оффер. Инглиш используется не только при работе с документацией, но и при коммуникации с командой и клиентами. Среди программистов бытует выражение: «Какой язык следует учить первым? Учи английский!». Поэтому не пожалейте ваше время и хорошенько подтяните английский – вполне вероятно, что именно хорошее владение им станет решающим при рассмотрении вашей кандидатуры. Подтянуть English вы можете благодаря следующим бесплатным видео курсам на ютуб-канале CodeUA: Business English – вы овладеете базовой деловой лексикой для активного участия в переговорах на английском, а также ведением ключевой документации на этом языке. IT English – акцент на прокачке деловой лексики, грамматики, установившихся конструкций и выражений из IT-сферы. Фреймворки и вспомогательные инструменты Основные фреймворки JavaScript Это инструменты, с помощью которых создаются динамические веб/мобильные/десктопные приложения на языке JavaScript. Они ускоряют разработку веб-приложений и предусматривают четко структурированную организацию кода, повышая его качество и чистоту. Самыми популярными high-level инструментами для фронтенд разработки можно назвать фреймворки Vue.js, Angular и библиотеку React. Каждый из них предназначен для решения своего спектра задач и имеет различную степень сложности: Vue.js – самый легкий (но и с наименьшим сообществом), React – средней сложности, Angular – высокой сложности. Стоит сконцентрироваться на глубоком изучении одного фреймворка, но в то же время очень рекомендуется знать особенности и сферу применения всех вышеперечисленных технологий. Какой фреймворк всё же выбрать? Мнения на этот счет расходятся. Инструментарий выбирается индивидуально под проект и трудно предугадать, какие задачи вам нужно будет решать. На данный момент наибольшей популярностью пользуется React, поскольку он сбалансирован как с точки зрения сложности, так и с точки зрения богатства функционала. К тому же, наибольшее количество вакансий припадает именно на эту библиотеку, а значит, что она интересна не только разработчикам, но и бизнесу. Каждый из трёх этих инструментов доступен для изучения на платформе ITVDN. Украиноязычные курсы по направлению Angular: Angular Базовый. Тестирование Angular-приложений. По направлению React: React Базовый. По направлению Vue.js: Vue.js Стартовый. Вспомогательные фреймворки JavaScript Наряду с традиционной троицей – Vue.js, React и Angular – в вакансиях часто встречаются другие фреймворки, созданные на их базе, например Next.js и Nuxt. Next.js базируется на популярном React и позволяет увеличить эффективность и масштабировать процесс создания реакт-приложений. Он добавляет слой абстракции над реактом, а одними из главных его новшеств являются рендеринг на серверной стороне и генерация статических веб-сайтов. Очень много React-вакансий для джунов имеет среди требований и пожеланий Next.js – если вы ориентируетесь на данную библиотеку, рекомендуем ознакомиться с данным фреймворком. Nuxt – высокоуровневый фреймворк на базе Vue.js для масштабируемого и интуитивно понятного создания FullStack веб-приложений и веб-сайтов. Встречается нечасто в требованиях, но его изучение может выгодно подсветить вашу кандидатуру. Angular Material Технология, на которую следует обратить внимание тем, кто планирует развиваться в направлении Angular. Это библиотека UI компонентов, которая дает доступ к готовым визуальным решениям, что позволяет ускорить процесс вёрстки на Ангуляре. Библиотека исповедует принципы Material Design, введенные компанией Google в 2014 году, которые предусматривают привлекательный и интуитивно понятный UI дизайн, одинаково красивый на различных устройствах. Необязательная для изучения библиотека, но часто встречающаяся в вакансиях – её знание поможет вам как минимум выделиться среди других Angular-кандидатов. TypeScript Кроссплатформенный строго типизированный язык, который является расширением JavaScript. Строгая типизация позволяет уменьшить количество потенциальных ошибок в исходном коде, написанном на TypeScript. Также, этот язык реализует концепции, которые близки объектно-ориентированным языкам, таким как C#, Java и подобным. TypeScript повышает скорость и удобство написания сложных комплексных программ, вследствии чего их становится легче поддерживать, масштабировать и тестировать. Согласно зарплатной аналитике от DOU (зима 2024), TypeScript обогнал JavaScript по популярности и занимает первое место среди украинских разработчиков в категории "Основной язык программирования". В вакансиях этот язык встречается довольно часто вне зависимости от целевого фреймворка. При этом для Angular разработчиков знание TypeScript обязательно. Советуем выучить данный язык с помощью нашего украиноязычного курса "TypeScript". Инструменты управления состоянием программы (State Management) Большие веб-приложения постоянно растут в сложности, а потому хранить данные, которые могут использоваться в разных местах становится все сложнее. Для решения этой проблемы были придуманы отдельные библиотеки, идущие параллельно с фреймворками — они служат для управления глобальным хранилищем данных всего веб-приложения и называются менеджерами состояний. Их применение уже стало стандартом во FrontEnd разработке. Для девелоперов, которые используют Vue.js, это VueX, для React-разработчиков — Redux и MobX, для Angular-девов — RxJS, NgRx. Необязательные технологии (но весьма полезные) Паттерны проектирования JavaScript Это лучшие практики, которые описывают типичные способы решения распространенных задач, возникающих в ходе проектирования программного обеспечения. Знание шаблонов проектирования позволяет писать более чистый, понятный и читаемый код, а также избегать “изобретения велосипеда”. Более того, владение паттернами показывает вашу грамотность, как разработчика, и повышает вашу ценность в глазах работодателя, что поможет выделиться на фоне конкурентов. CSS-фреймворки Иногда в вакансиях для начинающих FrontEnd разработчиков можно встретить требования к владению CSS-фреймворками. Самыми популярными являются Bootstrap и Tailwind. Они помогают значительно ускорить создание вёрстки за счет ряда встроенных возможностей. Bootstrap – результат стараний команды из Twitter, который вышел в свет в далеком 2011 году. Полностью бесплатный, имеет открытый исходный код и позволяет создавать гибкие, адаптивные веб-интерфейсы под разные устройства, используя уже готовые шаблоны кнопок, форм, таблиц и т. д. Tailwind более современный и трендовый – 2017 года выпуска, и при этом известен своей высокой степенью кастомизации (в отличие от Bootstrap). Он не дает набор готовых шаблонов (доступно только в платном Tailwind UI), однако позволяет быстро создавать собственные решения за счет особого синтаксиса. В любом случае, рекомендуем попробовать оба инструмента, чтобы почувствовать их мощность, преимущества и недостатки. GraphQL GraphQL является моделью данных, которая часто используется для создания API для приложения. Главное преимущество перед REST API – наличие только одной точки входа, что позволяет более динамично и гибко определять взаимодействие с данными. Также у GraphQL есть такой синтаксис, который позволяет работать с любым языком программирования как на клиенте, так и на сервере – остается только подключить необходимую библиотеку к вашему проекту для интеграции GraphQL. На момент написания статьи каждая шестая вакансия на Djinni в разделе “JavaScript/FrontEnd” с опытом от 0 до 1 года имела среди обязательных или желанных технологий GraphQL. jQuery Небольшая, быстрая и многофункциональная библиотека JavaScript, для работы с которой необходимо владеть HTML, CSS и JavaScript на базовом уровне. Она призвана упростить программирование на языке JS. Данная библиотека представляет объемные решения распространенных задач в виде методов, вызываемых одной строкой кода. Несмотря на то, что jQuery уже давно покинула зенит популярности, уступая место фреймворкам JS, множество сайтов всё ещё использует эту библиотеку, а некоторые работодатели указывают её среди требований для Junior, особенно для джунов-верстальщиков. Линтеры Инструменты, позволяющие анализировать качество JavaScript-кода в соответствии со стандартом ES. Они встраиваются в среду разработки и указывают на наличие несоответствий стандарту кода, если таковые имеются. Данный механизм полезен как для единоличной разработки (для самоконтроля), так и для командной, когда каждый разработчик должен следовать тем же языковым конструкциям, чтобы на выходе получить единый, целостный проект. Один из самых известных линтеров – ESLint. Это необязательный инструмент для работодателя, но он очень полезен для веб-разработчиков из-за его возможностей по контролю качества кода. Тестирование Jest и Cypress – главные инструменты модульного тестирования, которое возлагается на плечи разработчика. Но что это такое? Unit тестирование (оно же — модульное тестирование) — процесс, который заключается в создании тестов для проверки работоспособности отдельных участков написанного программистом кода. Выполняется непосредственно автором кода. Какую пользу приносит Unit тестирование: существенное сокращение багов в коде; упрощение рефакторинга кода; обеспечение качественного отделения интерфейса от реализации; лучшее понимание написанного кода; возможность протестировать мельчайшие участки кода. Все инструменты учить не надо — достаточно научиться управляться лишь с одним из них. Gulp / Grunt Системы сборки, автоматизирующие рутинные задачи разработчиков: минификацию кода, оптимизацию изображений, тестирование, анализ качества кода и прочее. Подходят для разработки небольших проектов. SVG Язык разметки масштабируемой векторной графики. Изображения на странице, сделанные с помощью SVG, корректно отображаются на экранах с разным разрешением, не теряя при этом своего качества, в отличие от традиционных растровых .jpeg, .png и других. SOLID принципы SOLID – это принципы, являющиеся своеобразным ремнем безопасности для тех, кто работает в соответствии с парадигмами объектно-ориентированного программирования. Они были созданы с целью обезопасить ООП-ориентированного разработчика от непонятного, запутанного спагетти-кода, который также очень трудно поддерживать. SOLID – это акроним, состоящий из пяти букв, которые кодируют пять основных принципов: S – Single Responsibility Principle (принцип единой ответственности) O – Open-Closed Principle (принцип открытости-закрытости) L – Liskov Substitution Principle (принцип подстановки Барбары Лисков) I – Interface Segregation Principle (принцип разделения интерфейса) D – Dependency Inversion Principle (принцип инверсии зависимостей) Владение этими принципами позволяет грамотно проектировать и разрабатывать такие программные системы, которые с большой вероятностью смогут длительное время развиваться, расширяться и поддерживаться. Хотя SOLID принципы написаны преимущественно для ООП, их идеи вполне применимы и к современной JavaScript-разработке, что поможет фронтенд разработчикам создавать более чистый и лаконичный код. Зарплаты FrontEnd разработчиков DOU Обратимся к уже упомянутой зарплатной аналитике от украинского IT-сообщества DOU за зиму 2024 года. Медианная зарплата всех украинских разработчиков, принявших участие в опросе (а их 5959), следующая: Intern Software Engineer – 350 USD; Junior Software Engineer – 950 USD; Middle Software Engineer – 2500 USD; Senior Software Engineer – 4738 USD. Теперь посмотрим на медианную ЗП FrontEnd разработчиков: Junior – 900 USD; Middle – 2400 USD; Senior – 4600 USD. На всех позициях уменьшение вознаграждения по сравнению с аналитикой полгода назад. Выходит, медиана фронтендщиков почти на всех тайтлах немного меньше, чем общая медиана, однако разрыв достаточно небольшой. Djinni Теперь перейдем к зарплатной аналитике украинского сервиса Djinni и выберем раздел “JavaScript / FrontEnd” и рассмотрим спрос за последние 6 месяцев. Есть 17818 кандидатов, зарплатные ожидания которых составляют от 600 USD до 3000 USD при зарплатных вилках вакансий 2000-3300 USD. На 1 вакансию в среднем приходится 114.4 отзыва, а количество предложений на кандидата – 0.2. Stack Overflow Developer Survey 2023 Давайте посмотрим, сколько зарабатывает этот специалист за пределами Украины. В этом нам помогут результаты опроса Stack Overflow Developer Survey 2023 (свыше 90 000 респондентов из США, Индии, Германии, Канады, Великобритании и других стран). Эта цифра – 59 970 USD в год (примерно 5000 USD в месяц). При этом важно сказать, что фронтендщики по данному опросу имеют в среднем 8 лет профессионального кодинга – и это один из самых низких показателей. Ниже располагаются только Data Scientist / ML Specialist – 7.9 лет опыта, а также студенты, которые имеют чуть более 2.8 лет опыта в профессиональном создании кода. Почему так много технологий? Советы новичкам FrontEnd Украинский рынок FrontEnd очень сильно перегрет кандидатами. Работодатели, естественно, пользуются этой ситуацией: выставляют больше требований к кандидатам и параллельно снижают уровень ЗП. Таким образом они хотят отфильтровать слабых кандидатов и получить как можно более скилового специалиста по более низкой цене, поскольку в Junior-девелопера нужно вложить значительное количество времени и денег, пока он выйдет на такую производительность, которая приносит хоть какие-то доходы. Наша статья учитывает эти нюансы, поэтому мы отразили максимальное количество технологий, которые вы с большой вероятностью встретите в большинстве вакансий. Не все инструменты нужно знать и учить, но чем богаче ваш инструментарий, тем больше шансов на трудоустройство. Несколько советов для начинающих, решивших покорить FrontEnd: Делайте пет-проекты и публикуйте их на GitHub. Создавайте приложения, которые будут решать ваши повседневные задачи, и старайтесь применить в них как можно больше изученных вами технологий. Это позволяет подтвердить ваши знания на практике и демонстрирует потенциальному работодателю навыки кодинга. Используйте ИИ. Искусственный интеллект будет полезен в ряде задач: ускорение разработки; генерирование идей для пет-проектов; объяснение сложных тем; ассистенция при написании кода и т. п. Развивайте собственный бренд. Чем больше ваша популярность в IT-сообществе, тем больше шансы приглашения на собеседование. Для этого лучше всего подходит LinkedIn – социальная сеть для установки рабочих контактов, но также можно подключить Instagram, YouTube и т. д. Публикуйте посты с полезной информацией, делитесь вашими достижениями, работающими советами и личными впечатлениями по изучению FrontEnd, и т. д. За вами станут наблюдать многие IT-специалисты, которые могут сами посетить вас с предложением работы или кому-то порекомендовать. Не пренебрегайте изучением английского языка. English является супер важным в условиях перегретого рынка джунов – нужно обязательно иметь B1. Если есть несколько сильных кандидатов, примерно одинаковых по soft & hard скилам, работодатель выберет того, кто лучше знает английский. Также упомянутая аналитика DOU доказывает – чем лучше знаешь английский, тем на бóльшую ЗП можешь претендовать. Менторинг. Максимально удачное решение – найти себе ментора. Он будет присматривать за вашей учебой и прогрессом, подбрасывать задачи/проекты, давать полезные советы, отвечать на вопросы и т. д. А в конце вашего обучения может предложить свободное место в компании или порекомендовать знакомым айтишникам. Оттачивайте навыки программирования в Codewars или LeetCode. Это специальные сервисы для программирования, где вы выбираете себе задачу (разные уровни сложности) и выполняете её, развивая навыки кодинга на необходимых языках. Очень удобно и полезно, учитывая, что на собеседовании могут быть похожие live-coding задачи, а также, что LeetCode используют девелоперы, которые готовятся к интервью в топовых IT-компаниях (Facebook, Google, Amazon и т. д.). Также на ITVDN есть специальный интерактивный практикум, где вы можете "набить руку". Коллаборация с начинающими разработчиками. Присоединяйтесь к командам единомышленников, где вы будете работать совместно над проектом, чтобы получить навыки работы в команде. Конечно, это не равно коммерческому опыту, который стремятся увидеть у вас работодатели, но позволяет поработать в условиях, максимально приближенных к реальным. Посещайте тематические IT-события в офлайн формате. Там вы можете пообщаться с другими девелоперами, показать себя и расширить свою сеть полезных знакомств. Контактировать с IT-специалистами на таких ивентах обязательно! Иначе вы просто зря потратите время и деньги. Пройдите пробное интервью за донат. Вы можете месяцами не получать приглашения на собеседование, из-за чего будет страдать ваша мотивация и уверенность. Чтобы не падать духом и дать себе объективную оценку, договоритесь об интервью с каким-либо FrontEnd специалистом, который проведет вам техническое собеседование за донат и даст советы по дальнейшему карьерному пути – сейчас это популярная тема. Пробное интервью с рекрутером. Возможно, проблема отсутствия приглашений кроется в вашем CV или плохо оформленном LinkedIn-аккаунте? С этим поможет разобраться рекрутер или карьерный консультант, который предоставит свои услуги за деньги или соответствующий донат. Относительно двух последних пунктов – на ITVDN все студенты, обучающиеся в формате онлайн занятий с тренером в группе (Live Online), бесплатно получают персональную помощь в дальнейшем трудоустройстве, а именно: индивидуальную консультацию для определения персональных целей; помощь в составлении CV (резюме) и Cover Letter (сопроводительного письма); помощь с оформлением LinkedIn-аккаунта; проведение тестового интервью с развернутым фидбеком; формирование стратегии поиска работы; предоставление дополнительных полезных материалов. Итоги FrontEnd разработчик – достаточно универсальный боец в мире веб-разработки. Он должен уметь и верстать, и создавать логику работы клиентской части, и понимать работу серверной части веб-приложения. Для овладения таким большим инструментарием стоит запастись временем, терпением и упорством. Указанные в статье средства разработки сайтов также имеют аналоги, поскольку для решения разных задач подходят разные веб-инструменты. Однако мы выбрали самые популярные и эффективные из них. Если у вас есть желание овладеть этой профессией и вы хотите самостоятельно испробовать, чем занимается фронтенд разработчик, на ITVDN создана комплексная программа обучения в формате видео обучения, которая включает 51 видео курс. Если вам больше нравится живое онлайн обучение с тренером и в группе с другими студентами, предлагаем формат Live Online для изучения специальности FrontEnd (Angular или React направления). Желаем вам успехов в достижении ваших целей! Оставайтесь с ITVDN!
Самые высокие зарплаты в IT. Какие специальности, страны и города в лидерах?

Автор: Влад Сверчков

Тренды. Самые высокие зарплаты Junior, Middle, Senior инженеров. Самые высокие зарплаты руководящего инженерного звена. Зарплаты других IT-специалистов. Самые высокие зарплаты в США, Европе и остальном мире. Данные для рейтинга. Levels.fyi – компания, базирующаяся в США – недавно опубликовала годовой отчет за 2023 год с перечнем компаний, городов, тайтлов и различных трендов, имеющих крупнейшие денежные вознаграждения. Согласно информации на сайте компании, аналитические материалы Levels.fyi позволяют людям строить лучшие карьеры в IT, отталкиваясь от честных и прозрачных зарплат. Давайте вместе посмотрим, какие IT-специалисты в каких уголках мира получают больше всего?   Тренды Сначала узнаем, как изменились зарплаты IT-специалистов по сравнению с 2022 годом. На картинке ниже – медианные ЗП в долларах США (суммарно за год) для каждого семейства специальностей. Наиболее ощутимый прирост имеют технические менеджерские направления, полный штиль у Data Scientists, а небольшой отрицательный прирост – у разработчиков программного обеспечения и дизайнеров продукта.   Самые высокие зарплаты Junior, Middle, Senior инженеров Рассмотрим годовые компенсационные медианы инженеров, имеющих опыт от 0 до 15+ лет в разработке. В каждом разделе будет ТОП-7 компаний, наиболее щедро вознаграждающих своих работников в зависимости от их опыта. Составители рейтинга отмечают, что в понятие компенсации входят зарплата, акции и бонусы, полученные за прошлый год, но для простоты мы отождествляем "компенсацию" и "зарплату" в данной статье. Инженер начального уровня (от 0 до 2 лет опыта) Рейтинг включает инженеров уровня Intern/Trainee/Junior. Обычно это выпускники с небольшим или вообще нулевым опытом в отрасли. Они развивают и поддерживают компоненты низкой и умеренной сложности, используя наставничество и поддержку членов команды с бóльшим опытом. Здесь вам могут быть знакомы Figma и LinkedIn. Первая компания – всемирно известный разработчик онлайн-инструмента для дизайнеров, а вторая – социальная сеть для установки деловых связей. Engineer (от 2 до 5+ лет опыта) Данный тайтл можно приравнять к Middle. Сюда относятся специалисты, которые работают над компонентами средней и высокой сложности, и даже способны управлять небольшой командой или проектом. Могут менторить и консультировать менее опытных инженеров, проводить код-ревью, работать над небольшими проектами от начала до конца. Пределы ответственности такого специалиста отличаются от команды к команде. Во многих компаниях они могут работать постоянно на этом уровне, не опасаясь, что их уволят за то, что они не продвигаются по карьерной лестнице дальше. Senior Engineer (более 5 лет опыта) Сеньоры – от них ожидается управление другими и продвижение собственных комплексных технических инициатив. Могут выполнять визионерские функции, определяя дальнейший вектор движения команды. Также способны влиять на другие команды в пределах компании. Их роль больше охватывает дизайнерские задачи, нежели реализацию – в зависимости от размеров и ожиданий компании. Обычно таких специалистов в компании не более 30%.   У кого в IT самые большие ЗП? Рейтинг мира. Наивысшие зарплаты руководящего инженерного звена Staff Engineer – инженер управленческого аппарата Эта должность предусматривает 10+ лет опыта, и является достаточно желанной по сравнению с Junior, Middle и Senior. Менее 10% персонала занимают эту позицию, при этом их влияние достаточно масштабно и простирается на разные организации. Инженерам данного звена доверяют важные бизнес-проекты и установку технического видения для одной или нескольких организаций. Наибольшее вознаграждение получают именно staff-инженеры из OpenAI – компании, которая в конце 2021 года выпустила в свет знаменитый ChatGPT и недавно имела бурный скандал вокруг увольнения гендиректора OpenAI Сэма Альтмана. Principal Engineer – главный инженер Должность предполагает 15+ лет опыта, причем менее 3% персонала доходят до этого уровня. Главный инженер характерен для компаний среднего и большого размера, а в маленьких обычно отсутствует. Влияние Principal Engineer может распространяться как на всю компанию, так и на индустрию. От этих специалистов ждут полной автономии в работе. Аналитики рейтинга отмечают: данный тайтл присущ малому проценту людей в компании, поэтому некоторые компании не имеют информации в достаточном количестве, чтобы быть включенными в этот список.   Зарплаты других IT-специалистов. IT-компании с самыми большими ЗП Аналитики данного отчета разработали стандарт уровней для менеджерских ролей и ролей индивидуального специалиста (individual contributor) в этом году. Поскольку в начале 2023 у них не была установлена система уровней, они указывают ТОП-5 компаний с наивысшим уровнем компенсации, используя медианное значение в пределах компании для приведенных ниже профессиональных категорий независимо от уровня. Следует учитывать, что это самые высокие медианы, и они могут не отражать весь рынок. Software Engineering Manager SE Manager может управлять одной или несколькими командами инженеров, которые создают программное обеспечение (ПО). Он комбинирует технические обязанности с управленческими и отвечает за: создание благоприятной среды для эффективной работы Engineering-команды; определение структуры и нагрузки, которая возлагается на каждого в команде; трансляцию команде общего движения и целей компании; контроль и подготовку технического роадмапа вместе с Tech Lead и инженерами для определения инструментов, ресурсов и приоритетов в работе; предоставление технической экспертизы; измерение показателей качества и эффективности команды; и тому подобное. Product Manager Product Manager нацелен на стратегическое управление продуктом в целом, включая стратегию продаж, рыночный анализ и взаимодействие с клиентами. В отличие от SE Manager, данный специалист достаточно далёк от технической составляющей и сконцентрирован на достижении бизнес-целей. Он фокусируется на определении функциональности и свойств продукта, которые удовлетворяют потребности клиентов, взаимодействует со всеми уровнями команды, включая разработчиков, маркетологов, дизайнеров и т. д. Product Designer Это НЕ UX/UI дизайнер. У Product Designer`а смещен фокус с UX/UI на достижение целей бизнеса, продукта. Если “юикс-юай” занимается непосредственно созданием интерфейса (роль исполнителя), то PD анализирует рынок пользователей, исследует и определяет их потребности, на основе чего можно спроектировать качественный интерфейс, который будет приносить пользователю максимально комфортный опыт, а владельцу – аудиторию и доходы (роль мудрого архитектора, исследователя). Hardware Engineer Тяжелая артиллерия от мира разработки. Эти специалисты занимаются не программным, а аппаратным обеспечением – "железом". Среди их обязанностей: дизайн, разработка, тестирование компьютерных систем и устройств, разработка схемотехнических решений и печатных плат, улучшение существующих устройств (замена компонентов, тестирование и т. п.). Data Scientist Data Scientists работают с большими объемами данных и проводят сбор, анализ, структурирование и последующую визуализацию информации. Сначала идёт сбор большого количества неупорядоченных данных, а затем их превращение в удобный формат, с которым дальше работают аналитики.   Самые высокие зарплаты в США, Европе и остальном мире В каких городах мира топовые ЗП в области Software Engineering? Американские аналитики дают ответ и на этот вопрос. Ситуация в США, Европе и мире в целом соответственно: К последней картинке авторы оставили примечание: этот список включает только один город с высокой оплатой труда в каждой стране. Другие города внутри страны также могут иметь высокую зарплату, которая не отражена в этом списке.   Данные для рейтинга Главный источник данных для аналитики – анонимные отзывы, которые можно оставить в соответствующей форме на сайте. Для этого необходимо предоставить следующую информацию: Размер компенсации. Информация об уровнях в компании. Бонусы от компании. В 2023 году компания Levels.fyi получила более 200 000 заявок от тысяч компаний со всего мира. Недавно мы изучали уровень ЗП и карьерный путь украинских DevOps-специалистов и разработчиков Embedded – переходите по ссылкам, чтобы узнать, насколько ценится их труд.
Карьера в IT: кто такой Embedded-разработчик, задачи и обязанности

Автор: Влад Сверчков

Кто такой Embedded-разработчик? Сферы применения Embedded-разработки. Что должен знать Embedded-разработчик. Как стать Embedded-разработчиком. Где получить знания. Мягкие навыки. Ключевые тренды в Embedded. Карьерные перспективы и зарплата Embedded Engineer. Количество вакансий. Конкуренция. Заработная плата. Карьерные возможности. Выводы. Подавляющее большинство новичков в Украине выбирают тестирование или разработку с привлечением C#./NET, Java, Python, JavaScript (фронтенд и Node.js). Эти направления имеют наибольшее количество вакансий в IT, низкие требования к высшему образованию, мощную распиаренность почти во всех учебных центрах, а также относительно простой переход в IT с любой не-айтишной профессии. Специальность, которую мы будем сегодня рассматривать, не является столь популярной, трендовой. Однако она не менее важна, чем другие IT-направления. Герой нашей статьи занимается разработкой встроенных (embedded) систем, и его называют Embedded-разработчик. Что это за специальность, насколько она важна и где используется, что нужно учить для её овладения, как выглядит день Embedded-ера, какие карьерные перспективы и зарплаты у специалистов этого направления – разбор этих и других интригующих вопросов читайте ниже. Кто такой Embedded-разработчик? Начнём с понятия “Embedded система”. Трактовка в разных источниках отличается, но если свести всё под один знаменатель – это компьютеризированная система, которая встроена в механическую или электронную систему и выполняет определенную функциональность. То есть это система, в которой компьютер (как правило микроконтроллер или микропроцессор) является неотъемлемой частью другой системы. Как пример: микроконтроллер в вашей кофейной машине, микроволновке или стиральной машине; устройство, обеспечивающее срабатывание подушек безопасности в автомобиле, контроллер в самолете, который собирает определенные данные о полёте – даже Bluetooth-наушники содержат свою собственную встроенную систему. Соответственно, Embedded-разработчик – это специалист, занимающийся разработкой подобных встроенных систем, используя программирование (software) и навыки работы с "железом" (hardware). Жизненный цикл продукта очень тесно связан с разработчиком встроенных систем. Обязанности Embedded-разработчика могут различаться в зависимости от микроконтроллеров / микросхем / устройств и т. п., с которыми он работает, но основные фазы, где ощутима роль этого специалиста, следующие: Анализ требований. Коммуникация с клиентами, дизайнерами и инженерными командами для определения функциональных и технических требований к встроенной системе. Проектирование системы. Разработка архитектуры и дизайна встроенной системы, выбор аппаратных и программных компонентов. Проверка базовой работоспособности. Перед началом работы Embedded разработчик должен проверить функционирование платы, обновить драйвера при необходимости и убедиться, что “железо” исправно. Программирование. Написание программного кода, встроенных программ и системных протоколов. Тестирование и отладка. Проведение тестов для проверки работоспособности embedded-системы. Интеграция. Обеспечение взаимодействия встроенной системы с аппаратурой, внешними устройствами и другими составляющими системы. Оптимизация производительности. Усовершенствование эффективности и производительности встроенной системы, учитывая ограниченные ресурсы. Документация. Формирование диагностических отчётов, технических инструкций и документации по разработке ПО. Также чтение форумов, статей и инструкций к платам и компонентам, с которыми ведется работа. Сотрудничество с другими командами. Взаимодействие с hardware и software разработчиками, участие в различных митингах, обсуждениях, коммуникациях с заказчиком и т. д. Безопасность и надежность. Обеспечение высокого уровня безопасности, надежности и работоспособности встроенной системы. Типичный рабочий день разработчика Embedded состоит из всего понемногу: написание и отладка кода, поиск багов; работа с аппаратной начинкой – иногда приходится и паяльником поколдовать, и что-то мультиметром измерить, и осциллограф применить и т.п.; чтение документации, поиск информации на форумах; тестирование встроенных систем и их составляющих; код-ревью; рефакторинг; взаимодействие с командой, руководством: митинги, деловая переписка, созвоны по определенным вопросам (или живое общение) и т. д. Сферы применения Embedded-разработки Embedded в XXI веке имеет хороший прирост востребованности в связи с развитием IT-индустрии, в особенности сетевых технологий, операционных систем, языков программирования и в результате модернизации “железа”. В настоящее время область применения встроенных систем достаточно объемна: Бытовая электроника. Встроенные системы являются неотъемлемыми атрибутами уютного жилья: это смарт-телевизоры, холодильники, мультиварки и другая кухонная электроника, устройства безопасности, смарт-девайсы для дома. Машиностроительная промышленность. 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 вам поможет подходящий манифест с подробным описанием основных принципов. Scrum является одной из самых популярных реализаций данного подхода, часто используемого во многих IT-командах, в том числе и во время работы со встроенными устройствами. Английский язык 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 месяцев "войти в IT" не получится. Требуется больше усилий, времени и выдержки. Ключевые тренды в Embedded IT-индустрия двигается вперед, и эмбеддед не отстает. Проанализировав ряд ресурсов, мы определили следующие тренды: Интеграция искусственного интеллекта и машинного обучения в Embedded-системах становится всё более привлекательней, что способствует использованию встроенными системами интеллектуальных алгоритмов и ML. Эта синергия позволяет системам адаптироваться к изменениям в реальном времени, повышая их эффективность. Развитие беспроводных технологий открывает новые перспективы для встроенных систем, особенно в областях интернета вещей (IoT) и беспилотных систем, управляемых удалённо или с помощью AI. System-on-chip решения. Интеграция всех ключевых компонентов системы на одном чипе (SoC) продолжает набирать обороты и использоваться различными бизнесами. Их компактность в совокупности с высокой производительностью, дешевизной, энергоэффективностью и интегральными микросхемами специального назначения (ASIC), например, уже успешно применяется в гаджетах, собирающих и анализирующих различные параметры здоровья. Больше внимания безопасности. Рост количества встроенных систем, имеющих выход в Интернет, приводит к увеличению количества киберугроз, что подчеркивает важность совершенствования мер безопасности для эмбеддед-устройств. Оптимизация потребления энергии embedded-системами становится актуальнее – на это влияют идеи устойчивого развития, что способствует распространению более энергоэффективных решений. Развитие AR и VR (дополненная и виртуальная реальности). Интеграция встроенных систем в AR и VR открывает новые горизонты для интерактивных интерфейсов и развлекательных приложений. Embedded-разработчики активно работают над этими технологиями для создания поразительного опыта и визуальных эффектов. Отдельно отметим и развитие встроенных устройств в военной сфере. В настоящее время растет спрос на эмбеддеров, способных работать с дронами (воздушными и морскими), БПЛА и т. д. Сегодня именно эти роботизированные системы позволяют эффективно выявлять и ликвидировать врага, разведывать, наводить и корректировать огонь и – что самое важное – беречь жизнь и здоровье личного состава. Сегодня это одно из трендовых направлений именно в нашем государстве. Карьерные возможности в IT и заработная плата Embedded Engineer Количество вакансий Для определения этого параметра используем данные из самых известных украинских ресурсов для поиска работы в IT – 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. Конкуренция Для определения конкуренции эмбеддеров на нашем рынке IT воспользуемся соотношением количества отзывов к количеству вакансий на DOU за ноябрь 2023 года (берем наиболее известные специальности). Вот что имеем: Конкуренция у эмбеддеров (от новичков до профессионалов) очень низкая: на 1 вакансию приходится примерно 5 претендентов, что является хорошим результатом во время нынешней ситуации на рынке IT. Настоящие "голодные игры" традиционно у 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), игр, мобильных и десктопных приложений получают меньшую ЗП, хотя эти специальности более распространены, а веб вообще является самым популярным в IT. Более высокое вознаграждение получают те, кто специализируется на базах данных, DevOps-процессах, больших данных, аппаратной части, блокчейне, безопасности и т. д. Карьерные перспективы Embedded разработчик – понятие достаточно размытое и обширное, поскольку девелопер этой специализации может работать над: созданием робототехнических систем; медицинской аппаратурой; автомобильными системами; аэрокосмическими аппаратами; IoT-экосистемой; AR и VR индустрией; сетевыми системами; гаджетами для гражданских нужд; безопасностью embedded-устройств; промышленными системами; военными разработками; и т. д. В каждой из этих сфер будут свои технологические стеки, микроконтроллеры, платы, интерфейсы, протоколы и т. д. Ещё не забывайте об эмбеддерском "фронтенде", "бэкенде" и "фулстеке" - в каждой отрасли вы можете концентрироваться больше на программной части, аппаратной, или же на обоих сразу. Конечно, каждое направление может иметь собственную “кухню”, и чтобы “отведать блюдо” в каждом из этих “ресторанов” целой жизни может не хватить, но согласитесь – список для самореализации скромным не назвать. Также вы можете в любой момент углубиться в Software разработку и заниматься написанием программного кода (самые популярные стеки в Embedded – C/C++, Java, Python, Go), а можете пойти в Hardware и больше внимания уделять “железу”. Если немного подкачать знания, можно переквалифицироваться и в тестировщики, и в специалиста по безопасности, сетевого специалиста и т. д. Возможности очень широкие и разнообразные. Если же говорить о вертикальном потенциале профессии, разработчик встроенных систем стартует со стандартной Intern/Trainee/Junior позиции. Далее – с увеличением опыта, навыков и знаний – получает повышение до Middle и Senior, а выше – руководящие позиции вроде Team/Tech Lead, архитектор и т. д. Выводы Embedded – очень интересная, необычная и многогранная IT специализация. Она позволяет почувствовать себя Архитектором, вдыхающим жизнь в устройства, даёт им всё необходимое для их движения, мышления, анализа окружающей среды, общения друг с другом и не только. Да, для этого нужно иметь много знаний, но кто сказал, что быть Творцом – это так просто?) Это направление даёт очень важный фундамент для других IT-отраслей, которые сегодня в зените популярности. Благодаря встроенным системам мы можем наслаждаться множеством автоматизированных процессов, начиная утренним свежемолотым кофе и осмотром нашего сна в health-трекере, и заканчивая автомобильной и медицинской аппаратурой. Эмбеддед создан для истинных любителей “железа” и его программирования. При этом он имеет много нишевых разветвлений и ежегодно растущий спрос. Сегодня в Украине разработчики встроенных устройств имеют большие возможности для реализации, а в остальном мире – тем более. Профессия непростая, но она щедро вознаграждает смелых, терпеливых и целеустремленных, которые не боятся сложностей и препятствий, а также готовы на всё, чтобы добиться желаемого. Желаем удачи и вдохновения всем, кто стремится к развитию в направлении Embedded!
Кто такой DevOps инженер? Обязанности, инструменты и ЗП

Автор: Влад Сверчков

Кто такой DevOps Engineer? Краткая история возникновения DevOps Что такое DevOps? Какие обязанности DevOps специалиста? Что должен знать DevOps инженер? Развитие профессиональных навыков Карьерные перспективы и заработная плата DevOps Engineer Количество вакансий Конкуренция Зарплаты Карьерные пути DevOps Ключевые тренды в DevOps и технологии Выводы DevOps инженер – это профессия, которая очень часто присутствует в рейтингах самых высоких зарплат в IT. При этом спектр обязанностей достаточно неочевидный: разработчики – программируют и создают ПО, системные администраторы – администрируют компьютерные системы, тестировщики – тестируют, рекрутеры – рекрутят… А что делают DevOps специалисты? Каков спектр их обязанностей? Какие инструменты они используют и почему их труд столь высоко оценивается в денежном эквиваленте? С этими и другими вопросами разбираемся в данной статье. Кто такой DevOps Engineer? Краткая история возникновения DevOps DevOps является относительно молодым направлением в IT, которое возникло примерно в 2007-2008 гг. во время объединения усилий двух сообществ: разработчиков ПО (ответственных за Development – разработку) и специалистов по поддержке и управлению IT-инфраструктурой (Operations – операционная сторона или сторона, ответственная за эксплуатацию, операционную поддержку). Главная проблема заключалась во взаимной изолированности команды разработчиков и команды эксплуатации. Страсти достигали пика на момент выпуска проекта в продакшн: девелоперы считали, что если ПО работает у них локально, его можно релизить, а ответственность за любые последующие проявления нетрудоспособности продукта приписывалась команде операционной поддержки. Последние, в свою очередь, совершали абсолютно зеркальное действие, обвиняя в неисправностях разработчиков. Именно объединение усилий специалистов обоих направлений дало жизнь новой специальности, которая находится на стыке двух IT-стихий – DevOps Engineer. Что такое DevOps? Какие обязанности DevOps специалиста? DevOps (Development and Operations) – это философия и набор практик, призванных объединить разработку и эксплуатацию в единую и координированную цепочку поставки программного обеспечения. Использование данного подхода способствует: сокращению цикла разработки; автоматизации и оптимизации процессов; ускорению ответа на потребности пользователей; повышению защищенности ПО; улучшению качества программных продуктов; лучшей коммуникации внутри команды. Жизненный цикл DevOps. Источник: статья на GitLab под названием "What is DevOps?" Соответственно, DevOps Engineer – это инженер, использующий навыки как из области разработки, так и из сферы эксплуатации и операционной поддержки. По сути он поддерживает разработку, деплоит продукт (запускает на сервере, хостинге) и тестирует его работоспособность, а также поддерживает среды, где расположен задеплоенный продукт. Обязанности DevOps специалиста включают: Управление CI/CD. DevOps Engineer строит, настраивает, управляет и поддерживает процессы непрерывной интеграции (CI) и непрерывной доставки (CD), обеспечивая быстрые и надежные поставки продукта пользователям.   Автоматизация инфраструктуры. Он создает и поддерживает инфраструктуру, способствующую эффективному масштабированию и управлению ресурсами, а также автоматизирует процессы жизненного цикла продукта.   Обеспечение безопасности. Девопс инженер работает над обеспечением безопасности программ и инфраструктуры, применяя практики DevSecOps.   Мониторинг, логирование и обслуживание. Он устанавливает системы мониторинга для отслеживания производительности приложений и инфраструктуры для быстрого реагирования на проблемы в работе системы.   Настройка облачных сервисов. Девопс специалисты активно работают с cloud-платформами для разработки, развертывания и управления приложениями.   Оптимизация функционирования инфраструктуры. Правило системных администраторов "работает – не трогай" в случае с девопсами неактуально. Специалист наблюдает за работой системы и на основе фидбека может вносить определенные коррективы. Иногда это позволяет существенно уменьшить затраты на инфраструктуру.   Коммуникация. Поскольку специалист находится одновременно между Dev и Ops, он обязательно должен иметь хорошие коммуникативные навыки, чтобы эффективно взаимодействовать с коллегами, быстро включаться в процессы и быть на острие производительности. Также некоторые DevOps инженеры могут выбирать себе более конкретный круг обязанностей, например: DevSecOps – специалист, больше сосредоточенный на безопасности; Release Engineer – внимание в большей степени направлено на DevOps-процессы, ассоциированные с релизом; Build Engineer – обязанности больше связаны с этапом билда приложения, когда нужно собрать код, разобраться в конфликтах и подключить необходимые зависимости; Cloud Engineer – сосредоточен на работе с облачной инфраструктурой; Automation Engineer – занят процессами автоматизации инфраструктуры; SRE (Site Reliability Engineer) – фокусируется на масштабируемости, надежности и доступности онлайн-сервисов; и т. д. Что должен знать DevOps инженер Ответ мы составим, отталкиваясь от трех источников: путеводители по специальности (roadmaps); советы от DevOps инженеров; требования в вакансиях на украинских сайтах по поиску работы. Компьютерные сети Компьютерные сети – это база как для сисадминов, так и девопсов. Вам понадобятся следующие знания: понимание различных архитектур сети, а также их структур, знание сетевых моделей OSI и TCP/IP, основные протоколы этих моделей (IP, HTTP, HTTPS, TCP, UDP и т. д.), маршрутизация, фаерволы и брандмауэры, мониторинг и безопасность сети, DNS, VPN и т. д. Linux Linux – семейство операционных систем с открытым исходным кодом. DevOps инженеры тесно работают с данной разновидностью ОС, например она важна при конфигурации CI/CD контейнеров, автоматизации сборки, выполнения билдов, работе с артефактами и т. п. Вам нужно знать основы линукс, включая установку, настройку и поддержку данной ОС. Чаще всего в вакансиях встречаются Ubuntu, CentOS и Red Hat. CI/CD CI/CD (Continuous Integration / Continuous Delivery) – это подход к разработке ПО, ориентированный на автоматизацию процессов разработки, тестирования и развертывания программных изменений. Этот подход способствует снижению риска ошибок и улучшению качества программного обеспечения, а также быстрому внедрению нового функционала. Также CI/CD помогает облегчить сотрудничество разработчиков и других команд, например, взаимодействие между тестировщиками и специалистами по инфраструктуре. В результате этот подход способствует постоянному улучшению ПО и быстрому реагированию на изменения рыночных и бизнес-условий. Это фундаментальная тема в работе всех, кто причастен к девопсу, поэтому хорошие знания CI/CD процессов обязательны. Скриптовые языки (Bash, PowerShell), Python Также нужно уметь писать bash-скрипты для автоматизации различных процессов – от резервного копирования данных до настройки среды разработки. Bash – это командная оболочка, в которой можно писать команды в Linux и Unix системах – их будет выполнять ваша ОС (в Windows используется PowerShell). А для того, чтобы можно было запустить сразу несколько команд, можно написать специальный скрипт с последовательными инструкциями и просто запускать его через командную оболочку тогда, когда вам нужно. Для этого лучше всего подходит язык программирования Python, и его нужно будет изучить, чтобы упростить скриптинг и наладить автоматизацию задач. Навыки работы с Bash и Python (PowerShell реже применяется) пригодятся DevOps Specialist и всем другим специалистам, которые связаны с конфигурацией ОС, а также помогут понимать код, написанный разработчиками. Веб-серверы Веб-серверы играют ключевую роль в развертывании и поддержке веб-приложений и услуг. Одними из самых популярных являются Nginx, Apache Tomcat, IIS. Девопс специалистам нужно уметь правильно их настраивать и траблшутить (находить и оперативно решать проблемы). Docker, Docker Hub С Docker вы можете автоматизировать процесс развертывания и управления программами в контейнеризированных средах. Эта технология способствует более быстрому деплою программ, облегчает тестирование и сокращает интервал между написанием кода и запуском программных приложений. Обязательный инструмент в арсенале DevOps. Docker Hub – репозиторий (веб-хранилище), где расположены docker-контейнеры. С его помощью разработчики могут загружать свои и скачивать контейнеры других девелоперов, чтобы потом использовать в своих целях. Одно из важных преимуществ докера – он позволяет создать одну среду для разработки, на которую не будут влиять ОС и личные программно-аппаратные настройки разработчиков. Это облегчает не только разработку, но и процесс выпуска продукта, поскольку на релизе ПО будет иметь значительно меньше конфликтов и проблемных ситуаций. Облачная инфраструктура: AWS, Azure, GCP Облачные сервисы позволяют использовать мощности сторонних компаний (в данном случае – Amazon, Microsoft, Google) для выполнения вычислений, хранения данных, развертывания и масштабирования инфраструктуры, автоматизации, мониторинга и проведения аналитики, использования API и т. д. Они сейчас супер востребованы, поэтому один клауд-сервис из перечисленных (AWS, Azure, GCP) нужно знать обязательно. Больше всего вакансий сейчас именно на AWS. Git, GitHub / GitLab Git – распределенная система контроля версий, которую используют разработчики для фиксирования своего прогресса и более простого ведения совместной разработки. Это фундаментальный инструмент, который вы должны знать, чтобы отслеживать и управлять каждым изменением исходного кода и других файлов. GitHub, GitLab и Bitbucket – это хранилища, в которых хранится код вашего проекта, над которым работает команда. Также они имеют ряд встроенных функций, которые будут важны в том числе и в работе девопс специалиста. Идеальным вариантом будет, если вы изучите работу и с GitHub, и с GitLab. Jenkins / GitLab CI / Circle CI / GitHub Actions Это CI/CD системы, которые помогают в работе с непрерывной интеграцией нового кода и непрерывной доставкой новой версии продукта пользователям. Jenkins позволяет настраивать различные шаги CI/CD, например сборку, тестирование, развертывание и даже интеграцию с облачными сервисами. Он помогает снизить время между написанием кода и его внедрением. GitHub Actions – интегрированная с GitHub служба автоматизации. Девопс разработчики используют её для создания и настройки CI/CD. Она позволяет выполнять действия после доставки кода в GitHub-репозиторий, например компиляцию, тестирование и развертывание. Circle CI и GitLab CI можно наделить такими же характеристиками – они позволяют настраивать CI/CD. Все инструменты имеют ряд отличий, а выбрать стоит тот, который лучше подходит под ваши задачи и имеет лучшую совместимость с системами, которые вы используете. Agile: Scrum / Kanban Методологии разработки ПО, которые являются фундаментальными в работе девопс специалистов, поскольку они определяют основы, на которых базируются все процессы в команде. Scrum – методология разработки ПО, которая относится к гибким (Agile). Её главная задача – создать промежуточный продукт, который теоретически можно представить пользователям, а с каждой последующей итерацией – спринтом в 2-4 недели – добавлять всё больше и больше изменений, двигаясь итеративно к конечному виду. Kanban – ещё одна Agile-реализация, которая делает акцент на скорости разработки проекта от начала и до конца, а также на визуализации задач – для этого команда использует Kanban-доску и непрерывно совершенствует процесс разработки. Английский язык DevOps инженерам нужен английский (желательно Intermediate и выше) для хорошего понимания технологий, с которыми они будут работать, чтения мануалов и т. д., ведь большинство документаций и полезных статей идут именно на языке Туманного Альбиона. Также English нужен для успешной коммуникации с иностранными заказчиками / членами команды и т. д. Дополнительные технологии Кроме основных вышеперечисленных технологий, в вакансиях довольно часто встречаются следующие: системы мониторинга и логирования: Zabbix, Grafana, ELK (Elasticsearch, Logstash, Kibana), Prometheus; системы управления конфигурациями: Ansible и Terraform; Kubernetes – технология оркестрации контейнеров; понимание БД – как реляционных, так и нереляционных. Развитие профессиональных навыков Как получить образование по направлению DevOps? В университетах таких специальностей не существует – по крайней мере в украинских, – есть только общие направления, в которых преподаются фрагменты того, что требуется девопс инженерам, например компьютерные сети, операционные системы, программирование, теория информации и кодирования, криптография и т. д. Поэтому новичкам нужно обращаться к другим источникам. Перечислим их: Бесплатные интернет источники / самостоятельное обучение. Сюда можно отнести YouTube, разные социальные сети с соответствующими группами, где собираются девопс специалисты, блоги и статьи в открытом доступе, ChatGPT и прочее. Преимущества очевидны – вы никому ничего не платите, однако вам нужно самостоятельно подбирать учебные материалы (которые могут быть устаревшие), самостоятельно искать ответы на вопросы, поддерживать дисциплину, учебную мотивацию и т. д.   Курсы. Вы можете записаться на очные/онлайн курсы и учиться с тренером и другими одногруппниками, или же выбрать формат записанных видео курсов (Udemy, edX, ITVDN и др.). Выбор в пользу очного или онлайн обучения с тренером позволяет лучше овладеть материалом, поскольку вам есть к кому обратиться, конкуренция подогревается одногруппниками, а также вы имеете постоянную мотивацию, ведь д/з и курсовые проекты должны быть выполнены вовремя. Минус – для качественных курсов нужно доставать кошелёк, но оно того стоит. Сюда же можно отнести конференции DevOps, на которых вы можете знакомиться с единомышленниками и прокачивать ваши знания и навыки.   Курсы от крупных компаний. Вариант, позволяющий попасть на качественные курсы и учиться в достаточно интенсивном темпе с перспективой получить приглашение на позицию Intern/Trainee в этой же компании. Очень классный вариант, однако есть два но: 1) нужно самостоятельно получить некоторые знания по DevOps и пройти отбор; 2) такие курсы бывают платными. Данный формат обучения может предоставляться компаниями EPAM, SoftServe, Sigma Software, PortaOne и т. д.   Менторство. Вы также можете найти знакомого или DevOps-филантропа, который возьмёт вас под свое крыло и будет обучать, выдавать д/з, отвечать на вопросы, направлять, следить за прогрессом и т. д. Тоже хороший вариант, однако найти таких добродушных джедаев весьма тяжело. Образовательные ресурсы дадут вам знание инструментов. А как насчет личных скиллов – так называемых soft (мягких) навыков? Чтобы стать хорошим DevOps Specialist, важно иметь следующие качества: коммуникабельность, ассертивность и умение играть в команде; умение продуктивно распоряжаться временем (time management); проактивность; внимательность; хорошо развитая смекалка, смышленость; хорошо развитые критическое и системное мышления; умение быстро учиться; умение хорошо слушать и слышать; жажда постоянного развития; хорошие навыки problem solving / траблшутинг; стрессоустойчивость; умение брать на себя ответственность; эмпатия. Карьерные перспективы и заработная плата DevOps Engineer Количество вакансий Начнём с того, насколько востребованы DevOps Engineers. Для этого просмотрим количество открытых вакансий на DOU.ua – крупнейшем сообществе украинских девелоперов – и сравним с другими популярными направлениями (на начало ноября): DevOps – 156 вакансий; QA – 160; Front End – 150; Python – 108; Java – 107; .NET – 100; Node.js – 102; Data Engineer – 46; Data Science – 45; Android – 27. На украинском Djinni, где айтишники Украины анонимно ищут работу, ситуация следующая: DevOps – 283 вакансии; JavaScript / Front-End – 534; Java – 168; C#/.NET – 161; Python – 193; Node.js – 222; QA Manual – 136; QA Automation – 88. Конкуренция Воспользуемся соотношением количества отзывов к количеству вакансий на DOU (октябрь 2023), чтобы понять, насколько конкурентен IT-рынок у специалистов по направлению DevOps. Видим следующее: В среднем на 1 вакансию приходится 11 претендентов. Это достаточно хороший результат как для текущего состояния украинского IT. Например, для QA эта цифра составляет 109.6, FrontEnd – 109.1, Java – 46.3, Node.js – 33.9, .NET – 32.2, Python – 26.4. Вы абсолютно справедливо подметите, что это статистика для всех специалистов – как новичков, так и специалистов с опытом. А какое соотношение отзывов-вакансий у тех, кто имеет меньше 1 года опыта? По состоянию на октябрь 2023: DevOps – 24.5, FrontEnd – 458, Node.js – 443, Java – 198, .NET – 178, QA – 139.7, Python – 72.5. Всё равно девопс имеет гораздо меньше конкуренции, чем наиболее популярные направления. Зарплаты Касательно ЗП на украинском IT-рынке обратимся к летнему зарплатному опросу от DOU. DevOps специалисты имеют одну из самых высоких медианных зарплат – 3500 USD, уступая SRE (одна из ветвей DevOps), менеджерским и высшим руководящим должностям. Медианная ЗП в соответствии с городами: Киев – 3675 USD; Харьков – 3000 USD; Львов – 2800 USD; Одесса – 4212 USD; Днепр – 4000 USD; Ивано-Франковск – 3875 USD. Карьерные пути DevOps Карьерные перспективы достаточно обширны и зависят от того, чем занимается DevOps специалист, поскольку это неоднородная отрасль. Следовательно, вы можете выбрать для себя что-то более нишевое и развиваться именно там, например: хотите фокусироваться на облачных процессах – Cloud Engineer; нравится автоматизация инфраструктуры – вам в Automation Engineer; делаете ставку на кибербезопасность и защиту на всех этапах жизненного цикла разработки – DevSecOps будет отличным выбором; Site Reliability Engineer – отличный выбор, если хотите зарабатывать ещё больше денег и заниматься качеством уже готовых систем; и так далее. Если говорить о росте вверх, то сначала вас ожидает стандартная девелоперская лестница – Junior, Middle, Senior, а с увеличением объема вашего опыта вы можете претендовать на руководящие должности, такие как Head of DevOps, Lead, Architect. Также у вас есть возможность отойти от DevOps ремесла как такового и: углубиться в программирование, перейдя в разработчики; стать автоматизированным тестировщиком (Automation QA); строить карьеру в области кибербезопасности в качестве аналитика, белого хакера, специалиста по безопасности и т. п.; пойти в системное администрирование и сконцентрироваться на работе с инфраструктурой; заниматься менеджерской деятельностью и управлять командами разработчиков/тестировщиков и прочее. Здесь действует и обратное правило: так же вы можете попасть в DevOps и через разработку, и через QA, и через CyberSecurity либо другое направление. Просто надо будет доучить недостающую часть стека. Ключевые тренды в DevOps и технологии DevOps постоянно развивается, и существует несколько ключевых тенденций и технологий, которые определяют текущее направление развития: DevSecOps (Development, Security, Operations). Безопасность выходит на первый план: наблюдается устойчивая тенденция ко всё большей интеграции парадигм безопасности и практик в DevOps процессы, чтобы программное обеспечение было как можно менее уязвимым и более надежным.   Интеграция искусственного интеллекта. В конце 2022 и начале 2023 года возник большой ажиотаж вокруг ChatGPT, созданный на базе ИИ. Конечно, это не первый случай, когда используются нейронные сети, однако событие было резонансным. Поэтому логично, что по всему IT катится ИИ-тренд, поскольку это несёт упрощение работы, повышение скорости реагирования и производительности.   Infrastructure as Code (IaC). Всё больше популяризируется подход к инфраструктуре как к системе, на которую человеческий фактор должен оказывать минимальное влияние. Взамен как можно больше процессов должны автоматизироваться за счет использования программного кода (скрипты, шаблоны, конфигурационные файлы и прочее) в противовес ручной/интерактивной настройке. Сюда же можно добавить serverless-вычисления, микросервисы, Chaos Engineering, контейнеризацию и оркестрирование, тренд на Site Reliability Engineering, усиление мониторинга и cloud-технологии. А из трендовых инструментов можно отметить следующие основные: eBPF – технология, позволяющая программировать и выполнять код прямо в ядре операционной системы Linux. Эта технология расширяет возможности фильтрации сетевых пакетов и обеспечивает высокий уровень мониторинга и анализа сетевого трафика.   WebAssembly (он же Wasm) – бинарный формат веб-приложений, который может выполняться в браузерах. Для DevOps дает возможность развертывания и мониторинга веб-приложений, которые работают на разных языках программирования и могут запускаться в браузере без дополнительных ограничений.   OpenTelemetry – это open-source проект, который помогает собирать данные о производительности, мониторинге и трассировке приложений.   Argo Rollouts – инструмент, направленный на автоматизацию процесса развертывания приложений и микросервисов. Он расширяет возможности Kubernetes по управлению релизами и развертыванию приложений, предоставляя дополнительные функции и контроль над процессом обновления.   Инструменты от OpenAI. Год назад именно эта компания выпустила знаменитый ChatGPT, однако им её достижения не ограничиваются. Эта компания активно занимается разработками на базе ИИ, и также приложила усилия к GitHub Copilot, который значительно упрощает написание кода. Выводы DevOps – довольно интересное и разностороннее направление, в котором найти себя может каждый, кто умеет траблшутить и играть как с кодом, так и с инфраструктурой. Требования могут быть достаточно размазаны в зависимости от сфокусированности конкретной вакансии, плюс нужно учитывать, что многие работодатели ищут себе как можно более декорированных специалистов, поскольку дешевле нанять одного "универсала", чем 2-3 нишевых. Однако именно поэтому и зарплаты у девопсов одни из самых больших на IT-рынке, если не принимать во внимание руководящие должности. Для тех, кто хочет узнать мнение опытного System Engineer и DevOps специалиста касательно DevOps карьеры, советуем просмотреть запись вебинара от Николая Прокопенка. Автор имеет 6 лет опыта в аутсорсе и аутстафе в крупных компаниях (Luxoft, Ciklum, DataArt), а также является сертифицированным экспертом Microsoft Azure. Желаем удачи на вашем пути в IT!
Какой язык программирования стоит учить первым

Автор: Влад Сверчков

На что влияет выбор языка программирования? Какие языки выбирают первыми? Рейтинги языков программирования. Индекс TIOBE. Индекс PYPL. Stack Overflow Developer Survey 2022. Рейтинг от GitHub. Какие языки наиболее популярны в соответствии с этими рейтингами? Какие языки выбирают украинские разработчики? Количество вакансий и отзывов в Украине. Выводы. Первый язык программирования (сокращенно – ЯП) открывает мир создания кода перед новичком. И от выбранного языка очень часто зависит то, каким будет этот «мир» – интересным и увлекательным, или же недружественным и слишком сложным. Если вы хотите из этого знакомства извлечь максимальную пользу для себя, стоит внимательно подойти к выбору первого языка программирования – и наша статья вам в этом поможет. Мы разберем языки программирования, которые могут быть отличными в качестве первых языков. Вы узнаете, в каких IT-профессиях востребован тот или иной язык – а также много другой полезной и интересной информации. На что влияет выбор языка программирования? Для новичка выбор первого языка – важный шаг, который может определить его дальнейший путь развития в качестве разработчика. Главные пункты, на которые влияет ЯП: Скорость овладения базой. Языки программирования имеют различную сложность изучения. К примеру, 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 вы, возможно, найдете, но работодателя – вряд ли. Зачем забивать гвоздь монитором, если есть молоток? Поиск ментора и комьюнити. У каждого ЯП свое комьюнити и свои джедаи, которые готовы брать к себе юных падаванов на обучение. У популярных языков больше аудитория, есть хорошие и подробные документации, легче найти ментора – это позволяет удобнее и быстрее учиться. В более нишевых ЯП комьюнити скромнее, поэтому найти практикующего разработчика, который возьмет к себе ученика, чтобы научить его программировать, а также найти качественные гайды – ещё те задачи. Ментор важен тем объемом знаний и практических навыков, которые может передать: подсказать, как правильнее делать, где вы ошибаетесь, на чем сосредоточить внимание. Эти советы ускорят ваше изучение ЯП и позволят быстрее двигаться дальше навстречу желанной IT-специальности. Стиль программирования. Пункт очень похож на 2-й, но если там дело касалось этики языка программирования, то здесь речь больше об этике самого программиста. В разных языках могут быть разные правила написания кода, согласованные сообществом программистов. Поэтому овладев одним языком, вы можете столкнуться с совершенно другой кодерской этикой при переходе к другому ЯП (в качестве примера – переход с Go на Java). Легкость поиска ответов. Чем популярнее язык, тем легче гуглить и искать ответы, поскольку множество других разработчиков до вас интересовались теми же вопросами (высоковероятно). Однако если вы хотите использовать язык в экстравагантных целях – для которых он не предназначен – могут возникнуть проблемы с ответами. Переход на другой язык. Некоторые технологии и языки устаревают и приходится учить новый стек. Например, так произошло с мобильными iOS разработчиками, которые писали на языке Objective-C и были вынуждены перейти на Swift, поскольку компания Apple так решила. Учитывайте и это при выборе языка. Какие языки выбирают первыми? Ранее изучение программирования начиналось в школах с языков Pascal либо Basic. Эти языки хорошо подходят для знакомства с алгоритмическим подходом, структурами данных и фундаментальными концепциями программирования. Они учат грамотности и рациональному подходу к решению программистских задач, но в коммерческой разработке сегодня почти не используются. В школах всё более распространенными становятся такие популярные языки, как Python и JavaScript (JS). Они достаточно просты в овладении и позволяют быстро преодолеть расстояние между началом обучения и получением настоящего конечного результата. Скрипт на JS вообще можно написать с помощью обычного блокнота в Windows и запустить в любом браузере – даже устанавливать дополнительное ПО не нужно. Проще говоря, эти два языка просто более интересны и дают больше удобств и возможностей, чем Pascal или Basic. Изучение JavaScript и Python в школе имеет целью заинтересовать учащихся программированием и показать, насколько легко и просто это может быть, какие возможности может дать умение писать код. Чтобы почувствовать силу того же пайтона, можете посмотреть интересную подборку из 10 проектов длиной в 10 строк кода по ссылке. Таким образом, эти языки не только знакомят с программированием, но и позволяют максимально быстро влиться в IT и создавать современные приложения. Рейтинги языков программирования Чтобы лучше понимать, какие языки сегодня пользуются спросом, рассмотрим несколько соответствующих рейтингов. Индекс 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 опрошенных со всего мира). На картинке ниже можно увидеть, какие языки чаще всего используют те, кто только изучает программирование и IT (на двух картинках ниже продемонстрированы не все языки из рейтинга): Наибольший спрос среди новичков вызывают языки верстки HTML & CSS (ими создают визуальное оформление веб-сайтов), а также языки программирования JavaScript и Python. Остальные языки идут с отрывом в более 19%. То есть, современные начинающие всё больше и больше отходят от классических Java, C#, а также Pascal и Basic, выбирая более простые языки, с которыми быстрее попадешь в IT. Следующая картинка показывает, какими языками чаще всего пользуются профессиональные разработчики: На первом месте 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) в соответствии с третьей версией – это создает дополнительный спрос на Python разработчиков. JavaScript также отличается простотой и лаконичностью, но ее основная область использования ограничена WEB-ом, хотя JS имеет достаточно средств, чтобы на ней вести удобную разработку серверного ПО, мобильных и десктопных приложений и т. д. Рейтинг от Stack Overflow показал, что именно эти два языка программирования чаще всего предпочитают начинающие. TypeScript – это тот же JavaScript, но со строгой типизацией и другими фишками, которые делают код более структурированным и уменьшают количество потенциальных ошибок. Следующие позиции обычно занимает Java – классический и универсальный язык, созданный в конце 20 века, но при этом до сих пор популярный и востребованный. Успешнее всего себя зарекомендовал в кроссплатформенных приложениях, Enterprise (создание ПО для крупного бизнеса), а также в мобильной разработке, хотя его сфера применения ими не ограничивается. Также существует много легаси кода на Java, который требует поддержки и обновления, что создает дополнительную востребованность грамотных Java девелоперов. Часто упоминаются C/C++ - это корифеи среди современных языков программирования, зачастую изучаются в ВУЗах. Сложны в овладении, но очень мощны в использовании. Именно они применяются в ресурсоемких приложениях, микроконтроллерах и других приложениях, которым важно контролировать затраты памяти. Если вы хотите быстро попасть в IT – C/C++ не вариант, но в качестве языков для изучения программистской базы они – то, что нужно. Изучив «плюсы», вы сможете с легкостью переходить на другие языки. C# – популярный универсальный язык от компании Microsoft, который прежде всего ориентирован на создание приложений под ОС Windows, однако выход платформы .NET Core позволил создавать ПО и под другие популярные платформы. Больше всего применяется в разработке корпоративных приложений, серверной стороны веб-приложений, игр на 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) – конкуренция одна из самых высоких на рынке IT. Меньше конкуренции в 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#. Это классические языки, которые научат вас базе и при этом будут достаточно востребованы на IT-рынке еще долгое время, что позволит относительно быстро найти работу. Это лучший вариант из всех трех с точки зрения компромисса между легкостью изучения, быстротой становления в дальнейшем разработчиком и получением кодерской базы. Если вы хотите максимально быстро попасть в IT – обратите внимание на JavaScript и Python. Они легки в овладении, быстро изучается синтаксис, у рынка достаточно много вакансий под JavaScript. Также эти языки имеют большое комьюнити, поэтому материалов для изучения вы найдете в изобилии. Многие хотят попасть в IT именно через последний – третий вариант. Но в чем его недостатки? Начнем с JS: большая конкуренция (упоминали при рассмотрении аналитики); слишком большая вариативность – каждый разработчик может писать код по своим собственным правилам и будет трудно читать и понимать логику его работы; в интернете много ответов низкого качества; из джаваскрипта труднее переходить на другие языки программирования, чем наоборот; значительный шанс упустить базовые концепции программирования и высокий риск написания плохого кода. В Python примерно те же проблемы плюс наличие своеобразного синтаксиса, который может путать. Это не значит, что данные языки – плохие. Абсолютно у каждого есть как свои плюсы, так и минусы – и это нормально. ЯП нужно выбирать, отталкиваясь от сферы, в которой вы собираетесь себя реализовывать. Только тогда этот выбор будет максимально удачным и полезным вам. Вкратце резюмируя: если вас интересует разработка веб-сайтов – всего того, что на стороне клиента, вы хотите постоянно видеть наглядный результат своей работы – выбирайте JavaScript. Если интересует кроссплатформенное ПО, Enterprise или мобильная разработка под Android – учите Java (в мобильной разработке затем доучите Kotlin). C# – хороший выбор для тех, кто хочет работать с инструментами от Microsoft, создавать корпоративные приложения, BackEnd веб-приложения, игры, десктопные приложения под Windows. Python – незаменимый в автоматизации рутинных задач, популярный в работе с большими данными, BackEnd-ом, искусственным интеллектом. Эти 4 языка покрывают достаточно большой процент IT-специальностей, поэтому выбрав один из них вы не прогадаете. Где можно выучить языки программирования? Наши курсы помогут каждому, кто собирается учить популярные языки программирования и сопутствующие технологии. Портал ITVDN насчитывает более 230 видео курсов и имеет собственные программы обучения по 15 популярнейшим IT-профессиям, среди которых: Верстальщик сайтов FrontEnd Developer Java Developer Python Developer C#/.NET Developer Android Developer Unity/Game Developer PHP Developer и другие. Обучение происходит в формате записанных видео курсов – вы можете учиться в то время, которое для вас комфортно. Со всеми специальностями можно подробно ознакомиться, перейдя на страницу специальностей ITVDN. Если вас интересует изучение только языка программирования, соответствующие курсы вы найдете в нашем каталоге. Желаем успешного обучения и достижения ваших амбиций в IT!
Как правильно заключить договор на разработку сайта: советы для фрилансеров

Автор: Богдана Гайворонская

Фрилансеры не всегда заключают договор на разработку сайта с заказчиками, полагаясь на договоренности, озвученные устно или сформулированные в переписке. Ведь сам процесс согласования и подписания документов занимает определенное время и требует усилий. Впрочем, сотрудничество на доверии достаточно рискованно для обеих сторон. Кроме того, что один из участников может безнаказанно отказаться от выполнения своих обязанностей, есть немало нюансов, которые затрудняют сотрудничество в случае отсутствия документально заверенных алгоритмов работы. Даже когда обе стороны намерены добросовестно выполнить все договоренности, их может подвести банальное недоразумение. Договор не только гарантирует защиту как исполнителя, так и заказчика. Он представляет собой определенную дорожную карту, которая описывает каждый этап работ, каждую возможную ситуацию, действия партнеров в случае форсмажоров и алгоритм урегулирования спорных вопросов. Даже подписание типового договора частично уменьшает риски, но мы все же рекомендуем создавать отдельный контракт для каждого заказчика. Хостинг-провайдер и регистратор доменных имен Cityhost.ua предлагает читателям нашего блога материал, созданный совместно с IT-юристами, чтобы разобраться во всех аспектах создания договора на разработку сайта. Этапы согласования и заключения договора Заключение договора начинается в момент, когда заказчик и исполнитель обсуждают и согласовывают все детали проекта. Поэтому этот этап также должен быть задокументирован в виде брифа. Кроме того, нужно составить детальное ТЗ и сформировать сам договор. Давайте рассмотрим каждый шаг по этому пути. Заполнение брифа Заказчики очень не любят заполнять бриф и пытаются пропустить этот этап, обсудив все детали по телефону или в чате. Часто случаются ситуации, когда заказчик говорит: «Вы профессионал, посмотрите сами, что там нужно сделать и изложите свои предложения». Такая позиция нередко выливается в результат: «Нет, это не то, что нужно, предложите что-нибудь другое». На самом же деле бриф необходим для сотрудничества, потому что в нем содержатся ответы на важные для исполнителя вопросы. Каждый разработчик заключает свой бриф, который может выглядеть подобным образом: Название и отрасль работы компании. Целевая аудитория. Локация (местная, всеукраинская, международная). Ценности, миссия. Корпоративный стиль — слоган, корпоративные цвета, стиль промо-материалов (желательно отправить эти материалы на почту). Тип сайта, который хотите заказать (визитка, интернет-магазин, корпоративный сайт, наличие/отсутствие блога и т.п.). Ориентировочная структура сайта, названия разделов. Пожелания по оформлению сайта. Примеры сайтов, на которые вы хотели бы ориентироваться. Можно создать типичный бриф, но все же стоит вносить в него дополнительные вопросы, предназначенные для конкретного заказчика. Составление технического задания После заполнения брифа заказчик уточняет вопросы и вносит предложения, каким он видит будущий сайт — основную концепцию, количество разделов, визуальный стиль. На основе этих переговоров составляется техническое задание и одновременно начинается разработка договора. В техзадании прописывается конкретный результат и все услуги, предоставляемые разработчиком. Это очень важно, поскольку «сделать сайт» довольно размытое понятие. Может случиться, что владельцы фирмы обратились к фрилансеру, который только пишет код, и не занимается дизайном и контентом. Он будет ждать от заказчика макет, тексты и фото. Другие фрилансеры могут сделать сайт «под ключ» и имеют разветвленную сеть субподрядчиков — дизайнеров, копирайтеров, фотографов и т.д. Техзадание прописывается максимально подробно и включает в себя измеряемые параметры, например: «Сайт должен состоять из 5 разделов: главная страница, страница «О нас», страница контактов, страница для представления товара, раздел для блога». Если у сайта есть блог или раздел новостей, в ТЗ также пишется, должен ли исполнитель заполнить этот раздел 2-3 новостями или делает только структуру блога. Чем подробнее будет описан каждый аспект разработки сайта, тем меньше остается места для недоразумений. Обсуждение и согласование текста договора Для начала нужно определиться с типом договора. Есть два типа — договор на оказание услуги и договор подряда. Они отличаются тем, что в первом случае ключевым является сам процесс работы, а во втором — результат. К примеру, SEO-продвижение не имеет конечного результата и продолжается всегда, пока существует сайт — тогда заключается договор на сотрудничество. Для разработки сайта больше подходит договор подряда, поскольку заказчику нужен сайт, его интересует завершенная работа и его плоды. Далее нужно поочередно прописать все главные этапы сотрудничества: Предоставление заказчиком материалов разработчику. Это могут быть тексты, фото, видео, логотип и т.д. Создание и утверждение макета. Создание сайта. Внесение поправок. Проверка и приём работы. Подписание актов о выполнении работ. Оплата проделанной работы. Это ориентировочный список, потому что у каждого сайта могут быть свои этапы. Например, исполнитель не только разрабатывает сайт, но и проводит маркетинговые исследования, анализирует конкурентов и на основе полученной информации дает рекомендации заказчику насчет концепции сайта — это отдельный этап, который также требует усилий и влияет на формирование стоимости заказа. Основные правила составления договора Есть элементы договора, без которых он не сможет стать четким документом, дисциплинирующим стороны в процессе работы. Сроки Обязательно нужно прописать сроки выполнения каждого этапа. Если внимательно присмотреться к порядку действий, вы увидите, что часть работы зависит от исполнителя (создание сайта, внесение правок), а вторая часть — от заказчика (предоставление материалов, проверка, прием работы). Если в договоре прописана только финальная дата, когда разработчик должен сдать сайт, он может попасть во временную ловушку — сроки затянуты, но не по его вине. Также следует прописать действия сторон в случае, если кто-то из партнеров выполняет свои обязанности ненадлежащим образом. К примеру, если заказчик не осуществил прием работы в течение семи дней, она автоматически считается принятой. Прописывайте не конкретные даты, а время между этапами, например: «Разработчик обязуется предоставить начальный макет сайта в течение 4 дней с момента получения материалов». Измеримость Все пункты в договоре должны быть описаны таким образом, чтобы их можно было измерить каким-либо конкретным параметром — временем, действием, результатом. Например, обсуждение и внесение правок происходит в течение недели после того, как разработчик пришлет по электронной почте ссылку на готовый сайт на такой-то адрес (конкретный). Таким образом снижается вероятность путаницы, когда одна сторона ждет результата в Вайбере, другая пишет сообщение в Фейсбуке, а время истекает. Конкретика Очень важно прописывать четкие формулировки. К примеру, «предоставить макет сайта» — это нечеткая формулировка. А вот «предоставить макет сайта в виде проекта в Figma с доступом редактора» — это уже нечто конкретное. Также нужно прописывать, какие материалы ожидает разработчик — фотографии в формате .png с разрешением не менее 600 пикселей по ширине, тексты в формате Google Docs с открытым комментированием. Далеко не все заказчики ориентируются в компьютерных технологиях. Если ваш клиент — небольшое строительное предприятие или ФЛП, ремонтирующий велосипеды, для него не существует никаких опций по умолчанию. Поэтому конкретное и детальное описание всех требований и этапов — это скорее необходимость, иначе клиента и разработчика может ожидать много сюрпризов. Сбалансированность В договоре должны быть равномерно соблюдены права и обязанности обеих сторон. Не должно быть такого, что во всем виноват заказчик или вся ответственность лежит на исполнителе. Если какой-то этап работы зависит от действий определенной стороны — она несет ответственность за его реализацию или уплачивает неустойку (или подпадает под другие санкции) в случае невыполнения обязанностей по собственной вине. Пункты договора, требующие внимания В этот раздел вынесем те аспекты сотрудничества, о которых начинающие фрилансеры могут не знать или не уметь правильно их урегулировать. 1) Количество и порядок поправок, внесение изменений в ТЗ Важен вопрос количества возможных правок и внесения изменений в техническое задание. Лучший и проверенный метод — когда заказчик отправляет все правки в одном документе, а исполнитель вносит их сразу. Оптимально делать три круга правок; если у клиента появляются дополнительные правки, это должно оплачиваться. Такая политика в первую очередь защищает исполнителя от десятков переделок и дисциплинирует заказчика, который более продуманно решает, нужна ли эта правка. Правки должны быть конкретными и аргументированными, без формулировок наподобие «сделайте как-то иначе, но не так, как есть». Насчет ТЗ — все изменения, которые заказчик хочет внести в него уже во время работы, должны также дополнительно оплачиваться. В случае необходимости можно прописать, какие изменения и какого масштаба можно вносить, сколько стоит каждое из них. Одно дело поменять фотографию, и совсем другое, когда заказчик на финальной стадии решает заменить CMS (по факту это значит делать все заново). 2) Авторские и имущественные права Вопрос авторских прав касается как материалов, используемых на сайте при разработке, так и использования материалов сайта после завершения работ. Важно отслеживать, уникален ли контент, который предоставляет заказчик или предлагает исполнитель. Для обеспечения обеих сторон нужно прописать порядок действий по предотвращению ситуаций, когда могут быть нарушены авторские права третьих лиц или одного из участников проекта. К примеру, сторона, предоставляющая материалы, должна приобщить документы, подтверждающие право собственности на них — квитанции на приобретение фото- и видеоматериалов или другой контент. Или для упрощения процедуры можно просто отметить, что ответственность за нарушение авторского права несет сторона, предоставившая материалы. К объектам авторского права относятся название сайта, тексты, фото, видео, дизайн и код. В договоре должно быть указано, кому принадлежат имущественные и авторские права на все элементы проекта после его завершения и может ли разработчик использовать какие-либо материалы для дальнейшей работы. Для ориентира используйте Закон об авторском праве и смежных правах. 3) Сотрудничество с другими подрядчиками Сайт состоит из многих компонентов, и не все работы подрядчик может выполнить самостоятельно. Если он обращается к субподрядчикам для создания дизайна или текстов, это также должно быть зафиксировано в договоре. Но в любом случае за качество конечного результата отвечает исполнитель. 4) Ответственные лица за коммуникацию с исполнителем Этот момент особенно стоит внимания, если компания-заказчик большая, в ней есть много разных отделов и работников. Скорее всего, исполнитель не будет работать напрямую с директором, а будет общаться с кем-то из менеджеров. В таком случае договор должен содержать ФИО, должность и контакты лица, ответственного за коммуникацию. Не мешает указать, какие каналы общения считаются официальными — ими могут быть не только почта, но и аккаунт в Телеграме или страница в Facebook. В случае, если разные аспекты будут согласовываться с разными людьми, это также должно быть указано. Например, за финансовые вопросы отвечает бухгалтер, за согласование макета — дизайнер компании, все остальные вопросы — к менеджеру. Но все же лучше, когда проект курирует один конкретный человек и несет ответственность за своевременную и эффективную коммуникацию. 5) Форсмажерные обстоятельства Бывают ситуации, когда кто-то не может выполнить свои обязанности по не зависящим от него причинам. На этот случай следует вынести отдельным пунктом преодоления форсмажорных обстоятельств: что можно считать такими обстоятельствами и порядок действий в случае их возникновения (например, отсрочка для исполнителя для завершения работ или отсрочка оплаты для заказчика). Обычно в этот список входят пожары, стихийные бедствия, боевые действия, забастовки, введение карантина и другие обстоятельства, которые нельзя предусмотреть и подготовиться к ним. 6) Финансовые вопросы В эту категорию входит не только порядок оплаты за проделанную работу (аванс, гонорар), но и сопутствующие расходы. Сюда можно отнести оплату домена и хостинга, заказы текстов, дизайна, фотосъемки и т.д. Исполнитель может эти расходы включить в сумму гонорара, но можно положить их и на заказчика. Это все обсуждается и прописывается. Также в договоре должны быть зафиксированы такие моменты, как порядок налогообложения, расчетная валюта, счета для получения средств, порядок перечисления и способ подтверждения получения средств исполнителем. 7) Прием работы или отказ от него На проверку и прием работы выделяется определенный срок, в течение которого заказчик может выдвинуть обоснованные замечания и требования по доработке сайта или отказаться принять работу, предоставив четкие аргументы. Отказаться от приема работы можно только в случае, если сайт не отвечает технической задаче, выполнен с нарушением законов или имеет другие объективные недостатки, которые делают невозможным его использование и которые можно доказать. Не могут быть учтены субъективные аргументы, когда сайт исполнен по всем договоренностям, но разработчик представлял себе его как-то иначе. Если разработчик выполнил все пункты ТЗ и договор, клиент не может отказаться от подписания акта. В случае, если речь идет о масштабных проектах с большой суммой оплаты, советуем обратиться за консультацией к юристу, который поможет прописать договор максимально четко и избежать «лазеек» для двойной трактовки.
Что должен знать FrontEnd разработчик в 2023 году

Автор: Влад Сверчков

Основные технологии HTML5 & CSS3 Flex и Grid CSS CSS препроцессоры Git & GitHub Знание о веб-технологиях и сети интернет JavaScript JavaScript Core (DOM, AJAX, JSON) REST API Алгоритмы и структуры данных Фреймворки JavaScript Инструменты управления состоянием программы (State Management) TypeScript Основы Figma Английский язык Необязательные технологии Паттерны проектирования JavaScript Линтеры Тестирование Webpack Gulp/Grunt SOLID принципы Зарплаты FrontEnd разработчиков Итоги FrontEnd – одна из самых легких профессий разработчика в IT. Она выгодно отличается тем, что сочетает в себе программирование и творчество, поскольку девелопер работает над оживлением дизайнерского макета и созданием соответствующей пользовательской логики. Также преимуществом фронтенда является то, что увидеть результат работы можно почти сразу – в любом браузере. Относительная легкость фронтенда рождает большую популярность среди желающих попасть в IT, а учитывая последствия открытой агрессии по отношению к Украине – особенно большую популярность, ведь это возможность работать удаленно (на IT-компанию или на фрилансе) и получать хорошую зарплату. Соответственно, конкуренция среди Trainee/Junior FrontEnd разработчиков весьма высока, поэтому работодатели вынуждены закручивать гайки и повышать требования к кандидатам, чтобы отобрать лучших. Так как стать фронтенд разработчиком? Какими технологиями необходимо владеть, чтобы стать Intern/Junior FrontEnd разработчиком в 2023 году? Проанализировав вакансии на украинском рынке айти, мы составили список актуальных инструментов, которые обычно требуют работодатели от кандидатов. Их перечень – ниже в статье. Frontend developer roadmap. Основные технологии HTML5 & CSS3 HTML5 и CSS3 — это фундаментальные технологии, без знания которых не обойтись ни одному веб-разработчику. С помощью языка гипертекстовой разметки HTML создается разметка (каркас) каждой интернет-страницы. Затем язык стилей CSS преображает сайт и придает ему привлекательный и эффектный внешний вид. Помимо этого, необходимо владеть: кроссбраузерной адаптивной версткой, чтобы уметь создавать сайты под мобильные устройства, планшеты и широкоформатные экраны и для различных браузеров; семантической версткой для повышения качества разметки и улучшения поисковой индексации сайта; валидной версткой, которая предполагает полное соответствие кода разработчика всем стандартам W3C — организации, которая создает и внедряет технологические стандарты для World Wide Web. Уделите особое внимание верстке под мобильные устройства, так как современный веб-потребитель очень много времени проводит в смартфоне. Существует даже специальный подход, при котором сначала верстается веб-сайт под мобильные устройства, а только потом под десктопы — называется Mobile First.  Это общие требования по верстке. Теперь же рассмотрим более детально требования конкретно по языку стилей. Здесь вы должны знать основные свойства CSS3: фоны, градиенты, тени, анимации, трансформации, переходы, а также технологии Flex и Grid, о которых мы еще поговорим. Хорошее владение HTML и CSS уже позволяет заниматься версткой сайтов и зарабатывать деньги. Именно с этих двух базовых технологий начинается путь к профессии FrontEnd разработчика. Качественно изучить HTML и CSS вы сможете при помощи следующих наших курсов: HTML5 & CSS3 Стартовый; HTML5 & CSS3 Базовый; HTML5 & CSS3 Углубленный. Flex и Grid CSS Технологии верстки надежных адаптивных веб-страниц, которые позволяют легче создавать динамические сайты и удобнее структурировать их содержимое. Лучше всего Flex-верстку в действии показывает интерактивный сайт flexboxfroggy.com, а Grid-верстку - cssgridgarden.com. На нашем ресурсе также есть курсы, которые хорошо объясняют темы Flex и Grid верстки: “Верстка сайта на CSS Grid”, “Верстка сайта на FlexBox CSS”. CSS препроцессоры CSS препроцессор — это программа, которая имеет свой собственный синтаксис, но может сгенерировать из него CSS код. Самыми популярными считаются SASS, Stylus, LESS и PostCSS, однако, наибольшее комьюнити имеет именно SASS. Препроцессоры предназначены для: ускорения процесса написания кода; упрощения чтения кода и дальнейшей его поддержки; минимизации рутинной работы при написании кода. Для повышения эффективности написания CSS кода вполне достаточным будет изучение лишь одного препроцессора. Git & GitHub Git — наиболее популярная система контроля версий, которая позволяет вести историю разработки проекта с возможностью доступа к каждой сохраненной версии. Помимо этого, стоит уметь работать с сервисом онлайн-хостинга проектов, использующих систему контроля версий. В данном случае это GitHub. В тандеме с Git он позволяет разработчикам сохранять свой код онлайн, а затем взаимодействовать с другими разработчиками в разных проектах. Данные системы позволяют команде программистов работать над одним проектом одновременно, сохраняя внесенные изменения, а также отслеживать выполнение задач каждым членом группы. Git & GitHub — очень важные инструменты для любого IT-разработчика, изучением которых следует заняться как можно раньше.  Мы рекомендуем изучать Git на ITVDN при помощи курса “Основы работы с Git”. Знания о веб-технологиях и сети интернет Чтобы качественно выполнять свою работу, фронтенд разработчик должен разбираться в вебе и понимать принципы его функционирования. Таким образом, необходимо знать: как работает интернет; протоколы HTTP/HTTPS, веб-сокеты; как работают браузеры; что такое DNS и как он работает; что такое доменное имя; что такое хостинг. Также будет неплохо, если вы попробуете настроить сайт на каком-нибудь бесплатном хостинге, привяжете домен к этому хостингу. JavaScript Язык программирования, который используется как при разработке клиентской стороны веб-приложения, так и серверной. При помощи JavaScript (сокращенно — JS) можно писать даже настольные и мобильные приложения, используя определенные программные платформы и библиотеки. Этот язык позволяет: динамически изменять разметку; осуществлять интерактивное взаимодействие с пользователем; анимировать изображения; совершать валидацию форм; управлять мультимедиа и т. д. Другими словами, JavaScript “оживляет” страницу и добавляет ей функциональности. Хорошее владение данным языком программирования является обязательным для каждого FrontEnd разработчика. JavaScript использует официальный стандарт ECMAScript (сокращенно - ES), который подразумевает определенное формальное описание синтаксиса, базовых объектов и алгоритмов. На данный момент существует множество различных версий ES. Работодатели чаще всего требуют знание ES6+. Однако, вначале необходимо изучить чистый JavaScript (vanilla JavaScript) и лишь потом вникать в новые стандарты. Как ни крути, а классику надо знать. Благодаря хорошему владению JS можно быстро разобраться в любой версии ES и затем освоить любой фреймворк или библиотеку. ITVDN предоставляет возможность изучить JavaScript с нуля до продвинутого уровня при помощи курсов: JavaScript Стартовый; JavaScript Базовый; JavaScript: Расширенные возможности. JavaScript Core (DOM, AJAX, JSON) DOM (Document Object Model) - объектное представление исходного HTML-документа. Ключевым является понятие DOM-дерева, которое описывает структуру страницы. С помощью объектной модели JavaScript получает полную власть над HTML-документом: возможность редактировать, удалять и добавлять элементы и атрибуты HTML, менять CSS код и т. д. AJAX (Asynchronous JavaScript And XML) - это синтез технологий JavaScript и XML, который фактически представляет собой комбинацию: встроенного в браузер XMLHttpRequest-объекта (чтоб запрашивать данные с веб-сервера); JavaScript и HTML DOM (чтобы отображать или использовать данные). AJAX позволяет веб-страницам совершать асинхронное обновление, обмениваясь данными с веб-сервером. Благодаря этой технологии страница не нуждается в перезагрузке - обновляется лишь конкретная ее часть (вспомните ленту новостей в социальных сетях). JSON (JavaScript Object Notation) - это общий формат обмена данными. Позволяет совершать обмен информацией между программными продуктами, написанными на разных языках. Таким образом, клиент, использующий JavaScript, может легко передавать данные на сервер, который реализован с помощью Ruby/Java/PHP. Все три технологии являют особую ценность для каждого веб-разработчика и раскрывают организацию работы интернет-приложения.   REST API API – Application Programming Interface – это набор правил, при соблюдении которых программы могут взаимодействовать между собой. Разработчик создает API на сервере и позволяет клиентам обращаться к нему. Красноречивым примером будет API от Google Maps, позволяющий веб-разработчику указать на гугл карте расположение определенного здания (точку выдачи интернет-заказов, офис компании и т. д.) на своем сайте. Таким образом, программист лишает себя необходимости самому разрабатывать собственную карту и пользуется уже готовым решением от Google, используя набор правил от API. REST – Representational State Transfer – это архитектурный подход, регламентирующий, как именно API должны выглядеть. Этому набору правил должен следовать девелопер при создании собственного приложения. Простыми словами, REST – это обычный запрос вида «клиент-сервер» с использованием HTTP-протокола. Фронтенд разработчику необходимо разбираться в REST API, поскольку эта технология используется везде, где необходимо работать с данными от сервера. Алгоритмы и структуры данных Понимание алгоритмов и структур данных — обязательные знания для любого программиста. К структурам данных относятся: стеки, очереди, связанные списки, графы и т. д. Изучив их, вы сможете управлять сложностью своих программ, делая их более доступными для понимания, а также разрабатывать высокопроизводительные программы, которые будут эффективно работать с памятью. Знание алгоритмов позволит вам создавать сложные конструкции для эффективного решения широкого спектра задач. Когда говорят об алгоритмах, обычно имеют ввиду алгоритмы сортировки и поиска: сортировки прямым включением, прямым выбором, слиянием, пирамидальная, прямой поиск, бинарный, индексно-последовательный и другие.  Важно разбираться и в нотации Big O, которая описывает сложность каждого алгоритма. Данный механизм помогает определить, при каких условиях выгоднее использовать тот или иной алгоритм. Отметим, что как новичку, вам не надо нырять вглубь этих тем. Будет достаточно теоретического владения, а также умения написать несколько алгоритмов. В разработке сайтов это не очень нужно, но практически ни одно собеседование не обходит стороной тему алгоритмов и структур данных.  Фреймворки JavaScript Это инструменты, с помощью которых создаются динамические веб/мобильные/десктопные приложения на языке JavaScript. Они ускоряют разработку веб-приложений и предусматривают четко структурированную организацию кода, повышая его качество и чистоту. Самыми популярными фреймворками для фронтенд-разработки можно назвать Vue.js, Angular, а также библиотеку React. Каждый из них предназначен для решения своего спектра задач и имеет различную степень сложности: Vue.js - самый легкий (но и с наименьшим сообществом), React - средней сложности, Angular - высокой сложности. Стоит сконцентрироваться на глубоком изучении одного фреймворка, но в то же время очень рекомендуется знать особенности и сферу применения всех вышеперечисленных технологий. Какой фреймворк все же выбрать? Мнения на этот счет расходятся. Инструментарий выбирается индивидуально под проект и трудно предугадать, какие задачи вам нужно будет решать. На данный момент наибольшей популярностью пользуется React, поскольку он сбалансирован как с точки зрения сложности, так и с точки зрения богатства функционала. К тому же, наибольшее количество вакансий припадает именно на этот фреймворк, а значит, что он интересен не только разработчикам, но и бизнесу. Каждый из фреймворков доступен для изучения на платформе ITVDN. По направлению Angular: Angular 11.0 Базовый; Angular Углубленный. По направлению React: React Базовый; React Углубленный. По направлению Vue.js: Vue.js Стартовый; Vue.js Базовый. Инструменты управления состоянием программы (State Management) Большие веб-приложения постоянно растут в сложности, а потому хранить данные, которые могут использоваться в разных местах становится все сложнее. Для решения этой проблемы были придуманы отдельные библиотеки, идущие параллельно с фреймворками — они служат для управления глобальным хранилищем данных всего веб-приложения и называются менеджерами состояний. Их применение уже стало стандартом во FrontEnd разработке. Для девелоперов, которые используют Vue.js, это VueX, для React-разработчиков — Redux и MobX, для Angular-девов — RxJS, NgRx. TypeScript Кроссплатформенный строго типизированный язык, который является расширением JavaScript. Строгая типизация позволяет уменьшить количество потенциальных ошибок в исходном коде, написанном на TypeScript. Также, этот язык реализует концепции, которые близки объектно-ориентированным языкам, таким как C#, Java и подобным. TypeScript повышает скорость и удобство написания сложных комплексных программ, вследствии чего их становится легче поддерживать, масштабировать и тестировать. В вакансиях этот язык встречается довольно часто вне зависимости от целевого фреймворка. При этом для Angular разработчиков знание TypeScript обязательно. Из-за высокой востребованности данного языка мы поместили его в список обязательных для изучения. Основы Figma Figma является популярным дизайнерским инструментом для создания интерактивных прототипов приложений или веб-сайтов. С его помощью дизайнер создает дизайн, который фронтенд разработчик затем верстает с помощью HTML/CSS и добавляет интерактивность при участии JavaScript. Знание основ фигмы позволяет девелоперу удобно взаимодействовать с дизайнерским прототипом: быстро узнавать необходимые размеры тех или иных элементов, производить экспорт картинок и иконок и т. д. Дополнительный плюс – возможность использования браузерной версии Figma. Английский язык План обучения Front-end должен обязательно включать в себя подтягивание English. Знание английского является одним из основных требований к фронтенду-разработчику, поскольку большое количество полезной информации находится именно на англоязычных сайтах. Уровень чтения технической документации будет достаточным для комфортного использования иностранных ресурсов (Intermediate). Однако чем выше уровень вашего английского, тем больше шансов получить job-оффер. Инглиш используется не только при работе с документацией, но и при коммуникации с командой и клиентами. Среди программистов бытует выражение: «Какой язык программирования следует учить первым? Учи английский!». Поэтому не пожалейте ваше время и хорошенько подтяните английский – вполне вероятно, что именно хорошее владение им станет решающим при рассмотрении вашей кандидатуры. Необязательные технологии Паттерны проектирования JavaScript Это лучшие практики, которые описывают типичные способы решения распространенных задач, возникающих в ходе проектирования программного обеспечения. Знание шаблонов проектирования позволяет писать более чистый, понятный и читаемый код, а также избегать “изобретения велосипеда”. Более того, владение паттернами показывает вашу грамотность, как разработчика, и повышает вашу ценность в глазах работодателя, что поможет выделиться на фоне конкурентов. Чтобы вы могли хорошенько разобраться с темой шаблонов в JavaScript, рекомендуем курс “JavaScript Шаблоны”. Линтеры Инструменты, позволяющие анализировать качество JavaScript-кода в соответствии со стандартом ES. Они встраиваются в среду разработки и указывают на наличие несоответствий стандарту кода, если таковые имеются. Данный механизм полезен как для единоличной разработки (для самоконтроля), так и для командной, когда каждый разработчик должен следовать тем же языковым конструкциям, чтобы на выходе получить единый, целостный проект. Один из самых известных линтеров – ESLint. Это необязательный инструмент для работодателя, но он очень полезен для веб-разработчиков из-за его возможностей по контролю качества кода. Тестирование Jest и Cypress — главные инструменты модульного тестирования, которое возлагается на плечи разработчика. Но что это такое? Unit тестирование (оно же — модульное тестирование) — процесс, который заключается в создании тестов для проверки работоспособности отдельных участков написанного программистом кода. Выполняется непосредственно автором кода. Какую пользу приносит Unit тестирование: существенное сокращение багов в коде; упрощение рефакторинга кода; обеспечение качественного отделения интерфейса от реализации; лучшее понимание написанного кода; возможность протестировать мельчайшие участки кода. Все инструменты учить не надо — достаточно научиться управляться лишь с одним из них. Webpack Мощный сборщик модулей, позволяющий скомпилировать в один файл несколько разных модулей. Используется для работы над объемными проектами. Успешно используется как во фронтенд-разработке, так и при создании бэкенда. Gulp / Grunt Системы сборки, автоматизирующие рутинные задачи разработчиков: минификацию кода, оптимизацию изображений, тестирование, анализ качества кода и прочее. Подходят для разработки небольших проектов. SOLID принципы SOLID – это принципы, являющиеся своеобразным ремнем безопасности для тех, кто работает в соответствии с парадигмами объектно-ориентированного программирования. Они были созданы с целью обезопасить ООП-ориентированного разработчика от непонятного, запутанного спагетти-кода, который также очень трудно поддерживать. SOLID – это акроним, состоящий из пяти букв, которые кодируют пять основных принципов: S – Single Responsibility Principle (принцип единой ответственности) O – Open-Closed Principle (принцип открытости-закрытости) L – Liskov Substitution Principle (принцип подстановки Барбары Лисков) I – Interface Segregation Principle (принцип разделения интерфейса) D – Dependency Inversion Principle (принцип инверсии зависимостей) Владение этими принципами позволяет грамотно проектировать и разрабатывать такие программные системы, которые с большой вероятностью смогут длительное время развиваться, расширяться и поддерживаться. Хотя SOLID принципы написаны преимущественно для ООП, их идеи вполне применимы и к современной JavaScript-разработке, что поможет фронтенд разработчикам создавать более чистый и лаконичный код. Зарплаты FrontEnd разработчиков Обратимся к статистике, опубликованной на странице украинского IT-сообщества DOU, а именно – к зарплатной аналитике украинских разработчиков за лето 2023 года. Медианная зарплата всех украинских разработчиков, принявших участие в опросе (а их 6605), следующая: Intern Software Engineer – 450 USD; Junior Software Engineer – 1000 USD; Middle Software Engineer – 2600 USD; Senior Software Engineer – 4900 USD. Теперь взглянем на медианную ЗП FrontEnd разработчиков: Junior – 950 USD; Middle – 2500 USD; Senior – 4750 USD. Выходит, медиана фронтендщиков на всех тайтлах немного меньше, чем общая медиана, однако разрыв весьма небольшой. Давайте взглянем, сколько зарабатывает этот специалист за пределами Украины. В этом нам помогут результаты опроса Stack Overflow Developer Survey 2023 (свыше 90 000 респондентов из США, Индии, Германии, Канады, Великобритании и других стран). Эта цифра – 59 970 USD в год (примерно 5000 USD на месяц). При этом будет важно сказать, что фронтендщики из данного опроса имеют в среднем 8 лет профессионального кодинга – и это один из самых низких показателей. Ниже них располагаются лишь Data Scientist / ML Specialist – 7.9 лет опыта, а также студенты, которые имеют чуть больше 2.8 лет опыта в профессиональном создании кода. Итоги FrontEnd разработчик – достаточно универсальный боец в мире веб-разработки. Он должен уметь и верстать, и создавать логику работы клиентской части, и понимать работу серверной части веб-приложения. Для овладения таким большим инструментарием стоит запастись временем, терпением и упорством. Указанные в статье средства разработки сайтов также имеют аналоги, поскольку для решения различных задач подходят разные веб-инструменты. Однако мы выбрали самые популярные и эффективные из них. Если у вас есть желание осваивать эту профессию и вы хотите самостоятельно “пощупать”, чем занимается фронтенд разработчик, на ITVDN создана комплексная программа обучения в формате видео обучения, которая включает 44 видео курса. Чтобы получить доступ ко всем видео курсам на ITVDN сроком на 12 месяцев с возможностью скачивать на ваше устройство видеоматериалы (что очень актуально во время блэкаутов), советуем рассмотреть пакет подписки «Премиум Plus». Если вам больше нравится живое онлайн обучение с тренером и в группе с другими учениками, предлагаем формат Live Online для изучения специальности FrontEnd (Angular или React направления). Желаем вам успехов в достижении ваших целей! Оставайтесь с ITVDN!
Что должен знать C#/.NET разработчик в 2023 году

Автор: Влад Сверчков

Язык программирования C# ООП Алгоритмы и структуры данных Шаблоны проектирования Базы данных SQL Entity Framework Core LINQ ASP.NET ASP.NET Core Git Основы FrontEnd Английский язык Итоги На сегодняшний день .NET программист может применять свои навыки в различных сферах разработки программных продуктов: создание веб-приложений и веб-сервисов создание настольных приложений; создание облачных сервисов; создание игр; создание мобильных приложений. Когда говорят о .NET разработчиках, имеют в виду программистов, которые пишут на языке С#. Этот язык программирования, как и вся платформа .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-стека не во всех вакансиях является обязательным, но во многих они отмечены. Соответственно, владение основами этих инструментов дает большой бонус при рассмотрении резюме или на собеседовании. Английский язык Традиционное требование для каждого разработчика в IT. Знания языка на уровне чтения технической документации и комментирования кода вполне достаточно. Но чем выше уровень английского у вас будет, тем больше шансов получить job-офер, поскольку английский может использоваться как для коммуникации с другими членами команды, так и для взаимодействия с заказчиком. Подведем итоги В статье были перечислены основные технологии, которыми должен обладать каждый .NET-программист. Поскольку веб-разработка ныне является очень популярной и востребованной, мы также добавили в список .NET средства, которые используются во время создания соответствующих серверных веб-решений. Однако среди всех пунктов наиболее важным является знание языка С# - каждый “дотнетчик” обязан им владеть на высоком уровне.   В свою очередь, перечень можно дополнить такими технологиями, как TDD (разработка через тестирование), WCF, Unit тестирование, рефакторинг приложений. Их знание не является обязательным для джунов, однако выгодно выделяет вас среди других кандидатов и показывает, что вы уделяете особое внимание чистоте, опрятности и читабельности кода.  Также вы можете ознакомиться со списком всех необходимых для изучения технологий на странице специальности .NET Developer. Комплексная программа обучения состоит из 55 видео курсов общей продолжительностью более 410 часов. Перейдя на страницу, вы найдете много полезной информации как для новичка, так и разработчика, желающего углубить и дополнить свои знания. Если вас больше интересует живое онлайн обучение в группе с ментором и другими студентами, рекомендуем обратить внимание на формат Live Online обучения. Регулярные занятия в Zoom, выполнение и проверка д/з, разработка курсовых проектов, общение и поддержка в телеграм-группе с ментором и одногруппниками – это и многое другое способствует максимально качественному и быстрому овладению специальностью .NET Developer на ITVDN. Полезные ресурсы для изучения C# и .NET вы найдете в нашем вебинаре «Обзор полезных ресурсов для изучения C# и .NET с нуля». ITVDN желает вам достижения ваших целей и готов быть надежным помощником в вопросах обучения программированию. Оставайтесь с ITVDN!
Какую IT-специальность выбрать в 2023 году?

Автор: Влад Сверчков

Кратко об украинском IT в 2022 году. Украинский IT-специалист в 2022 году. Аналитические обзоры современного IT. Какие IT-специальности будут востребованы в 2023 году? Кому нужно хорошее владение английским языком? Выводы. Приветствуем наших читателей! Украинское IT демонстрирует отличную прочность и адаптивность даже в условиях полномасштабной войны. Да, многим айтишникам пришлось осуществить вынужденное переселение в другие регионы страны или даже в другие государства, чтобы находиться в относительной безопасности. Однако большинство сохранило за собой работу и доходы, позволяющие не только обеспечивать себя и свои семьи необходимыми условиями и средствами для жизни, но еще и активно донатить на армию и разнообразные волонтёрские проекты – средний донат по состоянию на июнь 2022 года составил $270 в месяц (в соответствии с результатами опроса на DOU). Стабильность и хорошие условия труда, возможность удалённой работы из любой точки мира, где есть интернет, большое количество IT-направлений на выбор – эти и другие особенности стали очень востребованными у многих украинцев. Появилось большое количество желающих попробовать свои силы в IT и вместе с тем созрели главные вопросы: “С чего начать? Какую IT специальность выбрать в 2023 году?”. А ведь действительно – как грамотно оценить ситуацию на рынке IT и выбрать себе специальность, которая будет: нравиться; иметь хорошие карьерные перспективы; обеспечивать удовлетворительные условия труда и ЗП? Будем разбираться с этим в данной статье. Мы рассмотрим самые главные специальности, которые будут оптимальными для новичков и будут пользоваться спросом на рынке IT ещё долгое время.   Кратко об украинском IT в 2022 году Не успел мир оправиться от кризиса, вызванного коронавирусом, как сразу появился новый в результате полномасштабного вторжения россии на территорию Украины. Согласно аналитике Opendatabot – украинского ресурса, который предоставляет доступ к государственным данным и анализирует открытые данные, – IT-услуги стали единственным направлением бизнеса, которое показало прирост в 2022 году по сравнению с 2021 – на 27% (январь-май 2022). А второе исследование показывает, что за 8 месяцев этого года произошел рост экспорта IT-услуг на 16% по сравнению с соответствующим периодом в 2021 году. В августе 48% всех экспортируемых Украиной услуг принадлежали именно IT-отрасли. Красноречива и статистика Джина – украинского ресурса по анонимному поиску вакансий. Спрос на 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. У новичков сезон настоящих "голодных игр". Тем не менее, IT-сектор демонстрирует хорошую стойкость и положительную динамику, несмотря на проблемы, принесенные войной. Это перспективная отрасль, которая не только дает массу преимуществ украинцам-айтишникам, но и хорошо подпитывает экономику. Следует не забывать, что такая успеваемость во многом зависит от зарубежных заказчиков, ведь большинство украинских IT-продуктов и IT-услуг экспортируются за границу – примерно 95% (по материалам “Экономической правды”).   Украинский IT-специалист в 2022 году Обратимся также и к свежему портрету украинского IT-специалиста от 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%). При этом IT Украины насчитывает большое количество начинающих. 6% опрошенных находятся в IT менее года, 59% трудоустроены в IT 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 должны всегда демонстрировать уверенность, знать все о своей компании и своем продукте, действовать так, чтобы не запятнать их имидж, быстро находить ответы на вопросы клиентов и выполнять другие профессиональные обязанности.   Аналитические обзоры современного IT Воспользуемся аналитикой всемирно известного ресурса Stack Overflow, которым пользуется абсолютно каждый программист современности. Сравним последние на сегодняшний день опросы, проведенные данным ресурсом – Stack Overflow Developer Survey 2022 (70 000 респондентов) и Stack Overflow Developer Survey 2021 (80 000 респондентов). В опросах принимали участие специалисты из различных уголков мира. Из иллюстрации выше видно, что наиболее популярными направлениями, в которых работают IT-специалисты, являются: Электронная коммерция – интернет-магазины, финансовые и торговые сделки и транзакции, проведенные через интернет и т. д. Финансовые технологии – оптимизация и усовершенствование финансовых услуг, оказываемых тем или иным бизнесом, компанией, корпорацией и т. д. Разработка мобильных приложений под Android и iOS. Медиасфера. Медицинские технологии – улучшение качества и безопасности медицинских услуг различного характера. Разработка игр под различные платформы. Далее следуют направления, которые в этом году не пересекли 5-процентный барьер. Из изображения выше видно, что наибольшее количество специалистов относится к следующим IT-направлениям: 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++ – это современные корифеи от мира IT-разработки. Непростые в изучении языки, которые имеют очень большие возможности и мощности. Незаменимы при создании ресурсоемкого ПО, игр, микроконтроллеров и т. д. 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-профессий.   Какие IT-специальности будут востребованы в 2023 году? FrontEnd Developer FrontEnd – это ответвление в разработке, направленное на создание клиентской стороны веб-приложений, веб-сайтов или другого ПО и информационных систем: внешний вид приложений, пользовательская логика, анимации – все, с чем пользователь может взаимодействовать напрямую. Когда говорят о FrontEnd или BackEnd, чаще всего подразумевают именно Web стихию. На самом же деле, фронтенд и бэкенд бывают не только в вебе, но и в десктопных и мобильных приложениях. Однако исторически сложилось так, что под этими двумя терминами понимают именно веб составляющую, поэтому и в этой статье мы будем придерживаться этих традиций. Согласно анализу Stack Overflow Developer Survey 2022 и 2021 годов, а также анализу индексов TIOBE и PYPL, ядро ​​фронтенда – HTML, CSS и JavaScript – до сих пор востребовано и используется многими разработчиками. Кроме того, ресурсы поиска работы в IT содержат большое количество вакансий FrontEnd Developer. Например, на уже упомянутом Djinni на момент написания статьи было опубликовано 1399 предложений по направлению JavaScript / FrontEnd, тогда как на C# / .NET, Java и Python специальности приходилось 678, 884 и 514 вакансий соответственно. IT-индустрия имеет большой спрос на FrontEnd разработчиков, поэтому нет никаких сомнений, что это направление будет актуально и в 2023 году. BackEnd Developer (Python, Java, C#, PHP) BackEnd – это ответвление в разработке, направленное на создание серверной стороны веб-приложений или веб-сайтов: взаимодействие приложения с БД, работа с данными пользователя, серверная и вычислительная логика, программно-аппаратная часть сервиса – всё, что скрыто от пользователя и находится “под капотом”. На вооружении BackEnd девелопер держит один из популярных языков программирования: C# / PHP / Python / Java / JavaScript (Node.js) / Ruby и т. д. Также данный специалист знает множество сопутствующих технологий и инструментов серверной разработки. BackEnd развивается параллельно с FrontEnd-ом, айти-рынок имеет много соответствующих предложений с хорошими условиями труда, поэтому перспективность изучения данного направления очевидна. Full Stack Developer Синтез двух вышеописанных специальностей. Не секрет, что любой работодатель ценит сотрудника, который может успешно выполнять несколько задач, совмещая в себе обязанности других специалистов. Так же и в IT – особенно ценны разработчики, которые способны своими знаниями и навыками покрыть несколько профессий, а в данном случае – FrontEnd и BackEnd. Подробный разбор специальности Full Stack Developer вы найдете в нашей статье. Там мы объясняем специфику данного направления, необходимые для изучения технологии, преимущества и недостатки профессии, а также даем важные советы по овладению этой профессией. Mobile Developer (Android / iOS) Мобильная разработка является относительно молодой, поскольку зародилась чуть более двух десятков лет назад. За это время она претерпела многие изменения и сегодня возглавляет одну из главных позиций в IT. При этом наработками специалистов этой сферы пользуется почти каждый человек — это не только смартфоны и планшеты, но и фитнес-браслеты, смарт часы, электронные книги, составляющие «интернета вещей» и другие гаджеты. Наиболее популярные языки мобильной разработки: Java / Kotlin под Android разработку и Objective-C / Swift под iOS. DevOps инженер DevOps – это методология, являющаяся симбиозом разработки (Development) и системного администрирования (Operations). Её главная цель – увеличение частоты выпуска релизов. Специалисты данного направления также должны разбираться в использовании облачных технологий и обладать навыками автоматизации инфраструктуры. DevOps Engineers выбирают Python в качестве основного языка программирования за его лаконичность, многозадачность и поддержку большого разнообразия специальных пакетов, созданных для повышения эффективности этого языка программирования, а также за другие преимущества. Python в основном используют вместе с командной оболочкой Bash с целью упростить процессы развертывания ПО и автоматизировать различные задачи системного администрирования (написание скриптов). Фактически, DevOps специалисты – это программисты-сисадмины. Бизнес очень любит специалистов-мультитулов, поэтому эта профессия очень актуальна, престижна и одна из самых высокооплачиваемых в IT. 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 и другими инструментами сбора и обработки информации аналитик должен быть хорошо знаком, чтобы эффективно выполнять возложенные на него задачи.   Кому нужно хорошее владение английским языком? Согласно уже упомянутому портрету IT-специалиста, высокий уровень английского у тех, кто общается с иностранными заказчиками и клиентами или занимается продвижением продуктов: Customer Success Manager, Project Manager, высшее звено руководства, специалисты по продажам, архитекторы, техлиды. Также английский на уровне Upper Intermediate+ у технических писателей и специалистов по работе с данными (Data Scientists, аналитики). Разработчикам будет достаточно уровня Intermediate, чтобы читать техническую документацию без лишних проблем. Однако желательно иметь Upper Intermediate и выше, поскольку это не только способствует более комфортному взаимодействию с англоязычными ресурсами и иностранными коллегами, но и подталкивает вас вверх по карьерной лестнице, а также положительно влияет на ЗП (согласно зарплатному опросу от DOU за лето 2022).   Выводы В этой статье мы постарались дать исчерпывающий ответ на вопрос: "Какую IT-специальность следует выбрать в 2023 году?" В наших суждениях и выводах мы опирались на такие авторитетные ресурсы (международные и украинские), как Stack Overflow, Djinni, DOU, индексы TIOBE и PYPL. Также была проведена корреляция с прошлым годом, чтобы продемонстрировать стабильность рынка IT-профессий и показать, что вложенные вами силы и время в обучение не будут напрасными, а выбранное вами направление никуда не исчезнет. На лидерских позициях, как и в прошлые годы, остаются Web, Enterprise и Mobile разработка. Тестировщики также востребованы, хотя и имеют чрезвычайно большую конкуренцию среди начинающих, поскольку это один из самых легких способов попасть в IT, а с началом полномасштабного вторжения интерес к IT возрос так же стремительно, как и во время ковида. Высокая востребованность также и у DevOps инженеров при относительно невысокой конкуренции – 3.7 отзыва на одну вакансию в сентябре 2022 года (всего вакансий – 243, источник). Безусловно, полномасштабная война наложила свой отпечаток на IT в виде миграции бизнесов и айтишников на запад Украины, резкого притока новичков, увеличения "дистанционных" вакансий и проблем с электроэнергией из-за обстрелов россиянами нашей энергетической инфраструктуры, но зарплаты остались высокими – где-то даже повысились, – да и в целом IT стоит и обеспечивает как айтишников, так и нашу армию. Так зачем же ждать подходящего момента? Берите момент и делайте его подходящим! 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 разработчиком и получить оффер от IT-компании Старт карьеры в Java разработке. Личный опыт, актуальные тренды и подводные камни Что такое DevOps и другие полезные вебинары – в нашем каталоге. Надеемся, что наша статья была полезна для вас. С радостью примем любые пожелания и с пониманием и уважением – любые замечания. Выбирайте IT-профессию вашей мечты и пусть ничто не останавливает вас на пути к ней! Изучайте IT-специальности на ITVDN!
Notification success