- PVSM.RU - https://www.pvsm.ru -
В нашем вузе принято на специальности программирование делать выпускные проекты. Большим плюсом считается, если «на выходе» есть прототип программного продукта. Студенты, которые занимались проектами в университете, позже занимают ключевые позиции в ИТ компаниях города и страны.
Об одном таком проекте, связанном с веб-программированием, и хочу рассказать. И хотя этот проект не был выпускным, основные черты сохранены.
С чего все началось. Некоторые студенты изъявили желание выучить предмет «Веб-программирование» более углубленно. Причем отличительной чертой этих студентов была мотивация.
Сам курс включает 2 больших раздела и несколько вспомогательных:
Углубление было по вышеуказанным темам, расширение за счет изучения основ ведения проектов (redmine, git, wiki, documentation)
После более углубленного изучения вышеуказанных тем, было решено сделать некоторый проект. Учебной задачей для студентов было: научиться работать в команде, выполнить свои модули.
Выбор остановился на двух вариантах: сделать аналог redmine или систему управления задачами. Поскольку время было ограничено (я планировал около 3-х месяцев), то выбор очевидно падал на второй вариант. На мой взгляд, выбор был сделан правильно.
Таким образом было решено сделать прототип системы управления задачами.
В общем, этот проект получился неординарным за счет того, что тема была мне интересна, и у студентов была неудержимая мотивация делать его. На середине выполнения, было видно, что проект вышел за результаты, которые планировались, и было решено доработать его до высокого уровня. Таким образом, студенты практически прошли все типовые шаги разработки коммерческого продукта, и сделали это весьма успешно.
Системы управления задачами – одна из классических тем для начальной разработки. Все что было сделано, уже было сделано до нас. Я сам являюсь приверженцем систем типа GTD, с удовольствием пользуюсь сервисами типа Remember the milk или Пинарик. Но, все-таки, когда пользуешься системами, всегда что-то можно улучшить.
Системы управления задачами делятся на 2 большие категории: управление списками и ежедневники (управление задачами на день). Remember the milk — пример сервиса, ориентированного на работу со списками, пинарик – на работу с днями. Конечно есть пересечения, но тип можно выделить однозначно.
При концептуальном проектировании всегда нужно учитывать, что создаешь ты инструмент, которым будут пользоваться обычные люди.
Я пользовался различными системами, и понимал, чего мне бы хотелось на самом деле.
Начнем с определения типов задач
Такая задача привязана к дню, но не привязана ко времени. Обычно время ее выполнения несущественно.
Примеры:
Такая задача привязана как к дню, так и ко времени. Осуществление ее не вовремя может привести к срыву задачи.
Примеры:
Задачами такого типа оперируют календари.
Такие задачи повторяются с некоторой периодичностью. Они могут быть как привязаны к времени, так и нет. Совокупность повторяющихся задач образуют серию.
Примеры:
Любая задача из 4 вышеперечисленных типов может иметь приоритеты. Будем выделять приоритеты нормальный и высокий.
Любую задачу из “Обычная задача” или “Задача с привязкой по времени” или “Повторяющаяся задача” можно отметить как continued. Смысл такой отметки в том, что задача начинает показываться раньше времени, чтобы не пропустить. Дата (и время) такой задачи служат для обозначения крайнего срока (deadline).
Примеры:
Такие задачи не привязаны к дню и ко времени. Они позже переходят в задачи уровня “Обычная задача” или “Задача с привязкой по времени”, или уточняются.
Примеры:
Это задачи первых трех типов, у которых истек срок выполнения и которые не были помечены как выполненные.
Задачи с пометкой “Выполнено”
Вот, в принципе, и все о типах задач. Они полностью охватывают наши потребности в планировании.
Конечно, задачи меняют свое состояние.
Опишу только основные:
Проект велся по Agile методологии, итерации были по 1-2 недели, в зависимости от задач. В основном 2 недели. На итерацию выносились наиболее актуальные в данный момент задачи.
Как багтрекер использовался redmine, git – система контроля версий, документация – в вики.
При проектировании интерфейса основным принципом был принцип KISS. После книг Айзексона и Купера проникаешься пониманием важности классного и хорошо спроектированного интерфейса без излишеств.
Минимум настроек, максимальная интуитивная понятность, минимализм в дизайне – вот к чему стремились.
Примерами были ранний твиттер и современный Gmail.
На будущее – аккуратно вписать в существующий интерфейс остальные функции, чтобы не усложнить его.
Пара мокапов для демонстрации улучшений интерфейса.
Первая версия:

Последняя версия:

Дизайн был минимальный, основанный на возможностях twiiter bootstrap с небольшими доработками.
Пример исходных файлов от дизайнера:

Как это выглядит в конечном варианте (мокап с дизайном, скриншот с сайта):

Хвала Богам, сейчас в свободном доступе есть все под рукой, причем опенсурс продукты не уступают проприетарным.
В проекте были задействованы следующие технологии и инструменты.
На будущее – дописатьпереписать JS application с использованием фрейморка, например backbone.js.
На такие задачи, как дизайн, тексты привлекались знакомые и товарищи студентов.
Отдельно тестировщиков не было, поэтому тестировали «перекрестно». Часть кода покрыты UnitTests. Позже планируется покрыть полностью все значимые участки кода.
Ревью кода я делал постоянно, на CakePHP там все красиво, в JS относительно, после использования backbone.js все будет на порядок лучше.
Сейчас проект находится в публичной альфе. Реализована минимально необходимая функциональность (и только часть от всех типов задач). Часть функций (например мобильная версия) «закомментирована» перед публикацией из-за того, что есть баги и недоработки.
Ведутся работы над бета версией, туда войдут уже все типы задач, метки, поиск, АПИ для сторонних разработчиков.
Следить за развитием можно на сайте проекта www.prettytasks.com [1]
Этот проект – проба пера, как делать проект (не прототип) в условиях обучения студентов. В основном при разработке прототипов остаются без внимания такие моменты, как: качество, процессы разработки, документация, публикация, оптимизация, тексты и тд. Процессы в командах студентов тоже часто строятся хаотически.
Поскольку задача была максимально приближена к реальной, студенты действительно научились очень многому. Они прошли весь процесс от идеи и концепции до конечной реализации и публикации, оптимизации.
То есть как минимум получили уровень junior developer (на мой взгляд даже выше).
Ну и конечно им отдельная благодарность и хвала за проделанную работу.
По ведению проектов можно сделать следующие выводы.
Ну и наконец, общий вывод: учебные проекты – это очень полезный инструмент формирования профессиональной компетентности будущих программистов.
Автор: krugvs
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/gtd/12847
Ссылки в тексте:
[1] www.prettytasks.com: http://www.prettytasks.com
Нажмите здесь для печати.