Это вторая часть истории о небольшой стажировке в небольшой компании.
В этой части я рассказываю о том, как на самом деле прошла стажировка 2013 года относительно ранее разработанного плана; наблюдения и результаты собраны здесь.
Первую часть можно прочитать на сайте эта ссылка .
Введение
Предыдущая часть статьи носила чисто теоретический характер.Результатом теоретических размышлений стал план стажировки.
Далее нужно было установить сроки готовности каждого объекта и реализовать план:
- Подготовка текстов объявлений для поиска ( к середине мая ).
- Запускаем рекламу на всех выбранных каналах ( в середине мая ).
- Немного ждем (все заявки обрабатываются HR как можно скорее , планировали начать приглашать людей на собеседования, когда будет определенное количество заявок).
- HR проводит телефонные собеседования ( до середины июня ).
- Мы проводим очные собеседования в середине июня ( за неделю-две до начала стажировки ).
- Мы отбираем стажеров по результатам собеседований ( за неделю до начала стажировки ).
- Мы разрабатываем план лекций с учетом технического уровня обучаемых ( к началу стажировки ).
- По каждой теме придумываем практические задачи( в первую неделю стажировки ).
- Готовим ноутбуки для новичков перед началом стажировки( за день до начала стажировки ).
- Мы запускаем двухмесячную стажировку( с 1 июля ).
- Мы следим за прогрессом обучаемых( на протяжении всей стажировки ).
- При необходимости мы рассмотрим некоторые темы более подробно ( на протяжении всей стажировки ).
- В начале сентября мы подводим итоги стажировки и делаем назначения в команду( в первую неделю сентября ).
Подготовка к стажировке
В данном разделе представлены результаты подготовки к стажировке вплоть до выхода стажеров.Для удобства мероприятия сгруппированы относительно пунктов плана, но с сохранением общего хронологического порядка (почти).
Тексты объявлений
Текст печатного объявления в целом был аналогичен тексту обычной вакансии, с той лишь разницей, что мы предлагали оплачиваемую стажировку.В объявлении на математическом факультете УрГУ подчеркивалась близость кабинета к зданию университета (2-5 минут пешком).
Наблюдение №1 Первые ответы выявили необходимость прохождения студентами обязательной практики.Это (слегка запутанное) объявление подготовил наш HR.В результате мы были вынуждены быстро разобраться и согласовать, что с нашей стороны необходимо для покрытия такой потребности (этот вопрос был полностью делегирован HR).
Получив ясность в этом вопросе, мы быстро заменили все объявления — в новых писали, что мы закроем практику для студентов.
Наблюдение №2 Понимая, что учащимся необходимо обязательный практики, мы впали в некоторое уныние.Попробуйте ответить на вопрос: кто летом будет искать летнюю стажировку? Вы, наверное, представляете себе последних дураков.
Вот как мы нарисовали эту картину.
К счастью, спойлер , все оказалось намного лучше.
Заявки на стажировки
Заявки принимались с середины мая до середины июня.Если я правильно помню, было много непрофильных заявок (иностранцы, студенты 1-2 курсов, нетехнические специальности и т.д.).
Среди кандидатов было 16 человек, соответствующих профилю.
Наблюдение №3 То, чего мы боялись, когда полностью делегировали телефонные собеседования HR, произошло: в ответах мы получили новые принципы ООП типа «полимарксизма», новую топологию «все не со всеми» и так далее.К счастью, простая постобработка ответов решила проблему.
Отбор на стажировку
Собеседования проводились с интервалом примерно в 3–7 дней в зависимости от контакта с отделом кадров.Приглашения на собеседования основывались на данных анкеты и представленного резюме.
Наблюдение №4 Студенты, не имеющие опыта проведения собеседований, в качестве ключевых навыков пишут, как правило, все, что они когда-либо слышали/видели/использовали в своем резюме, независимо от степени владения указанным инструментом.Давали приглашение на стажировку или отказ в течение недели.Так вот, согласно резюме, каждый второй пришедший студент обладал всеми этими навыками: HTML, CSS, JavaScript, jQuery, Perl, C++, C, Java, C#, Python, PHP, Assembler, SQL, MS SQL, MySQL, UML, Linux. После третьего собеседования мы поняли, что для этого нам даже не нужно смотреть резюме.
Во-первых, мы хотели сначала собрать статистику, чтобы понять средний уровень кандидатов.
Во-вторых, хотели набрать самых крутых учеников, а до окончания набора еще было время.
Воронка выбора
К середине июня мы определили четырех будущих стажеров.Вот как выглядела воронка выбора:
- ?? телефонные интервью
- 16 заполненных анкет
- 10 личных интервью
- 4 стажера
- Уральский государственный университет имени Матмеха;
- окончил 3-й курс.
Поэтому нужно успеть отобрать крутых стажеров раньше! И не так, как мы – в июне месяце! Положительная сторона: студенты не искали стажировку по двум причинам: они думали, что им нужно уйти сразу после собеседования, но у них была учебная сессия; по ряду организационных причин студенты не знали об обязательной летней практике.
Оказалось, что благодаря такому невежеству студентов мы «угадали» нужный момент.
Наблюдение №5 Всех обучающихся беспокоили следующие вещи:Вот как мы ответили на эти вопросы: нам нужно ориентироваться на 32 часа, но минимум – 24; Работать можно без выходных и удаленно.
- сколько минимум часов вам нужно будет отработать после прохождения стажировки;
- Можно ли работать в выходные?
- Возможна ли частичная работа удаленно?
О рекламных каналах
Наиболее эффективным с точки зрения конечного результата оказался ВКонтакте + личные связи: один кандидат, пойманный через соцсеть, порекомендовал еще троих.На втором и последнем месте оказались объявления на математическом факультете УрГУ - привели еще одного стажера.
Подготовка рабочих мест
В середине июня, когда мы определились всего с четырьмя стажерами, от нас потребовали точное количество будущих стажеров, мотивируя это тем, что мебель и оборудование нужно заказывать заранее.Здесь у нас возникла трилемма, поскольку на два потенциальных места было еще три кандидата - выбор с тремя исходами: больше никого не возьмем, возьмем только одного, возьмем двоих.
В итоге мы подали заявку на пять вакансий — если бы мы наняли шестого стажера, мы бы начали думать о решении проблемы постфактум.
Наблюдение №6 В небольшой компании с ограниченными ресурсами важно заранее составить план расходов – нельзя прийти к руководству и сказать, что у нас будет завтра.Состав рабочего места обучающегося:Н для них нужны стажеры и рабочие места.
- Разные ноутбуки с Windows 7 и Windows 8 (не очень мощные процессоры до i-5, 3-4 ГБ ОЗУ)
- Монитор 19 дюймов
- Проводная мышь + клавиатура.
- Офисный стол
- Офисное вращающееся кресло на колесиках
Наблюдение №7 Если вы не укажете явно точные характеристики заказанного оборудования или не согласуете выбранное оборудование, то в итоге у вас может получиться совсем не то, что ожидалось.В принципе, полученных ноутбуков для обучения и сносных с точки зрения простоты освоения было достаточно.Нужно учитывать, что между вашим приложением и его реализацией будет как минимум два человека: один подбирает оборудование, другой согласовывает смету, и оба могут быть далеки от понимания потребностей разработчиков в аппаратной мощности.
Интернатура
Начинать
Череда всевозможных случайностей, включая «внезапные» экзамены и отсутствие рабочих мест, а «фиксированное» начало стажировки перенесено с первого июля на восьмое, и у нас появилась еще неделя на подготовку лекций и практики к Интернатура.
Настройка рабочего места
Получив ноутбуки, стажеры первым делом приступили к установке и настройке всей инфраструктуры.В общей сложности этот процесс занял один-два рабочих дня .
Лекции
Нам повезло, что все наши стажеры закончили шесть семестров по математике и механике, поскольку у всех были плюс/минус одни и те же предметы «ИТ».Все наши слушатели были знакомы с Java на уровне студенческого курса «ООП: Java».
Теоретическую часть было решено разделить на четыре блока:
- Инфраструктура
- Бэкэнд
- Внешний интерфейс
- Тестирование программного обеспечения
Инфраструктура
В нашем проекте мы использовали следующие инструменты:- Апач Мавен
- Git / Расширения Git, gitolite
- Дженкинс CI
- Нексус ОС
- Редмине
Для этого на лекции рассказали о каждом из инструментов из списка и его роли в разработке.
Больше внимания, конечно, было уделено Git:
- Назначение систем контроля версий, основные типы СВК
- Основные команды для работы с репозиторием
- Организация ветвей в проекте
А работа со всеми инструментами была продемонстрирована на примере нашего проекта.
Всего эта часть заняла около одного рабочего дня .
Неполный список использованной литературы:
- Документация Apache Maven .
- Статья «Про Git на пальцах» от витамин .
- Оригинальная статья и его перевод - «Хорошая модель ветвления для Git» от злодей .
- Статья Непрерывная интеграция (Мартин Фаулер).
Бэкэнд
На бэкэнде у нас был следующий стек технологий:- Ява 7
- Весенняя структура
- Весенний MVC
- Весенняя безопасность
- Спящий режим
- Джексон
- FreeMarker
- Ява: помни всё!
- SOLID, DI и другие аббревиатуры.
- ДЖИ: не только SE.
- веб-приложение: сервер приложений, сервлеты.
- Spring Framework: основы.
- JPA: Ормизация и гибернация.
- Spring MVC: немного о главном.
- FreeMarker: шаблонизируйте его.
- Весенняя безопасность.
Эта часть теории, что неудивительно, заняла больше всего времени – более двух недель.
Чистая теория (без учета практики) оказалась около восьми рабочих дней .
Неполный список использованной литературы:
- Спецификация языка Java (Джеймс Гослинг, Билл Джой, Гай Стил, Гилад Брача, Алекс Бакли).
- Технологии Java EE 6 .
- Справочная документация Spring Framework 3.2.2 .
- Весна в действии, 3-е издание (Крейг Уоллс).
- Про Весну 3 (Кларенс Хо, Роб Харроп).
- Просто доступ к данным Spring (Мадхусудхан Конда).
- Pro Spring MVC: с Web Flow (Мартен Дейнум, Коэн Сернилс).
- Весенняя безопасность 3.1 (Роберт Винч, Питер Мулариен).
- Документация FreeMarker .
Внешний интерфейс
В состав клиентского стека вошли:- Машинопись
- AngularJS
- jQuery
- (Твиттер) Bootstrap CSS
- Угловой пользовательский интерфейс (Bootstrap)
- ТребоватьJS
- Еще несколько библиотек
- Инструменты для тестирования (подробнее о них в следующем блоке)
Таким образом, на передовой стояли следующие темы:
- TypeScript против JavaScript.
- AngularJS: основы.
- AngularJS: директивы.
- AMD и RequireJS.
Лекция о TypeScript была основана на документация .
Требуется теория фронтенда три рабочих дня .
Тестирование программного обеспечения
Мы с коллегой договорились по следующим темам:- Функциональное тестирование
- Модульные тесты
- Интеграционные тесты
- Нефункциональное тестирование
- Нагрузочные тесты
- Стресс-тесты
- Юзабилити-тесты
- Тестирование изменений
- Дымовые испытания
- Регрессионные тесты
- Юнит
- Мокито
- SeleniumHQ
- КармаJS
- Жасмин
Наблюдение №8 Экспериментально установлено, что теоретические темы длительностью более двух часов подряд являются трудными для обучающихся.Нужно либо разбавить ее практическими задачами, либо разбить большую тему на части и делать между ними перерывы.
Практические проблемы
Практические задания были направлены на закрепление теоретического материала и давались либо после прохождения темы, либо после всего блока.В инфраструктурном блоке стояла задача освоиться с git — для этого каждому стажёру предлагался определённый сценарий создания проекта, который нужно было воспроизвести на своём репозитории (ветвления, коммиты, мержи,…).
Для бэкенд-блока, как я писал выше, был подготовлен репозиторий со скелетом приложения, на котором можно было делать простые задачи: DI, взаимодействие с базой данных, REST API и т.д. В качестве практики в Angular было предложено взять стандартный руководство , но с использованием TypeScript. Финальной задачей было создать полноценное веб-приложение, соединив серверную и клиентскую части.
Данное приложение пришлось тестировать с использованием изученных инструментов: JUnit + Mockito для серверной части и Karma + Selenium для клиентской части.
Трудно подсчитать общее время, потраченное на практику; кажется, что в общей сложности практика заняла две полные рабочие недели, то есть около десяти дней .
Наблюдение №9 Не знаю, было это ошибкой или нет, но, имея за плечами некоторый педагогический опыт, я подошел к преподаванию с разделением на теорию и практику, аналогично занятиям в университете.Со временем мне показалось, что в некоторых случаях лучше не разделять теорию и практику: ты рассказываешь что-то, а обучающиеся в это время решают соответствующую задачу на своих ноутбуках.
Стажировки по рабочему процессу
Перед началом стажировки в трекере задач проекта был создан подпроект «Стажировка», где наставники управляли как собственными задачами, связанными со стажировкой (подготовка материалов и заданий), так и задачами стажеров, где можно было отслеживать успешность выполнения заданий и усвоения материала.
Наблюдение №10 Управление задачами стажировки в таск-трекере делает процесс более прозрачным для всех участников: стажер видит свой прогресс и прогресс своих коллег, и без дополнительного участия наставника может увидеть, где есть ошибки; Для наставников трекер задач становится точкой синхронизации всех обучаемых, когда можно легко восстановить контекст текущей работы каждого обучаемого.
Отзывы стажеров
Наблюдение №11 Студенты привыкли на лекциях слушать, а не задавать вопросы.Так я пришел к пониманию, что необходимо собирать обратную связь от стажеров, чтобы оперативно исправлять ошибки в процессе и подстраивать работу под ребят. Для сбора обратной связи использовались анкеты Google с вопросами для каждого наставника:Поэтому призыв «задавать вопросы, если что-то неясно» редко находит отклик.
- Оценивать степень «понятности» лекций Имя_наставника_i (от 0 до 5).
- Оцените уровень интереса к лекциям Имя_наставника_i (от 0 до 5).
- Дайте общую оценку лекциям Имя_наставника_i .
- Оцените помощь Имя_наставника_i в решении возникающих вопросов (от 0 до 5).
- Комментарии о Имя_наставника_i .
Наставник №2:
Наставник №3:
В первом и третьем случаях нет ничего интересного — никаких выбросов.
А для второго заходим в комментарии к лекциям:
- «Мне показалось, что лекция началась с середины».
- «Материал был интересный, но сама лекция была немного сумбурной».
- «Лекции Имя_наставника_2 интересны, но он не всегда может ясно выразить свои мысли =) Понятно, что он знает, о чем говорит, но не всегда может донести до нас эти знания».
Решение: мы дополнительно проанализировали некоторые вопросы на практических задачах.
Специализация
Весь базовый курс (теория+практика) занял ровно месяц.Все пять стажеров слушали одни и те же лекции и решали одни и те же задачи.
Наблюдение № 12 Когда студенты приезжают на стажировку, они часто заявляют о выбранной специализации.Через месяц стажеров можно было разделить на три группы — бэкенд (2), фронтенд (2) и QA (1).Например, они уверены, что хотят стать бэкенд-разработчиком.
При этом лишь немногие по-настоящему понимают, что стоит за выбранной специализацией, и могут объяснить свой выбор.
Только практические задачи, близкие к проектным, или непосредственно проектные задачи позволят вам понять свои возможности и мотивацию.
Проект
Стажеры были готовы приступить к работе над задачами проекта со второй недели августа.Для них был выделен целый модуль разрабатываемой системы со своей серверной и клиентской частью.
С этого момента они покинули песочницу «Стажировка» нашего таск-трекера и включились в работу над основным проектом: стали принимать участие в проектных совещаниях, вникать в детали проекта, общаться с руководителем проекта и аналитиками.
И вот мы собираемся в отпуск
Кто-то из стажеров заговорил об этом в конце июля, кто-то – в начале августа.Перед началом учебного года 4/5 наших стажеров хотели уйти в отпуск в конце августа.
Наблюдение № 13 Стажер, в отличие от сотрудника, принятого на испытательный срок, имеет ряд особенностей: он не привык работать по полгода (а то и дольше) пять дней в неделю, у него есть учеба, приоритет которой выше, он часто рассматривает работу в компании, как источник опыта, а потом – денег.Не буду врать — нам было очень важно удержать студентов после прохождения стажировки, поэтому мы понимали, что нужно сохранить их лояльность как к нам (наставникам), так и к компании.
К счастью, нам удалось донести это до руководства компании, и все стажеры благополучно ушли в отпуск.
Дополнительным условием с нашей стороны было автоматическое продление стажировки на две недели.
Иногда они уходят
Незадолго до окончания стажировки, в день возвращения из отпуска, нас покинул один из стажеров.Он просто пришел и без объяснения причин сказал, что уходит навсегда.
Вообще говоря, причина такого исхода может быть либо в рабочей плоскости:
- проблема в компании;
- проблема в нас (наставниках);
- проблема в стажере;
В нашем случае проблема лежала за пределами рабочей плоскости.
Наблюдение № 14 Необходимо построить работу со стажерами таким образом, чтобы не было неожиданностей (внезапных расставаний, отпусков и т. д.): строить планы работы на месяц-два, интересоваться собственными планами стажера, поддерживать постоянную связь.
Командная работа
Самый распространенный способ привлечь неопытного разработчика к командной работе — работать в паре с опытным коллегой.У такого подхода есть существенный недостаток, когда инициатива явно на стороне опытного сотрудника.
В нашем случае на всех неопытных не хватило опытных, поэтому всех обучаемых объединили в общую группу для работы над целым модулем системы.
В каком-то смысле это была вынужденная мера, но она дала положительные результаты: стажеры научились принимать решения, проявлять инициативу, формировать собственную зону ответственности.
При этом менторы контролировали всю работу, проверяли решения, принятые группой, и проводили ревью кода.
Со временем слушатели научились разбиваться на пары для работы над отдельными частями модуля.
Например, один стажер отвечал за бэкенд какого-то функционала, а второй делал под него фронтенд, при этом вместе работали над разработкой API, рисованием картинок на доске и решением вопросов интеграции с другими частями системы.
Из рук в руки
Моей самой большой ошибкой во время стажировки была ситуация, когда я дал стажерам задание со всеми сопроводительными материалами и уехал на несколько дней.По возвращении выяснилось, что сами стажеры не справляются с задачей, а наставники ее не очень понимают.
Наблюдение №15 Важно правильно передать всю необходимую информацию от одного наставника другому в случае длительного отсутствия первого: постановку задания, все имеющиеся материалы, договоры работ и т. д. После возвращения наставника необходимо провести ту же процедуру.в противоположном направлении.
Результаты стажировки
Четверо из пяти стажеров успешно прошли стажировку и нам удалось сохранить их всех в команде – я считаю, это успех! В общей сложности вся наша стажировка заняла 5 месяцев:- 0,5 месяца на согласование и планирование
- 1,5 месяца на поиск стажеров и подготовку
- 1 месяц теоретической подготовки и непроектных задач
- 1 месяц командной работы над системным модулем
- 0,5 месяца отпуска по стажировке
- 0,5 месяца на подведение итогов и планирование дальнейшей работы.
выводы
Как показала практика, так можно собраться и организовать хорошую стажировку.Для этого нужен самый главный ресурс – время, а главное условие успеха – мотивация наставников.
Мотивация может быть любой: научите ребят чему-нибудь хорошему, подготовьте кадры со схожими взглядами на развитие и, в конце концов, просто не облажаться.
Все так называемые «наблюдения» сами по себе являются небольшими выводами.
Теперь их можно учитывать при планировании.
Это значительно уменьшит энтропию.
В общем, совет для тех, кто хочет держать все под контролем.
И наконец, мотивационные опросы! В опросе могут участвовать только зарегистрированные пользователи.
Войти , Пожалуйста.
Предлагает ли ваша компания стажировки? 63,04% Да.
29 36,96% Нет, но теперь он обязательно это сделает. Проголосовали 17 46 пользователей.
34 пользователя воздержались.
В опросе могут участвовать только зарегистрированные пользователи.
Войти , Пожалуйста.
Вы были наставником? 51,16% Да.
22 48,84% Нет, но теперь точно буду.
Проголосовали 21 43 пользователя.
33 пользователя воздержались.
В опросе могут участвовать только зарегистрированные пользователи.
Войти , Пожалуйста.
Вы сами проходили стажировку? 34,92% Да.
22 53,97% Нет, я сам этому научился.
34 11,11% Нет, но теперь точно пройду.
:) Проголосовало 7 63 пользователя.
26 пользователей воздержались.
Теги: #стажировка #обучение программированию #обучение программированию #обучение #бэкенд #фронтенд #тестирование #java #angularjs #typescript #управление разработкой #управление персоналом #карьера в IT-индустрии #typescript
-
Невероятная Афина
19 Oct, 24