Category: Трудоустройство

22
Янв
2021

🕸 Что ждет профессию веб-разработчика в 2021 году: мнения экспертов

Технологии играют важную роль в повседневной жизни и применяются везде – от простых решений до инновационных продуктов. На основе мнений экспертов мы рассмотрим перспективы индустрии веб-разработки в наступившем 2021 году.

19
Янв
2021

📊 Проверьте свои навыки: еще 26 вопросов с собеседований по Data Science с ответами

Статья продолжает тему первой публикации («26 вопросов и ответов с собеседований») и предлагает 26 новых вопросов для проверки навыков в Data Science.

Сможете ли вы ответить на все…

18
Янв
2021

📊 Проверьте свои навыки: 26 вопросов и ответов с собеседований по Data Science

Если вы уже освоили основы профессии, стоит проверить свои шансы на трудоустройство. Публикуем 26 вопросов и ответов с реальных собеседований на позиции в Data Science.

В этой стат…

11
Янв
2021

❓ Почему нельзя соглашаться на тестовый кодинг во время собеседования

Собеседования по программной инженерии часто включают в себя какое-то тестовое задание по программированию, и это не очень хорошо. Объясним, почему.

Перевод публикуется с сокращени…

29
Дек
2020

🕸 Обучение веб-разработке: как быстро и успешно пройти собеседование

Веб-разработка – это высококонкурентный рынок труда. Помимо отсутствия необходимых технических навыков, первым препятствием для входа в профессию является техническое собеседование. Рассказываем, как пройти его с наименьшими потерями.

Типичное техническое интервью включает введение, дискуссию о проектах, а также углубленные вопросы о ваших знаниях, умениях и навыках. Успех на собеседовании зависит от уровня подготовки и способности понимать интервьюера, превосходя его ожидания. Изучите компанию-работодателя. Узнайте, какие технологии и фреймворки там используют. Каковы перспективы компании-работодателя на следующую пятилетку? С какими фирмами она сотрудничает? Это исследование даст вам не только общие темы для разговора, но и покажет интерес к бизнесу. Найдите своего интервьюера в LinkedIn. Узнав его, вы сможете адаптировать ответы: например, директор по персоналу может не знать технического жаргона, а ведущему инженеру-программисту термины будут по душе.

Давайте разберем вопросы, которые обычно задают веб-разработчику средней руки на собеседованиях и дадим на них правильные ответы:

1) Объясните, каковы основные обязанности веб-разработчика?

· Программа тестирования и отладки веб-приложений;

· Проектирование, разработка и развертывание веб-приложений;

· Загрузка сайтов на сервер и регистрация его в различных поисковых системах;

· Координация действия с другими специалистами (дизайнерами и программистами);

· Исправление ошибок, устранение неполадок и решение проблем;

· Разработка структур кода для решения конкретных задач;

· Поддержка и помощь в содержании и обслуживании веб-сайтов;

· Ответственность за код на всех этапах подготовки, разработки, тестирования и производства.


2) Что должен знать веб-разработчик?

Хороший веб-разработчик должен знать:

· HTML;

· CSS;

· SQL;

· PHP / Ruby / Python;

· JavaScript и фреймворки.

3) Перечислите преимущества HTTP / 2 по сравнению с HTTP / 1.1?

Список преимуществ HTTP / 2 по сравнению с HTTP / 1.1:

· Сжатие данных заголовков HTTP;

· Серверные push-технологии;

· Параллельная загрузка элементов страницы через одно соединение TCP;

· Приоритезация запросов.

4) Объясните, что такое длинный опрос?

Длинный опрос – это шаблон разработки веб-приложений, используемый для имитации передачи данных с сервера клиенту. Когда используется длинный опрос, клиент отправляет запрос на сервер, и соединение остается неизменным, пока сервер не будет готов отправить данные. Соединение будет закрыто только после того, как данные отправятся обратно клиенту или истечет время ожидания соединения.

5) Объясните, как можно изменить цвет фона элемента формы в CSS, когда пользователь вводит текст? Это работает во всех браузерах?

Да, вы можете изменить внешний вид элементов формы по умолчанию, стилизовав теги HTML: input, select и textarea, но это не будет работать во всех браузерах.

6) Какой тег нужно использовать в HTML для управления вводом многострочного текста?

Для управления вводом многострочного текста вы можете использовать тег «textarea».

7) Объясните, как можно ссылаться на файл CSS на веб-странице?

Вы можете обратиться к файлу .CSS на веб-странице с помощью тега <link>. Он должен находиться между тегом <head> </head>.

8) Перечислите несколько способов уменьшить время загрузки страницы?

Вы можете сделать следующее, чтобы сократить время загрузки страницы:

· Уменьшить размер изображения;

· Удалить ненужные виджеты;

· Использовать сжатие HTTP;

· Разместить CSS вверху, а ссылки на скрипт внизу или во внешних файлах;

· Уменьшить поиск;

· Минимизировать перенаправления;

· Использовать кеширование;


9) Чем XHTML отличается от HTML?

· XHTML требует, чтобы все теги были в нижнем регистре;

· XHTML требует, чтобы все теги были правильно закрыты;

· XHTML требует, чтобы все атрибуты были заключены в двойные кавычки;

· XHTML запрещает встроенным элементам содержать элементы уровня блока.

10) Перечислите новые API, предоставляемые стандартом HTML 5?

HTML 5 поставляется с рядом новых API:

· Медиа API;

· API текстовой дорожки;

· API кэша приложений;

· API передачи данных;

· Взаимодействие с пользователем;

· Командный API;

· API проверки ограничений;

· API истории.

11. Как вы организуете код JavaScript?

· Систематизируем свой код;

· Разделяем JavaScript и HTML;

· Разбиваем JS на логические блоки и храним его в отдельных файлах;

· Используем скрипт для объединения отдельных файлов в один пакет;

· Используем правильное пространство имён в JavaScript, чтобы не захламлять глобальное пространство имён.

12. Какие инструменты вы используете для поиска багов?

Ответ будет зависеть от среды разработки. Для разных языков программирования используются разные профилировщики, некоторые библиотеки имеют встроенные инструменты для поиска и устранения багов. Главное, знать не инструмент, а подход к решению той или иной проблемы.

13.Учитываете ли вы SEO, UX и безопасность при создании приложения?

Вы должны понимать и сочетать эти факторы в работе. Из ответа будет ясно, чему вы отдаёте приоритет. Если, к примеру, речь про интернет-издание, важнее будет производительность сайта и SEO, а если нужно разрабатывать сайт крупной финансовой компании – превыше всего окажется безопасность.

***

Начиная обучение на веб-разработчика, готовьтесь пройти множество собеседований – хороших и плохих. Каждое интервью – это опыт, который поможет вам развиться и получить хорошую высокооплачиваемую должность в солидной компании. Если вы только осваиваете профессию, стоит обратить внимание на учебные курсы по веб-разработке онлайн-академии GeekBrains. Под руководством опытных преподавателей вы сможете получить необходимые для начала карьеры знания и существенно сократить путь к вожделенной должности. Актуальная программа предполагает 2 – 3 вебинара в неделю и 2 месяца стажировки, а успешно окончившим курс студентам академия помогает с трудоустройством.

17
Дек
2020

👶👨 Обучение от junior до senior: как стать востребованным веб-разработчиком

Осваивающие популярную ИТ-профессию новички стремятся стать веб-разработчиками минимум уровня middle, а самые амбициозные планируют дорасти до позиции senior. Рассказываем об этапах обучения и знаниях, которые потребуются для перехода с уровня на уровень этого квеста.

Профессионалы пользуются спросом на рынке труда за способность управлять проектами, определять приоритеты задач и давать советы младшим веб-разработчикам. Работодатели обычно соревнуются за таких специалистов, используя для их привлечения всевозможные бонусы и высокие зарплаты. Перейти на последний уровень нелегко, но награда того стоит. Важно спланировать продвижение по карьерной лестнице с упором на рост и обучение мы сделали пошаговое руководство, которое поможет frontend-разработчику пройти нелегкий путь от уровня junior до senior.


Начало карьеры в веб-разработке и обучение

Что нужно знать?

Занять вакансию в хорошей компании желают многие, поэтому устроиться даже на позицию junior будет непросто. Как начинать обучение на веб-разработчика с нуля мы уже писали, самое интересное приключение ждет вышедшего на испытательный срок новичка.

Начинающему frontend-разработчику обязательно понадобятся следующие знания, умения и навыки:

  1. Хорошие познания в HTML;
  2. Знание CSS, а также опыт работы с CSS-фреймворками (Twitter Bootstrap/Foundation) и CSS препроцессорами (Sass, Less, Stylus и т. д.);
  3. Владение графическими редакторами (Photoshop, Illustrator);
  4. Базовый опыт программирования на JavaScript (анимация, валидация, pop-ups);
  5. Понимание основных принципов работы хотя бы с одним фреймворком JS (ReactJS, AngularJS, Backbone, Vue.js);
  6. Практические навыки работы с системой контроля версий GIT;
  7. Знание популярных CMS (WordPress, Drupal, Joomla и т. д.);
  8. Владение инструментами дебаггинга (Chrome Dev Tools, Firebug).

Как нужно учиться?

Во время испытательного срока постарайтесь наладить контакт с более опытными разработчиками и перенимайте их опыт. Уже прошедшие этот этап коллеги могут рассказать много интересного о программировании, тестировании и отладке. От них вы узнаете, что еще ничего не знаете, но не пытайтесь объять необъятное. Определите наиболее критичные технологии, в которых вы разбираетесь слабо и изучайте их постепенно. Не ждите идеальных заданий – их не будет. Работайте с тем, что вам дают, и старайтесь предлагать улучшения функциональности продукта сверх заказанных. Помните, что под лежачий камень вода не течет – для роста нужна инициативность. Чтобы понять, какие изменения необходимы, мыслите категориями ценности продукта для пользователей.

Сколько времени потребуется?

Чтобы наработать необходимый хорошему джуну багаж, обычно требуется около года. Иногда это занимает чуть больше времени, но если к исходу второго года работы вы не уверены в собственных силах, значит что-то идет не так. Необходимо будет пересмотреть стратегию обучения или подумать о правильности выбора профессии.

Какого результата ожидать от обучения?

За время работы вы изучите основы программирования, разберетесь с инструментами веб-разработки, сформируете навыки взаимодействия в команде, научитесь общаться с пользователями и получите другой опыт, необходимый для перехода на позицию middle.


Переход на позицию middle

Что нужно знать?

Хотя в сфере ИТ есть общепринятая шкала для оценки разработчиков (trainee, junior, middle, senior, lead), точное определением круга обязанностей для каждого уровня меняется в зависимости от работодателя.

Тем не менее существует основной набор знаний, умений и навыков, обязательный для фронтенд-разработчика уровня middle:

  1. Доскональное знание синтаксиса используемого языка(JavaScript), опыт работы и уверенные теоретические познания в программировании;
  2. Владение ООП (наследование, полиморфизм и инкапсуляция);
  3. Хорошее знание одной из популярных библиотек JS (React, Angular, Vue и т. д.),;
  4. Умение самостоятельно настроить систему сборки проекта (Gulp/Grunt/Webpack), работая с нативным JS (ES5, ES6, ES7);
  5. Знание и понимание интерфейсов RESTful;
  6. Опыт работы со средствами совместного использования кода (Git + GitFlow);
  7. Уровень английского не ниже Upper-Intermediate.

Также есть дополнительные навыки, связанные с серверной стороной они будут большим плюсом при трудоустройстве:

  1. Опыт разработки серверного кода под Node.js и TypeScript;
  2. Базовые знания PHP;
  3. Опыт работы с PostgreSQL/MySQL.

Как нужно учиться?

Многие компании не любят платить сотруднику лишние деньги, если он и так работает. Значит потребуется инициатива с вашей стороны. Обозначьте свои намерения и присматривайтесь к знакам. Хорошо, если старшие товарищи и руководители обсуждают с вами рабочие вопросы тет-а-тет. Продвигаться в этом случае проще: при личной встрече можно узнать, чего вам не хватает до желаемой должности. Стоит также анализировать результаты своей работы и пытаться адекватно сравнить их с достижениями других разработчиков. Это поможет повысить квалификацию и продолжить двигаться по карьерной лестнице.

Сколько времени потребуется?

Четких временных рамок для завершения мидл-этапа нет – все зависит от таланта и усилий. Гений способен проскочить его экспрессом за пару лет, а кто-то застревает в одной позиции навсегда. На прохождение обычно требуется 2 – 5 лет трудового стажа.

Что в итоге?

Разве не очевидно? Высокооплачиваемая должность, возможности профессионального и карьерного роста + неплохие бонусы от компании.


Эволюция веб-разработчика уровня senior

Что нужно знать?

Достигнув верхнего (с точки зрения начинающего обучение с нуля джуниора) этажа пищевой цепочки, нельзя почивать на лаврах. Иначе вас быстро подвинут более молодые и голодные коллеги. Стратегия продвижения на уровне senior та же самая, меняется лишь объем и сложность усваиваемого материала. Прокачивать скилы новоиспеченный сеньор может до бесконечности, но есть и обязательный набор знаний, умений и навыков.

