что нужно знать javascript junior
Что должен знать Junior JavaScript разработчик
При поиске работы на вакансию младшего разработчика на JavaScript стоит понимать, что джун джуну рознь. Если ударяться в грейды, то по-хорошему Junior JavaScript должен быть разделен на 3-4 уровня. Но так как четкого разграничения не сложилось, то на вакансию с названием Junior JavaScript может претендовать, как новичок, прошедший курсы, но с опытом в верстке, так и специалист с продвинутыми знаниями в JS и React.
Как может называться вакансия
По некоторым названиям вакансий понятно, какого уровня требуется специалист. Так HTML Верстальщик это отличная вакансия для новичка, который только начинает свой путь в WEB-разработке. В других названиях могут присутствовать такие слова, как React, Vue, Angular, здесь понятно, что от программиста ждут более глубоких знаний не только в JS, но и сопутствующих технологиях.
Какие знания обязательны для вакансии Junior JavaScript
Как понимаете это нижняя граница Junior JS, здесь платят мало, много верстки, мало разработки.
Сопутствующие технологии знание, которых требуют работодатели
На более оплачиваемой работе просят опыт коммерческой или студенческой разработки на
Для продвинутого джуна также будет плюсом знание или умение работать с
Также для работодателей всегда является плюсом:
В конечном счете стек технологий различается от проекта к проекту и что для одних может быть обязательным для других не будет иметь значения. Поэтому бежать и учить все, что перечислено выше не имеет смысла. Стоит сконцентрироваться на более фундаментальных вещах, а опыт работы с различными технологиями добирать по пути.
300+ вопросов с собеседований по JavaScript. Часть 1, уровень — Junior
Хочешь проверить свои знания по JS?
Подпишись на наш канал с тестами по JS в Telegram!
Сайт DOU.UA составил подборку актуальных вопросов по JavaScript, которые задают на технических собеседованиях. Публикуем перевод первой части этой статьи, где собраны вопросы для начинающих разработчиков.
Общие вопросы
1. Какие методы HTTP-запросов вы знаете?
2. Какие версии HTTP-протокола вам известны?
3. Какие знаете коды ответа (состояния) HTTP?
4. Что такое Cross-Origin Resource Sharing? Как устранить проблемы с CORS?
5. Что такое cookie?
6. Какой максимальный размер cookie?
7. Что означает директива use strict?
8. Чем JS отличается при работе с фронтендом и бэкендом?
9. Что такое статическая и динамическая типизации?
10. Как клиент взаимодействует с сервером?
12. Объясните понятие мутабельность/иммутабельность? Какие типы относятся к мутабельным и наоборот?
13. Как искать ошибки в коде? Используете ли дебаггер?
JS Core
15. Какие в JS есть типы данных?
16. Как проверить, является ли объект массивом?
17. Как проверить, является ли число конечным?
18. Як проверить, что переменная равна NaN?
19. Чем отличается поведение isNaN() и Number.isNaN()?
20. Сравните ключевые слова var, let, const.
21. Что такое область видимости?
23. Для чего предназначены методы setTimeout и setInterval?
24. Сравните подходы работы с асинхронным кодом: сallbacks vs promises vs async/await.
25. Можно ли записывать новые свойства/функции в прототипы стандартных классов (Array, Object и т.д.)? Почему нет? В каких случаях это делать можно? Как обезопасить себя, если нужно расширить прототип?
26. Назовите методы массивов, которые помните, и скажите, для чего они нужны.
27. Какие вы знаете методы для переборки массива? Чем они отличаются друг от друга?
28. Как работают операторы присваивания/сравнения/строковые/арифметические/битовые и т.д.?
29. Опишите назначение и принципы работы с коллекциями Map и Set.
30. Что означает глубокая (deep) и поверхностная (shallow) копия объекта? Как сделать каждую из них?
Функции
31. В чем разница между декларацией функции (function declaration) и функциональным выражением (function expression)?
32. Что такое анонимная функция?
33. Расскажите о стрелочных функциях (arrow function). Чем стрелочные функции отличаются от обычных?
34. Что такое и для чего используют IIFE (Immediately Invoked Function Expression)?
35. Что такое hoisting, как он работает для переменных и функций?
36. Что такое замыкание (closure) и каковы сценарии его использования?
37. Как вы понимаете замыкания? Что будет выведено в консоли в этом случае?
39. Что означает ключевое слово this?
40. Что такое потеря контекста, когда она происходит и как ее предотвратить?
41. Методы функций bind/call/apply — зачем они нужны и чем отличаются?
Фронтенд
43. Сравните атрибуты подключения скрипта async и defer в HTML-документе.
44. Чем отличаются свойства HTML-элементов innerHTML и innerText?
45. Опишите процесс всплытия (bubbling) событий в DOM.
46. Как остановить всплытие (bubbling) события?
47. Как остановить дефолтную обработку события?
48. Чему равен this в обработчике событий (event handler)?
49. Что такое LocalStorage и SessionStorage? Какой максимальный размер LocalStorage?
50. Как получить высоту блока? Его положение относительно границ документа?
52. Чем отличается dev-сборка от prod?
Верстка
53. Что такое блочная модель CSS?
54. Какие способы центрирования блочного контента по горизонтали и вертикали вы знаете?
55. Какие подходы в верстке вам известны (float, flex, grid, etc)?
56. Как сделать приложение responsive?
57. Каковы принципы семантической верстки?
59. Как упростить написание кросс-браузерных стилей?
60. Практическое задание: прокомментировать и исправить пример плохого CSS или HTML.
61. Что такое CSS-препроцессоры? С какими вы работали? Что нового они приносят в стандартный CSS?
Angular
62. Перечислите основные компоненты фреймворка (модуль, роут, директива и т.п.).
63. В чем разница между компонентом и директивой?
64. Расскажите о жизненном цикле компонента.
65. Перечислите часто используемые хуки жизненного цикла компонента и расскажите, для чего они нужны.
66. В чем разница между конструктором и ngOnInit-хуком?
67. Как защитить роут от несанкционированного доступа? Какие механизмы предоставляет для этого фреймворк?
68. Что такое Lazy loading, как и для чего используется?
69. Каково назначение RouterOutlet?
70. Как компоненты могут взаимодействовать друг с другом?
71. Как создать two-way binding свойство для компонента?
72. Какие типы форм есть у фреймворка? Что и в каких случаях лучше использовать?
73. Какие у формы есть состояния и как это можно применить?
74. Зачем нужны сервисы? Как с ними работать?
75. Что такое singleton-сервисы? Каково их назначение? Способ создания?
76. Каковы способы объявления сервисов?
77. Для чего нужны модули? Сколько их должно быть в проекте?
78. Зачем нужны общие модули (shared)?
79. Каковы преимущества типизации в TypeScript?
80. Какие возможности TypeScript можно использовать для типизации (здесь имеются в виду интерфейсы, типы, enum и т.д.)?
81. В чем разница между интерфейсом и классом?
82. А между интерфейсом и абстрактным классом?
83. А между интерфейсом и типом?
84. Что такое RxJS? Как он используется во фреймворке? Какие компоненты фреймворка тесно связаны с ним?
85. Чем отличаются Observable и Promise?
86. Для чего нужны Subjects? Какие типы Subjects существуют?
87. Как сделать несколько последовательных запросов к API с помощью HTTP-сервиса и RxJS?
88. В чем разница между switchMap, concatMap, mergeMap?
89. Как можно сконфигурировать Angular-приложение?
90. Зачем нужны environment-файлы? Когда их лучше не использовать?
91. В чем разница между «умным» (smart) и «глупым» (dumb) компонентами? В каких случаях применяется каждый из них?
92. В чем разница между NgForm, FormGroup и FormControl и как их применяют для построения форм?
93. Зачем нужен и как работает async pipe?
94. Как следить за развитием фреймворка? Каких известных людей, связанных с Angular, вы знаете/читаете?
React
95. Вы работали с классовыми компонентами? В чем их особенность?
96. Какие данные лучше хранить в состоянии компонента, а какие передавать через пропсы? Приведите пример.
97. Знакомы ли вы с хуками? В чем их преимущества? Приходилось ли делать свои и с какой целью?
98. Знакомы ли вы с фрагментами и порталами? Зачем они нужны?
99. Когда и для чего используют рефы?
100. Какие вы знаете методы жизненного цикла компонента?
101. В каком методе жизненного цикла компонента лучше делать запросы на сервер? Почему?
102. В каком методе жизненного цикла компонента лучше делать подписку и отписку от листенера? Почему? Зачем отписываться?
103. Был ли у вас опыт работы с контекстом? Когда его стоит использовать?
104. В чем особенность PureComponent?
105. Вы работали с мемоизированными селекторами (memoized selectors)? Для чего их используют и какой принцип их работы?
106. В чем видите преимущества библиотеки React?
107. Почему библиотека React быстрая? Что такое Virtual DOM и Shadow DOM?
108. Зачем в списках ключи? Можно ли делать ключами индексы элементов массива? Когда это оправдано?
109. В чем основная идея Redux?
110. Работа со стилями в React.
111. React — это библиотека или фреймворк? Чем отличаются эти два понятия?
112. Можно ли использовать jQuery вместе с React? Почему да/нет?
113. Что такое codemod?
114. Приходилось ли вам настраивать проект React с нуля? С помощью каких инструментов вы это делали?
115. Перечислите все библиотеки, которые использовали в связке с React.
116. Что самое сложное приходилось реализовывать с помощью React?
Бэкенд
117. Что такое REPL?
118. Что такое streams в Node.js?
119. Что такое middleware?
120. Для чего используют функцию setImmediate?
121. Зачем нужен app.param () в express?
122. Что такое token based authentication?
Базы данных
123. Напишите простой запрос для вычисления трех авторов, у которых больше всего книг.
124. Напишите запрос, который выбирает последние три комментария для конкретного пользователя для двух таблиц: комментарии и пользователи.
125. Спроектируйте простую схему базы данных для библиотеки.
126. Для чего используют SQL-оператор HAVING?
127. Зачем используют SQL-оператор LEFT JOIN?
128. Чем отличается embed- от reference-связи в MongoDB?
129. В одном проекте программисты сохраняют данные в MongoDB-коллекции комментариев, используя такие типы данных (смотрите ниже). Что плохого в этом решении?
130. В проекте понадобилось внести изменения в структуру таблиц, добавить несколько полей и индексы. Как программисты будут делать это на продакшене?
Инструменты
131. Каждый раз, когда вы делаете pull, случается конфликт в последней строке во всех файлах, которые вы редактировали. Что происходит?
132. Что делает команда git fetch?
133. Какие git hygiene подходы вы знаете?
134. Что такое CI/CD? Для чего это нужно?
Практические задания
135. Расскажите, какие есть способы копирования простого объекта типа obj =
136. Напишите deep clone для объекта.
137. Назовите различные способы, как поменять местами значения двух переменных.
138. Менеджер попросил в задаче поменять статусы с «active, inactive» на «active, removed», но в коде фигурируют только цифры и непонятно, какой статус соответствует какой цифре. Как помочь будущим программистам не лезть в документацию по коду? Вопрос ставят на конкретном примере с кодом.
139. Нужно сделать минипроект — список пользователей с формой создания/редактирования пользователя:
Путь JavaScript Junior: подборка лучших ресурсов для обучения
Каждый сеньор когда-то был джуном, но не каждый джун вырастет в сеньора. Подборка ресурсов для амбициозных и перспективных JavaScript Junior.
Погружение в язык
Без глубокого понимания концепций языка программист не может профессионально развиваться. У JavaScript джуна впереди увлекательная дорога, полная загадок и открытий. Выбирайте ваш любимый способ обучения и начинайте погружение!
Видео-уроки
ES6 и дальше
Современные JavaScript Junior, возможно, никогда не сталкивались с цепочками прототипов и асинхронными «велосипедами». Сейчас на фронтенде правит бал стандарт ES6. Смотрите один из самых лучших курсов в рунете от CodeDojo:
А джуниорам, владеющим английским, совершенно необходимо посмотреть великолепную лекцию freeCodeCamp.
Основы
Про то, что происходит под капотом, тоже нельзя забывать. Разобраться с конструкторами и прототипами поможет видеокурс freeCodeCamp и этот плейлист loftblog:
JavaScript был рожден, чтобы манипулировать веб-страницами. Это по-прежнему одна из основных задач языка. Лекция Дмитрия Лаврика окончательно прояснит все моменты работы с объектной моделью документа:
Книги
Держите лучшие в мире книги для JavaScript Junior, если вы еще не успели изучить их от корки до корки:
Онлайн-учебники
90% русскоязычных джуниоров учат JavaScript по учебнику Ильи Кантора. А вот еще один отличный ресурс с классической структурой «от простого к сложному».
Полезные статьи
Листание популярных интернет-сайтов IT-тематики – важная часть образования JavaScript Junior. Чтение статей помогает:
Документация
Последнее прибежище разработчика – документация языка. Вам придется обращаться к ней не раз, поэтому будьте знакомы, Mozilla Developer Network. А здесь вы можете узнать немного о темной стороне спецификации.
Инструменты и инфраструктура
Для эффективной и быстрой разработки важно обустроить удобную рабочую среду. Все современные проекты используют сборщики и системы контроля версий. JavaScript Junior должен в этом разбираться.
Node и сборщики файлов
Великолепный скринкаст Ильи Кантора введет вас в курс дела и поможет освоиться с платформой Node.js:
После этого можно переходить к изучению сборщиков: Gulp или Webpack на том же канале.
А вот несколько полезных статей для начала:
Git – самая популярная система контроля версий, она используется во многих проектах, поэтому JavaScript Junior должен в ней разбираться. Основные сведения можно почерпнуть из книги Pro Git или видео-курса по основам Git. А эта замечательная интерактивная игра поможет разобраться с моделями ветвления.
Шпаргалки по командам сэкономят ваше время:
Отладка кода
Отладка – неотъемлемая часть программирования. Главный помощник JavaScript джуниора – консоль разработчика Google Chrome. Чем быстрее вы с ней подружитесь, тем эффективнее будет ваша работа. В помощь вам короткое, но очень информативное видео от школы Hillel:
Фреймворки
Многие компании создают свои продукты на базе современных JavaScript-фреймворков, которые позволяют с легкостью делать очень сложные вещи. Их изучение не только станет огромным плюсом в вашем резюме, но и позволит лучше понять механизмы работы и возможности языка.
React
Освоить основы самого популярного JS-фреймворка поможет этот учебник. В нем понятно разобраны все базовые вопросы, начиная с JSX-синтаксиса и заканчивая моделью Redux.
Еще пара статей по Redux с примерами:
Разобравшись, начинайте экспериментировать. Напишите собственный чат или попробуйте осилить вот этот мастер-класс по созданию бухгалтерского приложения:
Angular
Еще один популярный фреймворк, с которым может встретиться JavaScript Junior. Не путайте AngularJS (он уже устарел) и просто Angular. Проект активно развивается, выходят новые версии. Чтобы не потеряться в них, держите постоянно обновляющийся учебник. А если вы знаете английский, то обязательно посмотрите скринкаст по Angular 6. В качестве шпаргалки вполне подойдет этот конспект по Angular 5.
Священная война фреймворков в самом разгаре. Если вы еще не сделали свой выбор, возможно эта статья поможет Angular vs. React: что лучше для веб-разработки?
Про Vue.js мы тоже не забудем.
Практика для JavaScript Junior
Самое сложное для джуниора – превратить теоретические знания в практические умения. Вот несколько материалов вам в помощь:
А лучше всего создайте свою игру. Это полезно и интересно.
Прежде чем бросаться с головой в обучение, посмотрите это коротенькое видео об ошибках, которые совершают джуниоры:
Что требуют от джуниоров работодатели: анализ вакансий для младших программистов
В этом обзоре систематизируем требования работодателей к 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-разработчикам (фронтенд)
Работодатели требуют от соискателей на позицию фронтенд-разработчиков такие знания и умения:
В одной вакансии встретил пожелание — соискатель на позицию фронтендера должен знать PHP хотя бы на базовом уровне. Также в единичных вакансиях работодатель искал кандидатов со знанием TypeScript, умением работать с препроцессорами (SCSS или Less), знание Angular.
Требования к Node.js-разработчикам (бэкенд)
Работодатели ждут от Node.js-разработчиков таких знаний и умений:
В вакансиях для Node.js-разработчиков часто встречаются жёсткие требования к знанию английского языка. В нескольких вакансиях увидел пожелание к знанию ещё одного серверного языка, например, PHP или Python.
Требования к PHP-программистам
От младших программистов на PHP компании ожидают таких знаний и умений:
В нескольких вакансиях работодатели хотят, чтобы соискатель имел базовые знания JavaScript.
Требования к Python-программистам
Один из работодателей принимает стажёров, которые знают основы Python и SQL. Стажировка оплачиваемая. К младшим программистам предъявляются более серьёзные требования:
В вакансиях для Python-программистов практически не встречаются требования знать ещё один язык программирования. Также мне не попались требования знать HTML и CSS и уметь верстать. Тем не менее это актуальные для веб-разработчиков умения.
Требования к Java-программистам
Выше сказано, что от джавистов работодатели чаще всего требуют высшее техническое образование. Также компании хотят видеть такие знания и умения:
В вакансиях для 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-эксперта Вероники Ильиной. Чтобы соответствовать этим требованиям, достаточно единственного фактора. Вам нужно развиваться: изучать программирование и смежные дисциплины, нарабатывать гибкие навыки. И не забывайте рассылать резюме и ходить на собеседования, без этого найти работу не получится.
Никогда не останавливайтесь: В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях