Блог — Проект на полгода: первые шаги
18 апреля 2008 в 12.38
Автор: Степан Овчинников
Я преподаю веб-технологии в Волгоградском Государственном техническом университете. 5 курс.
Начало этой истории тут: " Проект на полгода: с чего начать?"
Расскажу о том, что же было сделано и как развивается проект (сейчас прошла примерно половина времени, сделано не более 10% работы по реализации, с проектированием дела обстоят несколько лучше).
Что делаем
Были предложены темы:
1. Биржа "чего-нибудь". Автомобилей, квартир, вещей, бывших в употреблении, взаимных услуг. С использованием как традиционных для веба подходов, так и веб20-ных штук.
2. Сервис, предназначенный для массового использования. Фотобанк, файлообменник, каталог студенческих работ, что-то в таком духе
3. Студенты сами предложили сделать сайт букмекерской конторы или некий сервис виртуального кошелька для управления электронными деньгами.
Выбор был сделан студентами самостоятельно в пользу биржи недвижимости.
Как делаем
Я в силу специфики основного места работы довольно хорошо знаком с тем, как делаются и как работают сайты, посвященные недвижимости, так что получилось довольно глубоко проанализировать то, что уже есть готового в нашем регионе и посмотреть на аналогичное.
Студентов оказалось несколько меньше чем планировалось (сейчас в проекте занято 8 человек).
Роли:
1. Руководитель (пишет ТЗ, всех координирует, контролирует взаимодействие и отвечает).
2. Дизайн, html, наполнение, тестирование (2 чел)
3. Руководитель группы разработчиков (структура, классы, входы-выходы функций, общее руководство процессом программирования и отладки)
4. Разработчики (4 чел, среди них выделены "зоны ответственности")
Я сознательно свожу свою роль в проекте к разумному минимуму, потому что цель -- дать им возможность сделать многое самостоятельно и пройти этот путь. В идеале я бы только приводил примеры того, как это делают или делали другие люди и помогал выпутаться в сложные моменты.
(!!!) Вот ТЗ, которое ими было сделано (мое участие в общем минимальное -- дал задание, примеры, проверил и подписал). <a href="http://blog.intervolga.ru/os/2008/01/17/chto-izuchayut-sejchas-v-ramkax-znakomstva-s-veb-texnologiyami/studencheskoe-tz-na-birzhu-nedvizhimosti/">ТЗ</a>
Пока были поставлены такие текущие задачи:
0. Написание ТЗ. Сделано на 4-, но зато самостоятельно и почти в срок.
1. Проектирование структуры БД. Сделано, на мой взгляд, хорошо
2. Подготовка html всех страниц (как образец требований к верстке использовано это: http://disaen.com/misc/html/ , подсказано кем-то из юзеров, респект ему). Сделано частично.
3. Создание общей архитектуры системы (например, в виде набора uml-диаграмм или пары иерархий: классов и модулей и сценария работы). Практически не сделано
4. Написание классов для работы с БД, шаблонизатора, классов для создания и управления формами, контролами на них. Реально со множеством указаний и подсказок написан только класс для работы с БД. Класс исключительно убог и примитивен.
5. AJAX-голосовалка за посты-комментарии-фотографии. Сделано в виде работающей демки.
6. Проектирование и программирование функциональности лица и админки сайта, кабинета пользователя. Не приступали.
Сложности
Несмотря на то, что большинство студентов являются способными, активными личностями, неплохо ориентируются в задаче в целом, часто занимают активную позицию даже по смежным с их зоной ответственности тематикам, есть множество сложностей, которые нам пока не удается преодолеть, и я не вижу легких путей.
Вот они:
1. К сожалению, руководители работ со своими обязанностями по сути не справляются. То ли в силу слабого понимания вопроса, то ли из-за неумения организоваться, распределением ролей, назначением сроков, проектированием классов, иерархии и назначением контрольных точек фактически занимались мы все вместе, а точнее, я при некоторых комментариях и участии студентов.
2. От идеи дать готовый framework или cms и потребовать реализации готового проекта я отказался, после того как в даже довольно простом классе-шаблонизаторе и паре использующих его функций студенты разобраться не смогли. Даже не поняли как оно работает и зачем. Было принято решение предельно упростить все решения при сохранении мало-мальски приличного уровня реализации системы.
3. Мы столкнулись со слабым пониманием студентами ООП и необходимости разделять языки реализации: js, html, php, sql. Реально две трети времени совместных консультаций было потрачено именно на рассмотрение этого требования и механизмов его реализации.
4. Студенты очень плохо понимают смысл возможностей голосовать за объявления, фотки, комментарии и рейтингования пользователей. Объяснялось многократно, но до сих пор этот вопрос для них из последних, поэтому он хуже всего рассмотрен как в ТЗ, так и вообще в обсуждениях.
5. Крайне недостаточное понимание технических особенностей веб-технологий. Весь первый семестр мы это обсуждали. Не могу сказать, что лекции и семинары дали исчерпывающий набор информации, но даже простые вещи по сути остались не вполне усвоенными. Как следствие -- отсутствие готовности верстать, писать код на js и php, осваивать ajax, строить веб-приложение.
По сути общий сценарий нашей работы выглядит сейчас так: я даю задание на ближайшую неделю, оно исполняется на 10-30%, недостающую часть мы делаем совместно, переносим сроки, в конце концов я даю те ответы, которые хотел бы в итоге услышать или кусок кода, и мы переходим к следующему.
На мой взгляд, это неправильно, хотя и помогает не сорвать все сроки. Предчувствую, что через неделю мне придется дать готовый набор библиотек, писанных мной пару лет назад и оттого довольно простых и топорных, зато понятных новичкам, и снабженных комментариями, провести инструктаж по ним и отправить "фигачить страницы".
Вопросы
Чего мне не хватает для того, чтобы помочь им в работе, а себе в управлении и обучении:
1. Нормальной книги по веб-технологиям (Котеров сложноват или "многабукаф", не знаю)
2. Нормальной книги по php (не смейтесь, для меня php это С++ с большим набором дополнительных функций и конструкций, которые черпаются с php.net, но студентам почему-то он не дается с этого боку)
3. Требований к оформлению кода на php и js (готовых под руками нет, а самому писать честно говоря лень, я на работе этим никогда не занимался, все программисты более-менее прилично оформляют код).
4. Советов от умных людей, бывших и нынешних студентов, что поможет сдвинуть дело с мертвой точки и интенсифицировать процесс.
Заранее благодарен всем за мнения и терпение.