Степени знания языка программирования + видео обзор

Содержание
  1. Как мы определяем уровень профессионализма разработчика?
  2. Первый фактор оценки — время выполнения
  3. Второй момент — качество кода
  4. Блог Валерия Леонтьева
  5. Место публикации личных заметок. Технологии, управление, бизнес, жизнь
  6. Классификация знаний в области программирования
  7. Добавить комментарий Отменить ответ
  8. Уровни квалификации программистов и разработчиков
  9. Уровни знаний программистов
  10. Junior
  11. Middle
  12. Senior
  13. В чем разница между senior и middle
  14. Зарплаты программистов-разработчиков
  15. Как оценить навыки программирования – обзор лучших методик
  16. Оглавление
  17. Как оценить навыки программирования – методы и советы
  18. Портфолио
  19. GitHub
  20. Stack Overflow
  21. Тесты по алгоритмам программирования (не рекомендуется)
  22. Пробные рабочие тесты
  23. Собеседования
  24. Кодирование в реальном времени
  25. Как оценить навыки программирования: краткое изложение
  26. Бонусные видео
  27. Видео

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

2016-10-04 08:17:01 2021-04-08 13:18:17

«Жил-был принц, он хотел взять себе в жены принцессу. Вот он и объехал весь свет. Да повсюду было что-то не то: принцесс было полно, а вот настоящие ли они, этого он никак не мог распознать до конца, всегда с ними было что-то не в порядке»

Г. Х. Андерсен. Принцесса на горошине

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

Когда в EDISON требуется программист, в объявлении указывается степень квалификации. Например, Middle-разработчик. Возникают вопросы от соискателей о дифференциации уровней. Единой классификации степени профессионализма нет. Можно сказать, что Junior — начинающий разработчик с опытом до 2 лет, Middle — от 2. Стаж Senior начинается с 5. На вершине системы уровень Lead, подразумевающий руководство командой специалистов. Но стаж не гарантирует обладание необходимыми навыками. Можно 5 лет плодить сайты-одностраничники и не стать Senior-разработчиком. И наоборот: попав к грамотному наставнику и принимаясь за серьезные задачи, через год достичь уровня «Middle». Об отборе кандидатов в EDISON кратко написано здесь.

Практика предварительной беседы с соискателями не подошла из-за временных затрат. Этап первичного отбора передали специалисту кадровой службы. Сначала соискатель проходит анкетирование, самостоятельно оценивая компетентность в областях программирования по 5-балльной шкале. Указывает срок использования технологии, заполняет таблицу «Выполненные проекты». Полученные сведения дают общее представление об опыте соискателя и профессиональном кругозоре. Начинающим разработчикам свойственно завышать оценку. К примеру, кандидат считает уровень знания Рython на 4, «готов решить любую задачу», а опыт использования языка указывает 2 недели.

Компетентность соискателя оценивается на практике. Кандидат выполняет тестовое задание. На основании анализа определяется уровень.

Первый фактор оценки — время выполнения

На идентичное задание Junior-разработчику понадобится неделя. Senior выполнит тест за несколько часов. Показательна и оценка срока выполнения тестового задания от соискателя. Разработчик уровня «Junior» смотрит на поставленную задачу чересчур оптимистично, недооценивает сложность. И из-за нехватки опыта не укладывается в сроки. Специалист уровня «Middle» склонен пессимистично смотреть на задачу. Сказывается опыт в качестве Junior-разработчика. Чрезмерно увеличивает прогнозируемый срок реализации. Senior-разработчик реалистичен. Закладывает риски разумно без лишнего завышения сроков.

Второй момент — качество кода

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

Сейчас у нас десятки вариантов выполнения проверочного задания. Тестировщики EDISON выбрали 3 фрагмента кода (обработка запроса веб-приложения), написанные на PHP разработчиками разного уровня, и добавили комментарии.

Начнем с примера так называемого «говнокода».

Хранение логина и пароля пользователя в куках. Явная ошибка безопасности. Куки передаются от браузера к серверу при запросе (открытии/обновлении страницы). Потенциальная возможность перехвата.

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

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

Подстановка параметра GET-запроса (строки, приходящей от пользователя при открытии страницы в браузере) прямо в SQL-запрос (обращение к базе данных). Потенциальная уязвимость в безопасности (SQL-инъекция).

