Результати пошуку за запитом: обучение c*
10 крутих англомовних подкастів для програмістів
Автор: EnglishDom
80% всей информации в интернете, которая хоть немного касается программирования, написана на английском. И самые свежие новости и тренды всегда сначала выходят на английском, а уже потом переводятся на остальные языки.
Хотите всегда быть в курсе? Онлайн-школа английского языка EnglishDom собрала для вас топ-10 англоязычных подкастов для программистов. Максимум полезной информации, интересные темы и обсуждение нюансов и секретов, о которых многие не знают.
Итак, не будем долго рассусоливать. Поехали!
Code Newbie
Частота публикаций: 1 эпизод в неделю
Запущен в 2014 году
Требуемый уровень английского: advanced
Замечательный подкаст для тех, кто интересуется программированием, но не знает, с чего начать. В этом подкасте большое количество интервью с различными известными программистами и их историями успеха. Подкаст больше общеобразовательный, чем узконаправленный. Его будет интересно послушать и тем, кто просто интересуется, но не собирается заниматься программированием профессионально.
Каждый эпизод знакомит новичка с разными особенностями разработки и анализа данных. Здесь вы найдете огромное количество советов, которые помогут определиться со сферами дальнейшего изучения языков программирования.
Правда, английский здесь довольно сложный. Интервью дают носители языка, которые говорят быстро и не всегда внятно. Так что придется напрячься, чтобы понять абсолютно все.
Software Engineering Daily
Частота публикаций: 1 эпизод в день
Запущен в 2015 году
Требуемый уровень английского: intermediate
Просто must have для разработчиков программного обеспечения. Здесь просто огромное количество полезной информации как для новичков, так и для Senior-разработчиков.
В среднем подкасты длятся полчаса-час и очень детально раскрывают один или несколько нюансов разработки. Кроме подкастов на сайте есть большое количество специализированных статей.
Английский у лекторов почти сценический. Фразы проговариваются очень четко, темп вполне нормальный. Есть, конечно, большое количество специфической лексики, но даже для Junior’ов все вполне понятно.
Talk Python To Me
Частота публикаций: 1 эпизод в неделю
Запущен в 2015 году
Требуемый уровень английского: upper-intermediate
Если вы изучаете Python, то этот подкаст снабдит вас огромным количеством полезной информации.
Здесь вы узнаете, как правильно изучать Python, чтобы не упустить ничего важного, как использовать все нюансы архитектуры. Это огромная база знаний с более чем 260 часами записей на тему Python. Особенно рекомендуем подкаст разработчикам с уровнем Middle.
По лексике английского никаких сложностей, но нужно привыкнуть к речи лекторов. Они говорят довольно бегло, так что здесь потребуется высокий навык восприятия речи на слух.
The Cynical Developer
Частота публикаций: 2 эпизода в месяц
Запущен в 2016 году
Требуемый уровень английского: advanced
«Циничный разработчик» — это отличный подкаст, где о разработке рассказывают с юмором и иронией.
Он будет полезен не только кодерам, но также менеджерам проектов и тимлидам. Очень много информации о комплексном процессе разработки, ведению проектов, работе в команде. Также авторы рассказывают о популярных тенденциях и трендах в разработке.
Что касается английского, то здесь очень беглый язык. Некоторые слова и фразы произносятся слитно, редуцируются отдельные звуки, темп речи очень высокий. Полезной информации просто куча, но чтобы ее получить, нужен уровень английского не ниже advanced.
Coding Blocks
Частота публикаций: 2 эпизода в месяц
Запущен в 2013 году
Требуемый уровень английского: intermediate-advanced
Еще один хороший подкаст для разработчиков ПО. Широченный архив полезных материалов буквально по всем темам: от анализа big data до всех тонкостей разработки приложений на iOS и Android.
Также есть подкасты на темы личной эффективности программиста, обзоры полезных каналов, конференций и материалов для обучения. Очень удобная система тегов, по которой можно найти все эпизоды на интересующую вас тему.
Английский здесь несложный, но все зависит от конкретного лектора. Одни говорят предельно понятно, а другие — бегло и смазано. Поэтому нужно смотреть по каждому конкретному эпизоду.
Front End Happy Hour
Частота публикаций: 3 эпизода в месяц
Запущен в 2016 году
Требуемый уровень английского: intermediate
А вот и полезности для фронтенд-разработчиков подъехали. Авторы обсуждают новые инструменты, полезные для верстальщика, делятся новыми библиотеками, рассматривают распространенные проблемы и их решения.
Тонны информации для веб-разработчиков. Кстати, недавно они отпраздновали свой 100-й выпуск, с чем их и поздравляем.
Речь авторов довольно быстрая, но у них очень четкая артикуляция, поэтому в целом подкаст воспринимается очень хорошо.
Test and Code
Частота публикаций: 1 эпизод в неделю
Запущен в 2015 году
Требуемый уровень английского: upper-intermediate
Авторы цепляют большое количество тем, среди которых тестирование, разработка программного обеспечения, программирование на Python и много связанных вопросов и проблем. Базы данных, автоматизация, постоянная интеграция, пирамида тестирования, TDD — и это только небольшая часть информации, которую вы сможете получить.
Очень годный подкаст, который особенно хорошо зайдет Python-разработчикам. Но иногда бывает ужасный звук, который жутко мешает восприятию. Лексика английского довольно специализирована, поэтому для абсолютных новичков не подойдет.
Learn to Code With Me
Частота публикаций: 2 эпизода в месяц
Запущен в 2016 году
Требуемый уровень английского: intermediate
Еще один подкаст для новичков. Авторы канала реально позаботились о них, потому что здесь собрана уйма действительно полезных материалов для Junior’ов в разных отраслях программирования.
Будет очень полезным для самоучек, которые изучают программирование или веб-дизайн самостоятельно.
Язык подкаста довольно понятный, но самое главное — вместе с каждым выпуском есть ключевые моменты в текстовом формате, которые можно проработать после или прямо во время прослушивания. Так можно ознакомиться с основной лексикой и терминологией.
Fragmented
Частота публикаций: 1 эпизод в день
Запущен в 2015 году
Требуемый уровень английского: intermediate
Отличный подкаст для разработчиков мобильных приложений на Android, в котором обсуждают возможности и особенности самой платформы, ее инструментов, паттернов и практик, с помощью которых можно превратить хорошее приложение в идеальное.
Авторы сами активно занимаются разработкой приложений, поэтому обсуждают только те моменты, которые успели оценить на практике.
Большинство лекторов говорят с акцентом, что усложняет понимание материала. НО лексика вполне понятная и если привыкнуть к акцентам, можно почерпнуть много полезного.
Soft Skills Engineering
Частота публикаций: 1 эпизод в неделю
Запущен в 2016 году
Требуемый уровень английского: intermediate
Этот подкаст больше не про разработку или отдельные инструменты программиста. В нем рассказывают, как развиваться, чтобы быть грамотным специалистом. Тут много полезной информации про методики обучения программированию, организацию времени и рабочего пространства.
Рекомендуем этот подкаст всем разработчикам, вне зависимости от сферы и уровня знаний.
Английский подкаста просто отличный. Несложный, вполне себе понятный и хорошо артикулированный. Так что можно его попробовать понять даже с уровнем pre-intermediate, но лучше все же intermediate.
Конечно, еще есть большое количество полезных подкастов, которые мы здесь не упомянули. Выбирайте, какие нравятся вам больше всего, и слушайте с удовольствием. Учите английский вместе с EnglishDom и пусть код всегда будет идеальным.
Гарний код: чому він такий важливий?
Автор: Редакция ITVDN
Красивый код — не просто абстрактное понятие, а вполне реально существующая вещь в среде программистов. Научившись писать красивый код, вы значительно сэкономите своё (и чужое) время, а ваши программы станут работать быстрее и стабильнее. Как научиться писать красивый код и каким нюансам стоит уделить внимание — узнаете в этой статье.
Почему так важно писать красивый код?
Код — штука тонкая, в которой эстетика и полезность тесно связаны, как в архитектуре. Полезный, но не эстетично выглядящий код будет трудночитаемым и в результате менее эффективным, чем мог бы быть. Каким образом?
Трудночитаемый код сложно корректировать и тестировать возможные решения, поэтому он отнимает больше времени на корректировку, чем обычный код.
Чистый код создан для людей, поэтому другие программисты, которые будут читать его, будут вам очень благодарны за красивый код.
Благодаря чистому коду поиски одного бага могут сократиться с нескольких часов до нескольких минут, а программа будет работать стабильнее и не выдавать сюрпризов.
Однако овладеть мастерством написания чистого кода с наскока не получится — до момента написания первого элегантного кода, вызывающего восхищение коллег, вы напишите ещё десяток не самых красивых кодов, от которых будут плеваться.
Впрочем, если вы немного измените мышление и овладеете несколькими навыками, то успехи у вас будут значительно лучше, и к написанию красивого кода вы придёте значительно быстрее. Для начала определимся, как вообще научиться писать красивый код, и какие знания нужны для этого, а затем — с навыками, которые необходимо будет развить.
Как научиться писать чистый код?
Прежде чем приступить к написанию красивого кода, запомните два основных принципа, которые вытекают из прошлой части статьи:
Красивый код должен быть легко читаемым и понятным для других программистов.
Красивый код должен работать, а если он не работает — легко фикситься.
Для того, чтобы соответствовал этим требованиям, он должен быть коротким, а функции — линейными. Таким образом, при написании чистого кода вы должны ориентироваться на эти принципы. И постоянно практиковаться: пишите код каждый день, и каждый раз пытайтесь написать наиболее лучший вариант. Со временем у вас начнёт получаться.
Не забудьте почитать книгу Clean Code под авторством Роберта Мартина. Эта книга — настольная библия для программистов, которые стремятся к совершенному коду. На 900 страницах расписано всё, что следует знать программисту, который стремится к чистому коду.
Во время чтения книги можете также зайти на Хабру или другие сайты с полезными для прогеров статьями. Так вы сможете узнать ещё больше о чистом коде и позже закрепить свои знания практикой.
Также вы можете пройти обучение по видео курсам ITVDN. Авторы видео курсов – сертифицированные разработчики. Они помогут вам научиться писать хороший код.
Нужно ли изучать алгоритмы и паттерны?
Изучение алгоритмов — дело ваше, но запоминание паттернов является обязательным для программистов, как изучение таблицы умножения для детей. Без паттернов найти решение типичной проблемы будет трудно, поскольку не будет готового решения.
Впрочем, это не значит, что вы всегда должны использовать паттерны в каждой непонятной ситуации, иногда они не смогут помочь и вам придётся продумывать самостоятельное нестандартное решение, или обращаться за помощью к старшим коллегам. Но само изучение паттернов существенно упростит вам жизнь.
Для желающих начать изучение паттернов рекомендуем великолепный курс Александра Шевчука.
Изучение алгоритмов — чуть более глубокая сторона программирования. Сам алгоритм — это записанные в определённой последовательности команды, которые должны решить стоящую перед ними задачу. Если вы решили взяться за их изучение, то вам нужно не только знать сами алгоритмы, но и уметь их выводить, иначе от знаний не будет толку.
Если вы решили изучать алгоритмы, то рекомендуем обратиться к школьному курсу информатики и статьям для программистов, где подробно рассказывают об алгоритмах. Если в статье вы встретили упоминания как минимум трёх основных видов алгоритмов (линейный, разветвлённый и циклический) — то вы на верном пути.
Хорошим вариантом для старта будет статья Ворожцова А. В. «Что такое алгоритм?», затем знания можно углубить изучив курс Алгоритмы и структуры данных.
С общими требованиями к красивому коду и необходимыми знаниями определились, теперь перейдём к навыкам.
Какие полезные привычки необходимо завести?
Для написания чистого кода необходимо развить следующие навыки:
1) Уделять внимание форматированию кода и стараться делать его как можно более линейным. Это сделает код более понятным и элегантным. Не стоит гнаться только за производительностью, если не хотите получить знаменитый «индусский код»:
2) Короткие методы и функции. Чем короче — тем понятнее, чем понятнее — тем лучше. Слишком длинные функции запутают любого программиста и он потратит кучу времени, пытаясь разобраться в функциях.
Запомните золотое правило: одна функция — одно действие.
3) Удобные названия для функций. Это кажется нелепым, но придумать действительно хорошее название для функции — та ещё задачка, по сложности сравнимая с придумыванием имени для вашего персонажа в MMORPG. Совет, который может помочь, — при наименовании классов используйте существительные, а для методов используйте глаголы. Это сильно упростит понимание кода. Для примера можете взглянуть на два кода ниже и сказать, какой из них выглядит более понятно: первый (до переделывания) или второй (после).
До
После
Как видно на примере, в первом варианте код не так плох, но из-за непонятных названий труден для понимания. Во втором варианте он разбит на более мелкие блоки, а правильно придуманные названия («sendTOmAILsERVER, Client, Message) помогают понять его с первого взгляда.
4) Грамотная обработка ошибок. Даже если вы по каким-либо причинам не можете написать короткие функции и красивый код, вы всё ещё можете исправить ошибки. Ни одна программа не застрахована от сбоев, поэтому создать идеально работающую прогу не получится. Однако вы можете воспользоваться методом try-catch-finally.
Сущность этого метода заключается в эдакой «страховке» от ошибок. При использовании этого метода, вы должны будете создать 3 блока: try, catch и finally. Затем, при запуске команды, она будет выполняться в блоке Try.
Если что-то пойдёт не так, то она попадёт в блок catch, где вы сможете поймать ошибку и исправить её. Если же ошибки не было, или вы её исправили, то команда продолжит выполнение в блоке Finally, где и будет завершена.
Такой метод является универсальным для поиска и исправления ошибок и его может написать даже джун. Это, кстати, будет лучше и элегантнее, чем грузить код лишними функциями и превращать его в лапшу.
Написание красивого кода — дело непростое и требующее практики, но освоив эту методику, вы станете ещё на один шаг ближе к совершенству и завоюете больше уважения от коллег, а также сможете считаться уже более опытным программистом.
Если вы хотите овладеть искусством написания красивого кода, изучайте программирование на ITVDN. Опытные наставники разложат всё по полочкам и после окончания обучения вы научитесь писать красивый чистый код. При условии конечно, если будете прикладывать и свои усилия.
Яку мову програмування варто вивчити першою?
Автор: Редакция ITVDN
Введение
«Новичку в сфере IT стоит знать одно простое правило программирования — это написание очень тонких инструкций для глупой, но послушной машины».
Среди массы различных языков программирования новичку в IT очень сложно выбрать направления для дальнейшего развития, потому что каждый язык занимает определенную ячейку. Наиболее популярные, языки в "современном программировании", это: Java, Python, Objective-C, PHP, C, C++, C#, JavaScript и Ruby. Форумы и специализированные сайты переполнены тематикой «Что выбрать?» и «Куда развиваться?». И мы нашли оптимальную схему выбора ветки развития юным программистам.
С чего начать изучение программирования?
Итак, с чего же стоит начать? В первую очередь ответьте предельно честно самому себе на главный вопрос: «Почему Вы хотите начать изучать программирование?». Ответов много, а предпосылок еще больше, но если провести анализ, то мотивов стать разработчиками несколько.
Деньги
Часто, наиболее распространенной причиной изучения программирования служит мнение о том, что программисты много зарабатывают. Да, это действительно так. Зарплаты хороших программистов могут заставить позавидовать даже некоторых менеджеров высшего звена. Но это достигается годами упорного труда, само мотивации и углубления в современные информационные технологии. Кроме того, дабы получать по-настоящему достойную зарплату, стоит сразу нацеливается на работу в хорошей крупной компании. Или же иметь идею на миллион и открывать свой start-up.
Перспективы
Казалось бы, относительно недавно стоило появится первом персональному компьютеру – и нате Вам! – программисты стали одними из наиболее востребованных работниками современного рынка. Действительно, наш век – это век информационных технологий, быстроразвивающийся и динамический. Сейчас спрос на специалистов IT-сферы растет как никогда, и вряд ли стоит ждать на него спад. Все больше и больше современных компаний готовы предложить «теплое местечко». Сколько их – Google, Microsoft, EPAM прочие.
Динамичность
Каждому человеку присуща толика любознательности. Но есть люди, у которых страсть изучать что-то новое просто в крови! Что же, в таком случае программирование – это именно то, что вам нужно. На данный момент существуют десятки различных направлений: мобильная разработка, настольные приложения, веб-программирование, игры, сколько их… А уж сколько для этих направлений было разработано технологий и программ – не счесть. Работая в сфере IT вы можете быть уверенным, что никогда не дадите себе заскучать!
Итак, раз мы разобрались с нашими мотивами и разложили все по «полочкам», приступим же непосредственно к выбору первого языка программирования!
Какой язык программирования выбрать?
Теперь, самый важный вопрос: так какой же язык программирования стоит выбрать новичку в сфере IT? Прежде всего, все зависит от того, что именно вы желаете изучать.
Вот график наиболее востребованных направлений области информационных технологий:
Как мы можем видеть, список внушительный. Но что из этого вас прельщает больше всего? Давайте попробуем разобраться.
Я бы хотел разрабатывать сайты
С этим направлением не все так просто. Есть Front-End разработка сайтов – это все, что вы видите на экране. Создание веб-страниц, программ для них, стилей и много чего прочего. В таком случае вам стоит обратить свое внимание на JavaScript и HTML & CSS. А есть Back-End – разработка непосредственно программ для серверов – тех алгоритмов, которые, собственно говоря, и будут управлять страницами, сайтом и прочим. Здесь все несколько сложнее, так как сразу же появляется хороший выбор из Python, Java, C#, и PHP. Каждый из этих языков обладает как серией достоинств, так и набором откровенных недостатков. В качестве этакого старта советуем рассмотреть Python.
Настольные приложения для домашних ПК
Тут бесспорными лидерами выступают такие популярные языки, как Java и C#. С одной стороны, обучение Java несколько проще и быстрее, чем C#, с другой, набор возможностей, которыми может похвалится C#, на порядок выше.
Работа с базами данных
Ну, тут все однозначно: следует начинать с SQL! Администрирование, работа с реляционными базами данными и прочее, что так необходимо в современно IT-мире. Здесь можно рассмотреть вступление в язык запросов.
Игры-игры-игры!
Геймерами не стают, ими рождаются. Наслаждаетесь современными продуктами игровой индустрии и сами бы хотели привнести что-то в этой увлекательный виртуальный мир? Тогда, определенно, вам стоит обратить свое внимание на С++.
Здесь можно посмотреть статистику языков программирования по популярности:
Статистика поиска соискателей по языкам и платформам:
Какой самый простой язык программирования?
Если начинать изучать, что начинать с простого, не так ли? Итак, вот небольшой даждест «для чайников» с чего, собственно, стоит начать обучение.
JavaScript
Один из наиболее легких языков программирования для веб-разработки. Динамическое наполнение web HTML страниц, целый комплекс технологий семейства React.JS, Node.JS и прочих, обилие библиотек и обучающих материалов + плюс, огромное комьюнити. Отличный старт для новичка в области IT! Вот вступление в видео-курс по JavaScript.
Python
Очень легкий и приятный в освоении интерпретируемый язык универсального назначения. Обширное количество довольных пользователей, огромное количество вакансий на мировом рынке, поддержка большинством сред разработки и наличие специализированных сред разработки. Ознакомится с данным языком можно здесь.
PHP
PHP – или Hypertext Preprocessor – достаточно мощный и, в то же время, легкий в освоении язык программирования для разработки серверной части веб-сайта. Имеет богатую историю и может похвалится хорошей базой различных библиотек. Ознакомится с ним вы можете здесь.
Самый сложный язык программирования
Быть может, вы уже имели определенный опыт, связанный с IT, и желаете попробовать себя в более «продвинутой» песочнице? Или вы не из тех, кто хочет изучать что-то простое, а сразу брать «быка за рога»? Что же, на этот случай мы можем предложить следующее:
Java
Отменный компилируемый язык программирования для решения целого спектра задач – от написания настольных приложений до создания серверных программ для веб-сайтов. Имеет мощную аудиторию поклонников, богатую историю, корни которой простираются в самые 90-стые и множество библиотек для практически любой задачи. Начать изучение этого языка можно здесь.
С#
Язык программирования от компании Microsoft универсального назначения. Java показалась простой? Тогда C# для вас! Имеет практически идентичный с Java синтаксис, но отличается расширенном набором функций и производимых операций. WPF для оконных приложений, ASP.NET для разработки сайтов и прочие высококачественные фреймворки для всех типов задач. Что может быть лучше, чем инструмент на все случаи жизни? Приступить к работе с этим языком можно здесь.
C++
Легенда программирования. Универсальный язык программирования, возможности которого воистину не имеют ограничений. Низкоуровневая работа с памятью, разработка систем рендеринга для игр, отличная производительность и неисчерпаемый набор библиотек… С++ - это наиболее быстрый и оптимизированный язык программирования из всех существующих. Но его изучение потребует особенной усидчивости и трудолюбия. Сумеете ли вы с ним совладать?
Языки программирования, какой самый оплачиваемый?
Один из самых востребованных и высокооплачиваемых на рынке языков программирования - это Java. Очень популярен на всех платформах, ОС и устройствах, благодаря своей кроссплатформенности. Используется в Gmail, Minecraft, большинстве Android приложений и в корпоративных приложениях.
С - это «лингва франка» среди всех языков программирования. Один из самых старых и самых широко используемых языков в мире. Отлично подходит для системного и аппаратного программирования. Он используется в ОС и оборудовании.
С# был создан на платформе Microsoft, но совсем недавно вышел на open source. С# - это популярный выбор предприятий для разработки разнообразных web-сайтов и Windows приложений, используя .NET framework. С# используют для создания web сайтов при помощи web фреймворка от Microsoft – ASP.NET. Своим синтаксисом и функционалом похож на Java. Используется в корпоративных и Windows приложениях.
Objective-C является основным языком, используемый Apple для Mac OS X и iOS. Его стоит изучать, если Вы собираетесь разрабатывать только под OS X и iOS. Стоит задуматься над изучением Swift, как о следующем языке. Objective-C используется в большинстве iOS приложений и в части Mac OS X.
C++ - это более сложная версия языка программирования С, с существенно расширенным набором возможностей. Широко используется при разработке игр, промышленных и высокопроизводительных приложений. Изучать С++ - все равно что изучать, как производить, собирать и водить машину. Этот язык не рекомендуется для самостоятельного изучения и требует наличие ментора. Он широко используется в ОС, оборудовании и браузерах.
На самом деле, абсолютно не важно, с чего именно Вы начнете Ваш путь в сфере IT. Нужно знать хотя бы несколько основных языков и технологий, чтобы познать все аспекты программирования. А самое главное - начать!
Яку ІТ-спеціальність обрати у 2023 році?
Автор: Влад Сверчков
Коротко про українське ІТ в 2022 році.
Український ІТ-спеціаліст у 2022 році.
Аналітичні огляди сучасного ІТ.
Які ІТ-спеціальності будуть затребувані у 2023 році?
Кому потрібне гарне володіння англійською мовою?
Висновки.
Вітаємо наших читачів!
Українське ІТ демонструє чудові міцність та адаптивність навіть в умовах повномасштабної війни. Так, багатьом айтішникам довелося здійснити вимушене переселення в інші регіони країни, ба навіть інші держави, аби знаходитися у відносній безпеці. Однак більшість зберегла за собою роботу і доходи, які дозволяють не тільки забезпечувати себе та свої родини необхідними умовами та засобами для життя, але ще й активно донатити на армію та різноманітні волонтерські проєкти – середній донат станом на червень 2022 року становив $270 на місяць (відповідно до результатів опитування на DOU).
Стабільність та гарні умови праці, можливість віддаленої роботи з будь-якої точки світу, де є інтернет, велика кількість ІТ-напрямків на вибір – ці та інші особливості стали вельми затребуваними у багатьох українців. З’явилася велика кількість бажаючих спробувати свої сили в ІТ, і піднялися одні з найголовніших питань: “З чого почати? Яку ІТ спеціальність обрати у 2023 році?”.
А й дійсно – як грамотно оцінити ситуацію на ринку ІТ та обрати собі спеціальність, яка:
буде подобатися;
матиме гарні кар’єрні перспективи;
буде забезпечувати задовільні умови праці та ЗП?
Будемо розбиратися з цим у даній статті. Ми розглянемо найголовніші спеціальності, які будуть оптимальними для новачків та матимуть попит на ринку ІТ ще довгий час.
Коротко про українське ІТ в 2022 році
Не встиг світ оговтатися від кризи, спричиненої коронавірусом, як одразу з’явилася нова внаслідок повномасштабного вторгнення росії на територію України.
Відповідно до аналітики Opendatabot – українського ресурсу, що надає доступ до державних даних та аналізує відкриті дані, – ІТ-послуги стали єдиним напрямком бізнесу, який показав приріст у 2022 році в порівнянні з 2021 – аж на 27% (січень-травень 2022). А друге дослідження показує, що за 8 місяців даного року відбулося зростання експорту ІТ-послуг на 16% у порівнянні з відповідним періодом у 2021 році. У серпні 48% усіх послуг, що експортувалися Україною, належали саме ІТ-галузі.
Красномовною є і статистика Джину – українського ресурсу з анонімного пошуку вакансій.
Попит на Djinni перевищує кількість пропозицій майже втричі. У вересні – 18 779 відкритих вакансій і 52 405 кандидатів.
З посту в телеграм-каналі Джину легко бачити, що у серпні 2022 було понад 250 тисяч відгуків на вакансії – це при тому, що з серпня 2021 по лютий 2022 кількість відгуків кожного місяця коливалася в межах від 77 до майже 111 тисяч.
Ще один серпневий пост демонструє залежність середньої кількості відгуків на вакансію від вимоги до досвіду кандидата. Таким чином:
кандидати без досвіду – 75.25 відгуків на вакансію;
1 рік досвіду – 31.36 відгуків;
2 роки – 12.39;
3 роки – 5.76;
5 років – 4.1.
У новачків сезон справжніх “голодних ігор”.
Тим не менш, ІТ-сектор демонструє гарну стійкість та позитивну динаміку попри негаразди війни. Це перспективна галузь, яка не тільки дає масу переваг українцям-айтішникам, але й гарно підживлює економіку.
Варто не забувати, що така успішність багато в чому залежить від закордонних замовників, адже переважна більшість українських ІТ-продуктів та ІТ-послуг експортуються за кордон – приблизно 95% (за матеріалами “Економічної правди”).
Український ІТ-спеціаліст у 2022 році
Звернемося також і до свіжого портрету українського ІТ-спеціаліста від DOU за 2022 рік (15 135 респондентів).
Найбільша кількість чоловіків відповідно до напрямків:
DevOps, SRE (97.3%);
системне адміністрування (95.8%);
CTO, найвищі керівні посади (92.9%);
розроблення ПЗ, Software Engineering (91.3%);
розроблення ігор (89.5%);
Data Science (80.3%);
технічна служба підтримки (70%);
тестування (65.8%);
менеджерські посади (64.9%).
Найбільша кількість жінок у HR/Recruiting (90%), маркетингу (64%) та технічному письменництві (62%). За ними йдуть дизайн (45.6%), сфера продажів (44%) та аналітика (42.5%).
Відповідно до картинки вище, найбільша кількість опитаних українських айтішників працює у якості розробників. Далі йде професія тестувальника, менеджера, HR/рекрутера і т. д.
З картинки вище видно, що найчастіше респонденти мають тайтл Middle (1-5 років досвіду) та Senior (3-9 років). Розробники рівня Junior складають 16.2% (до 2-х років досвіду), а інтерни – всього 1.3% (без досвіду).
Найбільша кількість початківців (Junior та Intern) серед:
HTML Coder (45%);
Data Science (27%);
Game Developers (25%);
аналітики (24%);
тестувальники (23%).
При цьому ІТ України нараховує багато початківців. 6% опитаних знаходяться в ІТ менше року, 59% працевлаштовані в ІТ 5 років або менше, а 71% мають до 6-ти років досвіду за своєю поточною спеціалізацією.
87% респондентів мають вищу освіту, а 8% з них – навіть дві. Ще 5% є студентами і тільки на шляху до отримання диплому. Науковим ступенем володіє близько 2% опитаних. Найчастіше це ті, хто розробляє ПЗ під різну електроніку (Hardware Engineers – 9%), Data Science спеціалісти (7%) і представники найвищих керівних посад – CTO/CEO (6%).
Щодо англійської: в цьому році 53% респондентів оцінили свій рівень як Upper Intermediate (вище середнього) або Advanced (поглиблений). 33% визначають свій рівень як Intermediate (середній).
На зображенні бачимо, що найбільш цікава робота у керівників найвищої ланки (а хто б сумнівався?), спеціалістів у сфері маркетингу та HR/рекрутерів (критерії “цікава” та “дуже цікава”).
Найбільш невдоволеними виявилися сисадміни, Support та спеціалісти з продажів. Фахівці перших двох напрямків спеціалізуються на вирішенні технічних проблем, тому часті смикання під час роботи, необхідність швидко все полагодити та афілійовані із цими процесами стреси для них не є рідкістю. Ще можна додати відносно невисоку медіанну ЗП – $1000-$1045 – трохи вища за Junior розробника. А невдоволення спеціалістів із продажів можна пов’язати з великою відповідальністю і наслідками частого спілкування з різними клієнтами: Sales Manager-и повинні завжди демонструвати впевненість, знати все про свою компанію та свій продукт, діяти так, аби не заплямувати їх імідж, швидко знаходити відповіді на запитання клієнтів та виконувати інші професійні обов’язки.
Аналітичні огляди сучасного ІТ
Скористаємося аналітикою всесвітньовідомого ресурсу Stack Overflow, яким користується абсолютно кожний програміст сучасності. Порівняємо останні на сьогоднішній день опитування, проведені даним ресурсом – Stack Overflow Developer Survey 2022 (70 000 респондентів) та Stack Overflow Developer Survey 2021 (80 000 респондентів). В опитуваннях брали участь фахівці із різних куточків світу.
З ілюстрації вище видно, що найпопулярнішими напрямками, в яких працюють ІТ-спеціалісти, є:
Електронна комерція – інтернет-магазини, фінансові та торгові угоди і транзакції, проведені через інтернет тощо.
Фінансові технології – оптимізація та вдосконалення фінансових послуг, які надає той чи інший бізнес, компанія, корпорація і т. д.
Розроблення мобільних додатків під Android та iOS.
Медіа сфера.
Медичні технології – поліпшення якості та безпеки медичних послуг різноманітного характеру.
Розроблення ігор під різноманітні платформи.
Далі йдуть напрямки, що цьогоріч не перетнули 5-відсотковий бар’єр.
Із зображення вище бачимо, що найбільша кількість спеціалістів належить до наступних ІТ-напрямків:
FullStack – розроблення серверної + клієнтської частини вебдодатків;
BackEnd – серверна сторона вебдодатків;
FrontEnd – клієнтська частина вебдодатків;
Desktop or enterprise – розроблення настільних додатків (Desktop-додатків), розроблення додатків для потреб бізнесу (Enterprise).
На наступних сходинках йдуть:
розробники мобільних додатків – як для Android, так і для iOS;
DevOps спеціалісти – синхронізують всі етапи розроблення ПЗ: від створення коду до тестування та релізу;
інженери з хмарних технологій – займаються хмарною (cloud) інфраструктурою;
адміністратори баз даних;
системні адміністратори.
Переглянемо перші позиції цього ж рейтингу, але за 2021 рік.
Спостерігаємо аналогічну картину: перші позиції зайняті напрямками FullStack, BackEnd, FrontEnd, Desktop, Enterprise, Mobile Development, DevOps.
Звернемося і до рейтингів мов програмування. Опитування Stack Overflow 2022:
Опитування Stack Overflow 2021:
Перше місце в обох рейтингах займає мова програмування JavaScript, яка широко застосовується у web девелопменті (і у FrontEnd, і в BackEnd царинах). Далі йдуть мови верстання – HTML & CSS – інструменти, які застосовуються під час створення візуальної складової вебсайтів та вебдодатків (FrontEnd). На третє місце цьогоріч потрапляє SQL – мова запитів для роботи з реляційними базами даних (БД), яку обов’язково використовують розробники серверної частини вебдодатків, адміністратори БД та інші спеціалісти.
Python, Java та C# – дуже затребувані серед роботодавців та популярні серед розробників мови програмування, які вирізняються широким спектром застосування, зрозумілістю синтаксису, відносною простотою. Вони потрапляють у кожен ТОП-10 різноманітних мовних опитувань вже протягом багатьох років; їхня перспективність та актуальність обіцяє утримуватися ще довгий час. Особливою популярністю користується Python, оскільки його синтаксис максимально простий та лаконічний.
TypeScript – це та сама JavaScript, тільки з декількома нововведеннями та строгою типізацією для збільшення читаності коду і зменшення кількості ймовірних помилок. Використовується у веброзробці разом із відповідними фреймворками та платформами.
Node.js – платформа, яка розширює можливості та область застосування JavaScript (бекенд, настільні додатки, мікроконтролери).
Bash/Shell/PowerShell – інструменти, які найчастіше стають у нагоді системним адміністраторам та DevOps інженерам, бо дозволяють автоматизувати різноманітні рутинні процеси, завдяки чому вони і отримали високі позиції в рейтингу.
C/C++ – це сучасні корифеї від світу ІТ-розроблення. Непрості у вивченні мови, які при цьому мають дуже великі можливості та потужності. Незамінні під час створення ресурсоємного ПЗ, ігор, мікроконтролерів тощо.
PHP – класична мова серверного розроблення. Незважаючи на її вік, досі популярна та затребувана.
Розглянемо також і рейтинг мов відповідно до індексу TIOBE. Він щомісячно оцінює популярність мов програмування та вважається респектабельним джерелом – маса аналітиків посилається на нього в ході своїх досліджень.
Рейтинг TIOBE відрізняється від опитування Stack Overflow – це пов’язано з різницею опорних точок цих аналітик. Стек оверфлоу спирається на опитування, а статистика TIOBE ґрунтується на кількості кваліфікованих інженерів у всьому світі, а також на кількості курсів та сторонніх постачальників. Такі відомі пошукові рушіїі та сервіси, як Google, Yahoo!, Wikipedia, Amazon, Bing, YouTube та Baidu використовуються у розрахуванні рейтингів. Варто зазначити, що TIOBE не вказує, яка мова є найкращою, або якою написано найбільшу кількість коду. Він може бути використаний, аби виявити, чи відповідають ваші навички запитам сучасності, або, щоб прийняти стратегічне рішення щодо того, яку мову слід використати для створення нового додатку або програмної системи. Більше інформації стосовно методів визначення індексу за посиланням.
Рейтинг мов відповідно до індексу PYPL має наступний вигляд:
PYPL створений за рахунок аналізу того, наскільки часто люди шукають в пошуковій системі Google туторіали (інструкції) з мов програмування. Простіше кажучи, чим більше гуглять туторіали до тієї чи іншої мови, тим вища її позиція в рейтингу.
Розглянемо список популярних вебтехнологій відповідно до опитування Stack Overflow за 2022-й та 2021-й роки відповідно:
Як видно з діаграм, головні позиції належать FrontEnd бібліотекам та фреймворкам – jQuery, React.js, Vue.js, Angular, BackEnd-технологіям (Node.js, Express) а також технологіям .NET платформи – ASP.NET та ASP.NET Core. Після них йдуть фреймворки Django і Flask (Python).
Список інших фреймворків, бібліотек та інструментів розроблення:
Наразі перше місце посідає платформа .NET від компанії Майкрософт. Потім йдуть технології напрямку Python: NumPy (дає доступ до низки математичних конструкцій), Pandas (маніпулювання даними та їх аналіз). За ними – фреймворк Spring (Java), який призначений для веброзроблення. Менш популярними є інструменти Python для роботи з даними та ML – TensorFlow, Scikit-learn, а також платформи для мобільного розроблення – Flutter та React Native.
Отримані відомості вже дають достатньо уявлення про те, що зараз відбувається на ринку IT-послуг і дозволяють робити певні прогнози щодо затребуваності IT-професій.
Які ІТ-спеціальності будуть затребувані у 2023 році?
FrontEnd Developer
FrontEnd – це відгалуження у розробленні, спрямоване на створення клієнтської сторони вебдодатків, вебсайтів або іншого ПЗ та інформаційних систем: зовнішній вигляд застосунків, користувацька логіка, анімації – все, із чим користувач може взаємодіяти напряму.
Коли кажуть про FrontEnd або BackEnd, найчастіше мають на увазі саме Web стихію. Насправді ж, фронтенд і бекенд бувають не лише у вебі але й у десктопних та мобільних застосунках. Однак історично склалося, що під цими двома термінами розуміють саме веб складову, тому і в цій статті ми будемо притримуватися цих традицій.
Відповідно до аналізу Stack Overflow Developer Survey 2022 та 2021 років, а також аналізу індексів TIOBE та PYPL, ядро фронтенду – HTML, CSS та JavaScript – досі є затребуваним і використовується багатьма розробниками.
Крім того, ресурси з пошуку роботи в ІТ містять велику кількість вакансій FrontEnd Developer. Наприклад, на вже згаданому Djinni на момент написання статті було опубліковано 1399 пропозицій за напрямком JavaScript / FrontEnd, тоді як на C# / .NET, Java та Python спеціальності припадало 678, 884 та 514 вакансій відповідно.
ІТ-індустрія має великий попит на FrontEnd розробників, тому немає жодних сумнівів, що цей напрямок буде актуальним і у 2023-му році.
BackEnd Developer (Python, Java, C#, PHP)
BackEnd – це відгалуження у розробленні, спрямоване на створення серверної сторони вебдодатків або вебсайтів: взаємодія застосунку з БД, робота з даними користувача, серверна та обчислювальна логіка, програмно-апаратна частина сервісу – все, що приховано від користувача і знаходиться “під капотом”.
На озброєнні BackEnd девелопер тримає одну з популярних мов програмування: C# / PHP / Python / Java / JavaScript (Node.js) / Ruby тощо. Також даний спеціаліст знає безліч супутніх технологій та інструментів серверного розроблення.
BackEnd розвивається паралельно з FrontEnd-ом, айті-ринок має багато відповідних пропозицій з гарними умовами праці, тому перспективність вивчення даного напрямку є очевидною.
Full Stack Developer
Синтез двох вищеописаних спеціальностей. Не секрет, що будь-який працедавець цінує співробітника, який може успішно виконувати декілька задач, поєднуючи в собі обов’язки інших спеціалістів. Так само і в ІТ – особливо цінними є розробники, які здатні своїми знаннями та навичками покрити декілька професій, а в даному випадку – FrontEnd та BackEnd.
Детальний розбір спеціальності Full Stack Developer ви знайдете в нашій статті. В ній ми пояснюємо специфіку даного напрямку, необхідні для вивчення технології, переваги та недоліки професії, а також даємо важливі поради щодо опанування цього фаху.
Mobile Developer (Android / iOS)
Мобільне розроблення є відносно молодим, оскільки зародилося трохи більше двох десятків років тому. За цей час воно зазнало багатьох змін і сьогодні очолює одну з головних позицій в ІТ. При цьому напрацюваннями фахівців цієї сфери користується майже кожна людина — це не лише смартфони та планшети, а й фітнес-браслети, смарт годинники, електронні книги, складові “інтернету речей” та інші гаджети.
Найбільш популярні мови мобільного розроблення: Java / Kotlin під Android розроблення та Objective-C / Swift під iOS.
DevOps інженер
DevOps – це методологія, котра є симбіозом розроблення (Development) та системного адміністрування (Operations). Її головна мета – збільшення частоти випуску релізів. Фахівці даного напрямку також повинні розбиратися у використанні хмарних технологій та мати навички автоматизації інфраструктури.
DevOps Engineers обирають Python у якості основної мови програмування за її лаконічність, багатозадачність та підтримку великого різноманіття спеціальних пакетів, створених для підвищення ефективності цієї мови програмування, а також за інші переваги. Python в основному використовують разом із командною оболонкою Bash, маючи на меті спростити процеси розгортання ПЗ та автоматизувати різні завдання системного адміністрування (написання скриптів).
Фактично, DevOps спеціалісти – це програмісти-сисадміни. Бізнес дуже любить фахівців-мультитулів, тому ця професія дуже актуальна, престижна та є однією з найбільш високооплачуваних в ІТ.
CyberSecurity
IT-індустрія нарощує свої об’єми та потужності, а отже, зростає затребуваність і тих, хто має її захищати. На це і направлена діяльність фахівця з кібербезпеки. Цей напрямок має декілька відгалужень, і ви можете як захищати інфраструктуру від проникнення та вибудовувати надійну оборону (напрямок "захисту"), так і виявляти вразливості шляхом різноманітних хакерських методів – такі фахівці називаються пентестерами (напрямок "атаки").
Можете зануритися в аналіз та ризики (посада Security Analyst та Risk Compliance Specialist відповідно), займатися захистом інфраструктури та пошуком комп'ютерних вірусів (Malware Researcher), а також випробувати себе в багатьох інших «кібербезпекових» спеціальностях – ця сфера дає багато можливостей для реалізації людям із сильними аналітичними здібностями, уважністю, розсудливістю та стресостійкістю.
Database Administrator, DBA
Комфортна життєдіяльність у сучасному світі дуже залежить від баз даних: картотека пацієнтів лікарні, облік студентів та їх успішності, облікові записи користувачів різних сервісів, банківські рахунки, різноманітний контент в інтернеті тощо. Існує реальна потреба у спеціалістах, які вміють грамотно обслуговувати ці БД і супутню інфраструктуру.
Крім цього DBA бере на себе такі функції, як вироблення вимог до баз даних, їх проєктування, реалізація, ефективне використання та підтримка цілісності БД, включаючи керування обліковими записами користувачів БД та захист від несанкціонованого доступу.
Тут важливо володіти мовою запитів SQL, однією із СУБД (PostgreSQL, наприклад), а також різними технологіями та прийомами системного адміністрування.
PM (Project Manager)
Сучасне IT має гострий дефіцит гарних, талановитих проєктних менеджерів – управлінців, котрі керують IT-проєктом загалом. Часто це колишні програмісти чи тестувальники. Однак щоб стати проджект менеджером, необов'язково мати айтішне минуле.
Ключові обов’язки PM: проєктування та розстановка пріоритетів, планування виконання завдань, контроль, комунікації, а також оперативне вирішення проблем всередині проєкту. Найголовніше завдання – зробити так, щоб ідея замовника була реалізована в межах заданих термінів з урахуванням обмеженості ресурсів.
Звичайно, даний перелік обов'язків виконаний широкими мазками. Насправді PM-и часто працюють понаднормово і їхній робочий стан можна описати як "білка в колесі". Але важко щось протиставити післясмаку успішно виконаного проєкту.
Нюанс цієї професії полягає в тому, що посада PM-а передбачає значну конкуренцію. Відповідно до даних, у вересні 2022-го року на сайті DOU на одну вакансію PM-а відгукнулося більше 34-х кандидатів (всього 184 вакансії). Більша кількість відгуків лише у FrontEnd, HR, QA та Legal (право). Тому, щоб отримати бажаний job-офер, необхідно мати не тільки досвід і знання, а й гарні організаторські здібності, а також інші важливі для цієї професії особистісні якості.
QA Engineer, тестувальник
Фахівець із забезпечення якості, він же – тестувальник. І хоча QA та тестувальник – це трішки не одне і те ж саме, але ми прирівняємо їх один до одного, бо це не грає значної ролі в даній статті.
Сфера відповідальності тестувальника – виявлення несправностей, багів ПЗ, допущених розробниками. Затребуваність цих фахівців важко оскаржити, адже кожний програмний продукт перед появою може пройти не одну ітерацію тестування, де виявляється вагома кількість багів. Виходить, без QA ми мали б дуже недопрацьоване ПЗ, а виробник — провал продукту на ринку, падіння репутації та, ймовірно, навіть банкротство.
Тестувальників ділять на два види – Manual QA Engineer та Automation QA Engineer. Перші виконують всю роботу вручну, а другі використовують інструменти автоматизації, у тому числі мови програмування (наприклад Java, Python), що підвищує цінність такого співробітника, і, відповідно, його зарплату. Конкуренція за місце тестувальника в українських реаліях надзвичайно висока, тому для отримання першого job-оферу потрібно буде докласти багато зусиль.
Data Scientist
Вчений-експерт, головними завданнями якого є вилучення з великого масиву даних корисної інформації, яка потім може використовуватися в різних сферах; в основному, це бізнес та наука.
Даний фахівець повинен мати чудове аналітичне мислення, володіти математичним апаратом (включаючи мат. статистику та мат. моделювання), знати програмування (Python, R) та бази даних (як реляційні, так і нереляційні). З початку 2010-х років професія Data Scientist вважається однією з найбільш привабливих, високооплачуваних та перспективних в IT.
Data Analyst
Якщо Data Scientist орієнтується на предиктивну аналітику, то Data Analyst працює з інформацією постфактум. У цього спеціаліста менш технічна роль — він працює зі вже готовими даними, а саме: проводить дескриптивний аналіз, інтерпретує та візуалізує результати, а також презентує звіт своїм замовникам.
При цьому з БД, мовами Python і SQL та іншими інструментами збору та оброблення інформації аналітик також має бути гарно знайомий, аби ефективно виконувати покладені на нього задачі.
Кому потрібне гарне володіння англійською мовою?
Відповідно до вже згаданого портрета ІТ-спеціаліста, високий рівень англійської у тих, хто спілкується з іноземними замовниками та клієнтами або займається просуванням продуктів: Customer Success Manager, Project Manager, найвища ланка керівництва, спеціалісти з продажів, архітектори, техліди.
Також англійська на рівні Upper Intermediate+ у технічних письменників та спеціалістів з роботи з даними (Data Scientists, аналітики).
Розробникам буде достатньо рівня Intermediate, аби читати технічну документацію без зайвих проблем. Однак бажано мати Upper Intermediate та вище, оскільки це не тільки сприяє більш комфортній взаємодії з англомовними ресурсами та іноземними колегами, але й підштовхує вас вгору кар’єрними сходами і, звичайно ж, позитивно впливає на ЗП (відповідно до зарплатного опитування від DOU за літо 2022 року).
Висновки
У цій статті ми постаралися дати вичерпну відповідь на запитання: “Яку IT-спеціальність варто обрати у 2023 році?”. У наших судженнях та висновках ми спиралися на такі авторитетні ресурси (міжнародні та українські), як Stack Overflow, Djinni, DOU, індекси TIOBE та PYPL. Також була проведена кореляція з минулим роком, аби продемонструвати стабільність ринку ІТ-професій та показати, що вкладені вами сили та час у навчання не будуть марними, а обраний вами напрямок нікуди не зникне.
На лідерських позиціях, як і в минулі роки, залишаються Web, Enterprise та Mobile розроблення. Тестувальники також затребувані, хоча і мають надзвичайно велику конкуренцію серед початківців, оскільки це один із найлегших способів потрапити в ІТ, а з початком повномасштабного вторгнення інтерес до ІТ зріс так само стрімко, як і під час ковіду.
Висока затребуваність також і у DevOps інженерів при відносно невисокій конкуренції – 3.7 відгуки на одну вакансію у вересні 2022 року (всього вакансій – 243, джерело).
Звичайно, повномасштабна війна наклала свій відбиток на ІТ у вигляді міграції бізнесів та айтішників на захід України, різкого притоку новачків, збільшення “дистанційних” вакансій та проблем з електроенергією через обстріли росіянами нашої енергетичної інфраструктури, але зарплати залишилися високими – десь навіть підвищилися, – та й в цілому ІТ стоїть і забезпечує як айтішників, так і нашу армію.
То ж навіщо чекати відповідного моменту? Беріть момент та робіть його відповідним! ITVDN – це освітня платформа для онлайн навчання програмуванню та інформаційним технологіям.
Наш портал налічує понад 230 відео курсів та має власні програми навчання за 15 найпопулярнішими IT-професіями, серед яких:
Верстальник сайтів
FrontEnd Developer
Java Developer
Python Developer
C# / .NET Developer
Android Developer
Unity / Game Developer
PHP Developer
та інші.
Формат навчання – записані відео курси, за якими можна навчатися у будь-який зручний час. Таким чином, ви зможете опанувати IT-професію, не виходячи з дому. З усіма спеціальностями можна детально ознайомитись, перейшовши на сторінку спеціальностей ITVDN.
Окрім записаних відео курсів наша освітня платформа надає навчання у новому форматі – Live Online. Він передбачає регулярні онлайн заняття з ментором у невеликих групах із 6-25 осіб, на яких пояснюється новий матеріал, обговорюються нюанси виконання практичних завдань, є перевірка ДЗ та чат для спілкування з одногрупниками, а також доступ до відео курсів ITVDN. У процесі навчання учні також розробляють власний курсовий проєкт, який наприкінці захищають та додають до свого портфоліо.
На даний момент Live Online навчання проводиться за чотирма найпопулярнішими IT-спеціальностями:
C#/.NET Developer
Frontend Developer
Java Developer
Python Developer
Якщо вас зацікавив формат Live Online, переходьте за посиланнями та ознайомтеся з подробицями пропозицій щодо кожної з чотирьох спеціальностей.
Також пропонуємо вашій увазі підбірку вебінарів, які допоможуть вам розібратися в головних моментах тієї чи іншої мови програмування або спеціальності:
Чи варто вчити Ruby у 2023 році?
Як стати Java розробником у 2023 році?
Яку мову програмування вчити в 2023 році?
Огляд корисних ресурсів для вивчення C# та .NET з нуля
Як швидко вивчити Python. Покроковий план з нуля
Як стати PHP розробником та отримати офер від ІТ-компанії
Старт кар’єри в Java розробці. Особистий досвід, актуальні тренди та підводні камені
Що таке DevOps
та інші корисні вебінари – у нашому каталозі.
Сподіваємось, що наша стаття була корисною для вас.З радістю приймемо будь-які побажання та з розумінням і повагою – будь-які зауваження. Обирайте IT-професію вашої мрії та нехай ніщо не зупиняє вас на шляху до неї!
Вивчайте ІТ-спеціальності на ITVDN!
10 фактів на користь C#
Автор: Corstiaan Hesselink
Изучай новый курс C# 8.0 Стартовый бесплатно! Акция до 29 апреля
«Разве стоит изучать C# сейчас?» - этот вопрос мне приходится слышать время от времени. Предположим, у вас есть друг – JavaScript-программист, искренне недоумевающий от причин изучать С#. Что же, похоже настало время развеять это недоумение.
Для начала давайте проясним, какие нужно иметь при себе «в запасе» технологии и фреймворки, которые вы можете использовать каждый день, – это хорошая практика. Технология, которая действительно «отмирает», как только появляется сколь-нибудь более современный аналог, не стоит нашего внимания. Выбор «подходящего» языка программирования, который мы будем использовать практически каждый день, всегда было стрессовым вопросом. И если у вас ещё нет окончательного ответа, возможно, эта статья позволит вам определиться.
Использование .net core под Linux означает, что вам никогда больше не нужно прикасаться к Windows-серверам (конечно же, если вам самим этого не захочется)!
Это не тот Microsoft, который был раньше
Для тех разработчиков, которые никогда не прикасались к продуктам Microsoft, использование их инструмента кажется синонимом к зацикленности на одной торговой марке, сумасшедшим проприетарным лицензиям, голубым футболкам и так далее. И, будем откровенными, не так давно все это так и обстояло. Сообществу .NET – разработчиков потребовалось немало времени, чтобы избавиться от этого. Не очень-то весело застрять в рамках Windows-машины и дорогих Windows-серверов, в то время как мир значительно больше этих рамок. В частности, это одна из причин, почему я оставил платформу .net и решил попробовать Ruby on Rails, но это уже другая история. Что подкупает, так это любовь современной Microsoft к открытым платформам.
Действительно, все ваши опасения касательно Microsoft могли бы быть правдой, если бы не open-source и одержимость мыслью о том, что коды инструментов разработки должны быть доступны каждому и каждый разработчик сам бы смог выбирать удобные ему инструменты разработки.
А учитывая то, что Microsoft собирается выкупить GitHub (уже выкупила – прим. переводчика), похоже, что компания все больше близится к своим непосредственным истокам – а именно к созданию инструментов для разработки.
Это все еще тот Microsoft, который был раньше
Не будем забывать о том, что Microsoft – это, в первую очередь, гигант программной индустрии. Что это значит? А это значит, что за С# стоит такая мощь, которая в любом случае будет поддерживать язык программирования «на плаву» в течение многих лет.
C# заслужил свое место
Согласно показаниям опроса, проводимом на Stack Overflow, C# занимает 8 место в списке наиболее популярных технологий. В 2017, правда, было четвертое. И 4 года подряд до этого так же четвертое. «Падение» с 4 позиции на 8 частично может быть объяснимо добавлением html и css к опросу 2018 года, а с популярностью этих технологий трудно соперничать. Так, в 2018 году около 34.4 процентов разработчиков в списке наиболее часто используемых инструментов называют С# - и с этими показателями, пожалуй, ни один из существующих языков не может посоперничать.
Нативные мобильные приложения
Используя Xamarin и C#, вы сможете создавать мобильные приложения для IOS и Android (ну и для Windows Phone, ясен пень). Почему? C 2016 года Xamarin стал частью Microsoft, которая к тому же дала доступ к исходному коду.
Разработка на Mac, деплой на Linux
А вот это прямая отсылка к .net core, так как .net core – это современный кроссплатформенный стандарт. .Net core работает в рамках Windows, Mac и Linux-сред – без никаких дополнительных танцев с бубном. Что это значит? Это значит, что вы можете разрабатывать на C# программы для практически всех существующих наиболее популярных операционных систем, конечно же! Microsoft предоставила отличный инструментарий для разработки под все вышеперечисленные технологии.
Быстрые и современные (веб) приложения на .net core
Net core и asp.net core – инновации в мире .net и asp.net стандарта-фреймворка. Когда-то монолитные, закрытые технологии теперь перестали быть такими! Разбор в деталях был бы вопросом уже другой статьи, но комбинация C# + (asp).net core является более чем достойной причиной начать изучать С#.
Visual Studio – не более чем опциональное решение
Разработка под С# значила использование Visual Studio. Некоторым разработчикам было все равно, некоторым это пришлось не по душе. Теперь же, если хотите, вы можете использовать любой удобный для вас текстовый редактор + командную строку для компиляции. Плюс, если что, уже на данный момент существует Visual Studio для Mac (хотя и пока-что не такая мощная, как для Windows).
Андерс Хейлсберг и Медс Торгерсен
Андерс Хейлсберг является создателем С#. Он работает на постоянной основе в Microsoft. Хейлсберг является одним из самых светлых ныне живущих умов в современной компьютерной индустрии. Но, поскольку на данный момент он переключился на TypeScript, программным менеджером C# стал Медс Торгерсен.
Адекватное асинхронное программирование
С использованием C# асинхронное программирование станет намного проще и безболезненнее: async-await на страже ваших нервных клеток! Вырезка из официальной документации: «Используя эти два ключевых слова, вы сможете использовать ресурсы .NET Framework, .NET Core или Windows Runtime для создания асинхронных методов так же просто, как и для создания синхронных».
К примеру, те же async-await в JavaScript были сделаны по примеру таки С#.
Надежное, составное, компилируемое
Конечно, тот факт, что C# - компилируемый, статически типизируемый язык программирования, не делает его особенным. Но стоит ли переходить на C# с таких динамически типизированных языков, как PHP, Python, Ruby и так далее, понимая, что для работы со строго типизированным кодом вам наверняка понадобится больше сноровки? Что же, возможно это так. Но, тем не менее, строго типизированный код позволяет работать со связями в коде, находить определения, проводить «безопасный» рефакторинг и так далее. В общем, применять множество тех вещей, которые в значительной мере упрощают процесс программирования.
Обратная сторона медали заключается в том, что каждый раз, как только вы хотите запустить свой C#-код, для начала вам необходимо его скомпилировать. Это может надежно «вырубить» некоторых разработчиков, привыкших работать в рамках динамически типизированных интерпретируемых языков программирования, так как им будет казаться, что постоянная предварительная компиляция замедляет процесс разработки приложения. Впрочем, разрабатывая более масштабное приложение, преимуществом такого подхода становятся возможности современных сред разработки – а именно отладка, рефакторинг или расширение кода
Как это может мне помочь?
Появление .net core открыло множество дверей для C# в частности и стандарта .net в целом. Итак, вы думаете, что С# «отмирает»? Спешим разубедить. Его будущее ярко и солнечно, а кроссплатформенность привлечет новое поколение разработчиков.
Автор перевода: Евгений Лукашук
Источник
HTML 5.2 is done, HTML 5.3 is coming
Автор: Charles McCathie Nevile
На сегодняшний день W3C уже выпустило релиз 5.2. Это второй пересмотр HTML 5, который идет сразу за HTML 5.1, увидевшего свет в прошлом году. В 2014 году мы выразили желание устраивать «ревизию» HTML каждый год. Что же, похоже, наше желание было услышано.
Эта статья представляет из себя что-то наподобие обновленного мануала о том, что такое HTML. В прошлом году мы серьезно пересмотрели спецификацию. Мы ввели некоторые новые фичи и убрали то, что на данный момент не является частью современной веб-платформы (или то, что никогда не получало широкой гласности). Как всегда, мы также исправили некоторые замеченные баги спецификации, убедившись, что материал точно соответствует современному изменчивому веб-миру.
Было внедрено множество различных фичей. Благодаря Payment Request API процесс ведения коммерции в вебе стал значительно проще и позволил снизить риски, связанные с возможными ошибками в виде багов или невнимательностью оператора. Новые функции защиты, такие как Content Security Policy, защищают пользователей более эффективно, в то время как работа, проделанная в ARIA, помогает разработчикам создавать качественный функционал веб-сайтов специально для людей с ограниченными возможностями.
HTML 5.2 делает проверенную систему плагинов устаревшей. Новые технологии или возможности, такие как виртуальная реальность или скоростная передача, теперь разрабатываются как часть веб-платформы. Подобный подход позволяет обеспечить лучший контроль за системой безопасности, часто снижая стоимость разработки, и позволяет больше обращать внимание на создание сервисов, нежели на выбор платформы.
Новая документация и исправление багов подняли HTML на новый уровень. Обозначение main – элемента было улучшено для поддержки современных паттернов дизайна, элемент style теперь может быть использован внутри блока body. Численные ограничения на код были упразднены, в то время как некоторые для обеспечения лучшей безопасности наоборот – усилены. Теперь браузеры предоставляют лучшую поддержку для интернациональных email-адресов и позволяют людям писать письма на тех языках, которые они используют в повседневной жизни.
И это только несколько красноречивых примеров касательно того, как W3C улучшила HTML, дабы отображать запросы современного веб-рынка. Также существует ещё много изменений, больших и маленьких, в этом обновлении.
Вместе с этим обновлением мы передаем привет некоторым членам нашей команды, таким как Стив Фолкнер и Тревис Ляйтред, выступивших редакторами HTML 5.0, Аррон Айхольц – разработчикам новой кодовой структуры HTML 5.1. И также Алексу Данилу. Их вклад был воистину важным, и их усилия послужили строительным фундаментом для всех тех, кто продолжил совершенствовать спецификацию разметки HTML.
Также обратите свое внимание на First Public Working Draft HTML 5.3. Это была часть наших планов по созданию новой HTML-рекомендации в 2018 году. Кроме того, некоторые наши планы претерпели изменения, потому что мы стараемся отслеживать, нужно ли что-то изменить \ дополнить в спецификации согласно современным требованиям или нет. Мы стараемся улучшать работу с интернациональными особенностями, доступностью спецификации и учитываем все пожелания сообщества.
Сангван Мун продолжает работать как редактор. Кроме того, нашу команду пополнили такие люди, как Брюс Левсон, Патриция Аас, Шветанк Дихит, Ттеренс Еден и Ксяоиян Ву. Еще раз спасибо Стиву Фолкнеру за то, что остается с нами и работает над новыми версиями спецификации. Для нас честь иметь настолько интернациональную команду, и мы верим, что их профессионализм принесет свои плоды. И хотя всегда есть гора достаточно монотонной работы по поддержке технологии, я верю, что этот год будет воистину годом HTML.
Веб представляет из себя платформу для каждого, и то, что наша команда объединяет специалистов из великого множества стран, является свидетельством того, что наша работа не напрасна и мы вносим вклад в общее дело веб-разработки. Мы внимательно следим за обновлениями HTML и рады будем сообщать вам наиболее актуальную информацию.
Автор перевода: Евгений Лукашук
Оригинал статьи
Кар'єра в IT: хто такий Embedded-розробник, завдання та обов'язки
Автор: Влад Сверчков
Хто такий Embedded-розробник?
Сфери застосування Embedded-розробки.
Що має знати Embedded-розробник.
Як стати Embedded-розробником.
Де отримати знання.
М’які навички.
Ключові тренди в Embedded.
Кар’єрні перспективи та заробітна плата Embedded Engineer.
Кількість вакансій.
Конкуренція.
Заробітна плата.
Кар’єрні можливості.
Висновки.
Переважна більшість новачків в Україні обирає тестування або розробку із залученням C#./NET, Java, Python, JavaScript (фронтенд та Node.js). Ці напрямки мають найбільшу кількість вакансій в ІТ, низькі вимоги до вищої освіти, потужну розпіареність майже в усіх навчальних центрах, а також відносно простий перехід в ІТ з будь-якої не айтішної професії.
Спеціальність, яку ми сьогодні розглядатимемо, не є настільки популярною, трендовою. Однак вона є не менш важливою за інші ІТ-напрямки. Герой нашої статті займається розробленням вбудованих (embedded) систем, і його іменують Embedded-розробник.
Що це за спеціальність, наскільки вона важлива і де використовується, що потрібно вчити для її опанування, як виглядає день Embedded-ера, які кар’єрні перспективи та зарплати у фахівців цього напрямку – розбір цих та інших інтригуючих питань читайте нижче.
Хто такий Embedded-розробник?
Почнемо з поняття “Embedded система”. Трактування в різних джерелах відрізняється, але якщо звести все під один знаменник – це комп’ютеризована система, яка вбудована у механічну або електронну систему і виконує певну функціональність. Тобто, це система, в якій комп’ютер (як правило мікроконтролер або мікропроцесор) є невід’ємною частиною іншої системи.
Як приклад: мікроконтролер у вашій кавовій машині, мікрохвильовці або пральній машинці; пристрій, який забезпечує спрацювання подушок безпеки в автомобілі, контролер у літаку, який збирає певні дані про політ – навіть Bluetooth-навушники містять свою власну вбудовану систему.
Відповідно, Embedded-розробник – це спеціаліст, який займається розробкою подібних вбудованих систем, використовуючи програмування (software) та навички роботи із “залізом” (hardware).
Життєвий цикл продукту дуже тісно зав’язаний на розробнику вбудованих систем. Обов’язки Embedded-розробника можуть різнитися в залежності від мікроконтролерів / мікросхем / пристроїв тощо, з якими він працює, але основні фази, де відчутна роль цього спеціаліста, наступні:
Аналіз вимог. Комунікація з клієнтами, дизайнерами та інженерними командами для визначення функціональних і технічних вимог до вбудованої системи.
Проєктування системи. Розроблення архітектури та дизайну вбудованої системи, вибір апаратних та програмних компонентів.
Перевірка базової працездатності. Перед початком роботи Embedded розробник повинен перевірити функціонування плати, оновити драйвери за потреби і переконатися, що “залізо” справне.
Програмування. Написання програмного коду, вбудованих програм і системних протоколів.
Тестування та налагодження. Проведення тестів для перевірки працездатності embedded-системи.
Інтеграція. Забезпечення взаємодії вбудованої системи з апаратурою, зовнішніми пристроями та іншими складовими системи.
Оптимізація продуктивності. Вдосконалення ефективності та продуктивності вбудованої системи, враховуючи обмежені ресурси.
Документація. Формування діагностичних звітів, технічних інструкцій та документації щодо розроблення ПЗ. Також читання форумів, статей та інструкцій до плат та компонентів, з якими ведеться робота.
Співпраця з іншими командами. Взаємодія з hardware та software розробниками, участь в різних мітингах, обговореннях, комунікація з замовником тощо.
Безпека та надійність. Забезпечення високого рівня безпеки, надійності та працездатності вбудованої системи.
Типовий робочий день Embedded-розробника складається з усього потроху:
написання та налагодження коду, пошук багів;
робота з апаратною начинкою – інколи доводиться і паяльником почаклувати, і щось мультиметром виміряти, і осцилограф застосувати тощо;
читання документації, пошук інформації на форумах;
тестування вбудованих систем та їхніх складових;
код-рев’ю;
рефакторинг;
взаємодія з командою, керівництвом: мітинги, ділова переписка, зідзвони з певних питань (або живе спілкування) і т. д.
Сфери застосування Embedded-розробки
Embedded у XXI столітті має гарний приріст затребуваності у зв’язку з розвитком ІТ-індустрії, в особливості – мережевих технологій, операційних систем, мов програмування та внаслідок модернізації “заліза”. Наразі сфера застосування вбудованих систем досить об’ємна:
Побутова електроніка. Вбудовані системи є невід’ємними атрибутами затишного житла: це смарт-телевізори, холодильники, мультиварки та інша кухонна електроніка, пристрої безпеки, смарт-девайси для будинку.
Машинобудівна промисловість. Embedded технології є ключовими для сучасних транспортних засобів, починаючи від цивільного автопрому і закінчуючи потужними будівельними гуліверами. Вони входять до складу двигунів, навігаційних систем, клімат-контролю, розважальних блоків тощо.
Медицина. Сучасна медицина неможлива без комплексного цифрового обладнання, включаючи пристрої моніторингу пацієнтів, системи візуалізації, діагностичні інструменти тощо.
Промислова автоматизація. Вбудовані системи використовуються в промислових системах керування, програмованих логічних контролерах (PLC) і робототехніці для автоматизації та керування процесами.
Телекомунікації. Вбудовані системи – невід’ємна частина мережевого обладнання, маршрутизаторів, комутаторів і комунікаційних пристроїв для ефективної передачі даних.
Аерокосмічна промисловість. Сучасна авіоніка використовує ембедед для керування функціями літака, системами навігації та зв’язку. Якщо хтось хоче тераформувати Марс – без Embedded-у буде дуже важко.
Військова галузь. Вбудовані системи відіграють вирішальну роль у оборонних програмах як у мирний час (спостереження, аналіз, прогнозування, наведення тощо), так і під час війни (згадайте ті ж джавеліни, дрони, хаймарси, петріоти і т. д. – там дуже багато електроніки).
Розумні мережі. Розвиток розумних мереж (smart grid) підвищує ефективність і надійність розподілу електроенергії.
IoT (Інтернет речей). Пристрої IoT значною мірою залежать від вбудованих систем для збору, обробки та передачі даних для різних програм. Приклади: розумний будинок, автоматизовані системи поливу, розумні міста тощо.
Що має знати Embedded-розробник
В Embedded-і ціла палітра спеціальностей. Наприклад, приставки “Software”, “Firmware” вказують на фокус саме на створенні ПЗ, а "Hardware" та "Hardware Design" – на апаратній частині. Тайтл на кшталт "Embedded Systems Engineer" говорить про необхідність мати однаково гарні hardware та software знання. Також треба розуміти, що в різних компаніях один і той же тайтл може мати під капотом зовсім різні технології в залежності від апаратної начинки, різновиду вбудованої системи абощо.
Наш опис необхідних технологій буде охоплювати і апаратне, і програмне крило вимог, що робить його ближчим до тайтлу "Embedded Systems Engineer". Якщо ви хочете більше в software, вивчайте глибше технології, спрямовані на розроблення софту; якщо ж у hardware – більше уваги приділяйте апаратним навичкам.
Отже, ми проаналізували тематичні статті, думки популяризаторів ембедеду та вакансії українського ринку, і на виході отримали наступний технологічний стек Embedded девелопера.
Математика, фізика, електроніка
Найперше ембедед-розробники повинні гарно знати математику та фізику – особливо теми, пов’язані з електротехнічним напрямком, аби гарно розуміти принципи функціонування hardware: розбиратися в начинці плат, вміти правильно розводити всі сигнали на платі, правильно рахувати всі доріжки, перекриття сигналів, їхню цілісність тощо. Ці знання важливі як під час розроблення, так і на моменті проєктування, тестування, комунікування з іншими колегами і не тільки.
Які розділи потрібно знати:
базова математика та обчислення;
дискретна математика;
електричні кола;
основи електроніки;
цифрова та аналогова мікросхемотехніка;
цифрові та логічні схеми;
комп’ютерна архітектура.
Тестове обладнання
Перераховане нижче обладнання ви будете широко використовувати для перевірки працездатності мікросхем, пошуку несправностей тощо. Вам знадобляться наступні інструменти:
мультиметр;
логічний аналізатор;
осцилограф.
Мультиметр є досить відомим приладом серед “електротехнарів” – ним вимірюють низку фізичних величин, як-от сила струму, опір, напруга та інші.
Логічний аналізатор використовується для роботи з цифровими сигналами в електронних системах, а осцилограф – для візуалізації та дослідження електричних сигналів, а також відображення їхніх параметрів в режимі реального часу.
Мікроконтролери
Одні з головних об’єктів зацікавленості Embedded-розробників. Під них і пишеться код мовами C/C++ і не тільки. МК являє собою невеликий електронний пристрій з великою кількістю “ніжок”, якими відправляються/приймаються відповідні електричні сигнали.
Що важливо знати з цієї теми:
GPIO
ADC
DAC
Таймери
PWM
Переривання
Сторожовий таймер (watchdog)
Керування тактовою системою (clock management)
Кожна модель МК має свої особливості, з якими вам треба буде знайомитися через відповідну документацію. Також вам треба знати периферію обраного вами мікроконтролеру і бібліотеки для керування нею.
Найпопулярнішим сімейством МК наразі є STM32. Досвід роботи з Arduino також вітається.
RTOS
Real Time OS – операційна система реального часу. Надає середовище виконання для програм, які мають строгий графік виконання завдань. Embedded-розробники використовують RTOS для обробки завдань з високою точністю і низькими затримками.
Linux
Якщо ви плануєте працювати з вбудованими пристроями на базі Linux (а їх зараз дуже багато), вам слід гарно знати і цю операційну систему. Вона має відкритий вихідний код і є безкоштовною.
Говорячи про приклади проєктів, лінукс використовує велика кількість систем IoT, промисловий, мережевий, автомобільний, медичний Embedded тощо.
Паяльник
Так, в даній професії необхідно інколи й паяльником попрацювати. Якісь компоненти можуть потребувати пайки – десь щось вилучити/додати/замінити, поекспериментувати з макетом, зібрати проєкт тощо. Може виникнути будь-яка ситуація на “залізі”, і ембедед-фахівець має бути готовим до цього.
Основи програмування
Фундамент, який зробить ваш процес програмування продуктивним. Сюди віднесемо наступні теми:
алгоритми та структури даних – ембедерам потрібні сильні знання з алгоритміки;
шаблони проєктування – так, в ембедеді є свої патерни, які полегшують життя девелоперам, наприклад Opaque Pointer pattern;
UML (діаграма стану, state machine) – для моделювання та аналізу поведінки системи.
Програмування на C/C++
C/C++ – це потужні мастодонти у світі програмування. В порівнянні з іншими мовами є складнішими у вивченні, натомість дають можливість писати низькорівневий код з високим ступенем контролю “заліза”.
Також C/C++ дозволяють напряму керувати пам’яттю (а це дуже важливо при роботі з hard-елементами, які мають досить обмежений ресурс), контролювати велику кількість low-level процесів, а також підходять для програмування широкого спектру “заліза”. Обов’язковий інструмент в скарбничці Embedded-девелопера – можна вивчити або C, або C++, або обидві мови.
Інтерфейси та протоколи
Обмін інформацією між Embedded-елементами та їхніми складовими здійснюється через спеціальні інтерфейси та протоколи:
UART, I2C, SPI – базові, їх треба знати обов’язково;
Ethernet, USB – для роботи на високих швидкостях;
Bluetooth – дуже відома безпровідна технологія;
TCP/IP, UDP – для роботи з мережею;
CAN – система, яка використовується в транспортних засобах;
Modbus – для роботи на промислових об’єктах.
Git
Git – система керування версіями проєкту, дуже популярний інструмент під час написання будь-якого коду, оскільки дозволяє відслідковувати зміни в коді, створювати гілки для роботи над різними функціями, ділитися своїм кодом з іншими колегами і навпаки тощо.
Agile/Scrum
Agile – це сімейство гнучких (agile) методологій розроблення ПЗ, яке сприяє випуску продукту порціями, крок за кроком розширюючи та покращуючи його. Як результат – команда здійснює розроблення відносно невеликими інтервалами, сам продукт постійно покращується, якість коду – підвищується. Познайомитися з Agile вам допоможе відповідний маніфест з детальним описом основних принципів.
Scrum є однією з найпопулярніших реалізацій даного підходу, яка часто використовується в багатьох ІТ-командах, в тому числі і під час роботи з вбудованими пристроями.
Англійська мова
English на рівні вільного читання документації має бути у кожного Embedder-а, оскільки левова частка роботи припадає саме на вичитування матеріалів до тих чи інших мікроконтролерів та супутніх пристроїв. Якщо ж ви будете працювати в команді з іноземцями, то треба підтягнути ще й розмовну англійську.
Як стати Embedded-розробником
Де отримати знання
Є декілька опцій для вивчення розробки вбудованих пристроїв:
Можна вчитися самостійно за допомогою безкоштовних ресурсів у вільному доступі: YouTube, roadmap-и з посиланнями на GitHub-і, статті, тематичні форуми, безкоштовні курси та матеріали (MIT OpenCourseWare, embedded.com) тощо. На плати Arduino, паяльник, мультиметр і т. д., звісно, таки доведеться розщедритися.
Проходження відео курсів (платно) на Udemy, Coursera, edX, Pluralsight та інших платформах, придбання спеціалізованих книг.
Менторинг з боку діючого розробника – найефективніший спосіб навчання, оскільки у вас завжди буде допомога, наставництво, поради, чіткий напрямок руху та необхідні навчальні матеріали.
Проходження онлайн/офлайн навчання при компаніях. Такий формат пропонують, наприклад, GlobalLogic, Ajax Systems тощо. Мінуси: потрібна певна база знань перед стартом навчання, а головний плюс – можливість стажування і повноцінного працевлаштування в компанії.
Вища освіта в цій спеціальності не завадить, хоч і не є обов’язковою. Потрібну базу ви можете отримати у школі та вищих навчальних закладах на відповідних технічних спеціальностях – там же є і можливість потрапити на стажування, якщо кафедра таке практикує або має відповідні зв’язки з компаніями.
Soft skills
Вимоги до Embedded-розробників можуть різнитися в плані стеку, але що 100% знадобиться кожному, це наступні “м’які” навички:
критичне, алгоритмічне, аналітичне мислення;
навички problem-solving;
комунікативність, вміння працювати в команді;
організованість, зібраність, вміння ефективно розпоряджатися часом;
самомотивація;
увага до деталей;
терпіння та адаптивність;
пристрасть до Embedded;
бажання постійно розвиватися та вдосконалюватися.
Останні три пункти дуже важливі в професії, оскільки ембедед – це непроста галузь, і за 3-6 місяців “увійти в ІТ” не вийде. Потрібно більше зусиль, часу та витримки.
Ключові тренди в Embedded
ІТ-індустрія рухається вперед, і ембедед не відстає. Проаналізувавши низку ресурсів, ми визначили наступні тренди:
Інтеграція штучного інтелекту та машинного навчання в Embedded-системах стає все більш привабливою, що сприяє використанню вбудованими системами інтелектуальних алгоритмів та ML. Ця синергія дозволяє системам адаптуватися до змін в реальному часі, підвищуючи їхню ефективність.
Розвиток безпровідних технологій відкриває нові перспективи для вбудованих систем, особливо в областях Інтернету речей (IoT) та безпілотних систем, які керуються віддалено або за допомогою AI.
System-on-chip рішення. Інтеграція всіх ключових компонентів системи на одному чіпі (SoC) продовжує набирати оберти та використовуватися різними бізнесами. Їхня компактність в сукупності з високою продуктивністю, дешевизною, енергоефективністю та інтегральними мікросхемами спеціального призначення (ASIC), наприклад, вже успішно застосовується в гаджетах, які збирають та аналізують різні параметри здоров’я.
Більше уваги безпеці. Зростання кількості вбудованих систем, які мають вихід в Інтернет, призводить до збільшення кількості кіберзагроз, що підкреслює важливість удосконалення заходів безпеки для ембедед-пристроїв.
Оптимізація споживання енергії embedded-системами стає актуальною – на це впливають ідеї сталого розвитку, що сприяє поширенню більш енергоефективних рішень.
Розвиток AR та VR (доповнена та віртуальна реальності). Інтеграція вбудованих систем у AR та VR відкриває нові горизонти для інтерактивних інтерфейсів та розважальних застосунків. Embedded-розробники активно працюють над цими технологіями для створення вражаючого досвіду та візуальних ефектів.
Окремо зазначимо і розвиток вбудованих пристроїв у військовій сфері. Наразі зростає попит на ембеддерів, які здатні працювати з дронами (повітряними та морськими), БПЛА тощо. Сьогодні саме ці роботизовані системи дозволяють ефективно виявляти та ліквідовувати ворога, здійснювати розвідку, наводити та корегувати вогонь і – що найважливіше – берегти життя та здоров’я особового складу. Сьогодні це один з трендових напрямків конкретно в нашій державі.
Кар’єрні можливості в ІТ та заробітна плата Embedded Engineer
Кількість вакансій
Для визначення цього параметру використаємо дані з найвідоміших українських ресурсів для пошуку роботи в ІТ – DOU та Djinni – і порівняємо результати з найпопулярнішими спеціальностями.
Почнемо з DOU:
Embedded – 44 вакансії;
QA – 167;
FrontEnd – 160;
DevOps – 158;
PHP – 140;
Python – 138;
Java – 108;
.NET – 104;
Node.js – 101.
На Djinni пошук роботи кандидатами здійснюється анонімно. Кількість вакансій наступна:
C / C++ / Embedded – 170 вакансій;
JavaScript / FrontEnd – 354;
PHP – 295;
DevOps – 273;
Python – 208;
Node.js – 191;
C#/.NET – 166;
Java – 161;
QA Automation – 139;
QA Manual – 128.
Конкуренція
Для визначення конкуренції ембедерів на нашому ринку ІТ скористаємося співвідношенням кількості відгуків до кількості вакансій на DOU за листопад 2023 року (беремо найбільш відомі спеціальності). Ось що маємо:
Конкуренція у ембеддерів (від новачків до професіоналів) дуже низька: на 1 вакансію припадає приблизно 5 претендентів, що є дуже гарним результатом під час нинішньої ситуації на ринку ІТ.
Справжні “голодні ігри” традиційно у QA та FrontEnd: за 1 вакансією полюють в середньому 120.9 та 100.5 кандидатів відповідно.
Відповідно до ринкової статистики Djinni, для новачків конкуренція посилюється:
Зазначимо, що тут демонструється кількість кандидатів на вакансію, котрі зараз перебувають в “онлайні”. На Джині так позначаються ті кандидати, які знаходяться в активному пошуку роботи.
Бачимо, що в категорії “C / C++ / Embedded” без досвіду 27.75 шукачів на вакансію (окремої категорії для Embedded немає). Багатенько, але подивіться на аналогічну ситуацію в більш популярних напрямках:
JavaScript / FrontEnd – 426.55
C#/.NET – 200.5
Python – 185.6
Manual QA – 132.83
Node.js – 98
DevOps та FullStack – 83.5
Заробітна плата
Спершу розглянемо зарплатну статистику на Djinni для “C / C++ / Embedded” (за останні 6 місяців). Картина наступна:
Зарплатні вилки досить високі – 2300-4700 USD. При цьому зарплатні очікування кандидатів скромніші – від 700 USD до 4500 USD.
А скільки отримують Embedded за межами України? Звернімося до аналітики Stack Overflow Developer Survey 2023 (більше 90 000 респондентів із США, Індії, Німеччини, Сполученого Королівства, Канади тощо).
Деякі несуттєві для нашої статті спеціальності були прибрані з діаграми задля більшої компактності зображення.
Отже, медіанна зарплата Embedded-спеціалістів з різних країн складає 77 104 USD на рік, а це приблизно 6425 USD на місяць. Що цікаво, розробники вебу (FrontEnd, BackEnd, FullStack), ігор, мобільних та десктопних застосунків отримують меншу ЗП, хоча ці спеціальності більш поширені, а веб взагалі є найпопулярнішим в ІТ.
Вищу винагороду отримують ті, хто спеціалізується на базах даних, DevOps-процесах, великих даних, апаратній частині, блокчейні, безпеці тощо.
Кар’єрні перспективи
Embedded розробник – поняття досить розмите і обширне, оскільки фахівець цієї спеціалізації може працювати над:
створенням робототехнічних систем;
медичною апаратурою;
автомобільними системами;
аерокосмічними апаратами;
IoT-екосистемою;
AR та VR індустрією;
мережевими системами;
гаджетами для цивільних потреб;
безпекою embedded-пристроїв;
промисловими системами;
військовими розробками;
тощо.
В кожній із цих сфер будуть свої технологічні стеки, мікроконтролери, плати, інтерфейси, протоколи і т. д.
Ще не забувайте про ембедерський “фронтенд”, “бекенд” і “фулстек” – в кожній галузі ви можете концентруватися більше на програмній частині, апаратній, або ж на обох одразу.
Звісно, кожен напрямок може мати власну “кухню”, і щоб “скуштувати страву” в кожному із цих “ресторанів” цілого життя може не вистачити, але погодьтеся – список для самореалізації скромним не назвати.
Також ви можете в будь-який момент заглибитися в Software розробку і займатися написанням програмного коду (найпопулярніші стеки в Embedded-і – C/C++, Java, Python, Go), а можете піти у Hardware і більше уваги приділяти “залізу”. Якщо трохи підкачати знання, то можна перекваліфікуватися і в тестувальники, і в спеціаліста з безпеки, мережевого спеціаліста тощо. Можливості дуже широкі та дуже різноманітні.
Якщо ж говорити про вертикальний потенціал професії, розробник вбудованих систем стартує зі стандартної Intern/Trainee/Junior позиції. Далі – зі збільшенням досвіду, навичок та знань – отримує підвищення до Middle та Senior, а вище – керівні позиції на кшталт Team/Tech Lead, архітектор і т. д.
Висновки
Embedded – дуже цікава, незвична та багатогранна ІТ спеціалізація. Вона дозволяє відчути себе Архітектором, котрий вдихає життя в пристрої, дає їм все необхідне для їхнього руху, думок, аналізу навколишнього середовища, спілкування один з одним тощо. Так, для цього потрібно мати багато знань, але хто сказав, що бути Творцем – це так просто?)
Цей напрямок дає дуже важливий фундамент для інших ІТ-галузей, які сьогодні в зеніті популярності. Завдяки вбудованим системам ми можемо насолоджуватися безліччю автоматизованих процесів, починаючи ранковою свіжомеленою кавою та оглядом нашого сну у health-трекері, і закінчуючи автомобільною та медичною апаратурою.
Ембедед створений для справжніх любителів “заліза” та його програмування. При цьому він має багато нішевих розгалужень і щороку зростаючий попит. Сьогодні в Україні розробники вбудованих пристроїв мають великі можливості для реалізації, а в решті світу – тим більше.
Професія непроста, але вона щедро винагороджує сміливих, терплячих та цілеспрямованих, котрі не бояться складнощів та перешкод і готові на все, аби досягнути бажаного.
Бажаємо успіхів та натхнення всім, хто прагне розвиватися в напрямку Embedded!
Що повинен знати 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 – одна з найлегших професій розробника в ІТ. Вона вигідно вирізняється тим, що поєднує в собі програмування та творчість, оскільки девелопер працює над оживленням дизайнерського макету та створенням відповідної користувацької логіки. Також перевагою фронтенду є те, що побачити результат своєї роботи можна майже одразу – в будь-якому браузері.
Відносна легкість фронтенду породжує велику популярність серед бажаючих потрапити в ІТ, а враховуючи наслідки відкритої агресії по відношенню до України – особливо велику популярність, адже це можливість працювати віддалено (на ІТ-компанію або на фрилансі) і отримувати гарну зарплату. Відповідно, конкуренція серед Trainee/Junior FrontEnd розробників шалена, а тому роботодавці вимушені закручувати гайки і підвищувати вимоги до кандидатів, аби відібрати найкращих.
Тож як стати фронтенд розробником? Якими технологіями необхідно володіти, аби стати Intern/Junior FrontEnd розробником у 2023 році? Проаналізувавши вакансії на українському ринку айті, ми склали список актуальних інструментів, які зазвичай вимагають роботодавці від кандидатів. Їхній перелік – нижче у статті.
Frontend developer roadmap. Основні технології
HTML5 & CSS3
HTML5 і CSS3 – це фундаментальні технології, без знання яких не обійтися жодному веб-розробнику. За допомогою мови гіпертекстової розмітки HTML створюється розмітка (каркас) кожної веб-сторінки. Потім мова стилів CSS збагачує візуальне оформлення сайту і надає йому привабливого та ефектного зовнішнього вигляду. Крім цього, необхідно володіти:
кросбраузерним адаптивним верстанням, щоб вміти створювати сайти під мобільні пристрої, планшети і широкоформатні екрани та для різних браузерів;
семантичним верстанням для підвищення якості розмітки та покращення пошукової індексації сайту;
валідним верстанням, яке передбачає повну відповідність коду розробника всім стандартам W3C - організації, яка створює та впроваджує технологічні стандарти для World Wide Web.
Приділіть особливу увагу верстанню під мобільні пристрої, тому що сучасний веб-споживач дуже багато часу проводить у смартфоні. Існує навіть спеціальний підхід, при якому спочатку верстається веб-сайт під мобільні пристрої, а потім під десктопи – називається Mobile First.
Це загальні вимоги щодо верстання. Тепер розглянемо більш детально вимоги безпосередньо щодо мови стилів – CSS. Тут ви повинні знати основні властивості 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) можна писати навіть настільні та мобільні додатки, використовуючи певні програмні платформи та бібліотеки. Ця мова дозволяє:
динамічно змінювати HTML-розмітку;
здійснювати інтерактивну взаємодію з користувачем;
анімувати зображення;
здійснювати валідацію форм;
керувати мультимедіа тощо.
Іншими словами, 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!
Angular vs React - що крутіше?
Автор: Dominik T
Angular – технология с полным набором инструментов и к тому же с лучшими вариантами подхода к решению. Кому-то он подходит, а кому-то – нет. С другой стороны, React – небольшая технология, которая необходима вам только при создании какого-то приложения. Обе технологии имеют свои достоинства и недостатки. Какая из них подойдёт вам больше? Попытаемся выяснить в этой статье.
Технологии
Вот основные технологии, о которых я буду говорить:
Angular
React
Vue
Кривая обучения
Допустим, вы знаете JavaScript + ES2015 достаточно хорошо. Какую следующую технологию будет проще выучить?
Vue – наилучший выбор, если вы ищите легкости в процессе изучения технологии.
React – менее абстрактный, тем не менее, вам понадобится больше времени, чтобы изучить best practices, так как есть много вариантов написать одно и то же или ошибиться.
А вот после изучения Angular вы также будете знать всё, что связанно с ним (typescript, MVC…). Angular - большая технология и учить придётся долго.
Масштабируемость
Angular - легко масштабируемый благодаря своему дизайну, который так же хорош, как и мощная командная строка.
React требует больше проверок и поэтому более масштабируемый, чем Vue и, я думаю, что частично это правда.
Vue идёт сразу после React. Он хорош, однако ему не хватает лучших практик масштабируемости, из-за чего вы получаете очень запутанный код.
Совместимость с другими технологиями
React. Несмотря на то, что он не работает с DOM-деревом, он основан на чистой JavaScript логикe и популярeн настолько, что содeржит в сeбe альтeрнативы библиотeкам, работающим с DOM.
Vue прекрасно работает как с ДОМ-деревом, так и с JavaScript. Второе место занимает лишь потому, что у него меньше библиотек, которые могли бы быть действительно полезны для обоих (как для ДОМ, так и для JavaScript).
Angular мог бы быть лучше, если бы не typescript, который требует строгой типизации.
Инструменты
React, Angular and Vue. Все перечисленные технологии имеют отличные CLI и работают с любым инструментом по типу webpack.
Пользователи и популярность
React точно стал наиболее популярным в 2016, когда его стали использовать англоговорящие frontend и full stack разработчики. React – хороший выбор для мобильных и даже десктопных приложений на JavaScript.
Vue и Angular. Vue – потому что он очень быстро развивается. Angular – потому что он создан Google, а его предшественник Angular 1 был когда-то очень популярен.
Востребованность
React и Angular. В зависимости от того, где вы находитесь, зависит, какая технология будет доминировать. Angular больше используют в Азии, особенно в Индии, а React – в англоязычных странах, таких как US и UK.
Vue менее популярен и не поддерживается большими компаниями, поэтому остальные отдают предпочтение Angular и React.
Производительность
По этому параметру не ставлю ранги, так как все они сопоставимы. Возможно, React станет немного быстрее, когда полностью будет поддерживать Fiber, но сейчас существует только бета-версия.
Перспективы для компаний
Angular имеет open source лицензию. Он поддерживается Google, что, возможно, делает его лучшим выбором для компании, и разница между проектами Angular невелика.
React был бы очень хорошим выбором, если бы не лицензия с патентом. Однако, существуют бесплатные альтернативы, которые работают также, как и React. Например, Infernojs или мой любимый rax.
Vue – не дитя большой компании, это очень успешный сторонний проект одного человека. Компании часто игнорируют его, хотя, возможно, и не стоило бы.
Вне сети
Рендеринг – как раз то, о чем можно много говорить. Все технологии способны осуществлять его, но некоторые справляются лучше, чем другие.
React – лучший выбор благодаря react native, alibaba rax, reactWindows и next.js.
Vue подойдёт vue-разработчикам, которые предпочитают разработку под мобильные устройства. Спасибо за это alibaba weex.
У Angular есть ionic 2 и nativescript, но эти технологии не позволяют достичь производительности react native.
Простота и длина кода
Vue имеет предварительно встроенные привязки данных и MVC модель, его легче настроить, нежели Angular и React.
React пугающе прост для понимания, но нужно реально много времени, чтобы настроить react project.
Angular совсем непростой. Эта сложность вызывает много путаницы 3rd party libraries и синтаксиса.
Время разработки
Vue, безусловно, лёгок в установке и не требует много изменений или синтаксиса, за что его и любят. Он был создан для борьбы с утомительной работой.
React настраивается дольше, но после начала работы над приложением будет легко добавлять новые фичи.
Angular хоть и является весьма конкурентоспособным, но количество ненужного синтаксиса, который он требует для работы простых вещей, отбрасывает его на последнее место.
Размер
Vue - наименьший и много в себе содержит. Вы можете подумать, что это не имеет значения, но если речь пойдёт о дешёвом Android 3G смартфоне, то вы уже не будете так уверены.
React - больше чем Vue, но все же меньше, чем Angular.
Angular - больше всех предыдущих, что вызывает увеличение времени загрузки и проблемы производительности на мобильных устройствах.
Будущее
Вот лично мои прогнозы для этих технологий на 2017 год:
Vue будет приобретать популярность и всё большее количество разработчиков переключится на него. Вполне вероятно, что это может заставить крупные компании продвигать и поощрять Vue.
Команда React представит Fiber и сделает React быстрее, чем Vue и Angular.
Создатели Angular попытаются привлечь больше людей, но, скорее всего, им это не удастся.
Так что же лучше для вас?
Подводя итог, можно сказать, что нет идеального решения, и никогда не будет. Тем не менее, вот полезные советы, которые помогут вам сделать выбор:
Если вы разработчик «до мозга костей», тогда попробуйте все и выбирайте между Vue или React, доверяйте своему чувству.
Если вы новичок в разработке, выбирайте или Vue, или React.
Angular подойдёт компаниям с большими командами.
Google -> Angular.
Если любите простоту, тогда выбирайте Vue.
Если нравится использовать шаблоны, тогда выбор стоит между Vue или Angular.
Если предпочитаете JavaScript и JSX, попробуйте поработать с каждой технологией.
Если вы работаете с Typescript, используйте Angular или Vue.
Выбирайте подходящую технологию поскорее, не стоит пребывать в неопределённости. Я сомневался несколько месяцев, и это было невесело. Я решил пожертвовать популярностью и выбрал то, что считал для себя наилучшим вариантом – Vue.
Ютубер funfunfunction сказал лучшее, что я когда-либо слышал про JS framework fatigue:
«Существует точка в вашей карьере программиста, когда вы понимаете, что это не лучший инструмент».
Здесь нет правильного или неправильного выбора, его просто необходимо сделать. Так что, продолжайте учиться и исследовать. Все будет учить Вас чему-то новому.
Оригинал статьи на английском языке.
Інтерв'ю з Олександром Шевчуком про початок кар'єри в ІТ
Автор: Редакция ITVDN
Беседу с Александром Шевчуком вел Назар Рудь
Введение
В наше время все более и более популярными становятся профессии в сфере IT. В первую очередь, это связано с высоким технологическим развитием и, соответственно, спросом на таких специалистов. В нашей статье мы хотим рассказать Вам о том, как начать карьеру в IT тем, кто раньше не был связан с этой сферой. На интересующие читателей вопросы ответил сертифицированный специалист Microsoft (MCTP, MCPD, MCT), тренер-консультант, эксперт в области построения архитектуры информационных систем, бизнес-анализа и управления ИТ проектами Александр Шевчук.
В каком возрасте можно начинать карьеру в IT?
Возраст начала карьеры зависит от спроса. В нашей стране спрос на аутсорс-специалистов есть. Но стоит учитывать, что 60-70 % аутсорсинговых компаний требуют высшее специализированое образование. Но 30-40 % смотрят на компетенции специалиста, его готовность постоянно обучаться, а не на диплом.
Можно начать учиться в любом возрасте, но будьте готовы, что Вам придётся потратить полгода-год на освоение базы необходимых для работы технологий.
Люди в возрасте больше сорока, которые не имеют опыта в информационных технологиях и не знают методологий разработки, даже после того, как изучат все необходимые, вынуждены будут начинать с младшего специалиста в команде. Младший специалист – как юнга на корабле. У человека в возрасте это однозначно вызовет ряд переживаний и определенный дискомфорт. Это и может стать для кого-то непреодолимым барьером для начала карьеры в IT. Этот сложный период нужно просто пережить.
Каким требованиям должен соответствовать человек, который хочет добиться успеха в области IT?
Во-первых, начинающий специалист должен постоянно учиться, идти в ногу с технологиями и самосовершенствоваться. Во-вторых, он должен быть готов поддерживать коммуникацию внутри компании и с клиентами. Очень важная часть работы в ИТ – умение работать в команде, находить общий язык с другими ее членами и, конечно, с клиентом. Некоммуникабельные и тяжелые в общении люди не приживутся в компании, даже если им удастся туда попасть из-за некомпетентности hr-специалиста.
Какие перспективы работы в аутсорсинге?
Стоит начать с того, что вообще такое аутсорсинг в IT. Это процесс найма иностранными клиентами работников из стран с относительно небольшими зарплатами. Поэтому количество аутсорсинговых компаний растет, многие клиенты ищут исполнителей в Украине.
Стоит понимать, что аутсорсинг – временная работа. Один проект может длиться максимум один-два года. Но за это время Вы получите опыт и возможность проявить себя перед заказчиком. Если он увидит, что вы компетентны и преданы их компании, могут пригласить на работу в свою компанию за границей. Но быстрого карьерного роста ждать не стоит.
Стоит ли вообще идти в мир IT?
Давайте признаемся, что фраза о том, что IT – интересно – для hr-специалистов. На самом деле, большинство людей привлекает стабильность и несложность работы. Да, это действительно несложно. Барьер входа в сферу IT значительно снизился за последние годы, так как компании хотят удешевить разработку, нанимая дешевых специалистов и упрощая технологии, с которыми нужно работать. Сейчас ценится быстрота работы, а не абсолютная точность выполнения.
Что выбрать: front-end, back-end или .NET?
Вопрос прежде всего в том, кто где себя видит. Да, Вы можете слышать, что back-end – святая святых, но, на самом деле, хорошие специалисты нужны везде, поэтому нужно исходить из того, что Вам больше нравится и больше подходит.
Но не стоит пытаться делать всё и сразу. Например, общение с клиентами отнимает у разработчика очень много времени и не должно входить в его обязанности, для этого есть бизнес-аналитики. Разработчики не должны вникать в то, о чем пишут. Им не обязательно учить юриспруденцию или экономику. Прежде всего, они должны развиваться в своей профессии, читать свою профессиональную литературу и быть хорошими разработчиками.
Что делать людям, которые стоят перед выбором: учеба или работа?
По логике, сначала должна быть учеба, потом, после окончания университета, Вы попадаете на практику, а потом уже идете на работу. Конечно же, сначала нужно учиться. Таким образом, Вы получаете большой багаж разносторонних знаний, которые потом сможете применить на практике. В университете Вы изучаете много предметов, много языков программирования.
Но, в реальности, нужно учиться и работать. Все студенты работают – курьерами, официантами, продавцами и программистами, потому что это несложно.
С чего стоит начинать обучение людям, которые никогда до этого не работали в ИТ?
Начать нужно с азов, с машинной математики. Если Вы действительно решили стать айтишником и не спешите, стоит начать с Питера Абеля. Это старые книги по ассемблеру. Введение в его книге – это введение в машинную математику, там говорится о том, как основные процессы происходят на самом низком уровне. Чтобы стать программистом, нужно понять основы вычислительной техники, что такое процессор, бит, байт. Мы подробно рассказываем об этом на стартовом курсе C#.
Какие материалы помогут тем, кто не имеет возможности учиться в университете или посещать специализированные курсы, но хотят научиться сами?
Далеко не все предметы в университете нужны для того, чтоб стать девелопером. Например, чтобы стать программистом с C#, нужно прочитать Эндрю Троелсена, Герберта Шилдта – они очень популярны сейчас, и это хорошо. Дальше можно перейти к Джеффри Рихтеру.
Самообучение – за и против.
Основные плюсы самообучения – человек воспитывает себя, развивает усидчивость, читает большое количество литературы. Это очень непросто, нужен постоянный стимул и мотивация.
Главный минус самообучения: человек психологически устроен так, что ему требуется подтверждение того, правильно ли он понял/сделал/подумал. Если учить технологии самому, так или иначе возникает много вопросов и сомнений. И, чтобы добиться подтверждения, нужно потратить много времени на поиски ответа в литературе или в сети. Получается, что на то, на что можно потратить 20 секунд, человек тратит десятки минут.
Поэтому лучше общаться с человеком, который может вселить уверенность в правильности Ваших действий и указать на ошибки. Но идеальный вариант – пройти специализированные курсы, где профессиональный тренер сможет сразу же ответить на все Ваши вопросы.
Из любой профессии можно войти в IT?
Да, есть много программистов-врачей, юристов, учителей. И из них получаются хорошие айтишники. Не факт, что человек, который придет в IT из другой профессии, станет суперспециалистом, но программировать он будет. Потому что это совсем несложно.
Вряд ли у врача получиться работать в Майкрософт, потому что там ему придется конкурировать с выпускниками Стэнфорда, Массачусетса. И они его просто-напросто задавят. Прежде всего, потому что там намного лучше уровень образования.