На этом этапе обучения потребуются следующие позиции:

  1. Умение писать грамотный, расширяемый код: JavaScript + TypeScript/CoffeeScript/Babel + ES6/ES7CSS (Flexbox) + Less/Sass/Scss/Stylus/PostCSS + BEM/SMACSS/OOCSS/MCSSHTML (Canvas/SVG) + Jade/HAML/Handlebars/Slim/Mustache;
  2. Знание и умение использовать паттернов проектирования(MVC/MVVM), умение составлять грамотную архитектуру проекта;
  3. Понимание и применение принципов SOLID, DRY, DIE, KISS, YAGNI;
  4. Знание и понимание принципов работы Backend – RestAPI, GraphQL, серверных языков программирования и фреймворков;
  5. Понимание взаимодействия браузера с клиентом, отличные познания в HTTP, WS;
  6. Умение грамотно и быстро оценивать проект по времени и по сложности;
  7. Опыт работы с тест-фреймворками (Mocha, Should, Chai, Jest);
  8. Знание Docker, а также Kubernetes/Docker Swarm.

Как нужно учиться?

На позиции senior открывается несколько путей развития. Вы можете прокачивать технические навыки, чтобы вырасти до уровня Technical Leader. Этот уровень предполагает больше общения с людьми, а также активное взаимодействие с подчиненными. Второй путь заключается в построении процессов и менеджменте. Третье направление – Team Lead, Head of Development или CTO (технический директор). В этом деле нужны очень хорошие организаторские навыки, а также умение строить процессы и взаимодействовать с бизнесом. По сути от ориентации на ценность продукта для пользователя нужно перестроиться на бизнес-ценности. При этом придется подтянуть менеджерские навыки или даже получить второе высшее образование.

Что в итоге?

Все, как на предыдущем этапе, только заработки гораздо выше, а бонусы вкуснее (некоторые крупные компании могут даже выплачивать разработчикам верхнего уровня опционы). Плюс отличные карьерные перспективы в зависимости от выбранного направления развития, а также обеспеченная старость под шелест волн на Багамах.

Выводы

Становление веб-разработчика высокого уровня – процесс постепенный. Начните с малого, и пусть каждый освоенный вами навык будет очередным шагом к конечной цели. Иногда возникающие на пути препятствия могут показаться непреодолимыми. Не бойтесь этого – дорогу осилит идущий. Нужно постоянно бросать вызов самому себе и каждый раз устанавливать планку немного выше.

***

Если вы только начинаете путь в ИТ, стоит обратить внимание на учебные курсы по веб-разработке онлайн-академии GeekBrains. Под руководством опытных преподавателей вы сможете получить необходимые для старта карьеры знания и существенно сократить путь от неофита до джуниора. Актуальная программа предполагает 2 – 3 вебинара в неделю и 2 месяца стажировки, а успешно окончившим курс студентам академия помогает с трудоустройством.

17
Дек
2020

👶👨 Обучение от junior до senior: как стать востребованным веб-разработчиком

Осваивающий популярную ИТ-профессию новичок стремится вырасти до сильного веб-разработчика уровня middle/senior. Рассказываем об этапах обучения и знаниях, которые потребуются для перехода с уровня на уровень этого квеста.

Профессионалы пользуются спросом на рынке труда за способность управлять проектами, определять приоритеты задач и давать советы младшим веб-разработчикам. Работодатели обычно соревнуются за таких специалистов, используя для их привлечения всевозможные бонусы и высокие зарплаты ($3000 – $4000). Перейти на последний уровень нелегко, но награда того стоит. Важно спланировать продвижение по карьерной лестнице с упором на рост и обучение –на примере профессии frontend-разработчика мы сделали пошаговое руководство, которое поможет вам пройти этот нелегкий путь.


Начало карьеры в веб-разработке и обучение

Что нужно знать?

В условиях нынешнего рынка получение позиции Junior уже большой успех. Значит вы смогли выделиться из общей массы новичков, и такое положение необходимо не только сохранить, но и улучшить.

Начинающему frontend-разработчику обязательно понадобятся следующие знания, умения и навыки:

  1. Хорошие познания в HTML;
  2. Знание CSS, а также опыт работы с CSS-фреймворками (Twitter Bootstrap/Foundation) и CSS препроцессорами (Sass, Less, Stylus и т. д.);
  3. Владение графическими редакторами (Photoshop, Illustrator);
  4. Базовый опыт программирования на JavaScript (анимация, валидация, pop-ups);
  5. Понимание основных принципов работы хотя бы с одним фреймворком JS (ReactJS, AngularJS, Backbone, Vue.js);
  6. Практические навыки работы с системой контроля версий GIT;
  7. Знание популярных CMS (WordPress, Drupal, Joomla и т. д.);
  8. Владение инструментами дебаггинга (Chrome Dev Tools, Firebug).

Как нужно учиться?

Во время испытательного срока налаживайте контакт со старшими коллегами и узнавайте о методах написания, тестирования и отладки кода. Вы обнаружите множество новых для себя вещей, с которыми ещё не успели познакомиться. Не бросайтесь осваивать всё подряд. У вас быстро сформируется список пробелов в знаниях. Расставьте приоритеты в нем, вместе со своими коллегами. Продвигайтесь поэтапно, зачеркивая пункт за пунктом, тогда вы станете разбираться в технологиях и грамотно применять их на практике. Не надейтесь, что технические задания будут очень понятными, а заказчики – всегда лояльными. В любом проекте, будет оставаться место для небольшого подвига. Вы узнаете, что представляет ценность для коллег, компании и конечного пользователя продукта.

Сколько времени потребуется?

Практика показывает, что на позиции Junior специалист обычно работает около года. Конечно этот срок может меняться в разумных рамках, но если на втором году в должности вы всё ещё чувствуете себя некомфортно, стоит задуматься об изменении стратегии обучения и развития.

Какого результата ожидать от обучения?

В процессе активной работы вы наберетесь опыта, изучите основные понятия в программировании, разберетесь с оценкой сложности и работой с высокими нагрузками. К концу этого этапа уже можно смотреть в сторону позиции middle.


Переход на позицию middle

Что нужно знать?

Хотя в сфере ИТ есть общепринятая шкала для оценки разработчиков (trainee, junior, middle, senior, lead), точное определением круга обязанностей для каждого уровня меняется в зависимости от работодателя.

Тем не менее существует основной набор знаний, умений и навыков, обязательный для фронтенд-разработчика уровня middle:

  1. Доскональное знание синтаксиса используемого языка(JavaScript), опыт работы и уверенные теоретические познания в программировании;
  2. Владение ООП (наследование, полиморфизм и инкапсуляция);
  3. Хорошее знание одной из популярных библиотек JS (React, Angular, Vue и т. д.),;
  4. Умение самостоятельно настроить систему сборки проекта (Gulp/Grunt/Webpack), работая с нативным JS (ES5, ES6, ES7);
  5. Знание и понимание интерфейсов RESTful;
  6. Опыт работы со средствами совместного использования кода (Git + GitFlow);
  7. Уровень английского не ниже Upper-Intermediate.

Также есть дополнительные навыки, связанные с серверной стороной они будут большим плюсом при трудоустройстве:

  1. Опыт разработки серверного кода под Node.js и TypeScript;
  2. Базовые знания PHP;
  3. Опыт работы с PostgreSQL/MySQL.

Как нужно учиться?

Многие компании проводят личные встречи и следят за ростом своих сотрудников. Однако очень часто они исходят из принципа достаточности: работает человек, вот и славно. Зачем ему больше платить? Если начальник не говорит с вами на тему профессионального роста, необходимо активно продвигать свои навыки. Проанализируйте проделанную работу. Сколько задач вы довели до Production? Какова их ценность и сколько ошибок было сделано? Сколько задач релизят старшие коллеги? Если будете честны с собой, получите адекватное сравнение своего уровня с другими разработчиками. Это поможет вам заполнить пробелы в знаниях и продолжить путь к повышению по карьерной лестнице.

Сколько времени потребуется?

Четких временных рамок для перехода от мидла к сеньору нет – все зависит от таланта и усилий. Гений способен проскочить этот этап экспрессом за пару лет, а кто-то застревает в одной позиции на десятилетия. Обычно на переход требуется 4 – 5 лет трудового стажа.

Как мы уже писали, многие компании не любят платить сотруднику лишние деньги, если он и так работает. Значит потребуется инициатива с вашей стороны. Обозначьте свои намерения и присматривайтесь к знакам. Хорошо, если руководитель встречается с вами один на один, чтобы обсудить рабочие вопросы в непринужденной обстановке. Профессиональный расти в этом случае проще: при личной встрече можно узнать, чего вам не хватает до желаемой должности.

Что в итоге?

Разве не очевидно? Высокооплачиваемая должность, возможности профессионального и карьерного роста + неплохие бонусы от компании.


Эволюция веб-разработчика уровня middle

Что нужно знать?

Достигнув верхнего (с точки зрения начинающего обучение с нуля джуниора) этажа пищевой цепочки, нельзя почивать на лаврах. Иначе вас быстро подвинут более молодые и голодные коллеги. Стратегия продвижения на уровне middle очень похожа на действия из предыдущего этапа квеста качественно меняются только знания, которые вам которые предстоит освоить.

На этом этапе обучения потребуются следующие позиции:

  1. Умение писать грамотный, расширяемый код: JavaScript + TypeScript/CoffeeScript/Babel + ES6/ES7CSS (Flexbox) + Less/Sass/Scss/Stylus/PostCSS + BEM/SMACSS/OOCSS/MCSSHTML (Canvas/SVG) + Jade/HAML/Handlebars/Slim/Mustache;
  2. Знание и умение использовать паттернов проектирования(MVC/MVVM), умение составлять грамотную архитектуру проекта;
  3. Понимание и применение принципов SOLID, DRY, DIE, KISS, YAGNI;
  4. Знание и понимание принципов работы Backend – RestAPI, GraphQL, серверных языков программирования и фреймворков;
  5. Понимание взаимодействия браузера с клиентом, отличные познания в HTTP, WS;
  6. Умение грамотно и быстро оценивать проект по времени и по сложности;
  7. Опыт работы с тест-фреймворками (Mocha, Should, Chai, Jest);
  8. Знание Docker, а также Kubernetes/Docker Swarm.

Как нужно учиться?

На позиции senior открывается несколько путей развития. Вы можете прокачивать технические навыки (hard skills), чтобы вырасти до уровня Technical Leader. Этот уровень предполагает больше общения с людьми, а также активное взаимодействие с подчиненными. Второй путь заключается в построении процессов и менеджменте. Так, например, крайне востребованы scrum-мастера и agile-коучи, которых довольно мало на рынке. Третье направление – Team Lead, Head of Development, технический директор. В этом деле нужны очень хорошие организаторские навыки, умение строить процессы и не бояться общения с деловыми партнерами.

Что в итоге?

Все, как на предыдущем этапе, только заработки гораздо выше, а бонусы вкуснее (некоторые крупные компании могут даже выплачивать разработчикам верхнего уровня опционы). Плюс отличные карьерные перспективы в зависимости от выбранного направления развития, а также обеспеченная старость под шелест волн на Багамах.

Выводы

Становление веб-разработчика высокого уровня – процесс постепенный. Начните с малого, и пусть каждый освоенный вами навык будет очередным шагом к конечной цели. Иногда возникающие на пути препятствия могут показаться непреодолимыми. Не бойтесь этого – дорогу осилит идущий. Нужно постоянно бросать вызов самому себе и каждый раз устанавливать планку немного выше.

***

Если вы только начинаете путь в ИТ, стоит обратить внимание на учебные курсы по веб-разработке онлайн-академии GeekBrains. Под руководством опытных преподавателей вы сможете получить необходимые для старта карьеры знания и существенно сократить путь от неофита до джуниора. Актуальная программа предполагает 2 – 3 вебинара в неделю и 2 месяца стажировки, а успешно окончившим курс студентам академия помогает с трудоустройством.

15
Дек
2020

∑ Пять вопросов в интервью по Data Science, на которые вы должны уметь отвечать

Чтобы начать карьеру в сфере науки о данных, требуются серьезные познания в математике и ИТ. Публикуем инсайдерское руководство по вопросам, которые задают кандидатам во время интервью при трудоустройстве в Amazon, Netflix и Google.

Инсайдерское руководство по вопросам о Data Science из интервью в Amazon/Netflix/Google.
Статья публикуется в переводе, автор оригинального текста Monika Sharma.

Я пишу эту статью для тех людей, которые стремятся за мечтой стать Data Scientist’ом или стать лучше в этой профессии, и не хотят дважды наступать на одни и те же грабли. Data Science – это область, требующая постоянного улучшения вашего набора навыков, ежедневно прорабатывая основные концепции алгоритмов машинного обучения. Поэтому, давайте без дальнейших предисловий погрузимся в несколько вопросов и ответов, которые могут вам пригодиться на следующем интервью.

Вопрос 1: расскажите о функции потерь деревьев решений

Ответ: прежде, чем ответить на этот вопрос, важно указать, что Деревья Решений – это гибкий алгоритм машинного обучения, способный решать задачи не только классификации, но и регрессии. Поэтому и функции потерь для этих двух задач будут разными.

Функция потерь для задач классификации

Прежде чем мы сможем понять функцию потерь, сначала нужно познакомиться с такой важной концепцией, как критерий Джини (Gini impurity), поэтому давайте сначала объясним ее.

Gi=1−∑k=1npi,k2

