Что нового на факультете веб-разработки в GU
Декан факультета веб-разработки в GeekUniversity Александр Пряхин прошел путь от младшего разработчика до технического директора. Опыт преподавателя, программиста и руководителя позволяет ему смотреть на происходящее в IT с разных сторон. Он знает, какой может быть карьера веб-разработчика и сколько времени нужно на подготовку специалиста с нуля. Поэтому мне было интересно поговорить с Александром не только о факультетских делах, но и о его личном пути, и о тенденциях в мире веба.
— Александр, привет! На факультете изменилась программа — раньше учились год, сейчас — полтора. Почему?
— Мы следим за статистикой, отзывами студентов и выпускников. Требования к веб-разработчикам растут. Раньше объем навыков, необходимый для трудоустройства, действительно можно было освоить за год. Но веб-направление развивается очень интенсивно: появляются и становятся стандартом новые фреймворки и технологии.
Чтобы наши выпускники спокойно выдерживали конкуренцию на рынке труда, мы добавили новые курсы, а часть особо востребованных факультативов внесли в основную программу. Тем более, растет число компаний, которые хотят участвовать в работе GU и вести у нас факультативы.
Еще мы увидели, что когда студент параллельно изучает больше двух курсов, он хуже усваивает материал. Чтобы нормально справляться, в идеале нужно проходить одновременно основной курс и один факультатив.
Переход на программу длительностью полтора года — это не революция, а эволюция, естественное развитие событий, обоснованное опытом работы GeekUniversity. Отзывы, которые мы собрали, подтверждают, что обучение нужно продлевать, чтобы студенты успевали все уложить в голове и лучше подготовиться к трудоустройству.
— Какие именно курсы и факультативы добавились или изменили статус?
— Курс Linux во втором семестре из факультативного стал стандартным. Курсы по темам, в которых мало что меняется — по реляционным базам данных, например, — стали видеокурсами. Курсы по теме Highload из факультативных стали основными. Теперь студенты будут разрабатывать Highload-приложение в новом курсе от Delivery Club.
Стала активнее проектная работа: добавилась полноценная разработка SPA-продукта в отдельном семестре, усилился упор на Agile-методологии в разработке. Появились курсы по информационной безопасности для web.
— Курс Linux стал обязательным из-за того, что студентам важно работать с сервером?
— Совершенно верно. Как современному инженеру DevOps необходимо понимать принципы работы приложений, которые он разворачивает, так программисту важно знать принципы работы основной для продукта ОС.
Изучение баз данных стало обязательным еще и потому, что студентам, которые не проходили этот факультатив, сложно было разобраться с БД в своих проектах.
— О видеокурсах. Расскажи подробнее, зачем их ввели и как они работают. Какую поддержку получают студенты, когда проходят видеоуроки? На обычных занятиях можно задать вопрос преподавателю, а тут?
— Мы исходили из того, что работа с реляционной базой данных, например, в последние годы мало меняется. Об этом можно хорошо рассказать, и через год информация останется актуальной. Поэтому мы записали эталонные видеоуроки, которые гарантируют всем студентам единый стандарт обучения. Ведь у каждого преподавателя свой стиль и подход: вживую можно осветить одну тему более удачно, другую — менее. С видеоуроками в этом смысле проще.
Чтобы студенты не оставались наедине со своими вопросами, есть куратор и персональные наставники. Они объясняют непонятные моменты и помогают с домашними заданиями. Принцип обучения все равно остается прежним — никто не будет, как в школе, бегать за вами и заставлять учиться.
Когда я общаюсь со студентами, всегда говорю: не ждите, что я к каждому буду подходить и спрашивать «А ты понял?», «Ты запомнил?». Такие вещи я могу проследить разве что по домашним заданиям. И то не всегда! Ведь бывает, что студенты списывают друг у друга.
Человек должен быть сам заинтересован и задавать вопросы. А наша задача — дать теоретическую основу, подкрепленную примерами, направить, подсказать, предупредить о подводных камнях.
— Если учащийся не справился с каким-то курсом с первого раза или пропустил его — что тогда? Срок обучения может меняться?
— Да. Фиксированного срока на самом деле нет, есть ориентировочный. Студенты могут пройти какой-то курс повторно. Особенно это касается подготовки финального проекта: если в первый раз что-то не удалось — такое бывает, — это нормально. Человек получил первый опыт, набил шишки, попрыгал на граблях, и ко второму проекту он подходит во всеоружии и получает полноценный продукт.
— Расскажи подробнее о проектах, которые студенты выполняют во время обучения. Раньше таких было четыре?
— Сейчас их четыре, будет — пять, потому что теперь у нас шесть семестров.
В первом семестре ребята занимаются фронтендом: изучают верстку и JavaScript, чтобы создать клиентскую часть интернет-магазина.
Во втором семестре осваивают бэкенд: PHP, MySQL и сопутствующие инструменты.
С третьего семестра начинается знакомство с фреймворками. Студенты пишут свой таск-трекер, календарик.
После этого в базовом курсе у нас шел финальный проект. Сейчас до финала можно сделать еще один факультативный проект — написать «одностраничник» (Single Page Application).
— Какие «дипломные» проекты делают твои студенты?
— Сейчас я веду одну группу, в которой на защиту вышли четыре разных выпускных проекта! Радует, что ребята настолько мотивированы. Кстати, многие из них уже получили офферы от работодателей.
Если называть конкретные примеры интересных проектов, я бы отметил веб-приложение с системой распознавания QR-кодов. Оно позволяет считывать коды в столовой и быстро получать информацию о продуктах или рассчитать калорийность обеда.
Другая история — сервис обмена услугами, где вместо денег все оценивается личным временем. То есть время становится валютой, как в фильме In Time (2011).
— Сколько у факультета уже было выпусков?
— Два. Сейчас готовится третий. И с каждым годом финальные работы становятся все более сложными технически. Если у первого выпуска итоговым был фронтенд-проект «Список покупок», второй уже делал социальную сеть для музыкантов Bandsfinder — их презентацию можно посмотреть на YouTube.
— А с выпускниками ты дальше пересекаешься, как с программистами?
— Да, несколько моих бывших студентов работали в моей команде. Один из них — Давид Багарян — уже рассказывал свою историю в блоге GeekBrains. После курсов он год проработал в моей команде, а потом получил предложение из-за границы и теперь живет и работает в Праге.
Еще один выпускник сейчас работает со мной. Есть ребята, которые пишут, когда трудоустраиваются или хотят посоветоваться на профессиональные темы. Например, кто-то получил интересное тестовое задание, сделал и просит оценить.
Обращаюсь к студентам: не стесняйтесь мне писать даже после окончания курсов! Работа преподавателя не заканчивается с последней прочитанной лекцией. Мне интересно знать, как люди развиваются и какие задачи решают. Такое общение ценно для меня — здорово знать, что твои старания преподавателя не прошли даром.
— Что изменилось в сфере веб-разработки со времени, когда ты начинал карьеру? И какие тенденции сейчас считаешь важными, перспективными?
— Я начинал карьеру десять лет назад, когда веб был совсем другим — теплым и ламповым. Уровень нагрузок на сайты был гораздо ниже, поэтому меньше было требований к отказоустойчивости. Проще проходил деплой. В порядке вещей было загружать файлы на сервер методом копипаста, а не через системы управления версиями.
Эволюционировали и основные средства веб-разработки. PHP, который большинство по-прежнему выбирает для написания бэкенда, из языка домашних поделок развился в решение, близкое к уровню Enterprise. С выходом 7-й версии он заметно сблизился с миром Java: стал более строгим по типизации и в отношении ООП.
А еще PHP 7 стал быстрее — производительность сайтов выросла в два-три раза. Чтобы это оценить, разработчикам сайтов не приходилось ничего переписывать! Благодаря принципу обратной совместимости достаточно было обновить версию PHP на хостинге.
Также изменился подход к построению веб-серверов. Если раньше все ставили Apache, сейчас стандартом в вебе стала связка NGINX и PHP-FPM. Появились такие фреймворки, как Node.js, которые позволяют писать бэкенд на JavaScript.
Нашел свою нишу event sourcing. Когда-то сервер очередей и обработка событий использовались только в Enterprise-решениях. Сейчас это часто встречается и в небольших проектах.
Появилась кластеризация. От «железа» все давно независимы. Разве что совсем крохотные проекты привязаны к конкретной машине. Сейчас мы имеем дело с гибкими, постоянно меняющимися решениями, которые постоянно совершенствуются.
Появился Docker! Еще буквально несколько лет назад кластеризацию обеспечивали исключительно с помощью виртуальных машин и самопальных контейнеров. А сейчас связка Docker и Kubernetes — основной костяк для гибких и масштабируемых решений. На передний план вышли облачные решения — как замена Collocations.
Мир веба поменялся кардинально — появились направления, о которых десять лет назад никто не слышал.
— Какие именно?
— Например, в 2000-х большие данные были просто концепцией в начале развития. А сейчас каждый крупный сайт собирает огромное количество статистики. Это порождает такие решения, как ELK-stack. Все уже спокойно относятся к десяткам гигабайт и терабайтам данных в вебе.
Используются в вебе и зачатки искусственного интеллекта. Есть уже набившее некоторым оскомину машинное обучение — его активно используют, например, торговые веб-проекты. Machine learning помогает бизнесу строить прогнозы и процесс продаж. Недавно в блоге Ozon на «Хабре» появилась статья о том, как они применяют машинное обучение в закупках.
— Кстати, о продажах. Помимо работы в GU ты еще технический директор проекта e-commerce, правильно?
— Да, я сейчас работаю в компании Westwing, которая занимается ритейлом: продает элементы дизайна интерьера. Есть интернет-магазин и к нему обвязка, связанная с логистикой, закупками, доставкой. Мы с командой строим процессы и архитектуры. Целый пласт продуктов переносим в Россию. Точнее, переносит команда, а я стараюсь им не мешать (смеется).
— Есть какие-то технологии, которые ты освоил для работы, а затем начал преподавать?
— Конечно! Новые технологии я воспринимаю без «Wow, давайте внедрять!». Обычно жду, пока технология примет более-менее стабильный вид и займет свою нишу. После этого уже думаю о ее внедрении в проекты и обучаю студентов работе с ней.
Сейчас я довольно часто веду курс по разработке высоконагруженных (highload) веб-сайтов и приложений. Это сфера, в которой методички устаревают, упрощенно говоря, за время их загрузки на сайт. Правильнее сразу нацеливаться на практическую подготовку. И благодаря опыту в этой сфере я могу предложить студентам рецепты, которые пробовал сам.
— Как ты совмещаешь работу с преподаванием и остальной жизнью?
— Помогает то, что я не отношусь к преподаванию как к работе. Для меня это хобби! Если бы это было ремеслом, я бы мог больше на этом зарабатывать. Но мне важнее, чтобы хобби меня вдохновляло, заряжало эмоциями, а не являлось источником денег.
Неплохо, когда отдых приносит прибыль, но для себя я две эти вещи четко разграничиваю. Если у тебя достаточно знаний, а преподавание тебе «в кайф», хороший результат будет получаться практически сам собой.
Для разграничения времени нужен грамотный тайм-менеджмент. Тем, у кого с этим проблемы, рекомендую почитать две замечательные книжки:
- «Getting Things Done» Дэвида Аллена.
- «Time Drive» Глеба Архангельского.
Книги знакомят с основами тайм-менеджмента, учат управлять временем и понимать, куда оно утекает.
Когда знаешь, что делать, любая конкретная задача отнимает не так много времени. Труднее постоянно скакать между задачами. А если к делам подходить осознанно, они оказываются проще и линейнее, чем казалось сначала.
— Как любишь проводить свободное время и восстанавливаться? Есть хобби помимо GU?
— Сейчас мое главное хобби — моя двухмесячная дочь. Когда позволяет время, люблю гулять, запускать квадрокоптер и просто радовать глаза красивой картинкой. Нахожу в этом отдушину. Но львиную долю времени все же отдаю работе и семье.
— С чего начинался твой путь?
— В вузе я учился на факультете прикладной математики, где программировать нужно было в обязательном порядке. На первых курсах института начал подрабатывать. Сначала стал «человеком-ксероксом», затем — системным администратором. Осознанная коммерческая разработка началась по классической схеме: знакомым надо было сделать простенький сайт и поддерживать его.
Как и студенты в GeekBrains, я сначала освоил HTML, затем понял, что бэкенд можно по-разному реализовать: на .NET, на PHP. Я выбрал второе. Купил книги по PHP и самостоятельно их изучал. Дальше стал ходить по собеседованиям. Устроился веб-мастером-эникейщиком: выполнял мелкие задачи, которые не хотели делать программисты. Затем получил первую работу PHP-программиста.
— То есть это было плавное поступательное движение.
— Да. Карьера в IT чаще развивается постепенно, а не скачками. После обучения, которое занимает год-полтора, человек становится «джуном». Еще около года он трудится на стартовой позиции, а дальше, если действительно работал, а не сидел без дела, он станет «мидлом». Затем начинается постепенный рост в ту сторону, которую специалист сам выбирает. Кто-то идет в менеджеры, кто-то в senior-разработчики или архитекторы.
Резкий карьерный скачок может совершить либо гений, либо человек, который «засиделся» — копил потенциал и по каким-то причинам не реализовывал его раньше. Бывает и так, что человек переоценивает свои силы и пытается «прыгнуть» на позицию, для которой не имеет достаточно знаний и навыков. Но это обычно заканчивается разочарованием.
— Кстати, нужно ведь еще находить время на самообразование.
— Чтение для программиста — важная и обязательная часть работы. Нужно постоянно обновлять знания. Если устаешь от текста, можно скринкасты послушать. Но надо быть готовым к тому, что работа в IT — это бесконечное самосовершенствование.
«Соскочить с поезда» и остановиться в развитии очень легко! Он сам тебя выкинет, если будешь топтаться на месте. А вот чтобы заскочить обратно, придется нагонять изо всех сил.
— По твоему опыту, на какие моменты студентам надо обращать особое внимание? Что чаще вызывает вопросы и проблемы и как с этим справляться?
— Во-первых, как можно раньше надо обратить внимание на фундаментальные и структурные вещи: логику и алгоритмы. Надо понять инструмент, с которым работаешь. Когда люди приходят в программирование с нуля, им трудно разобраться, что такое функция, метод, объект. Они видят кусочек кода, который можно как-то назвать, но зачем и почему это нужно, еще не понимают. А ведь на основе таких базовых вещей строятся более сложные: паттерны, парадигмы.
К счастью, сейчас есть множество книг, которые подробно все объясняют и разжевывают. Лично я до сих пор считаю книги лучшей инвестицией в образование. Это субъективно, конечно, потому что у каждого человека свои особенности восприятия и процесс обучения строится по-разному.
— Какие книги рекомендуешь начинающим веб-разработчикам?
— В качестве дополнительного чтения по HTML советую справочный сайт htmlbook.ru. Его можно использовать в качестве «шпаргалки верстальщика». Что касается разработки, отмечу несколько полезных для новичка книг:
- Дмитрий Котеров, Игорь Симдянов «PHP 7».
- Мэтт Зандстра «PHP. Объекты, шаблоны и методики программирования».
- Эрик Фримен, Кэти Сьерра, Берт Бейтс, Элизабет Робсон «Head First. Паттерны проектирования».
- Мэтт Вайсфельд «Объектно-ориентированное мышление».
- Боб Мартин «Чистый код».
Кстати, соавтор самоучителя «PHP 7» Игорь Симдянов преподает у нас в GeekBrains!
Если хотите подробнее узнать мое мнение о разных книгах и подходах к обучению, можно почитать мой блог. Там я рассказываю не только об учебе, но и о том, как строить карьеру начинающему программисту.
— Спасибо тебе за историю и полезные советы! Всех, кому интересна веб-разработка и ее изучение в GU, приглашаю задавать вопросы в комментариях.