Проект курса «Разработчик C++»: советы преподавателя

C___deep_29.5_site-5020-cb863c.png

Хочу немного порассуждать на тему выпускной работы курса «Разработчик C++»: что это такое, зачем это вообще нужно и как это делать? Обо всём по порядку.

Проектная работа – финальная часть обучения на курсе, на которую выделяется целый месяц (звучит страшно, но на практике это не так уж и много). Идея довольно простая – слушатель курса выбирает интересную для него тему, пишет реализацию, выкладывает на github и достигает сразу двух целей: 1. Учебная. Проектная работа позволяет не только раскрыть свой творческий потенциал, но и потренировать большую часть (а в идеале так вообще все) полученных в рамках курса навыков. 2. Портфолио. Хоть мне это слово и напоминает модельный бизнес, приходится следовать за модой. Иногда потенциальные работодатели просят кандидата прислать пример кода. Насколько это хорошая или плохая практика с точки зрения оценки кандидата – здесь обсуждать не будем (но можем обсудить в комментариях). Однако проект – как раз то, что можно будет в дальнейшем показать потенциальным работодателям.

Звучит заманчиво, но в жизни обычно всё несколько иначе, чем в рекламе. Далее я постараюсь ответить на некоторые вопросы, возникающие у слушателей при обсуждении проектной работы.

1. А это вообще обязательно делать?

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

2. Преподаватели будут помогать?

Конечно! Весь проектный месяц преподаватели курса будут на связи через стандартные каналы. Можно будет обратиться за помощью.

3. Что делать, если не знаешь, какую тему выбрать?

Это действительно непростой вопрос. С учётом довольно высоких целей проектная работа в идеале должна вдохновлять, быть интересной, нравиться. Так что очень рекомендую при подборе темы проекта всё-таки сразу не сдаваться. Можно посмотреть по сторонам – какие задачи решаете на работе вы или ваши коллеги.

Может, какую-нибудь статью на хабре читали и появилось желание что-то эдакое реализовать. Или какая-нибудь конкретная тема из нашего курса понравилась особенно сильно.

Если будет совсем невмоготу придумать тему самостоятельно, преподаватели курса всегда готовы помочь – у нас в запасе есть несколько «резервных» тем проектов.

4. Как организовать процесс? Откуда брать требования? Что должно быть в результате?

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

Рекомендую следующий подход к выполнению проектной работы: – проработка ТЗ. На этом этапе нужно понять – а что, собственно, вы собираетесь сделать. Подумайте над вариантами использования (пресловутые use-cases) вашего решения, над его особенностями, какую проблему оно решает (или вдруг создаёт :-). Ещё один источник требований – вопрос «чем моё решение отличается от аналогичных». Этот вопрос рекомендую задать самому себе;

согласование ТЗ. Здесь вы присылаете своё ТЗ преподавателю курса, которое в ходе возникшего (а оно наверняка возникнет) обсуждения может несколько измениться;

проработка и согласование (опционально) архитектуры решения. В стиле – «мой проект будет состоять из трёх модулей, один из которых будет отвечать за …, другой содержать функционал…» и т. д. Так как вопросам архитектуры в нашем курсе посвящён целый модуль, вам будет, где потренировать полученные навыки. Часть с согласованием я пометил как опциональную, потому что в ходе реализации эта самая архитектура может сильно меняться. Особого смысла в согласовании нет – если только ради получения помощи со стороны преподавателей;

реализация. Тут всё просто – выполняем взятые на себя обязательства. По результатам должна получиться качественная, протестированная, отлаженная и, главное, рабочая реализация. Единственное базовое требование на этом этапе – чтобы проект компилировался, запускался и выполнял то, что указано в ТЗ;

тестирование и документация. Если вы дошли до этого пункта, и у вас ещё остались время и силы, можно из алмаза попробовать сделать бриллиант. Ведь что делает проект успешным? Конечно, вариантов ответа на этот вопрос можно найти много. Однако практически наверняка среди них вы встретите два пункта – удобство использования и документация. Поэтому на этом этапе рекомендую оформить тесты (unit-тесты) и документацию (doxygen, например). Тесты будут с одной стороны проверять, а с другой стороны объяснять читателям кода принципы работы вашего проекта. Документация поможет быстро разобраться в проекте.

Затянулся ответ на вопрос, конечно. Но обычно как раз этот вопрос и возникает у большинства слушателей курса. Хочу подчеркнуть, что вышеописанный план работы является всего лишь приблизительной схемой. Если вдруг для вас удобен какой-то другой формат работы – со стороны преподавательского состава нет никаких проблем работать как-то иначе. Впрочем, один из пунктов – проработка ТЗ – очень рекомендую выполнить. Не разобравшись в самом начале, что же вы собираетесь делать, будет довольно трудно успеть в срок.

5. Как оценивается проект?

Очень высоко! Качественно сделанный проект – всё ещё довольно редкая птица на нашем курсе. Одно дело выполнять самостоятельные работы с чётко описанными условиями задания. Другое – придумать что-то самому, а потом ещё и воплотить задумку в жизнь. Так что все, кто сделал проекты – уже герои.

Что касается формальных аспектов – оценок за проект не ставится. Проверяется соответствие результата с поставленными целями – это и является критерием успеха.

6. Что делать, если куча домашек висит, а уже проектный месяц?

Обычно в таких случаях мы рекомендуем сфокусироваться всё-таки на самостоятельных работах. Впрочем, какого-то правила в стиле «не сдал самостоятельные работы – не допускаешься к проекту» у нас нет. Если вдруг вы потому и не сдали в срок домашние работы, что они вам не очень понравились, – можно попробовать сделать проект.

Цель у самостоятельных работ в ходе курса – тренировка полученных на вебинарах навыков за счёт решения небольших, конкретных задач.

Цель у проекта – воспользоваться всеми знаниями и навыками, полученными на курсе, одновременно, что необходимо для решения объёмной задачи.

Получилось довольно много текста. Спасибо, что дочитали до конца! Надеюсь, статья позволит вам лучше разобраться в том, что же такое проект, зачем он нужен и как его делать. А если хотите что-либо спросить, пишите в комментариях!

Автор
0 комментариев
Для комментирования необходимо авторизоваться