Здесь p – доля экземпляров класса k среди тренировочных экземпляров на i-м узле. Что это значит? Давайте разберемся на следующем примере. На рис. 1 показана простейшая визуализация дерева решений для классического примера классификации ирисов глубиной 2. Верхний уровень – это корневой узел. Концепция разделения тренировочного набора на набор решений алгоритмически довольно проста. Здесь, например, набор данных по ирисам разделен на два поднабора на основании единственного признака “ширина лепестков” на корневом узле. Если ширина лепестков меньше или равна 0.8, алгоритм идет на глубину 1, влево. В противном случае он идет на глубину 1, вправо. Там он делит поднабор дальше на основании дополнительного признака “ширины лепестков”. Правый узел на глубине 1 описывает 100 экземпляров и применяется к 0 экземпляров Iris Setosa, 50 экземпляров Iris Versicolor и оставшиеся 50 экземпляров Iris Virginica.

Рис. 1. Дерево решений для ирисов
Рис. 1. Дерево решений для ирисов

Таким образом, критерий Джини для этого узла равен 0.5:

Gk,tk=1−(0100)2−(50100)2−(50100)2

Точно так же, для узла глубиной 1 слева критерий Джини равен нулю, потому что все тренировочные экземпляры принадлежат к одному классу. Этот узел считается “чистым”.

Чтобы понять, что такое критерий Джини, давайте вернемся к основному вопросу. Деревья решений используют для обучения алгоритм Classification And Regression Tree (CART), основанный на простой концепции разделения набора данных на два поднабора, используя единственный признак (k) и порог (t). В наборе данных ирисов признаком была “ширина лепестков”, а порогом – 0.8. Как алгоритм выбирает t и k? Он ищет пару (t,k), производящую “самые чистые” подмножества. Поэтому функция потерь, которую алгоритм пытается минимизировать, описывается следующим уравнением:

J(k,tk)=mleftmGleft+mrightmGright

Здесь Gleft и Gright – критерии Джини для левого и правого узлов, а m представляет экземпляры подмножеств.

Функция потерь для задач регрессии

Функция потерь для деревьев регрессии просто интуитивна. Мы используем сумму разности квадратов (RSS). Она изображена следующей формулой, в которой Y – истинное значение, а Y с крышкой – предсказанное.

RSS=∑k=1n(Y−Y^)2

Вопрос 2: как коллинеарность влияет на ваши модели?

Ответ. Коллинеарность относится к ситуации, в которой две или более прогнозных переменных сильно зависят друг от друга. Рисунок 2 демонстрирует пример коллинеарных переменных. Переменная Variable 2 строго следует за Variable 1 с коэффициентом корреляции Пирсона, равным 1. Поэтому, очевидно, одна из этих переменных будет вести себя как “шум”, если их скормить моделям машинного обучения.

Рис. 2. Пример коллинеарных переменных
Рис. 2. Пример коллинеарных переменных

Наличие коллинеарности может стать проблемой в задачах вроде регресии, поскольку становится трудно определить индивидуальное влияние каждой из коллинеарных переменных на результат. Или, иными словами, коллинеарность сокращает точность оценки коэффициентов регрессии и приводит к увеличению ошибок. В конце концов, это приводит к понижению t-статистики, и в результате при коллинеарности мы можем не суметь отвергнуть нулевую гипотезу.

Простой способ обнаружения коллинеарности – посмотреть на матрицу корреляции прогнозных переменных. Каждый элемент этой матрицы, достаточно большой по модулю, обозначает пару признаков с высокой коллинеарностью, и, следовательно, проблемы в данных. К сожалению, не все проблемы с коллинеарностью можно выявить анализом матрицы корреляции: возможно существование коллинеарности между тремя и более переменными, даже при отсутствии высокой корреляции между любой парой этих переменных. Такая ситуация называется мульти-коллинеарностью. Для таких случаев вместо анализа матрицы корреляции намного лучший метод – анализ коэффициента повышения дисперсии (Variance Inflation Factor, VIF). Коэффициент повышения дисперсии для каждой переменной рассчитывается по такой формуле:

VIF=11−RXj|X−j2

Где R2 – регрессия переменной X по всем остальным прогнозным переменным. Если VIF близок к единице или больше нее, коллинеарность присутствует. Если обнаружилась проблема коллинеарности, есть два решения. Можно удалить избыточную переменную. Это можно сделать, не ухудшая сходимость регрессии. Другое решение – это объединить все коллинеарные переменные в единственную прогнозную переменную.

Вопрос 3: как бы вы объяснили работу глубоких нейронных сетей непрофессионалу?

Ответ. Идея нейронных сетей вдохновлялась работой человеческого мозга, который отлично умеет идентифицировать образцы. Нейронная сеть – это набор алгоритмов, которые интерпретируют сенсорные данные, размечают и кластеризуют входные данные, и т.д. Данные любого вида – изображения, видео, тексты или звук – требуется сначала перевести в векторное пространство, содержащее только числа.

Слово “глубокие” в определении глубоких нейронных сетей означает, что нейронная сеть состоит из множества слоев. Эти слои, в свою очередь, состоят из узлов, в которых и производятся вычисления. Аналогией такого узла является нейрон в человеческом мозге, который “включается” при получении достаточных стимулов. Узел комбинирует данные от входов с их коэффициентами (весами), которые усиливают либо ослабляют влияние каждого входа. Произведения данных на веса затем суммируется, как показано на рис. 3, и передается в функцию активации, которая определяет, должен ли этот сигнал пройти дальше по нейронной сети и влиять на итоговый результат. Слой – это набор таких нейроподобных переключателей, которые включаются и выключаются в зависимости от входных данных.

Рис. 3. Пример визуализации узла нейронной сети
Рис. 3. Пример визуализации узла нейронной сети

Глубокие нейронные сети отличаются от ранних версии нейронных сетей вроде перцептронов, потому что те содержали всего один внутренний слой нейронов, наряду с входным и выходным слоями.

Глубокие нейронные сети содержат несколько внутренних слоев
Глубокие нейронные сети содержат несколько внутренних слоев

Вопрос 4: какой должна быть 3-минутная презентация вашего тестового проекта по Data Science?

Ответ. Типовое интервью на позицию Data Scientist’а начинается с тестового задания в виде проекта, который вы должны сделать дома. Предоставляемое на это время может сильно варьироваться в зависимости от сложности задачи. Однажды мне дали два дня на решение задачи и подготовку отчета для руководства, но в другой раз на решение задачи дали две недели. Незачем и говорить, что это была намного более сложная задача, где набор данных содержал сильный дисбаланс классов. Поэтому 3-минутная презентация для “продажи” вашего решения позволяет вам продемонстрировать ваш уровень понимания предложенной задачи. Начните со своей интерпретации задачи, кратко опишите свой подход к ее решению, какие типы моделей машинного обучения вы использовали и почему. Заканчивайте презентацию хвастовством по поводу точности предсказания ваших моделей.

Мне кажется, что этот вопрос чрезвычайно важен для успеха вашего интервью, и он позволяет вам доказать, что вы – лидер в области Data Science, способный решать сложные задачи с помощью самых передовых и мощных инструментов.

Вопрос 5: что значит “регуляризация модели”, и как добиться регуляризации для линейной модели?

Ответ. Регуляризация – это термин для ограничения (сокращения переобучения) вашей модели машинного обучения. Хороший способ ограничения модели машинного обучения – иметь меньше степеней свободы. Имея меньше степеней свободы, модели сложнее переобучиться под тренировочные данные. Например, простой способ регуляризации полиномиальной модели – сократить количество полиномиальных степеней свободы. Однако для линейных моделей регуляризация обычно достигается ограничением весов модели. По сравнению с обычной линейной регрессией модели L1-регуляризация (Lasso Regression), L2-регуляризация или регуляризация Тихонова (Ridge Regression) и упругая сетевая регуляризация (Elastic Net) предлагают собственные способы ограничения весов. Для полноты картины давайте начнем с определения линейной регрессии:

y^=θ0+θ1×1+θ2×2+…θnxn
  • y с крышкой – предсказанное значение.
  • n – количество признаков.
  • xi – i-й признак.
  • Тэта – параметры модели, также известные как веса признаков.

Функция потерь Средняя Квадратичная Ошибка (Mean Square Error) определяется как:

MSE(X,hθ)=1m∑i=1m(θT⋅x(i)−y(i))2

где тэтаT – транспонированная тэта (вектор-строка вместо вектора-столбца).

Регуляризация Тихонова (Ridge Regression) – это вариант линейной регрессии с регуляризацией, то есть в функцию потерь дополнительно добавлен элемент регуляризации, что заставляет алгоритм обучения не только подстраиваться под тренировочные данные, но и делать веса настолько маленькими, насколько это возможно. Заметим, что элемент регуляризации должен добавляться к функции потерь только в процессе обучения. Когда модель уже обучена, мы хотим измерять ее качество работы без регуляризации.

J(θ)=MSE(θ)+α12∑i=1nθ2

Гиперпараметр альфа определяет, насколько вы хотите регуляризировать модель. Если он равен нулю, мы получаем обычную линейную регрессию.

L1-регуляризация (Lasso Regression) – другой вид регуляризованной линейной регрессии, который также добавляет в функцию потерь элемент регуляризации, но на основе L1-нормы вектора весов в отличие от L2-нормы.

J(θ)=MSE(θ)+α∑i=1n|θi|

Важной характеристикой L1-регуляризации является тенденция к обнулению весов менее важных параметров. Иными словами, модель автоматически производит выбор параметров и выдает разреженную модель (в которой лишь немногие веса не равны нулю).

Упругая сетевая регуляризация (Elastic Net) – нечто среднее между регуляризацией Тихонова и L1-регуляризацией. Элемент регуляризации – это просто смесь двух видов регуляризации в пропорции, определяемой параметром r. При r=0 это чистая регуляризация Тихонова, а при r=1 – L1-регуляризация.

J(θ)=MSE(θ)+rα∑i=1n|θi|+α1−r2∑i=1nθ2

Желательно всегда иметь какую-нибудь регуляризацию, а использования чистой линейной регресии следует избегать. По умолчанию хороша регуляризация Тихонова, но если в некотором наборе данных значение имеет лишь небольшой процент признаков, тогда лучше использовать L1-регуляризацию. Упругая сетевая регуляризация в большинстве случаев лучше L1-регуляризации, потому что последняя может приводить к странным результатам, когда количество признаков больше количества тренировочных записей, или когда несколько признаков имеют сильную корреляцию друг с другом.

В этой статье мы рассмотрели пять вопросов, которые задавали лично мне на интервью по Data Science, которые могли бы пройти и лучше. Я усиленно рекомендую ежедневно читать следующие ресурсы для оттачивания вашего понимания базовых концепций. Поверьте, я прочитала об этих концепциях много раз, но все-таки завалилась на них в процессе интервью.

Удачного изучения!

  1. Hands-On Machine Learning with Scikit-Learn, Keras and Tensorflow.
  2. An Introduction to Statistical Learning.
11
Дек
2020

☕ Как пройти собеседование на позицию Java-разработчика?

Чтобы получить работу, знать программирование на Java недостаточно – нужно найти вакансию и пройти квест по найму. Рассказываем о плане подготовки к интервью, часто встречающихся вопросах по Java Core и Java EE и правильном поведении на собеседовании.

10 млн разработчиков по всему миру используют Java для создания приложений под 15 млрд. устройств. Синтаксис этого языка прост и поддерживается всеми операционными системами. На этом преимущества программирования на Java не заканчиваются, узнать о них вы можете из нашей статьи. В условиях жесткой конкуренции организации нуждаются в профессионалах, обладающих знаниями, навыками и опытом в области Java, и способных эффективно проектировать, кодировать, разрабатывать и разворачивать приложения различного типа.

Отличия в интервью по Java Core и Java EE

Поскольку Java в основном используется как язык прикладного программирования, основное внимание уделяется вопросам, касающимся API, концепций и шаблонов проектирования.

Собеседования по Java меняются в зависимости от опыта кандидата. Например, младшие разработчики с опытом от 1 до 4 лет увидят больше вопросов по таким темам, как основы языка, API, структура данных и алгоритмы.

Более опытные разработчики, с опытом от 5 до 6 лет, получат вопросы о параллельном программировании, API, параллелизме Java, внутреннем устройстве JVM, настройке сборщика мусора и производительности Java.

Собеседования по Java EE сильно отличаются от собеседований по Java Core, поскольку последние в основном сосредоточены на основных концепциях Java, таких, как параллелизм, коллекции и внутреннее устройство JVM. Собеседования по Java EE основаны на JSF, Spring, Hibernate и других.

План подготовки к собеседованию

Существует общий список тем, с которыми стоит ознакомиться, или освежить их в памяти перед собеседованием:

  • основы Java;
  • ООП;
  • Java core;
  • структура данных;
  • многопоточность;
  • сборка мусора;
  • базы данных;
  • фреймворки;
  • сетевые протоколы;
  • устройство JVM;
  • архитектура;
  • паттерны;
  • алгоритмические задачи;

Стоит учитывать, что приведенные ниже примеры вопросов – лишь варианты, наиболее часто встречающиеся на собеседовании. Список конкретных вопросов будет в значительной степени зависеть от вакансии и вашего опыта. Для подготовки к интервью стоит внимательно изучить должностную инструкцию, если работодатель предоставит вам такую возможность.

Вы не обязаны знать наизусть все аспекты программирования на Java по учебнику. Достаточно рассказать про опыт работы, но основные понятия и термины все же стоит освежить в памяти, особенно если с ними будет связана ваша деятельность в компании.


Основы Java

Для самопроверки рекомендуем пройти тест на общие знания для Java-разработчика.