Хардкод URL’ов. Адрес страницы приложения может меняться. Для отсылки на новый адрес программисту придется искать и менять данные в коде вхождения старого URL.

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

Пример кода уровня «Junior».

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

«Echo» в коде является не лучшим решением для вывода текста или верстки в браузер. Усложняет процесс изменения внешнего вида сайта. Верстка должна находиться в отдельных файлах-шаблонах. По аналогии справедливо и для JS-, CSS-вставок. Обязательно разделение по разным файлам, желателен разброс по папкам.

Захардкоденный обработчик события click. Аналогично предыдущему пункту. Весь JS нужно выносить в отдельные файлы.

Код Middle-разработчика прост для понимания и содержит комментарии для разбора сложных участков. Используется ORM (Object-relational mapping) взамен написания нативных запросов к базе. Значительно снижается риск SQL-инъекций. Применяется ООП и MVC.

Различия между Middle- и Senior-разработчиком по фрагменту кода прослеживаются слабо и заключаются в выборе верных архитектурных решений.

Обобщенные критерии оценки сведены в таблицу. Список не ограничивается приведенными примерами.

Критерий оценкиJuniorMiddleSenior
Декомпозиция задачиПоследовательные строчки кода. Copy/paste — для повторного использования кода.Создает многократно используемые функции/объекты, решающие общие задачи.Использует соответствующие структуры данных и алгоритмы. Создает общий/объектно-ориентированный код, инкапсулирующий условия задачи.
Декомпозиция системыНе способен думать о системе сложнее одного класса или файла.Производит декомпозицию задачи и проектирует систему в пределах одной платформы или технологии.Визуализирует и проектирует сложные системы с несколькими линейками продуктов, интегрирует с внешними системами. Проектирует системы поддержки работы: мониторинг, генерация отчетов, аварийные переходы на запасные ресурсы.
ОбщениеНе может выразить свои мысли/идеи. Плохо с правописанием и грамматикой.Его понимают. Хорошее правописание и грамматика. Общается эффективно.Понимает и объясняет мысли/дизайн/идеи/специфику в точно выраженной форме. В общении соответствует ситуации.
Организация кода в файлеНет четкой организации в файле.Методы сгруппированы логически и по вызовам.Код разделен на регионы. Имеет грамотные комментарии со ссылками на файлы-исходники.
Организация кода между файламиНет четкой организации кода с делением на файлы.Физический файл выполняет одну функцию. Например, служит для объявления класса или для реализации одного функционала и т. д.Организация кода на физическом уровне соответствует проекту. Наглядность способа проектирования реализации через имена файлов и структуру папок.
Читабельность кодаОдносложные имена.Хорошие имена файлов, переменных, классов, методов и т. д. Нет длинных функций. Нестандартный код, багфиксы и допущения в коде поясняются комментариями.Допущения в коде сопровождаются командами Assert. Поток операций в коде естественный (без глубокой вложенности условий или методов).
Безопасное программированиеНе понимает данной концепции.Проверяет аргументы методов, возвращаемое значение и обработку исключений в потенциально важном коде.Имеет собственную библиотеку, помогающую в безопасном программировании. Пишет юнит-тесты для имитации сбоев.
Обработка ошибокПишет код для «идеального» случая без сбоев.Обработка ошибок в коде (кидает исключение или генерирует ошибку).Пишет код с функцией раннего определения ошибок. Придерживается последовательной обработки исключений в слоях кода и формулирует принципы процесса в системе.
ТребованияПонимает выставленные требования и пишет код в соответствии со спецификацией.Видит картину в целом и сразу выявляет дополнительные аспекты с последующим описанием в спецификации. Задает вопросы, касающиеся неучтенных случаев.Предлагает альтернативы и следует выставленным требованиям, основываясь на собственном опыте.
Базы данныхЗнает основы баз данных, транзакции. Пишет простые select-запросы.Проектирует нормализованные схемы БД с учетом запросов. Умело использует представления, хранимые процедуры, триггеры и собственные типы данных. Понимает разницу между кластеризованными и некластеризованными индексами. Специалист в использовании ORM инструментов.Осуществляет администрирование, увеличивает производительность и оптимизирует индексы БД. Пишет сложные select-запросы. Заменяет использование курсора вызовами функций SQL. Понимает принципы внутреннего хранения данных и индексов. Имеет представление о создании «зеркал» и репликации БД и т.д.

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

