«Диджитал Дизайн» была одной из первых компаний, которая использовала .NET и C# в работе и стала официальным тренерским центром Microsoft. Образование и «Диджитал Дизайн» идут рука об руку на протяжении всей нашей истории: у нас есть IT-университет, мы постоянно проводим школы, являемся золотым партнером Microsoft c 95 года, у нас работают сертифицированные тренера.
Когда мы запускали первую школу разработки, проблемы с квалификацией кадров были совсем другие, вернее была проблема их отсутствия, как и отсутствия нужной информации. Сейчас Microsoft активно популяризует свои технологии и вкладывается в обучение, поэтому если человек хочет, он может найти всю информацию сам и стать программистом. К нам приходят специалисты, владеющие технологиями, которые мы используем в работе, но для быстрого включения их в практику, нужен был инструмент – так постепенно трансформировалась цель организации школы разработки.
![](https://habrastorage.org/r/w1560/webt/uc/ap/yq/ucapyqlri5eblfxlgtbx5z__nlu.png)
Меня зовут Сурен, и это не первая моя статья на Хабре (есть еще про .NET и Sitefinity), а сегодня я хочу рассказать о своём опыте преподавания. За 9 лет разработки у меня накопилось много опыта, которым хотелось делиться. В то же время работа со стажерами, как мне казалось, не всегда строилась максимально эффективно, потому что в течение рабочего дня выделить достаточно времени для структурированного обучения не получалось.
Другая крайность – преподавание в университете, для которого требуется профильное образование (√ done!), огромное желание преподавать и делиться практическим опытом (√), отсутствие основного места работы/ свободный график (Х), любовь к академическим знаниям (ХХ) и много свободного времени на подготовку (ХХХ).
В итоге идеальным вариантам для меня и, как мне кажется, для начинающих специалистов, стала Школа .NET разработки на базе IT-университета «Диджитал Дизайн». И, что немаловажно, для компании: благодаря школе нам удалось получить выбрать лучшие кадры, обучить их и уже, можно сказать, включить в работу.
Если ты не преподавал ранее или не хочешь следовать готовым программам, то для подготовки к лекции нужно потратить времени в 3-4 раза больше, чем на саму лекцию. Я тоже решил не идти по натоптанному пути и сделать программу актуальной: с последними фишками, советами и хинтами, потому что хороший преподаватель в IT – это даже больше про опыт, чем про знания (про знания сейчас больше Google: наверно, нет специалистов, которые пишут код без интернета). Плюс работать с подготовленной публикой чуть сложнее, потому что не всегда понимаешь, на какой уровень ориентироваться, поэтому в первой школе я решил остановиться подробнее на информации, которую получил в ходе работы, обращаясь к общим понятиям и терминам.
К первой лекции я готовился основательно, продумывая план и делая наброски того, о чем нужно сказать. По завершении моего чёткого доклада я понял, что прошло всего 10 минут, и пора приступать к чистой импровизации. Я быстро понял, что студенты приходят к нам в первую очередь за реальными примерами и кейсами – так мы быстро перешли к советам по нэймингу, структуре базы данных, как пробрасывать данные на фронт и обратно. К последним 3-4 урокам мы выходили к мини-мастер-классам: я кодил при студентах, останавливаясь на объяснения и вопросы. Например, вот тут подключаем юзинг, для того чтобы использовать нужные нам методы или свойства, здесь – подключаем дополнительную библиотеку через NuGet, для взаимодействия с БД как с набором сущностей. Тут стало понятно, что эффективность таких уроков максимальная, но и их интенсивность не позволяет студентам воспринимать всю информацию в полном объеме. Приходилось переводить фокус, чередовать виды информации и пр. Многое зависит и от студентов: если не уделять время тому, чтоб самостоятельно заниматься и запомнить все, что было на уроке, достичь результата не получится.
Конечно, теория полезна: элементарно без знаний терминологии ты не сможешь приступить к практике, но из-за сжатых сроков обучения нам пришлось выбирать акцент! По факту получается, что за занятие мы даем максимум материала, и часть людей отсеивается, но те, которые приходят в компанию как стажеры, уже действительно усвоили материал и готовы к работе. А ведь наша цель – получить лучшие кадры, поэтому уровень образования и ожидания от студентов очень высокие!
Часто образование грешит оторванностью от прикладных задач, и я быстро понял, что даже показывая работу на конкретных примерах, студентам не всегда понятно, как это потом использовать. К тому же если по окончании курса ты ожидаешь от студентов уровень знаний, достаточный для создания простого приложения, то необходимо пройти с ними этот путь хотя бы раз. Поэтому мы решили быстрее переходить к этапу «Делать» (или вернее «Повторять за мной»), и вскоре начали учить на примере создания собственного приложения. Я объяснял, что такое проектирование архитектуры базы данных, как с ней работать, и в течение лекции мы начали разрабатывать приложение. В рамках разработки я затрагивал разные темы: взаимодействие с файловой системой и базами, работа с изображениями, загрузка/ скачивание файлов через интерфейс, прямая загрузка, синхронное взаимодействие – словом, вещи, которые позволяют понять, что может язык, что может форма и как эти знания использовать в рамках тестовой разработки. На примере простейшего приложения для обмена фото с возможностью выбора дополнительной функциональности (определение геолокации, обмен сообщениями, пр.) мы рассмотрели общие принципы взаимодействия с платформой. Важно, что после у студентов остаются все видео-записи.
Мы действовали поэтапно: проектировали саму базу, наполняем контентом, делали форму отрисовки, редактирование профиля пользователя – все это взаимосвязано: если на 1 уроке мы рассказываем про шаблонизацию на примере клиентской, на следующем этапе делаем на примере серверной, используя язык шаблонизации формы, которая рэндорится и на бэке, и на фронте одинаково. Это позволяет нам делать приложение, которое отдает контент сразу и догружает в процессе, не меняя стиля и не перенастраивая шаблоны. Попутно мы углублялись в технологии и как строить запросы так, чтобы быстро находить ответы, как правильно работать с базой данных, как взаимодействовать с сервером, затрагивали вопросы безопасности – все это в виде мастер-класса. Конечно же, на каждом шаге я кодю в real-time, делаю запросы и показываю, как добиться результата. Это позволяет понять базовый процесс проектирования системы, а дальше каждый может придумывать что-то своё и показать эти фишки на финальной защите проектов.
Во второй школе получилось структурировать практические данные, которые нужны специалисту, чтобы приступить к работе. В итоге мы получили самый большой урожай стажеров, которые ушли в разные направления: от автоматизации бизнес-процессов до мобильной разработки.
Интересно, что такой простой скилл, как быстрый поиск нужной информации, очень важен при разработке. Ключевой момент тут – способность четко определить поисковый запрос. Мой первый наставник постоянно отправлял меня в Google, отвечая на мои вопросы ссылками на результат поиска, он же научил, что формирование запроса – это искусство. Так что базовый навык правильного построения мысли пригодится и здесь, иначе Google может игнорировать вас.
Например.
Возможный поисковый запрос новичка: как встроить БД в проект/ ошибки встраивания БД в проект/ сам текст ошибки.
Возможный запрос разработчика: include localdb in C#.
Суть: всегда лучше искать на английском, так как большая часть мануалов не переведена на русский/ переведена человеком, который не владеет терминологией. Кстати, о ней, да, для точного запроса нужно обязательно владеть терминологией. Например, в этом запросе один из видов БД внутри проекта называется LocalDB.
Степень владения знаниями выпускников 2 школ не мог не радовать, но меня беспокоил тот момент, что из-за разных вопросов и акцентов набор знаний студентов разных выпусков мог отличаться. Конечно же, набор инструментов, которые я использую в работе, намного шире, чем я даю на курсе. На этот раз мы успели дойти до концепции SPA-приложений, в первых 2-х школах на это не хватило времени. В итоге мы выровняли план обучение, увеличили продолжительность занятий и их количество, чтоб стабилизировать объем знаний.
Чтобы максимально приблизиться к реальной рабочей ситуации, иногда я совершаю часто повторяемые ошибки (например, когда мы делаем Ajax-запрос и неправильно указываем типы, то не можем понять почему бэк отрабатывает, а фронт считает это ошибкой/ когда мы в неправильном типе данных отправляем данные в бэк, а он нам говорит, что ничего не пришло) и показываю на примере debug’a, что именно идет не так и почему оно может в этом месте упасть. Например, когда мы выводим шаблон в разметку страницы, потом пытаемся его использовать, чаще всего символы могут быть заэкранированы, и мы выведем не отформатированный html (шаблон отработает, а html будет в виде тегов страницы) – всех этих типичных ошибок мы тоже учимся избегать. И все эти материалы будут особенно полезны в записи.
Это, кстати, важный момент: для закрепления материала обязательно используйте видеозаписи и, конечно же, чаты для общения. Для нас важно, что у ребят перед глазами постоянно есть полный код и возможность задавать вопросы.
Сейчас проблема в кадрах для нас в том, что нет готовых специалистов под наш стек на позицию джуна. Даже если специалист хорошо изучил вопрос, вряд ли он сможет объединить знание технологий для решения конкретной задачи, потому что невозможно изучить язык программирования без задач. Чаще всего компании «гоняют» джунов по теории, а мы быстро включаем их в работу. Как показывает практика, выпускники школы могут в кратчайшие сроки (обычно после стажировки) начать писать код, который можно через 1-2 итерации вписать в проект. Чем более качественная информация будет преподнесена на курсе, тем быстрее они включатся в проектную работу, а проекты – это жизнь любой ИТ-компании.
… студентам и начинающим специалистам я посоветовал бы вписываться везде: митапы, слушать доклады онлайн и оффлайн, быть в курсе всех событий, т.к. технологии развиваются с такой скоростью, что если ты не бежать, то отстаешь. Получается такой отсев специалистов, которые не вовлечены и которым неинтересно – вы просто отстаете. К тому же пользуйтесь возможностью посещать мероприятия со студенческой скидкой (спойлер: потом никто тебя мотивировать уже не будет!).
… преподавателям, да и вообще специалистам в IT с опытом от 3-5 лет, посоветовал бы пробовать! Если даже вы считаете, что не можете научить чему-то уникальному, помните, что для кого-то ваш опыт может стать настоящим инсайтом. Работая долго в одной сфере, может начать казаться, что ничего интересного не происходит, но всегда есть то, что вы знаете и умеете лучше других. К тому же рутинные задачи для вас, для кого-то сегодня являются настоящим челленджем! Помню, как-то я показал джуну простое на мой взгляд решение, и для него оно показалось очень необычным. Он разобрался в этом примере досконально и получил опыт, и это главное!
На выходе могу сказать, что схема «абстрактное учебное заведение — школа при компании – стажировка – работа» более эффективна, чем стандартная «абстрактное учебное заведение – стажировка – работа», потому что за 500 часов стажировки студент не всегда получает то, что мы даем в школе разработки за несколько месяцев. Школы достаточно, чтобы получить общие знания по принципам шаблонизации, взаимодействия и по-быстрому сделать «инстаграм», а с этим можно уже начинать работу. По крайней мере это наш опыт, и теперь претендентов на стажировку мы отправляем в школу
Когда мы запускали первую школу разработки, проблемы с квалификацией кадров были совсем другие, вернее была проблема их отсутствия, как и отсутствия нужной информации. Сейчас Microsoft активно популяризует свои технологии и вкладывается в обучение, поэтому если человек хочет, он может найти всю информацию сам и стать программистом. К нам приходят специалисты, владеющие технологиями, которые мы используем в работе, но для быстрого включения их в практику, нужен был инструмент – так постепенно трансформировалась цель организации школы разработки.
![](https://habrastorage.org/webt/uc/ap/yq/ucapyqlri5eblfxlgtbx5z__nlu.png)
Почему я и почему школа разработки
Меня зовут Сурен, и это не первая моя статья на Хабре (есть еще про .NET и Sitefinity), а сегодня я хочу рассказать о своём опыте преподавания. За 9 лет разработки у меня накопилось много опыта, которым хотелось делиться. В то же время работа со стажерами, как мне казалось, не всегда строилась максимально эффективно, потому что в течение рабочего дня выделить достаточно времени для структурированного обучения не получалось.
Другая крайность – преподавание в университете, для которого требуется профильное образование (√ done!), огромное желание преподавать и делиться практическим опытом (√), отсутствие основного места работы/ свободный график (Х), любовь к академическим знаниям (ХХ) и много свободного времени на подготовку (ХХХ).
В итоге идеальным вариантам для меня и, как мне кажется, для начинающих специалистов, стала Школа .NET разработки на базе IT-университета «Диджитал Дизайн». И, что немаловажно, для компании: благодаря школе нам удалось получить выбрать лучшие кадры, обучить их и уже, можно сказать, включить в работу.
Подготовка к школе
Если ты не преподавал ранее или не хочешь следовать готовым программам, то для подготовки к лекции нужно потратить времени в 3-4 раза больше, чем на саму лекцию. Я тоже решил не идти по натоптанному пути и сделать программу актуальной: с последними фишками, советами и хинтами, потому что хороший преподаватель в IT – это даже больше про опыт, чем про знания (про знания сейчас больше Google: наверно, нет специалистов, которые пишут код без интернета). Плюс работать с подготовленной публикой чуть сложнее, потому что не всегда понимаешь, на какой уровень ориентироваться, поэтому в первой школе я решил остановиться подробнее на информации, которую получил в ходе работы, обращаясь к общим понятиям и терминам.
И все же немного теории
К первой лекции я готовился основательно, продумывая план и делая наброски того, о чем нужно сказать. По завершении моего чёткого доклада я понял, что прошло всего 10 минут, и пора приступать к чистой импровизации. Я быстро понял, что студенты приходят к нам в первую очередь за реальными примерами и кейсами – так мы быстро перешли к советам по нэймингу, структуре базы данных, как пробрасывать данные на фронт и обратно. К последним 3-4 урокам мы выходили к мини-мастер-классам: я кодил при студентах, останавливаясь на объяснения и вопросы. Например, вот тут подключаем юзинг, для того чтобы использовать нужные нам методы или свойства, здесь – подключаем дополнительную библиотеку через NuGet, для взаимодействия с БД как с набором сущностей. Тут стало понятно, что эффективность таких уроков максимальная, но и их интенсивность не позволяет студентам воспринимать всю информацию в полном объеме. Приходилось переводить фокус, чередовать виды информации и пр. Многое зависит и от студентов: если не уделять время тому, чтоб самостоятельно заниматься и запомнить все, что было на уроке, достичь результата не получится.
Переходим к практике
Конечно, теория полезна: элементарно без знаний терминологии ты не сможешь приступить к практике, но из-за сжатых сроков обучения нам пришлось выбирать акцент! По факту получается, что за занятие мы даем максимум материала, и часть людей отсеивается, но те, которые приходят в компанию как стажеры, уже действительно усвоили материал и готовы к работе. А ведь наша цель – получить лучшие кадры, поэтому уровень образования и ожидания от студентов очень высокие!
Часто образование грешит оторванностью от прикладных задач, и я быстро понял, что даже показывая работу на конкретных примерах, студентам не всегда понятно, как это потом использовать. К тому же если по окончании курса ты ожидаешь от студентов уровень знаний, достаточный для создания простого приложения, то необходимо пройти с ними этот путь хотя бы раз. Поэтому мы решили быстрее переходить к этапу «Делать» (или вернее «Повторять за мной»), и вскоре начали учить на примере создания собственного приложения. Я объяснял, что такое проектирование архитектуры базы данных, как с ней работать, и в течение лекции мы начали разрабатывать приложение. В рамках разработки я затрагивал разные темы: взаимодействие с файловой системой и базами, работа с изображениями, загрузка/ скачивание файлов через интерфейс, прямая загрузка, синхронное взаимодействие – словом, вещи, которые позволяют понять, что может язык, что может форма и как эти знания использовать в рамках тестовой разработки. На примере простейшего приложения для обмена фото с возможностью выбора дополнительной функциональности (определение геолокации, обмен сообщениями, пр.) мы рассмотрели общие принципы взаимодействия с платформой. Важно, что после у студентов остаются все видео-записи.
Вносим разнообразие в приложение
Мы действовали поэтапно: проектировали саму базу, наполняем контентом, делали форму отрисовки, редактирование профиля пользователя – все это взаимосвязано: если на 1 уроке мы рассказываем про шаблонизацию на примере клиентской, на следующем этапе делаем на примере серверной, используя язык шаблонизации формы, которая рэндорится и на бэке, и на фронте одинаково. Это позволяет нам делать приложение, которое отдает контент сразу и догружает в процессе, не меняя стиля и не перенастраивая шаблоны. Попутно мы углублялись в технологии и как строить запросы так, чтобы быстро находить ответы, как правильно работать с базой данных, как взаимодействовать с сервером, затрагивали вопросы безопасности – все это в виде мастер-класса. Конечно же, на каждом шаге я кодю в real-time, делаю запросы и показываю, как добиться результата. Это позволяет понять базовый процесс проектирования системы, а дальше каждый может придумывать что-то своё и показать эти фишки на финальной защите проектов.
Во второй школе получилось структурировать практические данные, которые нужны специалисту, чтобы приступить к работе. В итоге мы получили самый большой урожай стажеров, которые ушли в разные направления: от автоматизации бизнес-процессов до мобильной разработки.
Ищем информацию
Интересно, что такой простой скилл, как быстрый поиск нужной информации, очень важен при разработке. Ключевой момент тут – способность четко определить поисковый запрос. Мой первый наставник постоянно отправлял меня в Google, отвечая на мои вопросы ссылками на результат поиска, он же научил, что формирование запроса – это искусство. Так что базовый навык правильного построения мысли пригодится и здесь, иначе Google может игнорировать вас.
Например.
Возможный поисковый запрос новичка: как встроить БД в проект/ ошибки встраивания БД в проект/ сам текст ошибки.
Возможный запрос разработчика: include localdb in C#.
Суть: всегда лучше искать на английском, так как большая часть мануалов не переведена на русский/ переведена человеком, который не владеет терминологией. Кстати, о ней, да, для точного запроса нужно обязательно владеть терминологией. Например, в этом запросе один из видов БД внутри проекта называется LocalDB.
Стабилизируем уровень знаний
Степень владения знаниями выпускников 2 школ не мог не радовать, но меня беспокоил тот момент, что из-за разных вопросов и акцентов набор знаний студентов разных выпусков мог отличаться. Конечно же, набор инструментов, которые я использую в работе, намного шире, чем я даю на курсе. На этот раз мы успели дойти до концепции SPA-приложений, в первых 2-х школах на это не хватило времени. В итоге мы выровняли план обучение, увеличили продолжительность занятий и их количество, чтоб стабилизировать объем знаний.
Работа над ошибками
Чтобы максимально приблизиться к реальной рабочей ситуации, иногда я совершаю часто повторяемые ошибки (например, когда мы делаем Ajax-запрос и неправильно указываем типы, то не можем понять почему бэк отрабатывает, а фронт считает это ошибкой/ когда мы в неправильном типе данных отправляем данные в бэк, а он нам говорит, что ничего не пришло) и показываю на примере debug’a, что именно идет не так и почему оно может в этом месте упасть. Например, когда мы выводим шаблон в разметку страницы, потом пытаемся его использовать, чаще всего символы могут быть заэкранированы, и мы выведем не отформатированный html (шаблон отработает, а html будет в виде тегов страницы) – всех этих типичных ошибок мы тоже учимся избегать. И все эти материалы будут особенно полезны в записи.
Это, кстати, важный момент: для закрепления материала обязательно используйте видеозаписи и, конечно же, чаты для общения. Для нас важно, что у ребят перед глазами постоянно есть полный код и возможность задавать вопросы.
Учим на конкретных задачах
Сейчас проблема в кадрах для нас в том, что нет готовых специалистов под наш стек на позицию джуна. Даже если специалист хорошо изучил вопрос, вряд ли он сможет объединить знание технологий для решения конкретной задачи, потому что невозможно изучить язык программирования без задач. Чаще всего компании «гоняют» джунов по теории, а мы быстро включаем их в работу. Как показывает практика, выпускники школы могут в кратчайшие сроки (обычно после стажировки) начать писать код, который можно через 1-2 итерации вписать в проект. Чем более качественная информация будет преподнесена на курсе, тем быстрее они включатся в проектную работу, а проекты – это жизнь любой ИТ-компании.
Если меня попросят совет, то…
… студентам и начинающим специалистам я посоветовал бы вписываться везде: митапы, слушать доклады онлайн и оффлайн, быть в курсе всех событий, т.к. технологии развиваются с такой скоростью, что если ты не бежать, то отстаешь. Получается такой отсев специалистов, которые не вовлечены и которым неинтересно – вы просто отстаете. К тому же пользуйтесь возможностью посещать мероприятия со студенческой скидкой (спойлер: потом никто тебя мотивировать уже не будет!).
… преподавателям, да и вообще специалистам в IT с опытом от 3-5 лет, посоветовал бы пробовать! Если даже вы считаете, что не можете научить чему-то уникальному, помните, что для кого-то ваш опыт может стать настоящим инсайтом. Работая долго в одной сфере, может начать казаться, что ничего интересного не происходит, но всегда есть то, что вы знаете и умеете лучше других. К тому же рутинные задачи для вас, для кого-то сегодня являются настоящим челленджем! Помню, как-то я показал джуну простое на мой взгляд решение, и для него оно показалось очень необычным. Он разобрался в этом примере досконально и получил опыт, и это главное!
Вместо вывода
На выходе могу сказать, что схема «абстрактное учебное заведение — школа при компании – стажировка – работа» более эффективна, чем стандартная «абстрактное учебное заведение – стажировка – работа», потому что за 500 часов стажировки студент не всегда получает то, что мы даем в школе разработки за несколько месяцев. Школы достаточно, чтобы получить общие знания по принципам шаблонизации, взаимодействия и по-быстрому сделать «инстаграм», а с этим можно уже начинать работу. По крайней мере это наш опыт, и теперь претендентов на стажировку мы отправляем в школу