Примеры часто задаваемых вопросов:

  1. В чем важность метода main()?
  2. В чем разница между переменными path и classpath?
  3. Какие есть модификаторы доступа?
  4. Что такое классы-оболочки?
  5. В чем разница между equals () и ==?
  6. Что такое JIT-компилятор?
  7. В чем заключаются особенности языка программирования Java?
  8. Что такое статический импорт?
  9. Что такое Enum?
  10. Что такое композиция?

Java core

Часто на собеседованиях задают вопросы про коллекции, дженерики, функциональные интерфейсы, многопоточность:

  1. Как устроена HashMap?
  2. Чем отличается LinkedList от ArrayList?
  3. Разница между String, StringBuffer и StringBuilder?
  4. Разница между интерфейсом Runnable и Callable?
  5. Разница между TreeSet и TreeMap?
  6. Напишите программу на Java, чтобы проверить, является ли число простым или нет?
  7. Как проверить, содержит ли связанный список цикл в Java?
  8. Написать Java-программу для обратного преобразования String без использования API?
  9. Разница между переходным процессом и изменчивым в Java?
  10. Разница между абстрактным классом и интерфейсом?

ООП

Классические вопросы, вроде разницы между интерфейсом и абстрактным классом, присутствуют всегда. В последние пару лет на собеседованиях задают и более сложные вопросы, основанные на передовых принципах и шаблонах проектирования:

  1. Что такое перегрузка методов в ООП или Java?
  2. Какой метод скрытия используется в Java?
  3. Является ли Java чистым объектно-ориентированным языком?
  4. Каковы правила перегрузки и переопределения методов в Java?
  5. Какова разница между перегрузкой метода и переопределением?
  6. Можем ли мы предотвратить переопределение метода без использования модификатора final?
  7. Что такое ковариантный метод переопределения в Java?
  8. Можем ли мы изменить возвращаемый тип метода на подкласс при переопределении?
  9. Как вы вызываете суперклассовую версию метода переопределения в подклассе?
  10. В чем разница между абстракцией и полиморфизмом в Java?

Структура данных

Подробнее о структурах данных мы рассказывали в статье «Алгоритмы и структуры данных: развернутый видеокурс».

Примеры часто задаваемых вопросов:

  1. Чем дерево отличается от графа?
  2. Что такое АВЛ-деревья?
  3. Чем стек отличается от очереди?
  4. Какие классы в Java реализуют стек или очередь?
  5. Чем LinkedList отличается от ArrayList?
  6. Что такое HashSet?
  7. Чем HashSet отличается от TreeSet?
  8. Как работает HashMap?
  9. Найдите средний элемент односвязного списока за один проход.
  10. Как реализовать бинарное дерево поиска?

Многопоточность

Не все программисты работают с многопоточностью, но базовые вещи стоит знать хотя бы в теории.

Примеры часто задаваемых вопросов:

  1. Что такое поток?
  2. В чем разница между потоком и процессом?
  3. Как реализовать потоки?
  4. Когда нужно использовать Runnable vs Thread?
  5. В чем разница между методами start () и run () класса Thread?
  6. Что такое модель памяти Java?
  7. Что такое volatile?
  8. Что такое изменчивая переменная в Java?
  9. Что такое потокобезопасность? Vector – это потокобезопасный класс?
  10. Что происходит, когда в потоке возникает исключение?

Сборка мусора

Вопросы по сбору мусора очень популярны как в базовых, так и в продвинутых собеседованиях:

  1. Какова структура Java Heap? Что такое пространство Perm Gen в куче?
  2. Как определить незначительную и основную сборку мусора в Java?
  3. В чем разница между сборщиками мусора ParNew и DefNew Young Generation?
  4. Как вы обнаружите, что сборщик мусора привел к вызову System.gc ()?
  5. В чем разница между последовательным и пропускным сборщиками мусора?
  6. Когда объект получает право на сборку мусора в Java?
  7. Что такое метод finalize в Java? Когда сборщик мусора вызывает метод finalize?
  8. Как отслеживать действия по сбору мусора?
  9. Можно ли принудительно запустить сборщик мусора в любое время?
  10. Происходит ли сборка мусора в постоянном пространстве генерации в JVM?

Базы данных

Освежите в памяти ваши знания по SQL и JPQL.

Примеры часто задаваемых вопросов:

  1. Реляционные и нереляционные БД – в чем разница? Что и когда использовать?
  2. Как строится запрос SQL?
  3. Какие виды join-ов существуют?
  4. Чем having отличается от where?
  5. Были ли у вас в практике случаи оптимизации запросов?
  6. Приходилось ли смотреть план выполнения запроса?
  7. Что такое entity manager?
  8. Что такое persistence context?
  9. Что такое JPQL и чем он отличается от SQL?
  10. Что означает полиморфизм в запросах JPQL и как его «выключить»?

Фреймворки

В большинстве случаев требуется Spring.

Примеры часто задаваемых вопросов:

  1. Transactional – как она работает? Что в ней можно дополнительно настроить?
  2. Назовите различные модули фреймворка Spring.
  3. Перечислите некоторые важные аннотации в конфигурации Spring на основе аннотаций.
  4. Объясните Bean в Spring и перечислите различные области применения Spring bean.
  5. Объясните роль DispatcherServlet и ContextLoaderListener.
  6. В чем разница между внедрением конструктора и внедрением установщика?
  7. Как обрабатывать исключения в Spring MVC Framework?
  8. Какие важные аннотации Spring вы использовали?
  9. Как интегрировать Spring и Hibernate Frameworks?
  10. Назовите типы управления транзакциями, которые поддерживает Spring.

Сетевые протоколы

Повторите уровни модели OSI и основные протоколы: tcp, udp, https:

  1. Что такое IP-адрес?
  2. Что такое веб-сервис?
  3. Какие существуют типы веб-сервисов?
  4. В чем отличие host и domain?
  5. Какие методы в HTTP вы знаете?
  6. Чем отличаются методы GET, POST и HEAD?
  7. Что такое REST?
  8. Зачем нужен класс Calendar в Java?
  9. Как преобразовать дату в Java к нужному формату?
  10. Отличие классов Socket и URL?

JVM

Одна из многих черт хорошего программиста – хорошее понимание основ. Если вы хотите проверить основы программирования на Java, вопрос о разнице между кучей и стековой памятью – хороший выбор. Несмотря на то, что оба являются частью JVM и выделенной для процесса Java памятью потребителя, между ними есть много различий.

Примеры часто задаваемых вопросов:

  1. Что такое куча и стек?
  2. Как хранятся объекты в JVM?
  3. Что такое string pool?
  4. Что обеспечивает принцип happens before?
  5. Как работает сборщик мусора?
  6. В чем разница между потоком пользователя и потоком демона?
  7. Что такое OutOfMemoryError в Java?
  8. Можно/нужно ли обрабатывать ошибки JVM?
  9. В чем разница между ошибкой и исключением?
  10. Объясните что такое JDK, JRE и JVM.

Архитектура

  1. Когда нужно использовать микросервисы, а когда монолит?
  2. Использовали ли вы eureka или consul?
  3. В чем разница между Hibernate и JDBC?
  4. Каковы преимущества использования Hibernate перед JDBC?
  5. Выгодно ли использование среды Spring для разработчиков Java?
  6. Если у вас есть приложение Java с подключением к базе данных, которое необходимо улучшить, как бы вы его улучшили?
  7. Как избежать тупика базы данных?
  8. Что такое шардинг и насколько он полезен?
  9. Что такое масштабируемость?
  10. Что такое балансировка нагрузки?

Паттерны

Никто не потребует перечислять все существующие паттерны, но некоторые, используемые в Java или Spring, знать надо. Например Immutable, Singleton, Prototype, Builder, Proxy, Abstract factory, Wrapper.

Разное

На интервью могут поинтересоваться, знакомы ли вы с Agile, Git или Gitflow, REST/SOAP, Docker, и Kubernetes. Также встречаются вопросы об использовании в работе функциональных и интеграционных тестов.


Практическая часть

На собеседованиях приходится решать и практические задачи. Будьте готовы, что код придется писать без использования привычной среды разработки. Часто соискателям дают стандартные алгоритмические задачи, поэтому перед интервью стоит обратить внимание на нашу статью по их решению, а также изучить небольшое руководство. Подробнее про распространенные алгоритмы и структуры данных можно почитать в еще одном материале «Библиотеки программиста».

Про себя

Работодателя наверняка заинтересует практический опыт кандидата, поэтому даже самые простые ответы стоит иллюстрировать примерами из решенных вами задач. Интервью может включать вопросы о мотивации, степени ответственности, амбициях и поведенческих особенностях соискателя. Их цель – побольше узнать о том, как вы работаете в коллективе, справляетесь с нестандартными задачами и авралами. Подготовиться к ним поможет статья «Как легко пройти собеседование».

В конце собеседования не забудьте проявить инициативу и задайте интересующие вас вопросы работодателю. Кандидат тоже решает, насколько компания ему подходит. К тому же это хороший способ получить обратную связь от интервьюера о вашей реальной ценности как программиста.

***

Обучение программированию на Java

Если вы решите подтянуть знания по Java, в нашей библиотеке найдется множество статей на эту тему. Освоить востребованную профессию также поможет Факультет Java-разработки GeekBrains. Онлайн-академия приглашает студентов на курсы основного обучения и факультативы от компаний-партнеров. Занятия ведут опытные преподаватели, а личный наставник помогает разобраться с возникающими затруднениями. Успешно окончившие курс студенты получают не только диплом о профессиональной переподготовке, но и помощь в трудоустройстве.

25
Ноя
2020

👨‍🔧️💸10 онлайн-платформ для заработка на тестировании

Можно начать без заказчиков и даже сделать профессию тестировщика подработкой. Онлайн-платформы для тестирования помогут заработать на фрилансе.

Некоторые специалисты уделяет тестированию лишь часть времени. Лучший способ понять, подходит ли вам такой формат работы – попробовать. Мы подобрали список платформ, на которых можно попрактиковаться и заработать.

Главное – пройти квалификационное тестирование или выполнить пробное задание.


Иностранные платформы

Для работы с ними нужно хорошо знать иностранный язык, притом необязательно английский – иногда подходит испанский, немецкий или французский.

UserTesting – платформа позволяет оперативно получать обратную связь от клиентов. Можно создавать собственные тесты с нуля и делать обзоры продуктов. Данные защищены, работает круглосуточная поддержка. Необходимо зарегистрироваться, заполнить заявку и пройти тест для получения заданий. После этого пользователю будут доступны оплачиваемые предложения.

Userbrain – заработок на тестировании в течение 15 минут. Регистрируетесь, ставите расширение для Chrome или приложение iOS. Необходимо пройти квалификационную проверку, получить одобрение на участие в и можно зарабатывать по 3$ за каждый тест.

TryMyUI – получать деньги за честные отзывы – кредо этой платформы. Тестируете сайты, даете экспертное заключение и после принятия оценщиками каждую пятницу приходит оплата на PayPal. До начала работы придется пройти квалификационный тест.

Userlytics – платформа, где заказчики один известнее другого. Пользовательское тестирование, по итогу которого можно заработать от 5$ до 90$ в зависимости от масштабов. Главное – быть внимательным и хорошо знать английский.

IntelliZoom – платформа с максимально простым и дружелюбным интерфейсом. Компания проводит тесты UX на компьютерах и мобильных устройствах. Оплата за видео-обзоры составляет от 2$ до 10$.

test IO – платформа создана для QA-тестировщиков и выдает задачи по разным приложениям. Если получится найти баг, сбой и проблема окажется критической – заработаете больше. Выплаты ежемесячные.

Checkealos – онлайн-платформа для отзывов пользователей, которая помогает компаниям создавать лучшие сайты и приложения. Каждый отзыв стоит около 8 евро, сессия длится 15 минут. Если не знаете английский, можно работать на испанском.

PingPong – самые крупные варианты заработка здесь. По описанию сервиса вознаграждение может быть до 200 евро. Главное: стабильные интернет и желание работать.


Отечественные платформы

Российских платформ значительно меньше, а заработки на них скромнее. Если ваш иностранный язык недостаточно хорош, лучше начинать там, где ТЗ будет гарантированно понятным.

UXCrowd – “начать легко”. Российская платформа для заработка на тестировании. Стандартный путь: регистрация, тестовое задание, одобрение и начало работы. Тестирование оформляется по договору ГПХ, но только для граждан РФ. Официально, честно, прозрачно и для любого опыта.

TaskPay – биржа заработка на простых заданиях. Оценка приложений, тестирование, рецензии к видео, копирайтинг и рерайтинг – платформа собрала все альтернативные методы подработки удаленно. Выбирайте что больше по душе и проверяйте свои силы.

***

Платформы для тестирования – отличный способ получить дополнительный доход, нарастить опыт, попробовать себя на международном рынке, понять свои слабые места и определить зоны роста.

Плюсом всех платформ являются именитые заказчики, которые ими пользуются. Хотите строчку в резюме про Coca-Cola, Facebook или Loreal? Присмотритесь.

***

Не всем подходит свободное плавание, но для расширения кругозора узнать о нем полезно. Если вы только меняете профессию, стоит обратить внимание на факультет тестирования ПО GeekBrains. Под руководством опытных наставников здесь можно получите востребованную профессию, а успешно освоившим программу обучени студентам онлайн-академия помогает с трудоустройством.


23
Ноя
2020

