...

среда, 2 октября 2013 г.

Как ответить запросом на запрос, или Базы данных не для чайников

В Технопарке я преподаю студентам курс «Базы Данных». Уже из названия ясно, что речь идет о неотъемлемой части современной IT-грамотности — без этой дисциплины сегодня трудно представить себе компьютерную специальность. Базы данных в том или ином виде сегодня окружают нас повсюду — в самом обычном смартфоне их сотни, что, разумеется, далеко не предел.




Я — преподаватель

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


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



«Мне казалось, что у преподавателя в ВУЗе есть очень важный рычаг воздействия на студента — отчисление»



Свою преподавательскую карьеру я начинал школьным учителем информатики. Тогда мне казалось, что у преподавателя в ВУЗе, в отличие от школы, есть очень важный рычаг воздействия на студента — отчисление. Со временем я понял, что это не совсем так: студенты, с которыми я работаю сейчас, настолько замотивированы (об этом я расскажу чуть позже), что, если они что-то делают не так, то проблема, или, по крайней мере, ее корень, с большой степенью вероятности следует искать в преподавании, а не в них.


Немного лингвистики: слово «учитель» происходит от глагола «учить», а преподаватель — от «давать» (даже «отдавать», если заметить каламбур :). И не зря первое употребляется по отношению к школе, а второе — к высшему образованию. Главная цель вузовского преподавателя заключается в том, чтобы дать студентам информацию. Дать информацию, а не научить конкретным действиям — и в зависимости от качества ее усвоения оценить свою работу. То есть задача в том, как дать информацию. Кажется, что это лежит на поверхности, все об этом помнят и даже доходят в этом направлении до крайностей: например, превращают учебный материал в пошаговую инструкцию к действию в разных ситуациях: из А в B, из В в С. Возможно, даже из A в C. Но нам нужно научить их, как проложить дорогу из точки А в любую другую точку с использованием всех остальных букв, а также букв тех алфавитов, которые будут использовать люди программисты будущего, если хотите.



«Самое сложное — сделать так, чтобы студенты заинтересовались курсом и вынесли из него как можно больше пользы»



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


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


Одними из самых запомнившихся мне курсов стали «Управление предприятием» и «Автоматизация производства». Первый читала женщина, которая прежде была владелицей собственного предприятия, и на протяжении курса она рассказала нам всю историю становления её бизнеса, начиная от регистрации фирмы и заканчивая рейдерским захватом. Она приводила массу примеров, они казались нам такими интересными и захватывающими, что никто не пропускал ни одной лекции. А все потому, что материал был настоящим — не отрешенным от реальности, а наглядным.


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


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



«Нельзя просто так взять и спроектировать базу данных»



Первым делом я попытался вспомнить тот курс, который прослушал в своем вузе: нам рассказывали про базы данных, ориентированные на MS Access, а языку SQL была посвящена всего пара лекций. С тех пор я больше никогда не пользовался MS Access, и ценность приобретенных знаний стремится к нулю.


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


С чего начинается строительство? Конечно, с проекта. Так и в базах данных необходимо сперва подготовить макет того, что вы ожидаете получить. Поэтому мой курс начинается с проектирования баз данных, создания логических схем, выделения сущностей и связей. Ну а получив конкретную структуру, ей необходимо придать некую описательную форму — с этим прекрасно справляется DDL (DATA Definition Language).



Готовая структура — это как скелет — объект, неспособный к самостоятельной жизни, но являющийся невероятно важным каркасом для реального человека. Поэтому следующей необходимой частью, естественно, стал разбор языка манипулирования данными SQL.


Очень часто именно на этом и заканчивается курс подготовки студентов по базам данных: студентам дают снасти и заставляют уже самостоятельно осваивать мастерство. Но цель Технопарка в целом и моего курса в частности — вырастить уверенных и полноценных разработчиков. Поэтому в нашем курсе этот этап — не конец и даже не середина.


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



«Готовая структура — это как скелет»



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


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



Ну, вот теперь точно все. Или нет? Я уже упоминал снасти, которые висят на стене. Так вот, мы постарались сделать так, чтобы в ходе курса они там не висели, а шли в дело и студенты научились бы ими умело пользоваться.


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



«Чаще всего правильные решения студенты находят сами»



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


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


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


Студенты Технопарка: какие они?

К студентам Технопарка нельзя относиться как к обычным студентам или даже как к студентам Бауманки. Для поступления в Технопарк они проходят специальный отбор, состоящий из трех этапов. Сначала — заочное тестирование, затем — очное, которое проводим уже мы, преподаватели Технопарка, и в завершение — тестирование с HR-специалистами.


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



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


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


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


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


Что же в итоге

Прошло уже две итерации моего курса, многие из слушателей стали стажерами Mail.ru Group, большинство уже сейчас успешно влились в ряды наших разработчиков. Несмотря на это, а, если честно, благодаря этому, они часто приходят ко мне за советами, и я вижу в этом только плюсы. Они не боятся взаимодействовать вместо того, чтобы сидеть на месте, растрачивая силы и время в тех случаях, когда продуктивнее решать вместе. Они знают, что я могу помочь найти выход из сложных ситуаций, задать путь для поиска решений, и в этом я вижу основной показатель того, что успешно справляюсь со своим преподавательским амплуа. Теперь моя задача — не останавливаться, развиваться вместе со своими студентами, сегодняшними и будущими, ведь программирование, как и все на свете, не стоит на месте.


Павел Щербинин,

программист контентных проектов


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends:



Комментариев нет:

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