Что требуют от джуниоров работодатели: анализ вакансий для младших программистов
В этом обзоре систематизируем требования работодателей к Junior-программистам, а также обобщаем условия, которые предлагают компании младшим разработчикам. Для этого анализируем реальные вакансии, опубликованные на hh.ru.
Кого ищут работодатели: критерии анализа
Чтобы проанализировать требования работодателей к младшим программистам, я выбрал вакансии на сайте hh.ru по Москве, Санкт-Петербургу и Казани. Смотрел вакансии для JavaScript-программистов (фронт- и бэкенд), PHP-, Python- и Java-программистов. Проанализировал как минимум 10 вакансий по каждому стеку.
В вакансиях анализировал следующие параметры:
- требования к опыту работы;
- требования к возрасту;
- требования к образованию;
- требования к софт-скилам;
- требования к хард-скилам;
- предложенные условия труда.
Параметры анализировал без разделения по стекам. Исключение — требования к хард-скилам. Этот параметр проанализировал для каждого стека отдельно.
Какой опыт работы нужен Junior-программисту
В идеальном мире на позицию джуниора могут претендовать соискатели без опыта работы. В реальном мире всё не так просто.
В подавляющем большинстве вакансий для Junior-программистов опыт работы не требуется. Но иногда работодатели хотят видеть стажёра или джуна с опытом работы. Например, «Яндекс» ищет стажёра-разработчика с опытом работы от 1 года.
«Яндекс» ищет стажёра с опытом работы
Какое образование нужно джуниору
Нужно ли высшее образование программисту? На этот вопрос сложно ответить только с помощью анализа вакансий. HR-менеджеры могут не указывать требования к образованию в вакансиях. Но они наверняка обращают внимание на этот пункт в резюме, когда рассматривают заявку соискателя. Тем не менее даю слово реальному рынку труда.
В большинстве вакансий для Junior-разработчиков нет требований к образованию. Но часть работодателей хочет видеть соискателей с высшим техническим образованием или студентов старших курсов.
Важный момент: требования к образованию я встретил только в вакансиях для Java- и Python-программистов.
От Java- и Python-программистов чаще требуют высшее техническое образование
Промежуточный итог: в большинстве вакансий работодатели не указывают требования к образованию. Но иногда в объявлениях встречаются пожелания: компании хотят видеть у новичка диплом технического вуза или в крайнем случае студенческий билет. Такие требования я встретил только в вакансиях для Java- и Python-программистов.
Требования к возрасту джуниров
Этот вопрос чаще всего волнует специалистов, которые меняют сферу деятельности в возрасте 30+. Давайте посмотрим, есть ли ограничения по возрасту в опубликованных вакансиях.
Я просмотрел около 50 вакансий в разных стеках, но ни в одной не нашёл явных требований к возрасту. Иногда работодатели указывают, что набирают студентов последних курсов. Такие условия есть в объявлениях о стажировке, а не в вакансиях для джуниор-программистов.
На стажировку приглашают студентов
Это не значит, что работодатели не обращают внимание на возраст кандидатов. Эйчары видят резюме и могут уточнить год рождения соискателя, если эта информация не указана. А о среднем возрасте junior-программистов рассказывает HR-менеджер Вероника Ильина в комментарии ниже.
Промежуточный итог: работодатели обычно не указывают формальные требования к возрасту, но учитывают возраст соискателей при отборе.
Какие софт-скилы нужны джуниору
Софт-скилы или гибкие навыки — неспециализированные навыки, которые влияют на профессиональную деятельность специалиста. Примеры софт-скилов: дисциплинированность, проактивность, умение общаться, стрессоусточивость, способность к обучению.
В большинстве вакансий работодатели не указывают требования к гибким навыкам. В нескольких объявлениях есть пожелания к софт-скилам, например:
- готовность общаться с разработчиками и с экспертами в предметной области;
- аналитический склад ума;
- ответственность за результат;
- стремление к профессиональному росту;
- любопытство;
- коммуникабельность;
- умение чётко формулировать мысли;
- адекватность;
- умение и желание работать в команде;
- умение планировать работу;
- умение работать со скучными задачами.
Мне показалось, что в некоторых вакансиях работодатели пишут о гибких навыках формально. Например, сложно представить, что кто-то из кандидатов скажет на собеседовании, что ему не хватает любопытства или адекватности.
В некоторых вакансиях софт-скилам уделяется повышенное внимание. Например, одна из компаний ищет Python-разработчика для работы в медицинском стартапе. Работодатель хочет, чтобы у соискателя был интерес к предметной области, то есть к медицине. Это объясняется тем, что разработчику придётся общаться с врачами, которые участвуют в разработке медицинских приложений.
В объявлениях часто встречается требование знать английский язык. В частности, указывается уровень intermediate.
Промежуточный итог: работодатели иногда указывают желаемые гибкие навыки. Любой кандидат может на собеседовании сказать, что он коммуникабельный, любопытный и адекватный. Реально оценить софт-скилы соискателя работодатель сможет во время испытательного срока.
Адекватные стрессоустойчивые соискатели интересуются вакансией
Какие хард-скилы нужны Junior-программистам
Хард-скилы или профессиональные навыки уместно рассматривать в разрезе стеков.
Требования к JavaScript-разработчикам (фронтенд)
Работодатели требуют от соискателей на позицию фронтенд-разработчиков такие знания и умения:
- знания основ JavaScript;
- базовые знания HTML и CSS;
- умение верстать (встречаются требования умение верстать по принципу pixel-perfect);
- умение использовать UI-фреймворки и библиотеки, чаще всего React и Vue.
- Знание протокола HTTP;
- умение работать с графическими редакторами (Adobe Photoshop требуют чаще всего);
- умение работать с Git и пакетными менеджерами.
В одной вакансии встретил пожелание — соискатель на позицию фронтендера должен знать PHP хотя бы на базовом уровне. Также в единичных вакансиях работодатель искал кандидатов со знанием TypeScript, умением работать с препроцессорами (SCSS или Less), знание Angular.
Требования к Node.js-разработчикам (бэкенд)
Работодатели ждут от Node.js-разработчиков таких знаний и умений:
- знание Node.js;
- опыт использования GitHub и GitLab;
- знание Vue.js;
- знание HTML и CSS, умение верстать;
- знание Websocket;
- знание SQL, умение работать с базами данных;
- понимание принципа MVC.
В вакансиях для Node.js-разработчиков часто встречаются жёсткие требования к знанию английского языка. В нескольких вакансиях увидел пожелание к знанию ещё одного серверного языка, например, PHP или Python.
Требования к PHP-программистам
От младших программистов на PHP компании ожидают таких знаний и умений:
- знание PHP;
- базовые знания HTML и CSS;
- знание бэкенд-фреймворков (чаще всего требуют Laravel и Yii2);
- знание SQL, умение работать с базами данных;
- знание CMS (встречаются разные, включая 1C-Битрикс, WordPress, Magento);
- умение работать с Git;
- понимание принципов ООП.
В нескольких вакансиях работодатели хотят, чтобы соискатель имел базовые знания JavaScript.
Требования к Python-программистам
Один из работодателей принимает стажёров, которые знают основы Python и SQL. Стажировка оплачиваемая. К младшим программистам предъявляются более серьёзные требования:
- знание Python;
- знания scikit-learn, tensorflow-pythorch, matplotlib;
- знание алгоритмов машинного обучения и теоретическое понимание работы нейросетей (для джуниор-программистов в области machine learning);
- в вакансиях для Python-программистов часто встречаются требования уметь работать с Linux;
- для веб-разработчиков на Python актуальны умение работать с базами данных и знание веб-фреймворков, например, Django.
В вакансиях для Python-программистов практически не встречаются требования знать ещё один язык программирования. Также мне не попались требования знать HTML и CSS и уметь верстать. Тем не менее это актуальные для веб-разработчиков умения.
Требования к Java-программистам
Выше сказано, что от джавистов работодатели чаще всего требуют высшее техническое образование. Также компании хотят видеть такие знания и умения:
- знание Java;
- понимание принципов ООП;
- знание SQL;
- умение работать с базами данных;
- знание HTML и CSS;
- знание сетевых технологий, включая TCP и HTTP.
В вакансиях для Java-программистов несколько раз встретил требование уметь писать юнит-тесты. В объявлениях о поиске джуниоров в других стеках такого требования не увидел.
В одной из вакансий нашёл пожелание к знанию второго языка программирования, например, Python. В вакансии для веб-разработчика на Java увидел требование понимать принцип MVC.
Промежуточный итог: от младших программистов во всех стеках работодатели ожидают базового знания выбранного языка программирования. Часто встречается пожелание знать хотя бы ещё один язык. В большинстве вакансий есть требование знать HTML и CSS.
Работодатели ожидают, что Junior-программисты умеют работать с базами данных, знают сетевые технологии, владеют популярными фреймворками и библиотеками.
Изучайте операционные системы, повысьте свой уровень У нас есть курс по операционным системам. Зарегистрированные пользователи могут пройти его бесплатно. Другие бесплатные курсы можно найти по ссылке.
Что работодатели предлагают Junior-программистам
В части вакансий эйчары не указывают заработную плату, которую предлагают сотрудникам. Тем не менее объявления позволяют оценить уровень зарплат, на которые могут претендовать джуниоры. Также в вакансиях обычно есть информация о других «плюшках».
Работодатели предлагают будущим сотрудникам такие плюшки:
- добровольное медицинское страхование за счёт компании;
- абонемент в спортзал;
- напитки, йогурты, фрукты;
- изучение английского языка за счёт компании;
- корпоративные мероприятия;
- официальное оформление по трудовому кодексу;
- гибкий график работы;
- оплата обедов;
- услуги массажиста за счёт компании.
Промежуточный итог: Junior-программист может рассчитывать на заработную плату от 15 000 рублей в месяц и выше. Работодатели готовы дополнительно мотивировать джуниоров и обеспечивать им комфортабельные условия труда.
Что требуют и что дают джунам: комментарий HR-эксперта Вероники Ильиной
Я анализировал требования работодателей к джуниорам по опубликованным вакансиям. Чтобы получить полную картину, обратился к HR-эксперту Веронике Ильиной и попросил её рассказать, что требуют работодатели от Junior-программиста. Слово Веронике.
«Обычно в вакансиях джунов пишут в требованиях или пожеланиях техническое образование. На это есть несколько причин: от традиций до убеждения, что универ учит системному мышлению. Но все знают, что действительно учатся даже в топовых вузах десятки, если не единицы людей на каждом потоке. То есть настоящих сильных выпускников никогда не хватит, чтобы закрыть потребность рынка в джунах. Так что многие работодатели на самом деле закрывают глаза на образование. Особенно после того, как встречают тимлида с опытом CTO и 9 классами школы или берут в джуны бывшего бариста, потому что мехмат МГУ не смог в сортировку. А бариста смог.
Опыт обычно не требуется, то есть учебного достаточно. Но и в целом джун джуну рознь: кто-то год параллельно с учебой стажируется в известной компании, но ничего не умеет. Кто-то даже учит школьников программировать, но у самого знаний все же не хватает даже в основах. А кто-то — тот самый бывший бариста, который выучил Java дома, и нормально работает 🙂
Идеальный джун — это, конечно, вчерашний студент. Опыта нет, впитывает всё, что дают, легко подстраивается под рабочие процессы и увлечённо старается. Но студентов не напасёшься: их просто меньше, чем нужно. А тем более не хватает студентов с хорошо думающей головой. Поэтому компании медленно, но верно начинают смотреть кандидатов около 30 и старше. Да, они уже не такие «на всё согласные», но они знают, чего хотят. Конечно, негласный возрастной ценз и неверие в то, что человек в 30 может куда-то эффективно переучиться, никуда не исчезают. Но когда на рынке мало хороших студентов, кого еще рассматривать и брать?
Самое главное для джуна — уметь гуглить и не бояться спрашивать непонятное, просить помощи у живых людей. Такие джуны быстро растут. Молчуны растут намного медленнее, это логично: как расти, если ты знаешь меньше правильных решений и собственных ошибок, чем твой коллега-активист?
По хард-скилам: джун джуну рознь. «Яндекс» будет требовать от вас алгоритмов, маленькая студия — умения делать хоть что-то, маленькая и гордая студия — уметь делать простое, но очень хорошо. Нужно смотреть на конкретные требования и пробовать. Нет универсальной формулы технических навыков, с которыми вас возьмут. Но есть то, что помогает на любом уровне — кругозор в Computer Science.
Что предложат джуну: в Москве и Санкт-Петербурге джун любого направления в разработке может иметь 30-100 тысяч рублей на руки. Просто за 100 у него будет минимальный опыт работы и например невероятная алгоритмическая подготовка. А за 30 легкая стажировка или парттайм работа. Скорость роста дальше зависит от самого джуна и компании, не все умеют вовремя поднимать деньги джунам. А джуны не всегда приходят с запросом про деньги. «Плюшки» у всех примерно стандартные: пресловутые «печеньки», ДМС, фрукты какие-нибудь с фитнесом, компенсация обучения. Бывает больше и лучше, бывает меньше».
Вместо заключения: что нужно, чтобы получить должность младшего программиста
О требованиях работодателей к джунам мы узнали благодаря анализу вакансий и комментарию HR-эксперта Вероники Ильиной. Чтобы соответствовать этим требованиям, достаточно единственного фактора. Вам нужно развиваться: изучать программирование и смежные дисциплины, нарабатывать гибкие навыки. И не забывайте рассылать резюме и ходить на собеседования, без этого найти работу не получится.
Никогда не останавливайтесь: В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях
Что должен уметь junior C++?
Собственно, вопрос вынесен в заголовок, хочется получить указания от более опытных людей. Понятно, что надо знать синтаксис и базовые конструкции языка (циклы, операторы, функции и т.д.), уметь в ООП, крайне желательно быть знакомым с STL. А что ещё? Нужны ли boost, Qt? SQL? Иногда указывают что-то типа «базовых алгоритмов», это что и в каком объёме? Обязателен ли какой-то стоящий завершённый проект, который новичку не стыдно запостить на github?
О себе: бакалавр по направлению «физика», МГУ, реальные навыки описаны во втором предложении, в принципе во время учёбы пользовался Matlab и могу работать с ним, но почему-то сомневаюсь в его необходимости за пределами университета. Кстати, могут ли возникнуть в будущем затруднения, если остановиться на бакалавре и не получать магистра, или реальный опыт и навыки всегда ценятся выше формальных (надеюсь на это)?
P.S. Если ошибся с форумом и это не для Job, прошу перенести.
P.P.S. Подскажите адекватные среднерыночные деньги, на которые должен рассчитывать в Москве человек, устраивающийся джуном? На HeadHunter в большинстве стартовых вакансий почему-то зарплата не указывается. Я правильно понимаю что адекватно будет 30-40 тысяч?
Базовые алгоритмы—это понимать как работает поиск, сортировка и т.д., возможно в нескольких вариантах. Туда же понимание стандартных контейнеров, как минимум чем отличаются и какова цена операций вставки, удаления, поиска, в идеале—как устроены.
Библиотеки, я думаю, не обязательны.
По деньгам можно раза в два больше, если метить в топовые конторы вроде Google, Facebook, Intel, JetBrains, etc. Проблема только в том, что топовые международные конторы во-первых выводят R&D из России, во-вторых не во всех нужны плюсисты.
Подскажите адекватные среднерыночные деньги, на которые должен рассчитывать в Москве человек, устраивающийся джуном?
тебе щас местные насоветуют. ходи на собеседования и смотри что предлагают.
стати, могут ли возникнуть в будущем затруднения, если остановиться на бакалавре и не получать магистра, или реальный опыт и навыки всегда ценятся выше формальных (надеюсь на это)?
даже если будешь заводить трактор, то бакалавра будет достаточно, а так в рашке бакалавр магистр или кандидат наук, всем плевать, важно что ты умеешь на деле
Подскажите адекватные среднерыночные деньги, на которые должен рассчитывать в Москве человек, устраивающийся джуном?
Ща тебе про стотыщьмильёнов расскажут
Джун должен знать и главное помнить все тоже, что и сеньор, но работать при этом за еду. Прописная истина, сэр.
ЛОл! Таки решили свои тормозные поделки с Java на C++ переписать, чтобы работали быстро?
Нам нужен сильный С++ специалист для работы над ядром продуктов dotTrace/dotCover/dotMemory.
Таки решили свои тормозные поделки с Java на C++ переписать, чтобы работали быстро?
Гы, как будто подделки типа qt creator, kdevelop, etc работают лучше (притом функционала там сильно меньше)
Работают они значительно быстрее, при сравнимом общем функционале.
Это неоспоримый факт.
Но тема не об этом, каюсь за оффтоп и сворачиваю беседу на эту тему. Если хочешь продолжить разговор, пиши в личку.
Джависты на 300к/мес не нужны? Я бы к вам подтянулся через 2 года.
Там про стажера, а не джуна, но ты понял.
Насколько я знаю, нативного кода у JetBrains если и есть, то очень немного, в отличие от C++/CLI (требуещееся владение C# намекает, что это как раз тот случай).
Тут, очевидно, дело не в языке, а в архитектуре — учитывая, сколько работы та же IDEA выполняет в фоне, понятно, что она на любом языке бы ела довольно много вычислительных ресурсов и тормозила в случае их нехватки.
Насколько я знаю, нативного кода у JetBrains если и есть, то очень немного,
Нативного у них как минимум интеграция с дебаггерами, они недавно искали человека пилить lldb/gdb-интерфейс в их clion.
Засунь себе свой копрофантазии куда-нибудь подальше.
Э-э-э. кое-как уметь нечто и уметь учить машину этому нечто?
Сорри, это не твои копрофантазии, это суровая реальность 0_o
Мы программируем на С++/СLI, который компилируется в .NET-сборки.
Ну, так многие поделия на java жрут просто как жабы. Особенно раму. Вот пример: YouTrack. Какая-то простая система учёта проектов еле ворочается на 1 гиге оперативе. Jira: валится на гиге только в путь. Их (атласиан) git webserver тоже жрёт на старте под 2 гига, а даёт всё то же, что и https://gogs.io/ При этом gogs отвечает молниеносно и жрёт что-то около 10 Мб оперативки. Вот тебе и java.
На рубях такая же хрень — вся обвязка gitlab’а жрёт под 2 гига, а толку столько же, что и от gogs с 10 мегабайтами.
Так что будущее за go и swift.
Будущее за теми, кто умеет читать документацию про Xmx, как вообще работают различные аллокаторы и зачем JVM выделяет себе столько памяти.
И еще. Go и swift совершенно разные языки. Первый имеет GC, второй нет. Про это тоже почитай.
Иногда указывают что-то типа «базовых алгоритмов», это что и в каком объёме?
Умение писать fizzbuzz, insertion sort, mergesort, quicksort. Различные деревья с балансировкой и без. Алгоритмы на графах. Строковые алгоритмы. Динамическое программирование. Если ты никогда с этим не сталкивался, то можешь пройти курс Седжвика на курсере, а потом курс основанный на Кормане. Порешай задачки на leetcode, hackerrank, timus, project euler, etc.
Кстати, могут ли возникнуть в будущем затруднения, если остановиться на бакалавре и не получать магистра, или реальный опыт и навыки всегда ценятся выше формальных (надеюсь на это)?
Физика вряд ли тебе пригодится. Можешь пойти в ШАД, если тебе интересен ML.
Я правильно понимаю что адекватно будет 30-40 тысяч?
На данном этапе зарплата не имеет значения. Твоя задача попасть в как можно более крупную компанию. В аутсорсинговой компании скорее всего тебе дадут ачивку «Senior» просто за то, что ты там 5 лет будешь писать говнокод, но реальных навыков ты можешь и не получить. В большой компании вокруг тебя скорее всего будет довольно много крутых разработчиков и ты сможешь узнать много нового просто за обедом.
Ага, я тоже могу тебя отослать читать про то, что не язык имеет GC, а его реализация. Ты нашёл разность — теперь найди общее.
Жаль только гуев там буквально нет, сообщество не тянет, а создатели не хотят
поэтому нетормозящей идеи на го мы никогда не увидим
Ну, так многие поделия на java жрут просто как жабы. Особенно раму. Вот пример: YouTrack. Какая-то простая система учёта проектов еле ворочается на 1 гиге оперативе. Jira: валится на гиге только в путь. Их (атласиан) git webserver тоже жрёт на старте под 2 гига, а даёт всё то же, что
Бизнес и ничего личного: [сервер 128GB ram](http://www.ebay.com/sch/i.html?_from=R40&_trksid=p2050601.m570.l1313.TR12. ) стоит 40к рублей, или 312 рублей за GB, или 44 минуты рабочего времени разработчика с окладом 90к в месяц.
На самом деле нет такого формализованного понятия Junior в С++ и соответственно нету и строгих требований. Каждая контора набирающая юных программистов имеет какой то свой профиль работы и соответственно свои неповторимые требования к кандидатам. Кто то пишет гуёвые проги на Qt, кто то прошивки для всяких встраиваемых устройств. У всех контор требования абсолютно разные. А тебе при этом надо изучать вещи универсальные для С++, основы языка, STL и пр. То что пригодиться в большинстве случаев. Чем лучше ты это изучишь, тем больше шансов попасть в Junior-ы. Пока свободен учись. Можешь поучиться подольше, написать какие то свои небольшие проекты тогда признают и опытным разрабом. Бакалавр ты или магистр значения не имеет, абсолютно никакого. Реальные навыки и только это.
Согласен, (с предыдущим оратором) лучше будет начинать в больших конторах. Но не факт что большие конторы захотят с тобой начинать. Как повезёт.
Matlab и твоя физика могут пригодиться когда станешь опытным программером. Иногда бывают вакансии на написание софта в этих предметных областях. Пока важно найти хоть какую то работу и получить начальный опыт.
Тут на форуме постоянно набирает начинающих сишников NatSys-Lab. Думаю будет очень хорошая позиция для тебя. Они занимаются системным софтом для Linux. Это конечно не C++, а просто C, но очень перспективное направление.
никому не нужное дерьмо
insertion sort, mergesort, quicksort. Различные деревья с балансировкой и без. Алгоритмы на графах. Строковые алгоритмы. Динамическое программирование. Если ты никогда с этим не сталкивался, то можешь пройти курс Седжвика на курсере, а потом курс основанный на Кормане. Порешай задачки на leetcode, hackerrank, timus, project euler, etc.
всё это дерьмо не нужно на практике ( если ты не практикующий олимпиадник )
по сабжу. джуну C++ необходимо на три с плюсом знать язык ( т.е. как минимум осилить Страуструпа ) и знать азы апи операционки ( т.е. основы работы с памятью, файлами, тредами, процессами ) под которую он решил писать код, т.е. для онтопика это позикс.
всё это дерьмо не нужно на практике ( если ты не практикующий олимпиадник )
Ты либо принимаешь правила и проходишь собеседование в топовую компанию, либо продолжаешь всем доказывать что алгоритмы не нужны и идешь работать в EPAM, Luxoft или в любую другую аутсорсинговую контору. Без знания алгоритмов ты никогда не попадешь в команду разработки очередной крутой распределенной системы для Google/Facebook/etc.
по сабжу. джуну C++ необходимо на три с плюсом знать язык ( т.е. как минимум осилить Страуструпа ) и знать азы апи операционки ( т.е. основы работы с памятью, файлами, тредами, процессами ) под которую он решил писать код, т.е. для онтопика это позикс.
Ахаха, ну да, ну да. А потом у таких спрашивают на собеседовании про виртуальные конструкторы и они начинают нести чушь. Треды и процессы это отдельная огромная часть CS. Lock free, сами блокировки, модель памяти итд итп.
kirk_johnson недавно говорил, что ищет спеца по плюсам. Может он тебя просветит про текущее положение дел на рынке.
Программа минимум: что должен знать начинающий C# программист
Мош, меня только что приняли на должность Junior C#-разработчик. Что ты посоветуешь? Что мне необходимо выучить?
Итак, если вы ищете первую работу в качестве C#-разработчика или недавно её получили, эта статья расскажет вам, какие навыки являются необходимыми. Я постарался объединить их в единый «путь», который подойдёт желающим разрабатывать как декстопные, так и веб-приложения.
Прежде чем я углублюсь в детали, я проясню кое-что: вы — джуниор, вам не нужно знать всё на свете! Никто не знает всего, даже матёрые разработчики. Мир программирования огромен и постоянно растёт. Поэтому каждый разработчик силён лишь в определённых областях, в зависимости от тех проектов, над которыми он работал.
Каждый навык будет сопровождаться одной или несколькими ссылками на полезные ресурсы.
Базовые навыки
Вне зависимости от выбранной сферы разработки существует несколько моментов, которые стоит знать.
Структуры данных и алгоритмы
Если у вас нет степени в Computer Science, я очень рекомендую потратить месяц на изучение структур данных и алгоритмов. Это основы программирования. Конечно, вы можете пропустить их и заняться веб-разработкой, но поверьте, разница между изучавшим этот вопрос программистом и пропустившим его заметна.
Вы можете удивиться, но крупные компании наподобие Microsoft, Apple и Amazon уделяют на интервью много времени именно проверке знания структур данных и алгоритмов, а не ASP.NET 5 или WPF! Они просто хотят понять, можете ли вы мыслить, как программист.
Вот неплохая книга для начала изучения: Data Structures and Algorithms Made Easy
Если вы в чём-то не разобрались — не отчаивайтесь! Просто убедитесь, что вы поняли, что такое списки, стеки, очереди, деревья и хеш-таблицы, и умеете их реализовывать на чистом C#. Реализуйте несколько алгоритмов поиска и сортировки.
Базы данных
SQL Server — это наиболее часто используемая реляционная СУБД среди .NET разработчиков. Разберитесь в основах реляционных баз данных и базовых операциях в SQL Server.
T-SQL — это язык запросов, используемый в SQL Server. Освойте функции SELECT, INSERT, UPDATE, DELETE, JOIN и GROUP BY.
Вот полезные материалы:
-
;
- T-SQL Step by Step.
Когда вы работаете с РСУБД, то часто используете системы объектно-реляционного отображения для работы с объектами в базе данных. Существует много таких систем, но самой популярной является Entity Framework.
Материалы для изучения:
-
;
- Entity Framework course on Udemy.
Веб-разработка
Создание веб-приложений кардинально отличается от разработки десктопных. Веб-приложение содержит как минимум две части: клиент, запускаемый в браузере пользователя (фронтенд), и сервер, обрабатывающий все действия пользователя в клиенте (бэкенд).
Поэтому все веб-разработчики делятся на 3 группы:
- Фронтенд-разработчики;
- Бэкенд-разработчики;
- Full-stack-разработчики: те, кто занимаются и фронт-, и бэкендом.
В зависимости от ваших предпочтений стоит выбрать один из двух путей. Full-stack-разработчики обычно более востребованы.
Фронтенд
Если вы собрались заняться фронтендом, то вам нужно познакомиться с основами HTML, CSS и Javascript.
HTML — это язык разметки веб-страниц. В отличие от языков программирования (таких как C#), у него нет логики. Для декорации нашей страницы мы используем CSS. И, наконец, JavaScript — язык, отвечающий за поведение веб-страницы.
Материалы для изучения:
Бэкенд
ASP.NET MVC — это доминирующий среди C#-разработчиков фреймворк для создания серверных веб-приложений. Для работы с ASP.NET MVC вам всё равно потребуется базовое знание HTML, CSS и Javascript. Поэтому я советую вам начать изучение с фронтенда и затем перейти к бэкенду, изучив весь спектр веб-разработки.
Вот моё руководство, в котором мы создадим простое приложение с использованием ASP.NET MVC5 и Entity Framework 6: A Step-by-Step ASP.NET MVC Tutorial for Beginners
Десктоп-разработка
Если вы хотите заняться разработкой приложений под Windows, вам понадобится отличный от предыдущего набор навыков (хотя и они, как ни странно, могут пригодиться). Большинство заданий потребует от вас знания XAML, WPF или Windows Forms.
Профессия «Программист C++» — кто такой и чем занимается
Язык программирования C++ – это основа основ. Об этом вам скажет любой программист. Именно он во многом повлиял на Java, C# и многие другие популярные языки программирования.
Разработчики C++ занимаются, в первую очередь, созданием программных продуктов. Наличие таких преимуществ, как полная совместимость с языком программирования C, кроссплатформенность и высокая производительность делают C++ одним из главных и наиболее востребованных инструментов разработчиков.
Чем занимаются C++ программисты?
Область применения языка C++ очень широка. Следовательно и диапазон задач для программиста C++ также велик. Такой специалист может заниматься разработкой:
- программного обеспечения и драйверов;
- приложений и игр;
- серверов и сопутствующего софта;
- операционных систем, как мобильных, так и десктопных.
В обязанности C++ программиста, в зависимости от его грейда и компании, в которой он работает, может входить следующее:
- непосредственно разработка;
- создание технической документации;
- техническая поддержка созданного продукта;
- исправление ошибок;
- формирование ТЗ;
- бюджетирование проекта;
- управление отделом разработки.
Что должен знать и уметь C++ программист?
Как и в любой другой профессии, чем больше C++ программист знает и умеет, тем больше будет его заработная плата. Об этом мы поговорим чуть дальше, а сейчас рассмотрим основные параметры, на которые точно обратит внимание потенциальный работодатель. Для успешного трудоустройства программисту C++ следует знать:
- сам язык программирования C++, также приветствуется владение другими языками, например, C или C#, Python или Java;
- CSS, SQL, HTML (знания в этой области пригодятся каждому программисту без исключения);
- среду разработки Microsoft Visual C++ или аналогичную;
- основные правила разработки, написания тех. документации, составления ТЗ, проведения тестирования и отладки.
Программисты C++ должны хорошо разбираться в прикладной информатике и математике. Также, очень приветствуется владение иностранным языком. Во-первых, именно английский язык является основным для большей части существующего программного обеспечения. А во-вторых, это откроет C++ программисту дорогу на международный рынок труда, где заработные платы выше, а проекты, зачастую, масштабнее.
Какими личными качествами должен обладать C++ программист?
Большинство современных профессий подразумевают, что вы будете проводить много времени за компьютером в сидячем положении – это не новость. C++ программисты работают очень много, но они любят свою работу, получают удовольствие от того, что делают. Если разобрать личные качества такого специалиста по полочкам, то получится следующее:
- тяга к точным наукам;
- во многом, технический склад ума;
- логическое, системное мышление;
- многофункциональность;
- глубокое терпение и усидчивость;
- высокий уровень ответственности и пунктуальности;
- умение планировать не только свой день, но и весь рабочий процесс.
Зачастую, именно от C++ программистов зависит качество конечного продукта, а значит, такие специалисты должны быть высококлассными профессионалами!
Уникальное предложение — -50% на ВСЕ курсы Skillbox. Получите современную онлайн-профессию, раскройте свой потенциал.
Активировать скидку →
Плюсы и минусы работы программиста C++
Если взглянуть на профессию C++ программиста с точки зрения оценки ее плюсов и минусов, то преимуществ выйдет, определенно, больше. Для вашего удобства я собрал их в небольшой список:
- язык программирования очень популярен и будет сохранять за собой ведущие позиции еще долгое время;
- зная C++, очень легко перейти на другой язык программирования, например, C, C#, Java или Python;
- высокий спрос на квалифицированных программистов C++ со стороны работодателей;
- конкурентоспособная заработная плата;
- IT-сфера сама по себе очень перспективна;
- доступное обучение.
К слову, минусы тоже есть, но они актуальны для многих IT-специальностей:
- малоподвижная, сидячая работа;
- высокая ответственность за результат;
- потребность в постоянном повышении уровня своей квалификации.
Зарплата Си-программиста и перспективы
C++ программисты были и будут востребованы еще долгое время, как в рядах отечественных разработчиков, так и среди зарубежных компаний. В первую очередь, в услугах таких специалистов заинтересованы фирмы, которые занимаются разработкой программного обеспечения.
Зарплата программиста C++ зависит от целого ряда факторов:
- знание других языков программирования;
- опыт работы;
- талант и целеустремленность;
- уровень и расположение компании;
- сложность и длительность проекта.
В продолжение темы дохода C++ программистов я подобрал для вас динамику изменений заработных плат по Москве за последний год:
Как ни странно, но столичный регион расположился лишь на 7-м месте по всей России по уровню зарплат C++ программистов. В других субъектах нашей необъятной готовы предложить больше, ознакомьтесь сами:
Вакансий, которые подойдут C++ программистам на сайте HH.ru на сегодняшний день достаточно много (более 2 200 на момент написания статьи), но большинство из них предполагают владение несколькими языками программирования. Если ваш опыт работы составляет менее года, то работодатели готовы предложить заработную плату порядка 60 000 рублей. Требования к Junior C++ Developer выглядят следующим образом:
- понимание принципов OOP;
- знание языков C++/C#;
- умение быстро включаться в работу команды, обучаться;
- способность самостоятельно искать решения возникающих задач;
- английский (свободное чтение технической документации);
- понимание принципов OOD, SOLID.
Как я и говорил ранее, знание английского в этой области очень вам пригодится! А получив заветный опыт работы, вы можете претендовать на позицию Middle C++ Developer с заработной платой от 100 000 рублей. В таком случае, работодатель будет ждать от вас:
- опыт в разработке более 1 года;
- хорошее знание С++ / STL;
- опыт разработки на платформе Qt/C++;
- знание и понимание концепций ООП и шаблонов проектирования;
- умение разбираться в чужом коде;
- знания на базовом уровне сетевых протоколов TCP/UDP;
- умение решать задачи самостоятельно;
- навыки разработки многопоточного клиент-сервисного ПО;
- опыт использования средств контроля версий GIT.
C++ разработчикам с опытом работы более 3-х лет работодатели готовы предложить оклад более, чем в 160 000 рублей ежемесячно и хорошие премиальные. Кроме того, есть возможность удаленной работы и сотрудничества с зарубежными клиентами.
В среднем, путь талантливого C++ программиста по карьерной лестнице с позиции Junior до Senior или Team Leader занимает не более 2-3 лет. Главное – поставить перед собой цель!
Как стать программистом C++
Язык программирования C++ по праву считается достаточно простым для изучения. Но несмотря на это, освоить его самостоятельно очень сложно. Если вы все-таки выберете самообразование, то будьте готовы к тоннам учебной литературы и бессонным ночам. Кроме того, вы можете поступить в специализированное учебное заведение: колледж или университет. Сегодня образовательных программ, посвященных информатике или программированию, предостаточно. Но что делать тем, кто не готов не спать ночами или тратить 4-5 лет на очное образование? У меня есть решение и на такой случай.
Получить специальность C++ программиста можно на → онлайн-курсах по языку C++.
С точки зрения продолжительности обучения и его эффективности – это оптимальное решение. Онлайн-курсы подойдут и новичкам в программировании, и тем, кто хочет расширить свои знания в сфере IT. Кроме того, начать работать по специальности C++ программиста вы сможете еще во время обучения. Преимуществ много, но я собрал для вас самые основные:
- Освоение специальности в короткие сроки — занятия проводятся в оптимальное для вас время, а темп прохождения курса вы можете выбрать самостоятельно.
- Четко структурированная информация — вы изучаете отобранную профессионалами информацию в очень удобном формате.
- Наработанное портфолио — то, что так часто ценят все работодатели. Домашние задания станут отличной практикой, а все итоговые работы вы сможете продемонстрировать заказчику в качестве портфолио.
- Удобство обучения — формат занятий дает вам возможность получать информацию где угодно, когда угодно и на любом гаджете.
Если вас заинтересовала профессия — ставьте плюс в комментариях, расскажем, как в ней легко стартануть