❹ ❌👨‍🎓️4 мифа о профессии программиста, в которые вы почему-то еще верите

В этой статье эксперты SkillFactory опровергают расхожие мифы о профессии программиста и подсказывают, что делать дальше.

В 2020 году все уже должны были узнать, что профессия программиста не так страшна, как кажется. Тем не менее находятся люди, которые считают, будто это не для них. Они даже готовы привести доводы в защиту своих убеждений – и тем самым упускают возможность освоить востребованную профессию.


Миф №1. Программирование – только для технарей

Мы не будем врать, что за пару недель можно переучиться из художника в программиста. На самом деле секрет не в том, какая оценка по математике у вас была в школе или в каком вузе – гуманитарном или техническом – вы учились.

Программистов отличает способность мыслить алгоритмически. У кого-то есть предрасположенность к такому мышлению, но это не значит, что его нельзя развить самостоятельно или при помощи наставников.

Например, получить профессию разработчика на Python может и новичок. Начать стоит с тренировок мышления и программирования через отработку алгоритмов. Этот навык поможет решать нетривиальные задачи по программированию в будущем.


Миф №2. Слишком долго учиться

Курсы по программированию длятся от 6 до 24 месяцев, в зависимости от программы. Учеба в вузе отнимет у вас минимум 4 года, но при этом вы изучаете общеобразовательные предметы, вроде риторики, философии, психологии и этики. Не говоря уже о том, что программы в вузах могут устаревать…

Мы не агитируем вас бросать вуз и отказываться от высшего образования в принципе, но помните, что «вышка» – не единственный способ стать разработчиком. Важно, чтобы преподавателями были действующие эксперты, а программа обучения была ориентирована не только на теорию, но и на выработку практических навыков.


Миф №3. Нужно много свободного времени на учебу, а работу потом найти сложно

Во-первых, давайте зададимся вопросом: «много времени» – это сколько? 10 часов в неделю – это много или мало? А ведь именно столько времени нужно тратить на обучение новой профессии. Скорее всего эти же 10 часов вы проведете, залипая в ленте Фейсбука или Тиктока.

Во-вторых – со знанием Python сложно остаться без работы. Число вакансий растет с каждым годом: +127% с 2015 года по данным HH.ru. На курсе «Fullstack-разработчик на Python» в SkillFactory вас не только научат программировать, но и помогут найти работу. Начиная с первых недель обучения, ментор поможет определить карьерные цели и не сойти с намеченного пути, а карьерный центр подскажет, как оформить резюме и попасть на собеседования.


Миф №4. Программирование – только для мальчиков

Самый неприятный миф в этой статье. Да, сейчас среди программистов мужчин больше, чем женщин, но если бы этот миф был правдой, то мир никогда бы не узнал о Мариссе Майер (экс-директор Yahoo!), Адель Голдберг (разработала язык программирования Smalltalk), Катарине Фейк (основала фотохостинг Flickr) и других крутых женщинах-программистах.

Если все действительно не так страшно, то куда идти учиться?

Зависит от ваших возможностей. Можно попробовать пройти бесплатные курсы или посмотреть ролики на YouTube. Платные школы ценятся за системный подход, обратную связь, когда опытный куратор может объяснить непонятные моменты и указать на ошибки, и помощь в трудоустройстве.

В период крупных скидок появляется много соблазнов: хочется купить новый смартфон, хотя предыдущий ещё не устарел, или очередные кроссовки. А можно вложить деньги в своё образование, сделав выгодную инвестицию в будущее.

***

С 17 по 30 ноября действуют скидки от 50% на все курсы онлайн-школы SkillFactory. Окончив онлайн-программу, вы сможете сразу же начать работать – это самый безопасный способ войти в сферу IT, не тратя несколько лет на учёбу, но при этом получив все базовые знания. Выгодно используя распродажу сейчас, вы инвестируете в своё будущее.

И кажется, что это одна из самых грамотных инвестиций в свое будущее.

16
Ноя
2020

👨‍💻 Самые востребованные в России ИТ-профессии

Разбираемся по вакансиям на HH.ru, какие специалисты в сфере ИТ нужны работодателям в 2020 году. Выделим четыре наиболее популярных профессии и определим требующийся для резюме технологический стек.

В этом году количество предложений о работе в сфере информационных технологий значительно увеличилось. По итогам первых трех кварталов отрасль занимает 2 место по размещенным вакансиям (на первом традиционно – «Продажи»). Рынок труда в ИТ развивается быстрее общего рынка труда. Декрет о цифровой экономике, развитие технологий, популярность стартапов – все это положительно влияет на индустрию.


Пандемия не обошла стороной ИТ. Впервые за долгое время конкуренция установилась на уровне 4-х резюме на 1 вакансию. По этой причине соискателю необходимо определиться с наиболее востребованными профессиями и необходимым для резюме технологическим стеком, чтобы работодатели захотели с ним сотрудничать.

Перед вами наиболее востребованные специализации, предоставленные сайтом HH.ru в 2020 году.


Разберем первые четыре позиции из этого списка, которые перевалили барьер в 4%.


1. Quality Assurance engineer

QA engineer – это специалист по обеспечению качества, деятельность которого направлена на улучшение процесса разработки ПО и выявление ошибок в работе продукта.

QA должен точно понимать, в какой момент за дело возьмется тестировщик, и успеть подготовить к этому времени план тестирования и тестовую документацию.
Тестировщик знает, как система работает, а где она работает не так, как задумано. Умеет определять ошибки, или хотя бы знает, где их искать.

В нашей стране различия между должностями QA и тестировщика смазаны, и на практике это одно и то же лицо.

Какие задачи решает QA?

В круг обязанностей QA-инженера входит планирование процесса тестирования, написание тест-кейсов (сценариев тестирования), тестирование функциональности, анализ и оптимизация процесса тестирования и ведение тестовой документации.

Какие навыки требуются QA?

Чтобы стать QA, нужно понимать цикл разработки ПО, изучить теорию и основные инструменты тестирования, иметь хороший уровень английского. Желательно изучить HTML, SQL, CSS – на базовом уровне. Также необходимо иметь широкий ИТ-кругозор, быть внимательным к деталям, обладать аналитическими способностями, уметь моделировать и работать с абстракциями.

Каков самый важный навык?

Умение смотреть на продукт с точки зрения конечного пользователя. Главный минус этой профессии— монотонная составляющая работы, особенно в начале карьеры.


2. Java-разработчик

Java – универсальный объектно-ориентированный язык программирования, который используется в создании веб-приложений (серверной части), мобильных приложений под Android, облачных хранилищ данных, компьютерных игр и т. д.

Что нужно знать?

Java-разработчик должен знать базовые вещи: машинная математика, переменные и типы данных, условные конструкции, логические операции, циклы, методы и т.п. Далее идут более продвинутые темы: коллекции, карты (Map), основы вывода (IO, NIO), методы работы со строками (StringBuilder, StringBuffer), регулярные выражения, Date API, рефлексия и многое другое.Помимо теоретических знаний, у вас должны быть сформированы необходимые навыки написания кода.

Как стать Java-разработчиком?

Совокупность вышеперечисленных разделов Java + ООП в среде джавистов называется Java Core (от англ. “core” – ядро). Если вы хотите освоить эту профессию, начинать нужно именно с ядра.

Также стоит изучить одну из систем управления базами данных (СУБД). Это может быть MySQL или PostgreSQL. Часто работодатели ищут людей со знаниями Hibernate (фреймворк, для работы с ООП и БД) и MVC(Model-View-Controller – паттерн для ускорения разработки проектов)


3. PHP developer

PHP (Hypertext Preprocessor) – скриптовый язык, активно используемый для создания серверной части интернет-ресурсов.

Что нужно знать?

Если вы твёрдо намерены устроиться на должность PHP-разработчика, то первое, что нужно будет изучить – принципы работы протокола HTTP и сервера DNS. Далее пойдут основы языка и знакомство с возможностями последних его версий. Надо будет уметь настраивать веб-серверы Nginx и Apache, а также знать MySQL. PHP и HTML очень тесно связаны, так что знание языка разметки – обязательно.

Каковы дополнительные скилы?

Часто компании требуют от соискателя следующие знания и навыки:

– понимание паттерна MVC;

– владение английским на уровне чтения;

– умение работать с менеджером зависимостей Composer;

– знание Docker и Vagrant

– опыт работы с системой контроля версий Git

– опыт проектирования REST API

– опыт работы с веб-фреймворками (Yii, Laravel, Symfony).


4. Frontend-developer

Фронтенд-программист создаёт клиентскую (пользовательскую) часть интернет-ресурса в тестом сотрудничестве с дизайнерами.

Что нужно знать?

Фундаментальными технологиями для фронтенд-разработки являются HTML (для создания структуры страницы), CSS (для стилизации) и JavaScript (для динамики). Также следует разбираться с инструментами, повышающими продуктивность разработки клиентской части:

– CSS препроцессоры Less, Sass, Stylus;

– HTML постпроцессоры Pug, Blade;

– сборщики Webpack, Gulp, Grunt;

– система контроля версий Git

– графические редакторы Photoshop, Figma;

– использование сетки Bootstrap.

Каковы дополнительные скилы?

Очень часто от соискателей требуют опыта работы с популярными СMS(Wordpress, Joomla, Bitrix).

Отдельно хочется сказать про библиотеки JS: Angular, Backbone, Ember и React. Они предоставляют готовую структуру вашего JavaScript кода. Существуют различные типы фреймворков под разнообразные нужды, однако четыре вышеупомянутых являются самыми популярными в списке требований при приеме на работу в 2020 году.

Заключение

Если говорить о конкретной профессии, больше всего сейчас требуется инженеров QA, но в списке направлений лидирует веб-разработка (если посчитать суммарно вакансии по фронтенду и бэкенду на PHP, Java, JavaScript и т. д.). Порой работодатели пишут в требованиях все известные им стеки технологий от А до Я. Посмотрев на запросы компании, люди начинают сомневаются в своих способностях, не владея и половиной умений из списка. Никогда не теряйте самообладание и пробуйте продвигать свою кандидатуру в понравившиеся компании. Обязательно найдётся фирма, которая оценит ваш профессиональный уровень по достоинству.

***

Если вы только начинаете путь в ИТ, стоит присмотреться к учебным курсам по веб-разработке онлайн-академии GeekBrains. Начав с основ, здесь можно получить необходимые для старта карьеры знания. Актуальная программа, 2 – 3 вебинара в неделю и 2 месяца стажировки. Под руководством опытных преподавателей студенты наработают необходимую для дальнейшего развития базу и получат помощь в трудоустройстве.

12
Ноя
2020

🙋 Как iOS-разработчику создать резюме, которое выделит его среди других кандидатов

Соискателя выбирают за навыки, но сначала его должны выделить в общем потоке. Рассказываем, как составить резюме, которое зацепит любого рекрутера. Наши советы будут полезны не только iOS-разработчикам.

На стоящую вакансию рекрутеры получают огромный поток откликов — в этой куче они выбирают наиболее приятных в общении кандидатов с четко выраженными компетенциями. Чтобы выделиться в толпе соискателей и обратить на себя внимание, нужно тщательно подойти к составлению резюме. Работодатель хочет знать, почему ему выгодно нанять именно вас, но чтобы до этого дошло, резюме должно зацепить рекрутера на эмоциональном уровне.


Чтобы вас заметили и пригласили на собеседование, при оформлении пунктов резюме нужно выполнить несколько условий. Наши советы в первую очередь рассчитаны на iOS-разработчиков, но пригодятся и представителям других профессий.

1) Контактная информация

Кроме заполнения полей «Имя» и «Фамилия» стоит добавить фото и дать контакты для связи.

Подберите подходящую фотографию – это первый визуальный образ, который будет ассоциирован с вами. Снимок должен соответствовать должности, на которую вы претендуете.

Рекрутеру потребуется с вами связаться, поэтому оставьте как можно больше контактов, и обязательно включите ссылку на профили в соцсетях. Вас все равно будут искать, так что постарайтесь сэкономить время hr-специалиста. Укажите телефон, E-mail, Telegram, VK, Facebook, Skype, Habr и т.д.

Адрес электронной почты для связи с работодателем лучше создать из имени и фамилии, без смешных отсылок и нелепых прозвищ. Абсурдный или непонятный адрес почты создаст о вас впечатление неадекватного человека. Обратите внимание на соцсети и уберите оттуда отпугивающие людей с противоположными моральными ценностями посты: резкие политические высказывания, расистские и сексистские шутки. Корпоративная культура в наше время – не пустой звук.

Будьте открыты. Рекрутеру придется узнать о вас как можно больше, потому не стоит выглядеть подозрительно. Неизвестность ему не понравится. Облегчая поиск информации о себе, вы повышаете собственные шансы на успех.

2) Опыт работы


Эта колонка не должна быть пустой! Если у вас нет опыта на позиции в крупной компании, постарайтесь вспомнить другие варианты.

В поле «Компания» напишите: «Собственные проекты». Расскажите, какие проекты вы разрабатывали, даже если это не оплачивалось. Какие решали задачи, какие технологии и инструменты применяли. Обязательно опишите проблемы, с которыми столкнулись, и пути их решения. После этого напишите о результате: что конкретно было разработано. Дайте ссылку на показательный проект в общедоступном репозитории.

Прикреплять ссылку, к примеру, на Github нужно, чтобы доказать обладание заявленными навыками. Репозиторий должен быть оформлен идеально: стоит добавить в него несколько проектов, которые демонстрируют вашу компетентность. Также для рекрутера лучше добавить скриншоты приложений и поместить их в резюме.

