В сентябре Mail.Ru Group запускает на Физтехе образовательный проект «Технотрек», в рамках которого студенты в течение двух лет будут обучаться мобильной разработке. Недавно мы писали об истории образовательных проектов Mail.Ru Group, а на этот раз пообщались с преподавателями Технотрека. Руководитель мобильной разработки Mail.Ru Games Владимир Летяго и выпускник Физтеха Дмитрий Архангельский рассказали про курсы Java и Android-разработки, попеняли на привычку студентов делать все в последний момент и объяснили, как научиться программировать с нуля.
Дмитрий Архангельский: «Мы хотим, чтобы “тройка” была действительно заслуженной оценкой» |
Как давно вы закончили МФТИ?
В 2013 году защитил диплом на ФУПМе, кафедра Parallels — теоретическая и прикладная информатика. Моим научным руководителем в магистратуре был профессор Александр Тормасов. Все это время я был интерном в лаборатории Parallels в МФТИ, проработал там до окончания учебы.
Программа на кафедре показалась мне очень интересной. Все это было близко и к науке — computer science — и к инженерии.
Вы сразу были увлечены программированием? Или всерьез начали этим заниматься только на кафедре?
Конечно, я еще на первом курсе прошел курс программирования… Но, если честно, сдал его еле-еле — как-то все это не очень интересно было. Потом, через год, когда мне что-то понадобилось написать, знакомые посоветовали Java — мол, это легко. Я тогда не понимал даже, как ее запускать. Почитал книжки, посмотрел туториалы, нашел задачи, которые можно было решить самостоятельно — так и набрался опыта. Потом нашел первого работодателя, который согласился меня взять (это было еще до кафедры). Получилось поработать удаленно — писал программное обеспечение для платежных терминалов.
В лаборатории Parallels я занимался задачей бинарной трансляции. Мы делали виртуальную машину для процессоров ARM, чтобы, грубо говоря, внутри Android запускать другие операционные системы. Мы довели проект до чернового состояния: запускали в Android другой Linux и добились того, чтобы графическая оболочка одного Android запускалась внутри другого Android.
После окончания университета я оттуда ушел и занялся Java-разработкой в Deutsche Bank. Но задачи там оказались не очень интересные, поэтому около года назад я пришел в Одноклассники.
Много в Mail.Ru Group работает физтехов?
Пару лет назад мы публиковали исследование, откуда к нам приходят люди. Первые три места – это как раз Бауманка, МГУ и Физтех.
Продолжая тему Физтеха: немало его выпускников и преподавателей обеспокоены тем, что после его окончания люди не занимаются именно научной деятельностью, а уходят в другие сферы, в частности — IT.
Да, большая часть моих знакомых после учебы ушла в IT-компании. Все меньше людей остается в аспирантуре заниматься наукой. Учиться в Европу или Америку из моих друзей тоже никто не уехал.
На мой взгляд, просто нет причин оставаться в аспирантуре. Я не представляю, чем там можно заниматься. Допустим, у тебя будет научный руководитель, который, скорее всего, тоже работает в IT-компании: он занимается там инженерной разработкой, а ты как бы его помощник. Но ведь точно так же можно пройти собеседование, прийти к нему в команду, писать те же научные статьи, ездить на конференции — например, у нас несколько человек постоянно выступают на девелоперских конференциях. Так что, я считаю, что можно работать в компании и одновременно заниматься чем-то научным. В принципе, к четвертому курсу большая часть физтехов понимает, что дальше учиться необязательно, и надо деньги зарабатывать. Часть курса продолжает обучение по инерции, просто чтобы еще несколько лет пожить в общаге.
В Технотреке Ваш курс будет посвящен тоже Java-разработке?
Да, с самого нуля — и сколько успеем. План достаточно насыщенный, но мы боимся, что физтехи все будут делать в последние дни. Поэтому у нас есть некоторые задумки, как мотивировать студентов работать почаще: система рубежных контрольных и работ, которые иногда нельзя пересдать, или можно, но со штрафами. И сроки пересдачи будут лимитированы. Нельзя будет прийти 15 декабря и сказать, что срочно нужно закрыть курс. Правила будут строгие — придется укладываться.
То есть, такая балльно-рейтиноговая система?
Да, итоговая оценка будет выставляться по стобалльной шкале. Каждый оценочный контроль будет давать 20-30 баллов. Будут свои границы по оценкам, например, выше 80–90 баллов — это «пятерка». Если студент не добирает до «тройки», то отчисляется. Мы хотим, чтобы «тройка» была действительно заслуженной оценкой в этой системе. Если студент ее получил, значит, его можно смело отправлять дальше учиться, заниматься той же разработкой под Android, и за него будет не стыдно.
Какая у Вас мотивация к преподаванию?
Мне приятно рассказать материал так, как я сам хотел бы его услышать, когда был студентом. И программу я стараюсь сделать такой, какой я бы сам ее понял. Подать материал именно теми способами, которые мне кажутся наиболее близкими к практике — чтобы студент мог заниматься конкретными задачами.
Мне кажется, основная преграда, мешающая обучению — это отвлекающие факторы вроде необходимости настроить себе среду разработки. Раз не получилось, два — ничего не работает, ну и думаешь: «Это все не мое!». Хотя это нормальный рабочий момент. Надо не бояться спрашивать, если что-то не получается. И, конечно, чтобы был рядом человек, который может подсказать.
Владимир Летяго: «Важно сделать первый шаг» |
До Физтеха Вы уже преподавали в Бауманке, в Технопарке?
Да, я вел полугодовой курс «Углубленная мобильная разработка на платформе Android». Это был открытый курс. Вначале предполагалось, что он будет обязательным, как продолжение базового курса по Android, но решили сделать его открытым, чтобы сильно не усложнять обязательную программу. И, как результат, студенты пришли как подготовленные, так и не подготовленные совсем. В итоге получилось, что не было какой-то предварительной ступеньки перед моим курсом, которая бы гарантировала, что люди уже будут знакомы с Android и Java.
По итогам этого курса студенты сдавали какие-то проекты? Как Вы оцените их успехи?
В качестве проекта по курсу нужно было написать простой мессенджер, все практические задания были частью этого проекта. То есть, предполагалось, что студенты потихоньку на протяжении курса будут делать итоговый проект: первые задания совсем простые, потом все сложнее по мере приближения к финальной части. Беда любого студента – иллюзия, что времени очень много. На каждое задание было написано подробное техническое задание c mockup-ом (заготовкой) приложения: расписаны все экраны, переходы между ними, описан протокол общения сервера и клиента, запущен сервер. Первые вопросы начались только недели за две до финальной даты, хотя задание было выложено месяца за два. Ну и да, были случаи, когда студенты хотели сдать проект глубокой ночью в последний день.
В итоге сколько студентов сдали все?
Ко мне на курс записалось 54 человека, что довольно много. При этом ходило десятка два от силы, т. к. половина записалась «про запас». Из тех двадцати, что ходили регулярно, сдали 8. Но это почти все, кто хотел сдать, т.е., сделали все практические задания и сдали теорию.
На Физтехе Вы будете вести этот же курс?
На физтехе будет курс, охватывающий почти все аспекты разработки под Android. Курс будет включать в себя как азы разработки под Android, так и продвинутый уровень. В Бауманке это был полугодовой курс на шестнадцать занятий, здесь будет год — тридцать занятий. Так мы сможем рассказать о некоторых аспектах более детально. Будут лекции, семинары и, естественно, домашние работы. Предполагается сдача двух проектов.
С моей точки зрения, времени достаточно, но если студент будет все это делать в последнюю неделю, то может и не хватить, конечно.
Вы говорили, что на Ваш курс пришли с очень разной базой. А были истории, когда человек пришел с нуля и со всеми заданиями справился?
Те, кто пришел на голом энтузиазме, утратили его практически на первом же практическом задании. По разным причинам: кто-то не смог совладать с настройкой, и поскольку курс не обязательный, решил, что он ему не нужен, кто-то осознал нехватку времени, кто-то вообще решил, что это не его призвание. Были и обратные примеры – один студент, который не смог настроить самостоятельно среду разработки, но с моей помощью ему все удалось, и он в итоге дошел до конца. Наверное, это единственный человек, который на своем энтузиазме выехал.
У меня было около десяти человек, которые были подготовлены полностью. Часть из них уже работала в Mail.Ru, часть из них училась в Технопарке и прошла подготовительные курсы. А остальные — это был начальный уровень. Так что нам пришлось быстро поменять программу, и на ходу адаптировать так, чтобы на первых нескольких занятиях студенты смогли освоить базовые навыки разработки под Android и быстро перейти к собственно самому курсу «Углубленной разработки».
На первой практической работе было очень легкое задание: сделать простое приложение, в котором будет splash screen, через две секунды после нажатия переходящий в другой экран с картинкой и надписью “Hello, world!”. Одним из требований было написать это на потоках: таймер должен был тикать в отдельном потоке. Примерно половина студентов не справились с этой задачей — видимо, за такое короткое время не смогли принять понятие потоков исполнения. Я рассказал об этом коллегам, и они тоже модифицировали свои курсы, чтобы студентам более детально рассказать про потоки.
Как Вы пришли в программирование?
Я всю жизнь увлекался компьютерами. Когда были программируемые калькуляторы, на них программировал, изучал Basic, Pascal… Потом были БК с интерпретатором Basic. Как только заработал первые деньги, купил на них первый компьютер. Начал, естественно, с игр. Потом мне это надоело, и я решил, что надо программировать. Я тогда хардкорно поступил — поставил себе первый вариант Linux и разбирался с ним и изучал С/C++. С тех пор я не могу отвыкнуть от Vim, например. Во всех редакторах использую Vim Mode, потому что за двадцать лет руки привыкли нажимать не Ctrl+S, а :+W.
Постепенно перешел в коммерческую разработку, разрабатывал офлайновые игры под PC, затем онлайн-игры, а затем и под мобильные платформы. Сейчас я уже и не смогу перечислить все игры, в разработке которых я принимал участие.
С точки зрения человека, который пришел в программирование из другой сферы, можете посоветовать что-то людям, которые тоже хотели бы научиться программировать с нуля?
Надо понять, что человеку интересно и для чего ему программирование. Нет смысла сразу хвататься за книжку по С++. Можно выбрать что-то полегче из онлайн-курсов Khan Academy, Coursera, можно зайти на golang.org, где есть интерактивный учебник по новому языку Go.
В любом случае, самое главное — это начать. Важно сделать первый шаг. Если сидеть и думать: «Хотел бы программировать, но что-то мне боязно», то дальше этого не зайдет. Если есть желание, надо его реализовывать, а в намерениях можно оставаться очень долго.
Андрей Гущин, Сергей Заварин
Материал подготовлен при поддержке компании Mail.ru Group