Документ с напътствия за инструктори и организатори на Rails Girls Varna 2.0, 14 август 2016 г.
Съдържание:
- TL;DR
- Накратко за Rails Girls (за нови инструктори)
- За текущото издание – място, дати, други
- Общи напътствия и принципи, цел на събитието, роля на инструкторите
- Обяснения на различните части от програмата
- Приветстащ имейл от инструкторите към участничките
- Ако нямате опит с Ruby до момента
- Елате в 09:30 в неделя. Хотел "Черно море", бул. Сливница 33, зала 1. На втория етаж. Ще ви е удобно да си носите лаптоп, но не е нужно, участничките се очаква да си имат.
- Ще се работи основно в едно online IDE, което дава и достъп до виртуалка с Ubuntu. На всяка участничка ще й трябва безплатен Nitrous.io акаунт и Ruby проект вътре. Ще се изисква потвърждение на имейла за акаунта. Подробности и съвети за това има по-долу, в секцията "Среда за разработка".
- Прочетете In HTML We Trust.
- Ще се движим по следното ръководство за участнички ще правим елементарно уеб приложение с Ruby и Sinatra: bit.ly/railsgirlsvarna2 (кодът ѝ в GitHub) - прочетете я. Цялата необходима документация на Sinatra е в това one-page README. Ползвайте и тези bit.ly/railsgirlscheatsheets.
След това прочетете това ръководство.
Стартира в края на 2010 година във Финландия, като еднократно събитие, но бързо набира популярност. Днес – вече стотици събития в над 130 града по цял свят. В България го организираме за осми път път (направихме едно издание във Варна през 2015 г. и шест в София). Местни ентусиасти организираха едно и във Враца. Интересът е винаги голям.
Представлява workshop с кратка презентационна част и повече занимания. За участие се приемат само жени. Заниманията са по предварително подготвено ръководство. На две участнички се пада по един инструктор, който има за цел да ги напътства и да им помага в движението по ръководството. Повечето участнички са съвсем начинаещи и никога не са се занимавали с програмиране, или пък са пробвали съвсем елементарни неща в някакъв момент.
Некомерсиална инициатива е и всички от организационния екип, както и инструкторите, участват на доброволен принцип. Има разходи (за зала, кетъринг, рекламни материали), които се покриват от спонсори.
Може да прочетете повече по темата на сайта на събитието, или, ако имате въпроси, да пишете на организационния екип.
Събитието е опит да се адресира съществуващият дисбаланс между мъже и жени в IT сферата и да се атакуват предразсъдъците, които са се загнездили у повечето жени (и мъже), свързани с програмирането.
Rails Girls би могло да се възприеме като сексистко събитие, понеже за участие се допускат само жени. Това щеше да е проблем, ако в момента нямаше дисбаланс, но такъв има. Причината да допускаме само жени като участнички, е за да създадем среда, която се усеща като максимално приветлива и безопасна, за да може повече жени да се престрашат да направят първата крачка.
Петя Панайотова е участничка в едно от Rails Girls Sofia събитията. Завършила е журналистика в Софийския университет "Св. Климент Охридски" и казва следното в кандидатурата си за участие, в полето за мотивация:
"Интересът ми към уъркшопа се дължи на все по-осъзнатия ми интерес и отношение към програмирането и технологиите. Възможностите и предизвикателствата, които те предлагат, са все по-привлекателни за мен. Наскоро гледната ми точка към програмирането се промени, като това разбира се не стана изведнъж. Осъзнах, че в училище съм си създала погрешна и ограничена представа (не без "съдействието" на програмата по предмета, начина на преподаване и липсата на ефектива комуникация с преподавателя) за процеса на програмиране и това, което може да се постигне чрез него. Тази негативна гледна точка се е дължала на неразбиране и незадълбочен поглед. (...)"
Друга участничка пък ни пише следното:
"По едно време имах идея да се записвам на някакъв курс по програмиране – оставих се брат ми да ме разубеди, обяснявайки ми, че програмирането било адски сложно, не било за мен - нали съм жена и логиката ми куца..."
Това са стереотипите, с които се опитваме да се борим.
За втора година поред Rails Girls Varna ще се случи на 14 август 2016 г. (неделя). Ще бъде в същата зала като миналата година – зала 1 на хотел "Черно море", бул. Сливница 33, на втория етаж (след входа веднага вдясно, по едни завиващи стълби). Инструкторите са необходими от около 09:30 ч. до около 16:30 ч. в неделя. Ще има около 20-ина участнички и 12 инструктора. Програмата може да видите тук.
Основната ни цел е участничките да се чувстват заинтригувани, ентусиазирани и заредени след края на събитието, с подсилен интерес към темата.
За постигане на тази цел обикновено се налага да се подходи по различен начин за различните участнички и това е ролята на всеки един инструктор – за всяка от участничките си да намери това, което е подходящо и реалистично като цел и подхода, който ще доведе до тази цел и да се движи в тази посока. Някои примери:
- Някои участнички предпочитат да се движат по ръководството и се чувстват зле, ако изостават, или пропускат части, докато интересът на други изисква инструкторът да се отклонява и да им обяснява странични неща.
- За някои участнички постигането на реален резултат е по-важно от това да разбират как точно работят нещата отдолу, докато за други просто да сглобят нещо с copy/paste без да осъзнаят базовите концепции отзад е празно усилие.
- Някои участнички предпочитат да четат сами, да търсят сами и да се борят с проблемите предимно сами, докато други предпочитат да бъдат напътствани и съветвани, и/или да работят в тандем с някого по нещо.
- На някои участнички им е по-интересна визуалната част – HTML, CSS, цветове, картинки, дизайн, докато други ги човърка повече как работят нещата, логиката, програмирането.
- Някои участнички проявяват много малко самоинициатива и очакват инструкторът да им предлага какво да правят, да им дава задачи и да ги напътства, докато за други това би могло да бъде дори дразнещо и те биха предпочели да имат повече свобода да си избират проблемите и нещата, които да правят.
- Някои участнички имат наум конкретни проблеми, с които биха искали да се преборят и предпочитат да се занимават с това, отколкото с нещата в ръководството (и това е окей).
Това са само малка част от индивидуалните особености. Основната роля на инструктора в събитието е да усети как се чувства всяка от участничките му и да се опита да се нагоди максимално спрямо тях. Не е задължително нито да се следва ръководството дословно, нито да се мине цялото, от край до край. Предаването на определено количество материал или теория е крайно маловажно.
Все пак е добре да се насърчават неща като:
- Умението самостоятелно да се анализира и преборва проблем.
- Самостоятелно да се разбие проблем на по-малки части и да се търси информация по темата.
- Комуникацията и взаимопомощта между участничките.
- Да се експериментира, да се греши и да се пита, когато нещо не е ясно (а неясните неща са безкрай и са там непрекъснато; ако някой не пита непрекъснато, нещо не е наред).
Бъдете гъвкави.
Като страничен ефект на горното, ще очакваме след края на събитието участничките да са разбрали, че:
- Технологиите и програмирането не са изобщо толкова страшни и необятни, колкото изглеждат на пръв поглед.
- Това не е занаят само за богоизбрани, или за хора с бради.
- В умели ръце, технологиите се превръщат в могъщ инструмент за постигане на невероятни цели и – защо не – за промяна на света.
Най-важното нещо са времето и мотивацията на участниците. Това е ресурсът, който в никакъв случай не трябва да пропиляваме и към който трябва да се отнасяме с изключително внимание.
Всички ние, като инструктори, имаме тежката задача да преглътнем гордостта и егото си. Не е важно ние да блеснем с нещо – важно е да се движим към основната цел на събитието и да се грижим участниците да се чувстват комфортно.
Ако не се набива на очи, че помагате, но нещата вървят – значи сте си свършили работата перфектно.
Групите обикновено са по две участнички на инструктор. Ще има групиране и разпределение и ще ви бъде изпратена информация за участничките и тяхната мотивация и бекграунд веднага, щом списъкът е ясен. Би било добре след като получите тази информация, да им изпратите един "welcome email" за разчупване на леда (има секция за това по-долу) (бъдете креативни). Може да включите там и молба да си направят по един безплатен акаунт в Nitrous.
Случва се някои участнички да не дойдат. Понякога се налага да правим малки размествания по време на самото събитие.
Ако пишете на организационния екип с желание да сте инструктор на конкретен човек, ще се опитаме да изпълним желанието ви.
Извадки на много, много важни моменти от ръководството за инструктори на начинаещи, което ще е полезно на всеки да прочете преди събитието:
- Ask students "What do you want to get out of class?" (Всеки инструктор ще получи информация за участниците си - мотивация, информация за опит, данни за контакт и др. Целта е да се настроите максимално на правилната честота.)
- Assume that anyone you're teaching to has 0 knowledge but infinite intelligence.
- Admit your ignorance. Show them how you approach something you don't know.
- Tell people it's perfectly fine to make mistakes and to be wrong. That's how we learn and evolve.
- Try to avoid technical jargon as much as possible.
- Don't say "any questions?"; say "What questions do you have?" and then mentally count to at least five waiting for a question.
- Get the students talking to each other.
How to introduce yourself to the class:
- tell your story and tell why you like programming and teaching (but beware of bragging!)
- tell why you care! Why are you getting up on saturday morning to come in here?
Pace:
- Slow down! Wait much longer than you feel is comfortable for questions/comments.
Много трудно и едновременно с това много важно е да се намери основата на познанията на всяка участничка и да се гради от там. Иначе казаното ще виси във въздуха и бързо ще се срути.
За нашите конкретни цели - да запалим интерес и предвид времето, с което разполагаме, copy/paste се препоръчва, особено ако командата или текстът е повече от една-две думи.
За кратки команди или текст може да ги карате да пишат, с цел обръщане на внимание на детайлите, но това не е основната цел на събитието и времето, с което разполагаме, е малко. В повечето случаи е по-добре да се инвестира време в обяснения на концепции на по-високо ниво.
Метафорите са силно оръжие, но са и нож с две остриета. Лоши метафори може и да навредят. Помислете предварително за някои, използвайте ги.
Някои примери:
- MVC = Магазин: витрина, служител, складово помещение
- Бази данни = Excel файл; таблици = sheet в Excel файл
- HTML, CSS = тяло (структура и съдържание) и тоалет (визия); или плодова торта с различни слоеве (тук е описано)
Ако имате добри идеи, предложете ги като промяна с pull request към това хранилище.
Много добра реплика при възникване на проблем е, "Чудесен проблем!", "Колко интересен проблем!", "Чудесна възможност да научим нещо ново" и прочее.
Ролята на инструктора е да напътства участничките. Избягвайте просто да им решавате проблемите и да им давате директно отговор, дори след това да го обясните. Оставете ги първо да се помъчат сами. Например, ако допуснат грешка някъде, вероятно естествената им реакция ще е „Ами, не става.“ Накарайте ги да прочетат грешката. Научете ги как да извлекат ценната информация от съобщението за грешка. Посъветвайте ги за какво да търсят в Google. Питайте ги „Какъв може да е проблемът?“ Насърчете ги и ги оставете да помислят.
С други думи, много по-ценно е да им подскажете какъв е процесът на програмиране и решаване на проблеми (четене на документация, мислене, писане на код, пробване, четене на грешки, мислене, писане на код, пробване, четене на грешки, ровене в Google/StackOverflow и т.н.)
Тънкият момент тук е, че не всеки проблем си заслужава да бъде борен по време на Rails Girls събитие, поради ограничението във времето и неща, които откровено излизат много извън обхвата на материала. Ваша роля е да прецените кои проблеми са подходящи за решение от тях и кои не са на този етап.
Също така, ако усещате, че участничката се фрустрира твърде много от проблема, помогнете повече, или направо дайте решение, защото фрустрацията може да се натрупа и да попречи на работата по-нататък.
Както споменахме и в секцията за реакция при проблем, опитвайте се да карате участничките да правят нещата сами и избягвайте да им показвате и обяснявате само вие.
Въпросът доколко да ги напътствате вие и доколко да ги оставяте сами да се борят с ръководството и проблемите е доста индивидуален и различен за всяка участничка. Въпреки това, има някои общи принципи – някои секции в ръководството за участничките са обяснени доста по-бегло и реално лежат на плещите на инструктора, който трябва да създаде наратив и да преведе участничките през отделните стъпки на своето обяснение. Пример за такава секция е частта за HTML и CSS. В противоположния спектър е секцията за конзолата, която е доста подробна и там е добре да оставите участничките да прочетат нещата сами, а вие само да отговаряте на въпросите, които те ще имат, докато четат, както и да се включите като дойде време за упражненията след това.
Стремете се да бъдете част от потока на мисълта на участничките си и да следите докъде са и с какво се борят във всеки един момент – да имате контекст, за да може да сте готови да отговорите на техен въпрос или да ги побутнете в правилната посока когато е необходимо, дори в момента да не обяснявате вие, а само да гледате какво правят. Добре е да създавате усещане в участничките, че сте 100% на линия и че имат цялото ви внимание. Ако усетят, че са изгубили вниманието ви, ще започнат да ви питат по-малко.
Може от време на време да ги подканяте да ви кажат как са разбрали те дадена концепция, за да видите дали има нужда да допълните или коригирате нещо генерално, което не сте успели да обясните добре. Може да си обясняват една на друга, или на вас, но внимавайте да не стане като изпит – трябва да се чувстват максимално спокойни да споделят как разбират нещо и че това е обратна връзка за вас като инструктор, а не изпит доколко те са разбрали нещата.
По време на събитието ще забелязвате проблеми с това или с ръководството за участничките – от дребни правописни грешки, до генерални структурни проблеми или пропуски. Записвайте си някъде тези неща, за да може впоследствие да ги споделите с екипа на събитието и да бъдат отстранени. Ако не ги запишете, ще ги забравите и ще останат некоригирани.
Много полезно е да прочетете мнението на участничките от минали издания на Rails Girls събития за инструкторите им (обратната връзка е анонимна), особено отговорите на въпроса "Доволни ли сте от инструктора си? Бележки към него и другите инструктори?":
Програмата е тук: http://railsgirls.com/varna#schedule
Начало: 09:30 Време: около 30 минути
Започва официално в 09:30. Ще я поеме някой от организационния екип. Инструкторите трябва да са по местата си, за да може да се запознаят с новодошлите, да разчупят леда и, ако им е скучно, да се мине на стъпка "Среда за разработка".
Ще има кафе.
За да бъде максимално стройна организацията и да не се лутат хората, е подготвено предварително разпределение на участничките по инструктори.
Всички инструктори трябва да имат name tags, надписани с червен маркер. При регистрация, всяка участничка ще бъде информирана как се казва нейният инструктор и ще трябва да го намери. Инструкторите ще сте подредени по азбучен ред в залата и участничките ще трябва да направят двоично търсене :)
Участничките ще имат name tags, надписани с черен маркер.
Начало: около 10:00 Време: около 20-30 минути
Очаква се към 10-10:10 да започнем и да открием официално събитието. Ще има кратко представяне на спонсорите, организационни бележки и информация какво предстои през деня. Ще се постараем да го държим кратко и стегнато.
С това приключва презентационната част и нещата остават във ваши ръце.
Начало: около 10:30 Време: около 20-30 минути
Вместо да се инсталира необходимият за разработка софтуер, ще ползваме cloud-базираната среда Nitrous.io.
За тази стъпка има секция в ръководството за участничките – bit.ly/railsgirlsvarna2#tools. В секцията е разписано сравнително подробно какво е текстов файл (vs. MS Word файл), текстов редактор и конзола. Има секция за упражнение в конзолата. Оставете участничките да прочетат сами секцията и отговаряйте на въпросите, които ще имат в движение. След това направете упражненията за конзола в края на секцията.
Упражненията за конзола може да ги правите паралелно и на двете места – както в Command Prompt на Windows, така и в Nitrous. Разликите и приликите между двете конзоли ще помогне на участничките да си съставят по-добра абстрактна представа какво представлява конзолата и да свикнат повече с употребата й.
Необходимо е всяка от участничките ви вече да има акаунт в Nitrous и в него да е създаден workstation в Европа, а в него един Ruby проект. Регистрацията става бързо, но създаването на workstation и проект отнема няколко минути и е добре да се направи предварително. Бихте могли и вие да направите акаунти на участничките си предварително и на събитието да им ги дадете. Имайте предвид, че за регистрацията в Nitrous се изисква валиден имейл, на който се изпраща линк за потвърждение. За целта, ако имате имейл в Gmail, който е [email protected]
, може да използвате следните "синоними" на вашия имейл: [email protected]
, [email protected]
и т.н. Всичко след символа +
се игнорира от Gmail при получаване на пощата. Алтернативно, може да използвате railsgirlssofia+нещоси@gmail.com
и ние ще потвърдим акаунтите веднага, щом получим писмо с линк. Може да използвате и имейлите на участничките ви, които ще ви бъдат изпратени. Ако изберете този вариант, ще трябва да им пишете предварително, за да ги помолите да потвърдят имейла от Nitrous, който ще получат. Това може да е и добър повод за приветстващия имейл от ваша страна.
Метафора (пише я и в ръководството за участничките): Всеки майстор има нужда от определен набор инструменти и си има собствена работилница, в която твори. Вместо да ви караме да отделяте време, за да се снабдите с всички необходими инструменти и да си обзаведете собствена работилница специално за това събитие, ние ще ви дадем достъп до една готова такава, под наем – това е услугата Nitrous.io.
Когато участничките се регистрират и влязат в Nitrous.io, може да им обясните какво всъщност замества тази услуга – редактор, терминал/конзола, файлова система, стартиране на процеси – реално си е цял компютър в "облака".
Ако прецените, че на операционната система на участничката ще е лесно да се инсталира необходимият софтуер, вижте секцията "Инсталация" в това ръководство.
Единственото нещо, което може да свалите, е Notepad2 (директен линк, x86), за да е цветен HTML-ът, който ще показвате в следващата секция. Силата на Notepad2 е че много наподобява вградения в Windows Notepad, с тази разлика, че кодът е цветен. Няма излишни неща, които да разфокусират дискусията.
Други инструменти, които бихте могли да споменете и използвате, са Sublime Text или Atom. Вие трябва да решите каквъв редактор ще бъде използван, но отделете няколко минути, в които да обясните какво е среда за разработка, какви налични инструменти за писане на Ruby код съществуват и защо предпочитате Sublime пред Atom, например.
За тази стъпка има секция в ръководството за участничките – bit.ly/railsgirlsvarna2#html. Секцията не е разписана в много детайли и се очаква от инструкторите да обясняват и водят участничките през различните етапи. По-долу е обяснено как.
Идеята е участничките да разберат какво е HTML (съдържание и структура) и какво е CSS (цветове, шрифтове, размери, отмествания, фон, шаренко). Да разберат, че HTML е технология (не точно език за програмиране), която е градивното блокче на интернет, на която стъпва визуализацията на всички сайтове - това е, което се точи по жицата до нашия компютър.
Как:
Давате обещание на участничките, че след половин час ще са написали първата си уеб страница, на HTML (ако вече са писали HTML, няма да им е първа, разбира се). Започвате с един обикновен тесктов редактор, примерно Notepad или Notepad2 (директен линк, x86), в който да пишат текст и да запазят файл като .html
. Внимание - на Windows е добре да изключите опцията, която крие разширенията на файловете - инструкции тук.
Има два варианта на примерно съдържание, което може да създадете:
- страничка, която е тематично свързана с приложението за гласуване, което ще се прави по-късно и е на кирилица (код на страницата).
- страничка мини-визитка – не е тематично свързана с приложението, но е една идея по-проста (код на страницата).
Предполага се, че първият вариант, който е тематично свързан с приложението за гласуване, ще е по-подходящ, но по ваша преценка може да направите втория вместо първия (или пък и двата, ако участничката се движи достатъчно бързо и проявява интерес).
План за обяснения
Следвайте точките с напътствия към инструкторите в ръководството за участничките – bit.ly/railsgirlsvarna2#html. Добре е да сте ги прочели предварително.
Начало: около 11:00-11:30 Време: около 30-60 минути
На предишни издания тази част е предшествана от презентацията за блиц увод в програмирането, но на това издание няма да има такава презентация. Слайдовете са на разположение, но те се припокриват с материала, представен в ръководството за участничките и е добре да се движите по него, когато се стигне до тази част от програмата.
Кога да започнете с тази част и колко време да й отделите, е по ваша преценка.
Начало: 13:00 Време: около 30 минути
Обядът ще е на място и е осигурен от спонсорите.
Начало: 13:30 Време: около 15 минути
След обяда ще преценим дали да направим направим една игра, наречена Bentobox, или 2-3 много кратки (3-4 минути) презентации.
Bentobox упражнението е под форма на кратка състезателна игра (слайдове, видео) и има за цел да покаже на участниците как да се ориентират в морето от термини и специфичен жаргон. За тази стъпка ще давам инструкции на място и няма нужда от особено сериозна подготовка от ваша страна. Другата съществена цел е да се успокоим след обяда и да увеличим нивото на концентрация.
Ако не правим Bentobox и има желаещи от инструкторите с добри теми, ще организираме сесия от 2-3 кратки (около 3-4 минутни) презентации (може и без слайдове). Ако имате идея за тема, пишете ни на [email protected]. Вижте миналогодишните теми за вдъхновение.
Съвети и изисквания към презентациите:
-
лимит от 3 минути (по изключение може и 4, но трябва да се съгласува с екипа предварително)
-
подходящи теми:
- истории, с или без поука, например от личен опит; правят впечатление и се запомнят
- мотивационни неща
- исторически обзори
- интересни факти
- дребни и хитри технически съвети
- нещо offtopic, което е леко, разчупено, забавно, отпускащо
-
неподходящи теми – опит за преподаване на материал или повече теория; времето е недостатъчно за това
Начало: около 14:00 Край: около 16:00
Веднага след презентацията топката отново е във вашето поле и продължавате с ръководството за участничките от там, докъдето сте стигнали.
Това ще продължи до края на събитието. Няма да има други официални почивки, така че ако усетите, че участничките ви са уморени, може да направите кратка пауза по ваша преценка.
Към 16:00 ч. закриваме събитието. Ще има не повече от 10-ина минути заключителни слова и напътствия.
Събираме всички и правим една групова снимка по модел на #Friday Hug (нищо, че ще е неделя). Може да сте виждали груповата снимка от предни издания.
Туитене и шерване на снимки и текст във Facebook и по други социалки се насърчава. Официален хештаг: #RailsGirlsVarna.
Имаме доста пълно ръководство за това как да продължи човек след събитието. Въпреки това, може да се разшири и да се добавят още ресурси. Най-малкото има нови материали, които трябва да се добавят. Приемаме редакции и допълнения. Трябва обаче да внимаваме да не стане overwhelming.
Хората не продължават да се занимават много - сами им е трудно, или пък им липсва достатъчно мотивация. Затова имаме идеи.
Ще разкажем за study групите и колко успешни са се оказали те – регулярни ежеседмични срещи, на които да присъства поне един инструктор и желаещи участници, както от това, така и от минали Rails Girls събития, включително и хора, които не са били на Rails Girls. Такива групи организираме успешно в София от март 2014 г. и от август 2015 г. се случват и във Варна, благодарение на няколко ентусиаста. Ако имате възможност да се включите и да помагате като инструктор понякога на регулярните сбирки, посетете RailsGirlsVarnaStudyGroup.
След като бъдат избрани участничките за текущото издание и групирани и разпределени по инструктори, всеки инструктор ще получи индивидуален имейл с информация за участничките си. Този имейл ще включва информация за предишния им опит, ако имат такъв, обща биографична информация, мотивацията им да участват в събитието и малко лични данни, включително и имейл адреса им.
Какво бихте могли да включите в приветстващия имейл:
- Да им се представите.
- Да им изпратите линк към ръководството за участници, по което ще се движите на събитието, за да могат тези, които имат интерес, да го прочетат и да дойдат, може би, с готови въпроси. Не се очаква да го правят, но не пречи да им го изпратим.
- Ако сте им направили регистрация в Nitrous предварително, с техни имейл адреси, може да ги помолите да потвърдят акаунта си там.
И каквото още ви хрумне, за да завържете първоначален разговор и да разчупите леда.
Не е проблем ако имате опит като уеб програмист, но до момента не сте се занимавали с Ruby. Може да направите следното:
- Инсталирайте си Ruby (може да ползвате инструкциите тук) и си поиграйте в интерактивната конзола
irb
. - Може да прехвърлите първите няколко лекции тук (пропуснете лекция 0, “За курса”).
- Прегледайте това сбито ръководство.
Ако по време на събитието срещнете нещо неясно – “admit your ignorance”. Търсете в Google или питайте други инструктори. Пишете на екипа при въпроси.
Повече от добре дошли са всякакви предложения за допълнения и корекции в това ръководство. Пуснете pull request в GitHub.