Можно опубликовать успешно выполненные тестовые задания других работодателей, при условии, что их можно назвать полноценными проектами.

Вспомните о достижениях, которыми вы гордитесь без скромности. Это объективная возможность убедить рекрутера, что вы лучший претендент на должность. Основной интерес hr-специалиста опыт по специальности. При наличии опыта в IT по другому направлению, упомяните об этом вкратце – это продемонстрирует ваш кругозор. Чем больше подобной информации вы предоставите, тем сильнее и привлекательнее будет выглядеть резюме.

3) О себе


Важный фактор отбора. Перед отправкой резюме нужно зайти в описание желаемой вакансии и посмотреть запрашиваемые навыки.

Далее нужно вписать их в раздел «О себе», чтобы соответствовать требованиям компании. Не нужно придумывать скилы, сначала изучите их. Чтобы привлечь внимание и произвести впечатление, придется составить резюме под конкретного работодателя, сосредоточившись на его требованиях. Например, напишите о том, какие библиотеки вы используете в проектах, что умеете делать code review, пишете Unit-тесты и т.д. Создайте краткую справку по техническим навыкам.

Также можете добавить, с какими технологиями вы хотите работать в будущем и какую дополнительную пользу сможете принести работодателю.

В представлении любой компании хороший разработчик – человек активный. Он развивается, имеет разнообразные интересы, принимает участие в открытых проектах и хакатонах, пишет статьи, выступает в качестве спикера на митапах и конференциях.

Об этом нужно упомянуть обязательно. Можно, к примеру, похвалиться статьями на Хабре и прикрепить ссылку на профиль. Расскажите, на какие митапы вы ходили, в каких хакатонах участвовали и какие заняли места.

В конце этого блока можете описать, как представляете себе хорошее место работы.

4) Ключевые слова

Если вы создаете резюме на HeadHunter (hh), заполните список в разделе «Ключевые навыки».

Чем больше вы там расскажете, тем выше будет резюме в поисковике у рекрутера. Релевантность никто не отменял.

В качестве примера приведем список навыков iOS-разработчика:

  1. Swift
  2. Xcode
  3. iOS
  4. Objective-C
  5. Git
  6. SQL
  7. ООП
  8. ARKit
  9. MVVM
  10. VIPER
  11. UIKit
  12. Realm
  13. Alamofire
  14. REST API
  15. GCD
  16. Core Data

Лучше не указывать позиций, которыми вы не владеете: обман раскроется на собеседовании. Исходите из реального опыта.

5) Высшее образование и повышение квалификации, курсы

Хорошо, если в этом блоке вам есть о чем рассказать.

Перечислите имеющиеся дипломы и сертификаты. Если их нет, попытайтесь отыскать. Сертификаты о прохождении курсов от обучающих платформ Udemy или Geekbrains отлично подойдут.

6) Чего не следует писать в резюме

Есть несколько вещей, о которых в резюме нельзя писать ни в коем случае.

  • Низкая заработная плата

Лучше не указывать своих ожиданий, или написать амбициозные цифры. Второй вариант подходит, только если вы можете трезво оценить свой профессиональный уровень и проанализировать среднюю зарплату на рынке. Чтобы не прогадать с точной цифрой, сформулируйте зарплатную вилку. Нижняя граница может быть на уровне средней зарплаты по рынку, а высшая немного выше. Главное, не принижайте свой уровень.

  • Степень Junior

Джуниор – начинающий программист, который знает и понимает язык, но не решал реальных производственных задач. Лучше указать должность без модификаторов уровня: к примеру, iOS-разработчик. Причина: Junior обычно не представляет интереса для работодателя.

  • Нерелевантный опыт

Если вы не связанный с IT опыт работы, не пишите о нем. Для работодателя эта информация бесполезна. Продолжительность контракта менее 3 месяцев выглядит плохо, поскольку напоминает не пройденный испытательный срок. Если у вас был интересный опыт на краткосрочных контрактах, укажите эту работу в качестве проектной.

7) Небанальное сопроводительное письмо

Обязательно напишите, почему вы хотите работать именно на этой должности и какой вклад готовы внести в развитие компании.

Четко объясните свои мотивы. Дайте краткое обоснование, почему ваши умения и опыт подходят для предлагаемой должности. Отлично, если вас что-то связывает с компанией, например, вам нравится продукт или услуга, а может вас привлекает ее миссия и ценности. Стоит указать причину, по которой рекрутеру необходимо рассмотреть именно вашу кандидатуру.

Резюме и сопроводительное письмо должны дополнять друг друга. Нельзя повторять в письме содержание резюме. Следует адресовать его непосредственно HR, придерживаясь делового стиля общения. Письмо должно оставаться в рамках делового этикета. Не предлагайте свои услуги чрезмерно навязчиво: энтузиазм – хорошо, назойливость – плохо. В переговорах лучше придерживаться позиции «Хочу, но не нуждаюсь». В конце письма попытайтесь любезно инициировать контакт и вежливо поблагодарите за уделенное вам время:

«Надеюсь, вы найдете мою кандидатуру соответствующей требованиям вакансии.
С уважением, (ваше имя)».

Сопроводительное письмо должно показывать вашу заинтересованность. Без него вас отнесут к людям, которые просто проходили мимо и решили откликнуться. Если сопроводительное письмо будет неизбитым и индивидуальным, его обязательно заметят!

8) Размещение резюме

Чтобы вас нашли с наибольшей вероятностью, лучше оставить свое резюме на разных российских рекрутинговых ресурсах, а не только на HH.

SuperJob, «Мой круг», «Хабр Карьера» – на последний сайт обратите особое внимание: там можно найти множество хороших вакансий от проверенных работодателей.


Пишите о себе максимум полезной информации, уважайте время рекрутера. Он не станет выяснять подробности, а выберет другого кандидата. Сделайте резюме, которое будет четко отражать вашу компетентность и создаст представление о вас, как о серьезном, выгодном и надежном работнике. Hr оценивает не только послужной список, но и самопрезентацию. Хорошее резюме будет контрастировать с откликами ленивых соискателей, а следуя нашим советам, вы сможете создать целостный образ идеального кандидата.

***

Если вы только начинаете карьеру, обратите внимание на курсы iOS-разработчиков от GeekBrains. Успешно окончившим их студентам выдают диплом о профессиональной подготовке, который пригодится для составления резюме. Онлайн-академия также помогает выпускникам с трудоустройством.

14
Окт
2020

Преодолеть выставленные отделом HR на пути соискателей препоны едва ли не труднее, чем освоить профессию iOS-разработчика. Разбираем распространенные вопросы и даем примеры практических заданий из реальных собеседований при трудоустройстве.

Если вы прошли этап переписки и смогли добраться до собеседования, начинается самая интересная часть квеста по получению работы мечты. Внимательно изучите эту статью: чтобы пройти все ловушки, нужно уверенно ответить на каждый затронутый в ней вопрос. Не имеющий многолетнего опыта iOS-разработчик является для компании своеобразным котом в мешке – чтобы провести отсев, отдел HR работает с многими кандидатами в общем потоке. Если к найму мидлов и сеньоров российские работодатели подходят индивидуально, джуниоров собеседуют по стандартным скриптам.

Телефонный звонок рекрутера

По телефону будут спрашивать, почему вы выбрали профессию разработчика. «Как вы попали в эту область? В каких проектах участвовали?» – HR задает наводящие вопросы, исходя из резюме. Его цель – узнать вас получше. Вопросов будет меньше, если резюме грамотно оформлено и демонстрирует компетентность соискателя.

С HR нужно быть вежливым и придерживаться официального стиля общения. Вас проверят на адекватность и сделают вывод о целесообразности очного собеседования с техническим специалистом.

Стоит узнать, какой стек технологий используется в компании. Это позволит подготовиться к собеседованию более основательно, к тому же задавая вопросы, вы будете выглядеть компетентным и заинтересованным в вакансии разработчиком. Любопытство здесь вполне уместно: работодатели часто сами публикуют список технологий, которыми должен владеть соискатель.

Очное собеседование с рекрутером

До беседы с техническим специалистом с вами может опросить рекрутер по списку поверхностных вопросов на знание технологий: «Что такое Swift?», «Что такое ООП?» и т.д. Он может дать вам мини-тест, в котором нужно будет набрать энную сумму баллов, чтобы пройти на собеседование с техническим специалистом. Задача HR – отсеивать заведомо негодных соискателей.

Собеседование с техническим специалистом

Теоретические вопросы

Общение с техническим специалистом начинается с проверки ваших теоретических познаний. На рядовых собеседованиях задают типовые вопросы – всего их около десятка.

Несмотря на кажущуюся простоту вопросов, даже разработчик уровня senior может ответить на них невнятно и произвести впечатление посредственного специалиста. Дело здесь не в отсутствии знаний, а скорее в неумении объяснять простые вещи на словах в стрессовых условиях собеседования. К тому же разработчики не учат информацию, которую легко в сети.

К собеседованию обязательно нужно подготовиться. Для этого у нас уже есть отличная статья. Не пытаясь ее дублировать, мы рассмотрим другие вопросы:

1. Что такое свойство lazy?

Значение ленивого свойства не вычисляется до первого использования.

2. Что такое mutating, и где он используется? Приведите примеры.

По умолчанию свойство структуры не может быть изменено внутри функции. При попытке изменить var name внутри func makeAnonymous вы получите ошибку. Мы можем это осуществить, если поставим ключевое слово mutating перед func.

        struct Person {
    var name: String
    
    mutating func makeAnonymous() {
        name = "Anonymous"
    }
}
    

3. Что делают map, filter и reduce? Приведите примеры.

Метод map позволяет применить переданное в него замыкание для каждого элемента коллекции.

        let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

let result = numbers.map { $0 * 10 }

print(numbers) //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(result) //[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
    

Метод filter используется, когда требуется отфильтровать элементы коллекции по определенному правилу.

        let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let filted = numbers.filter{$0 % 2 == 0}
filted
//[2, 4, 6, 8, 10]
    

Метод reduce позволяет объединить все элементы коллекции в одно значение в соответствие с переданным замыканием.

        let cash = [10,50,100,500]
let total = cash.reduce(210, +) //870
    

4. В чем разница между NSArray и NSSet?

NSArray – это упорядоченная коллекция, а NSSet – неупорядоченная. NSSet используется для создания уникальных объектов, а NSArray может иметь повторяющиеся.

5. Какие архитектуры вы использовали? Какая из них у вас любимая и почему?

Стоит потренироваться в использованию архитектуры MVVM, поскольку она наиболее распространена.

6. Что такое main queue?

Main queue – очередь, в которой происходят все операции с пользовательским интерфейсом (UI). Затратные по времени блоки кода, вроде загрузки данных из сети, мы уводим с main queue. Когда мы получаем данные через другую очередь, main queue — свободна и обслуживает события UI. Затем мы вновь возвращаемся на main queue, чтобы обновить элементы интерфейса.

Переключение затратных заданий с main queue на другой поток всегда async. Метод sync на main queue не применяют, потому что это приведет приложение к deadlock.

7. Что такое Grand Central Dispatch? Что такое Dispatch Queues?

Grand Central Dispatch (GCD) – технология Apple API, реализующая параллелизм (выполнение нескольких потоков одновременно) в многоядерном процессоре. GCD управляет общим пулом потоков и решает, когда именно выпустить поток на ядро в зависимости от доступных системных ресурсов. На каждое ядро приходится по одному потоку.

GCD оптимизирует приложение и обеспечивает вызов потока безопасно и автоматически.

Платформа GCD объявляет несколько типов данных и функций (Dispatch Queues, Dispatch Sources, Dispatch Groups, Dispatch Semaphores).

Dispatch Queues – очередь, в которую вы отправляете единицы работы (блоки кода). Затем GCD решает, в каком потоке их выполнять и сколько параллелизма требуется.

8. Что такое UIStackView?

UIStackView– контейнер для UIView. В него мы помещаем выстраивающиеся в виде стека горизонтально или вертикально UIView. Выкладываться они будут автоматически в соответствии с доступным пространством, которое определяется через настройки: alignment, distribution, spacing.

9. Какие существуют логические операторы, что такое оператор объединения с nil?

  1. !a – НЕ;
  2. a && b – И;
  3. a | | b – ИЛИ;
  4. ?? – оператор объединения с nil.

?? возвращает либо значение опционала, либо значение по умолчанию (второе).

        var optionalInt: Int? = 90
var result = optionalInt ?? 30 // 90
    

Если optionalInt не nil, оно возвращается, в противном случае возвращается строка по умолчанию.

10. Объясните иерархию классов UIButton. Суперкласс UIViewController?

NSObject → UIResponder → UIView → UIControl → UIButton

UIResponder → UIViewController

***

Эти вопросы наиболее популярны и ответы на них нужно знать обязательно. Если несмотря на все старания вы получили отказ, добейтесь от компании фидбэка и проведите работу над ошибками.

Практические вопросы

В практической части вам дадут MacBook и попросят решить несложные задачи. Затратных по времени заданий скорее всего не будет – едва ли технический специалист захочет тратить на соискателя слишком много времени.

Если нужно написать приложение, это попытка проверить, чем вы руководствуетесь, как делаете переходы и какую архитектуру используете. Лучше всего показать умение применять MVVM и подчеркнуть, что выбор обоснован легкостью трансформации в VIPER.

