Какой несложный проект взять, чтобы научить новичков максимуму из веб. разработки?
Привет,
есть небольшая возможность, чуть-чуть опыта, и много желания научить студентов современной веб. разработке с использованием main stream технологий и подходов. Со знаниями проблем нет, мы — состоявшаяся команда веб. разработчиков, которая просто на альтруистических началах хочет поделиться своим опытом со студентами местного ВУЗа. Для нас это challenge и много фана)
Что планируем подать:
Из инструментов: python (django), чуточку js, redis, git и чуть-чуть PostgreSQL в качестве базы, хотя, возможно заменим на sqlite.
Из технологий: http, немного верстки, ajax (обязательно), кеширование на обоих концах, ну и конечно же, best practices о том, как все это связать и зачем.
Задача стоит следующая: нужно подобрать такой проект, чтобы за ним стояла настоящая, прикольная, нужная и не очень долгая в реализации идея. Очень хочется, чтобы на ее основе можно было подогреть энтузиазм не слишком подготовленной аудитории. Важным аспектом должно быть понимание задачи, чтобы не приходилось тратить время на объяснение самой задачи.
Изначально думали сделать морской бой, но команда на команду и с плюшками в виде супер возможностей. На финише проекта планировался баттл между самими разработчиками на приз от нас. Но уперлись в то, что для реализации этой задачи нужны web sockets, обычный ajax тут не очень подходит, а усложнять и без того насыщенный технологичный стек не хотеться.
Еще есть идея реализовать АРI для граббинга курса валют, но это не слишком интересно и с БД тут не поработаешь.
Там где нужен Postgre необязателен ajax а для redis надо что-то в реальном времени подбирать, я бы сделал несколько задач, каждую задачу под отдельную технологию.
Спасибо, интересная точка зрения. О нескольких мини-проектах почему-то даже и не думали, но вот в чем проблема: есть желание оставить после курса чувство целостности, чтобы кроме знаний осталось понимание завершенности задачи. Проект должен стать для студентов чем-то вроде примера, в который можно прийти, подсмотреть реализацию, и вернуться назад к своей задаче, таким себе вводом в проф. практику.
Подход с несколькими мини-проектами очень похож на ВУЗовские ЛР, и откровенно говоря, они не очень аффективны.
Дмитрий: вы бы кинули ссылочку на курсы мож я тоже вступил бы. Не ради быть правым а просто для размышления: когда каждый учится у него в голове сидит какой-то свой проект ради которого он и учится, один хочет сделать игру, другой социальную сеть, третий свой форум, когда есть несколько маленьких проектов то если один не интересен человек знает что может "отыграться" на другом, а если это одна большая игра например, а я задумал поисковик по кинотеатрам то мне вообще будет непонятно для чего это конкретное делать и как я буду применять это в своём проекте. Идеально было бы давать направление задания (типа обработать любые данные без перезагрузки страницы а какие данные пользователи уже сами будут выбирать). Ну так на проверку заданий у преподавателей больше времени уйдёт...
Как вариант мб стоит попробывать предоставить выбор обучающимся... Т.е. к примеру, когда дойдёте до джанго, то разделить всех на равные комманды и каждая команда сама придумывает себе проект или идею. Потом сообщает её вам. Вы либо позволяете её этой команде реализовать(в зависимости от возможности применения технологий, которые будут пройдены во время обучения), либо предлагаете выбрать что-нибудь другое.
А потом даёте задачи на использование определённых технологий в зависимости от этапа. Т.е. к примеру с начала говорите, что бы все создали схему бд с зависимостями для своего проекта и подключили постгресс, потом миграции. После лекции про модели, пусть делают модели, после того как расскажете про контроллеры - делают контроллеры, потом вьюхи + натянуть бутстрап например... Потом говорите запилить что-нибудь на ajax. И что бы вся разработка велась через git (т.е. самой первой или второй лекцией сделайте лекцию про гит и ВСЮ домашку проверяйте через гитхаб, что бы уже к моменту когда вы перейдёте к джанго вопросов по гиту не было)
На каждый этап - дедлайн. В ветку мастер реквесты принимаете только вы, если всё ок.
Если всё это подробно продумать, то может выйти достаточно интересно) Я так понимаю, что в начале же будет просто обучение питону? Так вот на основе успеваемости по питону можно поделить всех на команды для выполнения проекта на джанге)
По итогу получается у всех студентов будет по завершённому проекту + небольшой опыт реальной командной работы + максимум практики.
UPD. В командах можно назначить тимлида, который будет распределять таски.
UPD2. И всё снимайте на видео, а потом в ютуб))
UPD3. Просто, если вы вместе со всеми студентами разом будете делать один проект, то как мне кажется, знаний не оч останется, т.к. по сути каждый студент будет просто переписывать ваш код или повторять ваши действия step by step.
Спасибо, думал над этим. Такой подход действительно очень сильно стимулировал бы самостоятельную работу и креативность, а также, действительно добавил бы знаний всем в той области, в которой лежит их интерес.
Но, есть несколько проблем, и если бы нам удалось их решить - то это было бы вообще круто:
Первая — неуверенность в себе, сложность выбора проекта. Не все команды смогут выбрать достойный проект, некоторым нужно будет и подсказать, а значит нужен список вариантов. А некоторые, наоборот, захотят сложные проекты, просто потому, что не могут оценить сложность.
Вторая — сложности проектных решений. Грамотно построить архитектуру нескольких проектов с самого начала будет сложно для преподавателей, но гораздо сложнее будет донести ее до студентов. Получиться, что на лекциях мы должны будем уделить внимание всем проектам и новому материалу.
Про гит — именно так и задумано, и да, питон идет первым) А вообще, на этапе питона мы придумали много интересных подходов и ставим себе целью научить думать алгоритмами и переносить решения с реальности на алгоритмы. Например сортировку собираемся показывать наглядно на мешочках с песком)
Плюсую за мешочки с песком) Реально)) Я просто кайфую от всяких таких простых и наглядных объяснений)
Неуверенность в выборе проекта вы имеете ввиду со стороны обучающихся? Хм... В самом начале этого курса скажите, что в конце у каждого будет своё веб приложение)) С начала несколько месяцев у нас питон, а потом джанго и командная разработка индивидуальных проектов. Любых каких захотите) Я думаю уже после этого, студенты будут только и ждать, когда же наступит часть где они будут делать что-то реальное, осязаемое... Я вот почему-то уверен на 100%, что идей будет масса)
Тут скорее будет проблема с тем, что будут выбираться всякие реально сложные проекты... Типо хелпдеска или ещё чего (чёт ничё в голову не пришло сложного)) )... Ну в этом случае можно просто отрубать определённые фичи или говорить, что главное, что бы делали основные фичи, которые у вас пересекаются с планом обучения, а всё остальное по желанию...
Ну на всякий случай действительно можно заготовить пару идей блогов или твиттеров)
По второму. Архитектуру строить должны не вы, а студенты. Вы её будите только проверять. Ну и поправлять при необходимости, но за это отнимать балы можно (хотя это слишком жёстко). По сути все архитектурные ошибки выявятся на этапе рисования схемы бд. Поэтому это задание можно сделать отдельным полноценным... Т.е. дать время на проектирование как на полноценное задание. Сделать графическую схему бд, расписать, что будет в моделях, а что в контроллерах. На лекциях вы уделяете время только новому материалу и вопросам студентов. Сама основная работа пусть происходит дома. Т.е. вы кратко даёте теорию, БЕЗ ВОДЫ, только по делу, а всё остальное действие происходит онлайн...
К примеру, ещё что бы было легче справиться со всем этим на джанго этапе, можно отсеить народ на уровне питона... просрал 2 дедлайна - вылетел. Соответственно останутся более способные и мотивированные студенты. Ещё, мне кажется нужно будет уделить большое внимание ООП, что избавить от каких-нибудь архитектурных фейлов.
Это лишь каркас для размышления... Что бы всё это воплотить в реальность - всё о чём мы тут говорим нужно продумать до мелочей)
И подумайте над видео-документированием лекций) Я думаю многие вам были бы очень благодарны за такой материал) И я в их числе)
Ещё выделите мб 1-2 человека для полноценного онлайн консультирования по любому вопросу в любое время. Это просто обучение моей мечты))
Дмитрий: Кста, видео-документирование лекций сыграет и вам самим на пользу. Если студент спрашивает какой-то момент, который объяснялся на лекции, то его можно отправить на то видео и ту минуту, где об этом рассказывается, что бы не быть попугаями. Ну если всё равно не понимает, то тут уже нужно поработать чуть индивидуально...
Дмитрий: И на протяжении всего курса мне кажется нужно вести аналитику, что бы можно было скорректировать некоторые моменты при повторных заходах обучения других студентов. Т.е. какие задания были интересны, а какие нет, сколько времени ушло на то или иное задание. Так же следить за успеваемостью (балы, оценки), что бы можно было равномерно распределить народ.
И задавать реально сложную, но интересную домашку) К примеру, ещё на уровне питона, можно попросить запарсить по каким-нибудь хитро-придуманным условиям данные с вк через апи, и что бы всё было разнесено по классам, методам и т.д.
Дмитрий: Ну как бы да, я имел в виду не поучаствовать (за 10 дней вряд ли можно обучить и сподвигнуть на какой-либо проект), а именно поработать с данными.
Как мне кажется не нужно пичкать всех студентов кучей технологий. Я думаю для начала им нужно дать представление об этих технологиях, какая для чего используется и какую функцию в проектах выполняет. А уже исходя из полученных сведений каждый из них сам решил, что ему более интересно и куда углубляться. Ведь кому-то по нраву работать именно над внутренним содержимым проекта, а кому-то над визуализацией. Затем поделить на команды, в которых каждый из них будет выполнять свою функцию, как шестеренки в одном механизме. Я думаю такой подход к командной работе будет более удачным и продуктивным. Ну и конечно если уклон идет в web, то всё таки как уже писалось в одном из комментариев, лучше дать задание на создание студенческой социальной сети. И главное для реализации дать им свободу действий и выбора, не загонять их в рамки и не ограничивать их взгляд на функционал проекта. Что бы каждая команда сделала проект именно таким, каким они его видят и каким по их мнению он должен быть.