Источник

Блог Валерия Леонтьева

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

Классификация знаний в области программирования

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

Но, не смотря на такую расплывчатость вопроса, дать ответ на него все же можно. Можно описать примерный максимум знаний, которые так или иначе относятся к программированию. Собственно, этот максимум обычно и стремятся преподать в ВУЗах на специальностях, в названии которых фигурирует слово “программист”.

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

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

В предыдущем абзаце я нарочно ввел термин “инженер-программист”. Как-то получается так, что программист — это не обязательно инженер. Даже из определения Википедии следует, что инженер — это в первую очередь проектировщик. Это тот, кто создает, т.е. проектирует системы. А в практике программирования проектирование нужно не всегда. Иногда достаточно кодирования: используя данный набор технологий, слепить что-то работающее. Типичный пример — стадо корпоративных или маркетинговых сайтов на джумлах, ворпрессах, друпалах и т.д. Это уровень техника, не инженера. Это уровень среднего образования. И работать техником можно даже после окончания курсов какого-либо языка программирования, крепкая теоретическая база там не нужна.

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

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

Между дисциплинами существуют 2 вида связей: использование (обычная стрелка) и расширение (контур стрелки). Использование подразумевает необходимость фрагментарных знаний другого предмета, а расширение — необходимость как минимум обзорных, но полных знаний расширяемой дисциплины.

Первый уровень из CS (computer science) — Специальная база. Это стартовая площадка для любого программиста по четырем фронтам:

арифметические основы ЭВМ (системы счисления и операции с числами, логические операции);

физические основы ЭВМ (полупроводники, транзисторы, логические элементы, схемы, интегральные микросхемы);

теория алгоритмов (алгоритмы и структуры данных; сложность, эффективность; способы представления информации в памяти);

языки программирования (задача и понятие ЯП, уровни, типы языков, абстракция, уровни абстракции, трансляция/компиляция, шаблоны, принципы, парадигмы — обзор).

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

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

архитектура ЭВМ (процессоры, микроархитектура, память, шины, ввод/вывод);

обработка информации (теория информации, статистика, модели, поиск данных, лингвистические аспекты, обработка информации средствами табличных процессоров);

основы C/C++ (базовые свойства языка, синтаксис, указатели, ввод/вывод, массивы, основы STL).

Следом за Основами идет Уровень 1. Это первый прикладной уровень, и особо нетерпеливые могут начать коммерческую практику, овладев этим уровнем. Он включает 5 дисциплин:

основы ASM (развитие архитектуры ЭВМ в направлении программирования, написание простейших драйверов и алгоритмов, ассемблерные вставки в C/C++);

C/C++ (ООП, разработка прикладных приложений, библиотеки, WinAPI, make utils, параллельное программирование).

операционные системы (архитектура ОС, процессы, межпроцессное взаимодействие, потоки, планирование, работы с памятью и переферией, POSIX-системы);

системный анализ (предметная область, бизнес-процессы, потоки, диаграммы, принципы и теория системного анализа);

базы данных (теория множеств, виды СУБД, реляционные СУБД, модели данных, SQL, конкретные БД).

Следующий уровень — Уровень 2 — развивает предыдущий. Кстати, компьютерные сети попали в него только по той причине, что для их изучения желательно (но не обязательно) предварительно освоить операционные системы. По развитости этот предмет ближе все-таки к первому уровню.

Уровень 2 включает:

разработку ПО (жизненный цикл ПО, этапы разработки, основы ведения программных проектов, инструменты);

анализ данных (Data Mining, OLAP, машинное обучение, нейронные сети, ИИ);

компьютерные сети (по уровням стеков TCP/IP и/или ISO/OSI “от и до”, протоколы, сетевое программирование на C/C++);