За короткое время полноценное приложение написать не получится. Покажите, какая сущность отвечает за определенные задачи, опишите проектирование приложения, его структуру и этапы реализации. Здесь важно умение мыслить логически и навыки проектной работы. Ниже приводятся примеры заданий, которые часто всплывают на собеседованиях:

Расскажите, как бы вы проектировали такое приложение:

  1. Бесконечная лента картинок. Каждый элемент ленты – картинка + мета-информация к ней. При нажатии на картинку та открывается в полном размере. Источник картинок – публичный API. Необходимо реализовать оффлайн-режим, т.е. приложение должно функционировать без сети в максимально возможной степени.
  2. Спроектировать чат. Пример: Telegram. Функциональность: список диалогов, в диалогах – сообщения. Можно отправлять текст, фото, видео, аудио. Из диалога можно посмотреть профиль пользователя.
  3. Есть два источника: А и В. Необходимо отобразить на экране список получаемых из них элементов.

Для устранения багов кандидату могут дать уже готовое приложение, которое ломается известными для технического специалиста способами. Экзаменуемого оценивают по качеству и скорости решения проблем.

Не стесняйтесь спрашивать сами

В конце собеседования желательно, чтобы у вас остались вопросы к работодателю. Их отсутсвие показывает , что соискатель не сильно заинтересован в вакансии или слишком стеснителен. Крайне важно показать интерес к проектам компании.

О чем можно спросить:

  1. Какие задачи придется выполнять в первое время?
  2. Будет ли ментор?
  3. Какой стек технологий использует компания?
  4. Как компания относится к code review?
***

Самообразование необходимо каждому ИТ-специалисту, но если вы нацелены на карьеру программиста всерьез, стоит обратить внимание на факультет iOS-разработки GeekBrains. Занятия ведут опытные преподаватели, а успешно прошедшим курсы студентам онлайн-университет не только выдает дипломы, но и помогает с трудоустройством.

28
Сен
2020

Считается, будто в IT легче всего прийти через тестирование, но о переквалификации тестировщиков никто не рассказывает. Мы рассмотрим карьерные перспективы специалистов по QA.

После 7-10 лет работы в профессии каждый день становится копией предыдущего: опять приходятся писать тест-кейсы или автотесты. Проекты не отличаются друг от друга, и даже все баги, кажется, известны заранее. Во время кризиса жанра душа просит чего-то нового. В статье, подготовленной при поддержке Факультета Тестирования ПО онлайн-университета GeekBrains, мы рассмотрим возможные пути эволюции тестировщика.

Для начала стоит определиться, хотите ли вы связать дальнейший путь с тестированием? Если ответ положительный, попробуйте понять, что вы больше всего любите в работе: анализировать, писать код или управлять проектами. В зависимости от ответа можно планировать карьеру.

Фото с сайта pixabay.com
Фото с сайта pixabay.com

Если вы успели написать несколько собственных фреймворков для автоматизации тестирования и поняли, что хотите и дальше заниматься чем-то подобным, стоит присмотреться к следующим профессиям.

Automation Test Architect

Должность в России довольно редкая и встречается преимущественно в филиалах иностранных корпораций, где счет идет на десятки тысяч автотестов.

Архитектор автотестов занимается стратегическим развитием автоматизации тестирования. Он может подобрать или разработать наилучшим образом подходящий под решаемые задачи фреймворк и построить инфраструктуру, на поддержку и настройку которой будут затрачиваться считанные минуты.

Архитектор должен внедрить автотесты в общий процесс CI/CD таким образом, чтобы не сломать работу других отделов. В его обязанности входит поиск новых инструментов и консультирование тестировщиков-автоматизаторов из разных команд. Чтобы претендовать на эту должность, желательно хорошо знать несколько языков программирования, а также обладать многолетним опытом работы и собрать портфолио из десятков крупных проектов.

SDET – Software Development Engineer in Test

В России эта профессия только начинает набирать популярность, поэтому за модным названием часто скрывается описание вакансии обычного автоматизатора. В иностранных компаниях это в первую очередь разработчик.

Как правило SDET владеет несколькими языками программирования. Он хорошо знаком с продуктом не только как обычный тестировщик, но и как программист. Уровень SDET позволяет проводить ревью кода, тестировать программу методом «белого ящика» и вносить в нее изменения. SDET тоже пишет автотесты, но это совершенно другой уровень, существенно отличающийся от обычной автоматизации.

Test Architect

Если вы не любите писать код, но можете часами анализировать ТЗ на сотни страниц, стоит подумать о должности Test Architect. Как и архитектор автотестов, архитектор тестирования нужен в крупных проектах и больших компаниях, например, в банках.

Такой специалист великолепно владеет техниками тест-дизайна, прекрасно разбирается в методологиях и видах тестирования. Он способен проанализировать сложные системы, понять их устройство и влияние отдельных компонентов друг на друга. Оценить, какие виды тестирования и для каких систем необходимо провести в случае разработки новой функциональности.

В обязанности архитектора входит определение стратегии, оценка рисков, анализ вносимых в ПО изменений и влияние этих изменений на процесс тестирования. Он помогает командам составлять планы, оценивать временные затраты на проведение тестирования и анализировать полученные результаты. Помимо этого тест-архитектор консультирует отделы разработки и другие департаменты компании.

Test manager

Обладающим хорошими управленческими навыками специалистам может прийтись по душе должность тест-менеджера. На этой позиции общаться придется со всеми: заказчиками, разработчиками, аналитиками и бизнесом. Необходимо информировать представителей других подразделений о ходе тестирования, выявленных проблемах и потенциальных рисках.

Тест-менеджер контролирует весь процесс: от сбора требований до отчета о результатах тестирования. Если во время тестирования возникают какие-то проблемы (не работает стенд или программисты никак не исправят блокирующий дефект), его задача – устранить ее в максимально сжатые сроки. В обязанности тест-менеджера входит подбор, обучение и развитие тестировщиков. Он помогает подчиненным в налаживании отношений с другими подразделениями, что весьма ценно, поскольку конфликты с разработчиками, мягко говоря, не редкость.

Тест-менеджер отвечает за качество продукта и соблюдение сроков реализации проекта. Если кто-то из команды заболел, он засучивает рукава и подключается к процессу. Конечно у хорошего менеджера такие ситуации возникают редко, потому что он умеет учитывать возможные риски и продумывает варианты действий на случай, если что-то пойдет не так.

Фото с сайта pixabay.com
Фото с сайта pixabay.com

С развитием в тестировании ситуация более-менее ясна, но как быть в случае, если вы не хотите оставаться в профессии? Не расстраиваться. Есть целый ряд специальностей в которых вчерашний QA может успешно себя реализовать.

Разработка

Чаще всего, тестировщики переходят в разработку. После несколько лет в автотестах специалист может не только писать приличный код, но и находить ошибки в чужом. Вчерашний QA уже написал несколько фреймворков с нуля и реализовал ряд приложений под собственные нужды. Таких, например, как генераторы тестовых данных. С солидным багажом знаний переход в разработчики не составит труда. Ко всем прочему тестировщик будет искать баги в своем коде прежде, чем передать его в тестирование. Это, конечно, плюс.

DevOps

Помимо разработки существует еще направление DevOps. В эту профессию переходят тестировщики, которые самостоятельно встраивали автотесты в процессы CI/CD. Им доводилось поднимать всю инфраструктуру автоматизации с нуля, создавать собственные системы мониторинга, а также разворачивать и поддерживать тестовые стенды, работать с Docker и писать bash-скрипты. Устроиться в DevOps будет чуть сложнее, чем получить должность программиста. Обычно, на эту позицию ищут специалистов уровня Senior, но можно попробовать найти работу в стартапе, где требования к кандидату будут ниже.

Фото с сайта pixabay.com
Фото с сайта pixabay.com

В сфере IT существует не только код. Есть целый ряд профессий, которые не требуют наличия технических навыков и при этом востребованы на рынке ничуть не меньше программирования. Если вы считаете, что кодить – это не ваше, обратите внимание на следующие специальности.

Product manager

Кто, как не QA знает все о продукте, над которым работает команда? Тестировщик непосредственно участвует в его развитии, знаком с фидбеком от пользователей и видит, что нравится клиентам, а что вызывает у них раздражение. Он понимает, сколько времени требует доработка и может спрогнозировать сроки реализации новой функциональности, а также знает сильные и слабые стороны продукта по сравнению с конкурирующими. В работе тестировщики опираются в том числе на аналитику и формальные метрики: для начала им стоит попробовать себя в качестве помощника PM на текущем проекте. Если не получится, можно предложить услуги конкурентам.

Project manager

Часто на эту должность тестировщика наталкивает обратная связь от пользователей. Когда видишь, чего не хватает клиенту и понимаешь, как это можно реализовать, рождается проект. Нередки случаи, когда руководство разрешает посвятить ему несколько рабочих часов. Если финансовые показатели подтверждают успех идеи, несколько часов превращаются в полноценную выделенную команду, а ее идейный вдохновитель превращается в PM.

Заключение

Тестирование – хороший старт для карьеры в IT. Перед тестировщиками открывается множество путей дальнейшего развития, если текущая деятельность перестала приносить им удовлетворение. При желании QA всегда может найти работу по душе.

***

Освоить новую специальность вам поможет Факультет Тестирования ПО от Geekbrains. Преподаватели курса – настоящие профессионалы с многолетним опытом работы в тестировании. Прохождение курса позволит быстро войти в профессию тестировщика и найти работу, которая принесет достойный заработок и массу удовольствия.

24
Сен
2020

Лучшие студенты школы «ProgTips» смогут пройти стажировку на базе НПП «МЕРА»

Потенциальных слушателей наших курсов по программированию волнует вопрос: «Смогу ли я устроиться на работу после обучения или хотя бы пройти стажировку на реальном предприятии?» Мы постоянно работаем над тем, чтобы наши выпускники оставались востребова…

01
Сен
2020

Для типичного айтишника главный мотив работы – ежемесячная оплата труда. Владимир Мельник рассматривает финансовую составляющую мотивации в ИТ и объясняет, почему, по его мнению, вся эта махина движется «не туда».

20
Авг
2020

Хотите узнать, зачем в современном IT нужны DevOps-инженеры и почему такой должности не было раньше? Объясняем максимально просто.

Что такое DevOps и кто такой DevOps-инженер

DevOps – это в первую очередь философия, которая с годами превратилась в должность. А DevOps-инженер – человек, который модернизирует бизнес в соответствии с этим подходом. За счёт применяемой этим специалистом методологии процессы внутри команды становятся быстрее, а труд разработчиков приносит больше пользы.

Данную статью мы подготовили при поддержке нашего партнера – онлайн-университета GeekBrains. На факультете DevOps саму профессию, необходимые практики и инструменты можно освоить с нуля.

А поподробнее?

Представим, вас уже взяли на должность, связанную с DevOps в компании, создающей сайты на заказ. В компанию обращается клиент ООО «Большая Корпорация». Разработчик Василий и дизайнер Анна читают требования, резво принимаются за дело и вот уже готов первый прототип. Тестировщик Ольга проверяет его и передаёт клиенту.

Вроде бы пока всё идёт нормально, но есть одно «но»… «Большая Корпорация» не была бы самой собой, если бы не вносила правки по одной. Уже на пятой правке после смены цвета всех кнопок с бирюзового на аквамарин, Василий, Анна и Ольга начинают рвать на себе волосы – после каждого изменения необходимо переделывать, тестировать и размещать на сервере клиента весь сайт.

Тут на сцену и вступаете вы – DevOps-инженер. Вы быстро разворачиваете pipeline (букв. англ. «система труб»). Только вместо жидкости по этим трубам «течёт» код, а созданная вами система непрерывной интеграции и тестирования собирает и проверяет всё вместе, значительно ускоряя рабочий процесс.

Теперь при каждом изменении не нужно привлекать к работе всю команду – достаточно воспользоваться построенной системой. Она сама подготовит и разместит на сервере весь проект, а при обнаружении проблем автоматически передаст их ответственному работнику. Таким образом, некачественный код отсеивается сразу, а необходимый результат оказывается у клиента быстрее, увеличивая прибыльность и скорость работы всей команды.

Осталось разобраться, почему же эта практика называется DevOps. Всё просто: Dev (Development) – разработка, а Ops (Operations) – эксплуатация. Вот и вся расшифровка этого страшного термина.

Инструменты и навыки DevOps-инженера

Опытный DevOps-инженер должен понимать, как создать быструю и долговременную систему. Поэтому огромным плюсом будет умение строить в своём сознании «карты» инфраструктуры, описывающие, какой элемент за что отвечает.

Естественно, свою задачу вы будете выполнять не вручную, а с помощью специальных программ, технологий и средств автоматизации:

Если вы хотите стать DevOps, придётся хорошо изучить эти и множество других инструментов. Для работы надо разбираться и в Linux, понимать внутреннее устройство операционной системы.

Материалы для чтения, изучения и просмотра

Если вы твердо решили идти в DevOps, помогут следующие ресурсы:

Есть информация и на русском:

Карьера в DevOps

Если вы только пришли в IT-индустрию, требования к DevOps-инженерам могут показаться сложными или даже страшными, но бояться нечего. Чтобы устроиться на первую должность по этой вакансии, имеет смысл несколько раз поучаствовать в этой роли в хакатоне или проекте в группе разработчиков, дизайнеров и других специалистов, заинтересованных в профессиональном развитии. Такой подход принесёт не только опыт, но и контакты в индустрии.