языки программирования с управляемым кодом (управляемый код, виртуальные машины, сборщики мусора, юнит-тестирование, собственно практика на C# или Java);

Уровень 3 — последний уровень для среднего программиста. Он самый объемный и включает только те дисциплины, которые непосредственно связаны с разработкой ПО. Всего их получилось 6:

разработка UI и юзабилити (принципы построения интерфейсов пользователя);

управление командами и проектами (методологии разработки и другие вопросы управления);

тестирование ПО (обзорно: виды тестирования, инструменты);

веб-технологии (HTTP-протокол, веб-сервер, CGI, кэширование и проксирование, клиентское программирование);

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

интерпретируемые языки программирования (особенности, основы по двум-трем языкам, практика по одному-двум языкам: JS, PHP, Python, Ruby).

Все, что идет выше, — расширенные Экспертные знания. По большому счету этот уровень можно расширять неограниченно, добавляя в него смежные с разработкой дисциплины и наиболее сложные аспекты разработки ПО. Я привел 3 примера — разработка компиляторов, разработка операционных систем и построение архитектур больших программно-аппаратных систем, либо архитектур, рассчитанных на особо высокие нагрузки. Зависимости к нижним уровням на графе не рисовал, т.к. получится слишком много стрелок, идущих через все уровни, вплоть до Общей базы. Наверное, широкие зависимости — это один из признаков вопросов экспертного характера. Здесь как раз подтверждается то, что экспертный уровень требует самых широких знаний и хорошего опыта.

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

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

дает понимание, как изучать компьютерные науки, если начинать не с фундаментальных основ, а с прикладных знаний (например, PHP) — можно двигаться по связям в стороны и вниз — собственно именно таким был мой личный путь развития (и я никак не могу назвать его самым легким, эффективным и оптимальным).

Граф — это модель. А хорошая модель как правило дает ответы сразу на множество вопросов. Я поставил перед собой задачу сделать хороший граф, близкий к реальности. Естественно, он основан на моем личном опыте и не претендует на идеал. Я старался сделать его наиболее объективным. И еще раз напоминаю, что это граф для программиста. Т.е. для тестировщика, сисадмина и других близких к программированию профессий он будет более или менее близким, но явно другим.

Степени знания языка программирования

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Источник

Уровни квалификации программистов и разработчиков

Приветствую Вас, друзья!

Программист (developer) – очень востребованная специальность, в настоящее время в Санкт-Петербурге требуется более 12 тыс. разработчиков. Ни одна серьёзная фирма не обходится без профессионала по IT. Как в любой деятельности, существуют уровни программистов для определения квалификации.

Классификация рангов достаточно условна. Зависит не только от категории специалиста, но и от руководства компании и отрасли, в которой он работает. Трудно человека ограничить рамками понятий «джуниор», «мидл» или «сеньор».

Уровни знаний программистов

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

Junior

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

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

Важные качествами новичка:

Middle

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

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

Senior

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

В чем разница между senior и middle

Компании чаще ищут синьоров, чтобы избежать технические риски и возможный убыток.

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

Зарплаты программистов-разработчиков

Заработная плата специалистов ПО зависит не только от рангов Junior, Middle, Senior, важнее другие критерии:

Иногда на иерархию должностей влияет не уровень навыков, а срок работы:

Перейдите на сайты вакансий и посмотрите предложения.

Для повышения квалификации и уровня программиста: следует искать новые пути и решения, выдвигать идеи, постоянно учиться.

Желаю Удачи! Подписывайтесь на новости блога, оставляйте комментарии.

Источник

Как оценить навыки программирования – обзор лучших методик

Степени знания языка программирования

Пример кода написанного на языке Java

“Программирование сегодня — это гонка разработчиков, стремящихся писать программы с большей и лучшей идиотоустойчивостью, и вселенной, которая пытается создать больше отборных идиотов. Пока вселенная побеждает” (Рик Кук)

Степени знания языка программирования

Знаете ли вы, что стоимость найма разработчика программного обеспечения может достигать 60 тысяч долларов? Если вы не имеете большого бюджета для найма работников, вы не можете позволить себе нанимать кандидатов, чьи навыки не подтверждены и просто надеяться на лучшее. Фактически, умение применять навыки программирования, будь то front end, back end или full stack разработка, является фундаментальным для каждого успешного процесса IT рекрутмента.

Как работодатели могут проверить чьи-то способности заранее? Это сложнее, чем просто заглянуть в резюме программиста.

“Многие разработчики посещают курсы обучения программистов для расширения своих навыков, уже имея постоянную работу ” (Квинси Ларсон)[1]

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

Оглавление

Как оценить навыки программирования – методы и советы

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

Портфолио

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

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

GitHub

Воспринимайте GitHub как расширение для портфолио вашего кандидата. Вам стоит взглянуть на следующие детали их профиля:

Степени знания языка программирования

Количество контрибуций и активность кандидата, иллюстрация с сервиса GitHub

Держа все это в голове, важно, чтобы вы также знали об ограничениях GitHub.

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

“Лучшие программисты не чуть-чуть лучше хороших. Они на порядок лучше по любым меркам: концептуальное мышление, скорость, изобретательность и способность находить решения.” (Рэндал И. Стросс)

Stack Overflow

“Большинство профессиональных разработчиков занимаются программированием не так давно. 55% кодит менее 8 лет, а 1/3 — менее 5” (Квинси Ларсон)[2]

Степени знания языка программирования

Функционал сервиса Stack Overflow

Тесты по алгоритмам программирования (не рекомендуется)

“Измерять продуктивность программиста подсчетом строк кода — это так же, как оценивать постройку самолета по его весу” (Билл Гейтс)

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

Степени знания языка программирования

Твит пользователя Max Howell: “Google: 90% наших разработчиков пользуются вашим программным обеспечением (Homebrew), но вы не можете инвертировать “двоичное дерево” на доске, так что замолчите”

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

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

Пробные рабочие тесты

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

Итак, как они работают?

Эти тесты кодирования позволяют смоделировать день из жизни разработчика программного обеспечения в вашей компании, давая новобранцам практическое задание, будь то проект разработки или задача DevOps по настройке системы. Им предоставляется доступ к той же среде, которую обычно используют ваши разработчики – библиотекам, фреймворкам, GitHub или Stack Overflow. Все это позволяет им увидеть, как может выглядеть «первый день», если бы они работали на вас.

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

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

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

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

“Большая часть разработчиков работает на постоянной работе, примерно 10% — фрилансеры. Только 5% разработчиков желающих работать сейчас в поиске — статистика на много лучше, чем практически в любой другой сфере деятельности” (Квинси Ларсон)[3]

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

Степени знания языка программирования

Диаграмма улучшений CodeValue в облaсти найма разработчиков, связанных с использованием сервиса DevSkiller

Собеседования

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

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

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

Кодирование в реальном времени

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

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

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

Степени знания языка программирования

Пример кода написанного на языке Java

Как оценить навыки программирования: краткое изложение

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

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

Изображения принадлежат Кевину Ку на Unsplash

[1] Цитата из статьи “Insights from Stack Overflow’s 2018 survey of 100,000 developers”

[2] Цитата из статьи “Insights from Stack Overflow’s 2018 survey of 100,000 developers”

[3] Цитата из статьи “Insights from Stack Overflow’s 2018 survey of 100,000 developers”

Обзор составили HR Эксперты ONLINE PERSONAL

Самойленко Геннадий, Данилова Варвара

Бонусные видео

Как оценить навыки разработчика? Какие приемы можно использовать при проведении первичного скрининга для подбора технических специалистов? Где найти достойных специалистов и как выбрать наиболее подходящих?

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

Ссылка на видео “Первичный скрининг: как оценить навыки разработчика”:

Источник

Видео

Классификация программиста. Субъективно.Скачать

Классификация программиста. Субъективно.

Junior, Middle, Senior, Team-Lead - в чем разница?Скачать

Junior, Middle, Senior, Team-Lead - в чем разница?

Какой уровень языка ПРОГРАММИРОВАНИЯ должен быть у АВТОМАТИЗАТОРАСкачать

Какой уровень языка ПРОГРАММИРОВАНИЯ должен быть у АВТОМАТИЗАТОРА

Программировать без английского?Скачать

Программировать без английского?

Какой язык программирования УЧИТЬ ПЕРВЫМ? | Для новичковСкачать

Какой язык программирования УЧИТЬ ПЕРВЫМ? | Для новичков

Я пытался изучить программирование с нуля за 7 дней и вот что получилось в итогеСкачать

Я пытался изучить программирование с нуля за 7 дней и вот что получилось в итоге

Кто такие Junior, Middle и Senior? / Уровни программистовСкачать

Кто такие Junior, Middle и Senior? / Уровни программистов

Высокоуровневые языки программированияСкачать

Высокоуровневые языки программирования

Какой язык программирования выбрать в 2022 году?Скачать

Какой язык программирования выбрать в 2022 году?

Программист, хватит изучать языки программирования!Скачать

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

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