В первую очередь в DevOps стоит идти системным администраторам и всем, кому интересны и знакомы Linux-системы. Полезны будет и другие знания по системному администрированию, но именно эта ОС используется в сфере DevOps чаще всего.

DevOps также является логичным продолжением карьеры для людей, профессионально связанных с настройкой IT-инфраструктуры и строительством сетей.

Финансовые перспективы

Конечно, DevOps – дело само по себе интересное, но вас ведь не заставят работать без зарплаты. Давайте посмотрим и сравним, сколько платят DevOps-инженерам разных уровней за рубежом и в России.

Чтобы узнать, как дела обстоят в США, воспользуемся инструментом StackOverflow Salary Calculator.

<span>Результаты анализа DevOps-работ с помощью Salary Calculator</span>
Результаты анализа DevOps-работ с помощью Salary Calculator

Медианная зарплата DevOps-инженера в Нью-Йорке составляет 131 тыс. долл. в год (10.8 тыс. долл./мес.), что даже по американским меркам довольно неплохо.

Российские зарплаты рассмотрены в исследовании Яндекса. Как указано в их материале, имея всего год опыта, вы сможете рассчитывать на 115-125 тыс. руб./мес.

Собеседование
Чтобы подготовиться к собеседованию, изучите наш материал 10 вопросов и ответов на DevOps собеседовании.

Конечно, в каждой компании квалификация определяется по-разному, но общепринятым является разделение DevOps-инженеров на те же группы, что и разработчиков: Junior, Middle и Senior. Зарплата DevOps-специалиста стремительно увеличивается с ростом его опыта. Junior и Middle могут рассчитывать на 100-150 тыс. в месяц, а закоренелые DevOps-«волки» получают от 200 тыс. руб.

Заключение

Не терпится начать обучение? Мы предлагаем взглянуть на курс DevOps онлайн-университета Geekbrains, где вам расскажут, как пользоваться такими неотъемлемыми инструментами DevOps, как Docker, Ansible и Kubernetes (полная программа приведена по ссылке).

Стоит заметить, что это один из редких систематизированных материалов на русском языке – рыскать по сети в поисках туториалов и гайдов уже не придётся. Если что-то останется непонятным, вы всегда можете задать вопрос преподавателям напрямую. Кроме того, по результатам успешного прохождения курса платформа помогает с трудоустройством.

19
Авг
2020

Кто такой питонист, что он знает, с чем имеет дело и сколько зарабатывает. Как освоить доходную профессию за приемлемый срок. Книги, статьи и курсы по языку Python.

Кто из вас знает комик-группу Монти Пайтон? Названный в честь их телешоу, язык Python такой же интересный, веселый и не грузящий. Разработчики Dropbox использовали Python, когда создавали серверную часть и десктопное приложение, а теперь этим инструментом пользуются более 500 млн людей. На Python пишут в Google, Facebook, Netflix, Quora, Reddit и других крупных компаниях.

Примеры известных компаний, активно использующих Python
Примеры известных компаний, активно использующих Python

В этом материале, подготовленном нами при поддержке факультета Python-разработки GeekBrains, мы разберемся, с чем связана такая популярность языка и как выучить Python.

Где применяется Python

У Python последовательный ясный синтаксис и простой подход к модульной архитектуре. Язык является высокоуровневым – многие задачи Python «берет на себя». То, что в других языках занимает 10 строчек кода, в Python часто уже реализовано в виде готового решения – одной из эффективных функций стандартной библиотеки.

Это одна из множества причин, почему Python повсюду: в веб-разработке и анализе данных, серверных и десктопных приложениях, бизнес-инструментах и научных исследованиях. Язык портируется почти на все существующие платформы – от мобильных гаджетов до крупных вычислительных узлов.

Еще одна мощно развивающаяся сфера – машинное обучение. Например, извлечение искусственным интеллектом смысла из текстов, написанных на естественном языке или генерация изображений. Популярность языка в этой области связана с большим количеством библиотек для анализа данных.

Тест
Хотите проверить свои знания в области последних новостей искусственного интеллекта? Пройдите наш тест «Правда или ложь: что умеют нейросети».

На Python пишут скрипты для автоматизации рутинных процессов сбора данных с веб-страниц и вычленения паттернов в больших корпусах текстов. Набор Python-скриптов может автоматизировать рутинные задачи SEO-специалиста или собрать координаты геолокаций.

Python применяется даже в разработке игр: в Sims 4 для внутриигрового моддинга, а в Civilization IVдля создания собственных модификаций игры.

Что нужно знать и уметь

18
Авг
2020

Хотите работать в крутой, молодой и известной компании? Тогда вам в Netflix! Рассказываем, что нужно знать и к чему быть готовым.

Netflix – медиа-компания со штаб-квартирой в Лос-Г…

04
Июл
2020

Рассмотрели 12 международных и российских площадок для поиска удалённой работы: ссылки, различия в механике поиска, плюсы и минусы.

Полный / неполный рабочий день

28
Июн
2020

Все в курсе, что у программистов высокие зарплаты. Но обычная работа в компании – лишь один из источников, с помощью которых можно зарабатывать на программировании. В этой статье обсудим другие способы.

03
Апр
2020

Эффективная удалёнка: как продуктивно использовать дистанционную работу

Рассказ о компании, которая повысила производительность, переведя сотрудников на «пижамный» режим, и об обратной стороне долгосрочной удалённой работы.

Статистика утверждает: дис…

24
Мар
2020

«Ни в одном месте не проучился дольше года». Интервью с Java-разработчиком

Взяли интервью у выпускника курса Java Mentor, который мы ранее рекомендовали нашим подписчикам. В комментариях под постом вы можете задать вопросы выпускнику лично.

Никто не охарактеризует университет или другую образовательную площадку лучше обучавшихся выпускников. Библиотека программиста следит за тем, чтобы рекомендуемые курсы приносили читателям отдачу. Мы поговорили с Сергеем Алексеевым (страница вк) – выпускником курса Java Mentor.

Б.П.: Привет! Расскажи для начала, чем сейчас занимаешься, где работаешь?

С.А.: Работаю в компании Люксофт. Месяц назад меня дополнительно наняли вне штата в Сбербанк заниматься контролем качества торговой системы, которую пишут другие разработчики. Программа для операций с валютой и ценными бумагами.

Б.П.: Какой у тебя был опыт в программировании до начала курса?

С.А.: В «воспоминаниях» вконтакте недавно всплыл пост, написанный мной год назад: «Не понимаю, как работают абстрактные классы и что это такое – помогите». Стыдно, но не удалил, чтобы другие видели: при старании и с хорошими наставниками можно добиться успеха.

Первую официальную работу я получил в 2016 году в непритязательной веб-студии. Закончилась карьера фронтендера так же быстро, как началась – успехов я не достиг, и через полгода уволился. Пошёл в системное администрирование, но любовь к программированию оказалась выше, чем к копанию в конфигурациях и железках – уже через год я устроился джавистом. Брал маленькие заказы, писал маловразумительные конструкции и зарабатывал в удачный месяц 20 тысяч рублей.

Поступил в один колледж и два вуза, но попытки получить высшее образование кончились крахом – ни в одном месте не проучился дольше года. Две причины: 1) больше внимания и часов уделялось нетехническим предметам, чем программированию, 2) нельзя использовать функции, которых нет в методичках 1988 года.

Б.П.: Почему выбрал курс Java Mentor и сколько месяцев он занял?

С.А.: В течение года видел рекламу Java Mentor в интернете, переходил на сайт, но после непродолжительного времени закрывал.

Написание дешевых программок перестало приносить удовольствия – решил устроиться стажером в Райффайзенбанк. Но там в работе отказали, потому что… «Я не знаю, что такое абстрактный класс». Понял, что если не найду того, кто научит, всю жизнь прострадаю ерундой. Зашёл на сайт JM, оставил заявку на обратную связь. Оказалось, что учиться можно сколько нужно, хоть год, а оплатить, когда уже устроюсь. Схема удивила – неделю искал подвох. Не нашёл – сообщил, что хочу учиться. Скинули тестовое задание, которое еле-еле выполнил. Три дня подряд писал код, но справился.

Обучение началось 10 августа, а 22 ноября я прошел собеседование на работу.

Б.П.: В чем для тебя преимущество формата?

С.А.: Заинтересованность в качестве твоих знаний. Если ментор видит, что ты не понял, дальше пройти не получится. Прогоняй материал, пока не разберешься – никакой халтуры. «Грызть гранит» придётся тебе самому, но если уперся лбом в стену, менторы помогут выйти из тупика, не терять много времени на одном вопросе.

Б.П.: Сколько часов в неделю уходило? Были жесткие дедлайны?

С.А.: Жестких дедлайнов не было. Но я свел до минимума подработки и взялся за учебу с фанатизмом, уделял по 10–12 часов в день, и сам создал сложности – игнорировал ментора, когда «зависал». Не люблю просить помощи.

В результате перегорел, забросил учебу и две недели не мог ничего делать, смотрел в ковёр на стене. Узнав о моем состоянии, Герман (основатель проекта Java Mentor Герман Севостьянов – прим. редактора) позвонил, нашел слова поддержки и помог заново разжечь интерес. Я благодарен ему за это.

Б.П.: Как ты оцениваешь уровень преподавания? Какие основные плюсы и минусы?

С.А.: JM – лучшее, с чем я сталкивался, но не лучшее, на что они способны. Ребята работают над собой, поэтому те, кто будут учиться после меня, попадут в лучшие условия. Компания хорошо принимает критику и предложения.

Я из Омска, поэтому основной минус – разница часовых поясов. Если ревью кода проводилось вечером, мозг уже переставал работать. Но главный плюс – человеческое отношение.

Б.П.: На сайте говорится про неограниченное общение с ментором 6 дней в неделю. Было ли комфортно общаться с наставником?

С.А.: Иногда два человека не сходятся темпераментами. Так произошло с первым ментором. Когда стало понятно, что я способен на лучшие результаты с другим наставником, Герман сменил ментора.

Б.П.: Чему был посвящён командный проект?

С.А.: Музыкальный портал. На этом этапе было уже несложно работать с кодом, но еще сложно с людьми. На мой взгляд, получилось не хуже музыки ВКонтакте.


Б.П.: Как организована работа в команде?

С.А.: Общались в Slack. Несколько человек плюс ментор в роли заказчика. Задачи ставили сами, наставник мониторил прогресс и направлял.

Б.П.: Что с гарантиями по трудоустройству? Оправдались ли ожидания?

С.А.: До подписания договора не верил, ожидал меньшего. После собеседований у меня было несколько приглашений на работу. Но и здесь помогли выбрать лучший из вариантов. По окончании обучения устроился мидлом.

Б.П.: Сколько собеседований пришлось пройти до устройства на работу после обучения?

С.А.: Первое собеседование – первое приглашение на работу.

Б.П.: Какой вопрос с собеседования больше всего запомнился?

С.А.: Сказал, что хочу зарплату в x рублей. «Тебе всего 20 лет. Куда ты будешь тратить такие деньги? Возьмем, но будем платить х/2». Теперь получаю больше, чем запросил на собеседовании.


Б.П.: Насколько знания курса соответствуют работе? Сколько заняло дополнительное обучение?

С.А.: В каждой работе есть своя специфика. Например, первый месяц текущей работы я посвятил лекциям по экономике.

Обучение JM дает навыки писать качественный код, работать с данными, быстро учиться и разбираться в магии, происходящей при запуске кода. В одном месте стек может совпадать с тем, на чем писали во время обучения, в другом – полностью отличаться. Но как разработчик вы будете ценны и полезны в обоих случаях.

Что касается дополнительного образования – это непрекращающийся процесс. Каждый день знакомлюсь с чем-то новым. На работе использовать «левые» технологии не выходит, поэтому параллельно веду два проекта just for fun.

Б.П.: Какие планы?

С.А.: Учу фронтовые языки и технологии. Хочу стать фулстек программистом. Наша компания предоставляет сотрудникам рабочую визу. Наберусь опыта, отточу навыки, в том числе английский, и поеду за границу.

Б.П.: Спасибо за интервью! Могут ли читатели Библиотеки программиста сами задать вопросы? Не против ответить в комментариях?

С.А.: Да, конечно! Пишите – буду рад ответить. Интересно пообщаться с людьми, которые хотят в IT, но не знают с чего начать или боятся. Вы убедитесь, что я живой человек, а это не рекламная кампания.

Спасибо за интервью, было приятно пообщаться. Всем удачи и творческих успехов!

24
Мар
2020

«Ни в одном месте не проучился дольше года». Интервью с Java-разработчиком

Взяли интервью у парня, ставшего Senior Java Developer в 21 год (!), узнали его поучительную историю. В комментариях под постом вы можете задать ему вопрос лично.

Никто не охарак…

28
Дек
2019

Как себя вести с хэдхантером? Несколько трюков для разработчиков

Тебе позвонил хэдхантер? Это могут быть происки твоего руководства, либо ты действительно заинтересовал конкурентов. Объясняем, как себя не завалить.

Если ты
не задавался целью стать “жертвой” этих ребят (н…

02
Дек
2019

Как пройти собеседование на английском? Мнение экспертов школы «Инглекс»

Собеседование — вещь серьезная. А собеседование на английском — зачастую еще и пугающая. Какие есть лайфхаки для успешного прохождения этого испытания? Разберемся в статье.

Ведь нужно за довольно короткое в…