Skip to content

Latest commit

 

History

History
342 lines (202 loc) · 38.9 KB

rails-girls-sofia-2014-october-coaches-guide.md

File metadata and controls

342 lines (202 loc) · 38.9 KB

Rails Girls Sofia 3.0 - Coaches Guide

Документ с напътствия за инструктори и организатори на Rails Girls Sofia 3.0, 11-12 октомври 2014 г., връзки към ресурси, бележки, уточнения и прочее.

Съдържание:

  1. TL;DR
  2. Въведение и предистория
  3. Общи напътствия и принципи
  4. Конкретно за това събитие и по програмата

TL;DR

След това прочетете това ръководство.

Въведение и предистория

Накратко за Rails Girls

Стартира в края на 2010 година във Финландия, като еднократно събитие, но бързо набира популярност. Днес – вече стотици събития в над 130 града по цял свят.

В България го организираме за трети път. Интересът е винаги голям.

Между другото, ако харесвате идеята на събитието – търсят се помощници за организацията на следващите събития и изобщо хора, които да поемат щафетата :)

За Rails Girls Sofia 3.0

Събота вечер и неделя, 11-12 октомври 2014 г.

Ще бъде в Телефонната палата, в залата на петия етаж (гр. София, ул. Гурко 4). Входът вляво, който е до кафето. Събота от 19:00 до 21:00 и неделя от 09:00 до около 17-18 ч. Залата е доста просторна, ще имаме място да се развихрим.

Екипът ще е там по-рано в събота (около 15 ч.), за да се пренесат и подредят бюра и столове и да се подготви залата. Доброволците да заповядат.

Спонсори и партньори са:

  • Телелинк
  • Информационно обслужване
  • Questers
  • GetClouder
  • Суперхостинг
  • Виваком
  • Пепси
  • TaxiMe

И други. От спонсорите имаме:

  • Персонализирани чаши (Суперхостинг)
  • Финансова подкрепа
  • Зала
  • Напитки
  • Swag

Стикери и печатни материали, swag

Принтираме name tags, стикери, имаме плакати от минали години. Спонсорите също предоставят рекламни материали, листи, химикалки. Суперхостинг осигуряват персонализирани чаши, което е супер (дизайн 1, дизайн 2, дизайн 3). Имаме една купчина химикалки и картички по случай Europe Code Week.

Афтърпарти

Начало - неделя, от 20 ч. Цел - социализация, особено между участниците, за да помогне за създаването на общност.

Ще е в бар FlipFlop, на ул. Оборище 61. За участничките и инструкторите ще има по едно питие от спонсорите.

Общи напътствия и принципи

Нашата основна цел

Да запалим участниците.

Да им покажем, че технологиите и програмирането не са изобщо толкова страшни и необятни, колкото изглеждат на пръв поглед и че това не е занаят само за богоизбрани, или за хора с бради. Че в умели ръце, технологиите се превръщат в могъщ инструмент за постигане на невероятни цели и – защо не – за промяна на света.

Ще следваме предварително дефинирана програма. Хубаво е да се стигне до крайната цел - работещо приложение, но не на абсолютно всяка цена. По-важно е у участничките да бъде събуден интерес от нещо, което им е доставило удоволствие – дали ще е писане на HTML и CSS, или ръчкане в Ruby, или промяна по приложението – това трябва вие да усетите. Бъдете гъвкави.

Мотивация

Петя Панайотова е една от участничките. Завършила е журналистика в Софийския университет "Св. Климент Охридски" и казва следното в мотивацията си:

"Интересът ми към уъркшопа се дължи на все по-осъзнатия ми интерес и отношение към програмирането и технологиите. Възможностите и предизвикателствата, които те предлагат, са все по-привлекателни за мен. Наскоро гледната ми точка към програмирането се промени, като това разбира се не стана изведнъж. Осъзнах, че в училище съм си създала погрешна и ограничена представа (не без ""съдействието"" на програмата по предмета, начина на преподаване и липсата на ефектива комуникация с преподавателя) за процеса на програмиране и това, което може да се постигне чрез него. Тази негативна гледна точка се е дължала на неразбиране и незадълбочен поглед. (...)"

Тези предразсъдъци и грешни представи са едни от основните проблеми, които е добре да адресираме.

Най-важното

Най-важното нещо са времето и мотивацията на участниците. Това е ресурсът, който в никакъв случай не трябва да пропиляваме и към който трябва да се отнасяме с изключително внимание.

Всички ние, като инструктори, имаме тежката задача да преглътнем гордостта и егото си. Не е важно ние да блеснем с нещо – важно е да се движим към основната цел на събитието и да се грижим участниците да се чувстват комфортно.

Ако не се набива на очи, че помагате, но нещата вървят – значи сте си свършили работата перфектно.

Разпределение на участничките

Групите са по две участнички на инструктор. Аз ще направя някакво разпределение и ще ви изпратя информация за участничките и тяхната мотивация и бекграунд.

Възможно е да има такива, които да не дойдат. Допускаме малко размествания по време на самото събитие.

Ако ми пишете с желание да сте инструктор на конкретен човек, ще опитам да ви изпълня желанието.

Подготовка и обяснения за начинаещи

Извадки на много, много важни моменти от ръководството за инструктори, което всеки трябва да прочете преди петък:

  • 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
  • Tell people it's ok to make mistakes
  • Try to avoid technical jargon
  • Don't say "any questions?"; say "What questions do you have?"
  • Get the students talking to each other

How to introduce yourself to the class:

  • tell your story
  • tell why you like programming and teaching.
  • 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 - ок

Темата е спорна. В ръководствата на Rails Girls насърчават copy/paste, докато има хора (включително и моята първоначална реакция), които смятат, че не трябва да се използва copy/paste.

В крайна сметка, всичко зависи от целите и времето, с което разполагаме. Някои команди на конзолата, особено тези за генериране на scaffold с определени полета, са доста дълги и дори един сбъркан символ ще доведе до нуждата от пренаписване на командата. Това отнема време и човек трябва да прецени доколко инвестираното време ще има възвращаемост и дали не е по-добре да се инвестира в обяснения на по-високо ниво.

За нашите конкретни цели - да запалим интерес и предвид времето, с което разполагаме, copy/paste се препоръчва, особено ако командата е повече от една-две думи. За кратки команди може да ги карате да ги пишат.

Метафори

Метафорите са силно оръжие, но са и нож с две остриета. Лоши метафори може и да навредят. Помислете предварително за някои, използвайте ги.

Някои примери:

  • MVC = Магазин: витрина, служител, складово помещение
  • Бази данни = Excel файл; таблици = sheet в Excel файл
  • HTML, CSS, = плодова торта с различни слоеве (тук е описано)

Ако имате добри идеи, правете PR и допълвайте този списък.

Конкретно за това събитие и по програмата

Събота

Моля да дойдете максимално рано, по възможност да не е след 18:30. Аз ще съм там към 15:00, тъй като има нужда от подготвителни действия. Ще съм благодарен на всеки, който успее да дойде по-рано, за да помага.

Регистрация (18:30 - 19:00)

Започва официално в 18:30. Ще я поеме някой от организационния екип. Инструкторите трябва да са по местата си, за да може да се запознаят с новодошлите, да разчупят леда и, ако им е скучно, да се мине на стъпка "Среда за разработка".

Разпределение по инструктори

За да бъде максимално стройна организацията и да не се лутат хората, съм подготвил предварително разпределение на участничките по инструктори.

Всички инструктори трябва да имат name tags, надписани с червен маркер. При регистрация, всяка участничка ще бъде информирана как се казва нейният инструктор и ще трявба да го намери. Затова вероятно ще подредим всички инструктори по азбучен ред в залата :)

Участничките ще имат name tags, надписани с черен маркер.

Официално откриване (19:00 - 19:15)

Очаква се към 19-19:10 да направим официално откриване. Ще има няколкоминутни изявления от някои от спонсорите и организаторите, както и приветствия и разяснения от мен. След това ще преминем към играта.

Игра "How to Train a Robot" (19:15 - 20:15)

След инсталацията ще преминем към играта "How to train a robot". Ще се движим по обяснителния блог пост на Ира и по инструкциите в тази презентация.

Накратко, участничките пишат съвкупност от команди на хартия, формиращи програми. Командите са предварително дефинирани. Командите управляват инструктора, който играе ролята на робот и се движи в "лабиринт", очертан с тиксо на пода. Роботът разбира само предварително дефинираните команди. Трябва да са изрично разписани, не могат да се използват съкращения и неща като "... x 2". Роботът "хвърля изключения" (вие преценете как) при изчерпване на програмата, преди достигнане на целта (хартиено кексче), удар в стена, неправилна последователност на командите (вж. по-долу) и прочее.

Цели:

  • Участничките да усетят болката от повторение на команди, за да могат да стигнат естествено до нуждата от абстракция - функция. Тя се вкарва на следващ етап, след няколко опита за писане-изключение-дебъг-писане-изключение-дебъг.
  • Да свикнат с идеята, че да грешат е не само нормално, а е съществена част от процеса ни на работа. Не е нужно, а е и невъзможно, да се напише програма от първия път, която да работи и да няма какво да се промени в нея. Цикълът експеримент-грешка е безценен за бързо достигане до качествено решение.
  • Да се даде реално усещане какво представлява програмирането и да могат участничките да преценят дали им се занимава с това, т.е. доколко е за тях, за да можем по-нататък да помагаме на групата, която наистина го харесва и да станат реални програмисти.
  • Вкарване на две абстракции по естествен път - 1) функции, 2) цикли. След достигане на крайната цел веднъж, се започва дискусия какво им пречеше и какво им беше трудно/досадно. Какво биха искали да се промени. Вкарват се абстракциите функция и/или цикъл. По възможност първо функция, след това още една итерация за цикъл. Допустимо е и двете наведнъж, ако нещата се стекат така.

пс:добро въведение в играта би било: "People think computers are really smart, but they aren't. A computer's a box with an IQ of 5, that just happens to be very good at crunching numbers very quickly. But it doesn't know how to think or how to reason. All it does is exactly what the program tells it to, without regards for the consequences of its actions. If it had legs, you could program it to jump out the nearest window, and it would do exactly that. Then you'd really see the system crash! With that in mind, programming is basically about figuring out how to represent real-world problems as numbers for a computer to crunch, and how to explain the issue to a box with an IQ of 5 clearly enough that it will do what you want done."

Разрешени команди (по една на ред, или разделени с точка и запетая):

  • left step
  • right step
  • left turn
  • right turn
  • squat
  • pick object
  • stand up

Командите трябва да се изпълняват в определен ред. Ограничения и дефиниции:

  • Начално състояние: намирате се изправени, в началото на пъзела, двете ви стъпала са едно до друго.
  • Една "стъпка" не е крачка – премества ви точно едно стъпало/стъпка напред. Опирайте петата си в пръстите на другия крак. Тоест, когато двата ви крака са един до друг, right step мести десния крак пред левия, като петата на десния опира/е на нивото на пръстите на левия крак. След това трябва да следва left step, с което двете ви стъпала отново застават едно до друго. Тоест, right step + left step ви мести точно една стъпка напред.
  • left step или right step може да се направи само когато двете ви стъпала са едно до друго.
  • Не можете да направите left turn или right turn, ако двете ви стъпала не са едно до друго.
  • При turn, просто се завъртате на 90 градуса в съответната посока. Двете ви стъпала остават едно до друго.
  • Не може да има два пъти последователно само left step или само right step.
  • pick object "работи" само ако обектът (кексчето) е в радиус от около една стъпка от робота и ако роботът е приклекнал. Иначе се хвърля изключение.
  • Целта е изпълнена след pick object и stand up, т.е. pick object трябва да има timeout, след който да гърми, ако не следва stand up :)

Общо-взето, настава един забавен хаос.

Среда за разработка (20:15 - 20:50)

Вместо да се инсталира необходимия за разработка софтуер, ще ползваме cloud-базираната среда Nitrous.io.

За регистрацията, отворете презентацията на събитието и започнете от първия слайд. В секцията за Ninefold има линк към ръководство за регистрация. Трябва да спрете на слайда "Finishing the setup" (номер пет). Ако ви остане време, може да минете към следващата секция, за HTML и CSS, която е слайд 6.

Метафора: Всеки майстор има нужда от определен набор инструменти и си има собствена работилница, в която твори. Вместо да ви караме да отделяте време, за да се снабдите с всички необходими инструменти и да си обзаведете собствена работилница специално за това събитие, ние ще ви дадем достъп до една готова такава, под наем – това е услугата Nitrous.io.

Когато участничките се регистрират и влязат в Nitrous.io, може да им обясните какво всъщност замества тази услуга – редактор, терминал/конзола, стартиране на процеси.

Ако прецените, че на операционната система на участничката ще е лесно да се инсталира необходимият софтуер, вижте секцията "Инсталация" в това ръководство.

Единственото нещо, което може да свалите, е Notepad2 (директен линк, x86), за да е цветен HTML-ът, който ще показвате в следващата секция.

In HTML We Trust

Неделният ден ще започне с кратък увод в програмирането и след това малко TryRuby. След TryRuby ще следва първата workshop сесия, в която ще се работи над приложението. Преди да се започне самото приложение, ще има кратъка (ок. 30 мин.) загрявка с HTML и CSS.

Ако ви остане време от инсталацията, преди груповата снимка в събота, може да започнете с HTML и CSS загрявката. Не е нужно да я завършвате докрай. Ще може да я продължите на следващия ден, в първата workshop сесия.

Идеята е участничките да свикнат какво е HTML (съдържание и структура) и какво е CSS (цветове, шрифтове, размери, отмествания, фон, шаренко).

План:

  1. HTML са командите, с които караме браузърите да рисуват неща по екрана. Суха дефиниция. След малко ще я илюстрираме.
  2. HTML е просто текст. Всеки текст е и HTML. Започва се с обикновен текстов файл, с разширение .html. Може да ползвате Notepad, или Notepad2, инсталиран в предишната стъпка, като направите уточнението, че и с Notepad става, просто с Notepad2 е цветно. Във файла участничките си пишат името на първия ред, оставят празен ред и пишат едно-две изречения за себе си. Може пак на отделни редове. Файлът се отваря с браузър. Всичко се вижда, но е на един ред. Изводи.
  3. HTML таговете са начални и крайни маркери. Задават структура. Имат сурова визия по подразбиране. Нека оградят първия ред - с името си - с <h1> таг. Може да го напишете на хартия, за да видят отварящия и затварящия таг и с какви скоби са. Може да им отнеме малко време да намерят символите на клавиатурата. Добре е те да си напишат тага. Запазете файла и презаредете браузъра. Обсъдете резултата - името е с големи букви и е на отделен ред. Вкарайте <p> след това. Споменете за различните видове h1, h2, ...
  4. Браузърите са толерантни към невалиден HTML – това, което сме създали, формално погледнато, е само парченце от цялостен HTML документ и е невалиден такъв документ, според формалната дефиниция. Но работи. Кажете какво друго има обикновено в един валиден HTML документ – <html>, <head>, <body>.
  5. CSS е за визия, оформление, шарено HTML е създаден 1993 г., а CSS - 1996 г. Първоначално е имало само HTML. Покажете един сайт с включен CSS и с изключен CSS – каква е разликата, как се вижда "голият" HTML. За да може да изключите CSS-а, ще трябва да инсталирате Web Developers toolbar за Chrome/Firefox. Там има "disable stylesheets" опция.
  6. При наличие на време и желание, може да покажете как изглежда един CSS документ и да обясните двете основни неща вътре: селектори (selectors) и правила (properties). Правилата задават конкретен визуален стил – цвят, шрифт, фон, размери и прочее. Селекторите пък указват за кои парчета от HTML да важи този конкретен визуален стил.

Не е нужно да се запомня всичко това, но ще е полезно за по-лесно ориентиране впоследствие.

Групова снимка (20:50 - 21:00)

Към 21 ч. спираме с играта, събираме се и правим един #Friday Hug. Вероятно всички сте виждали миналогодишната снимка.

След това разпускаме народа да се наспи за утрешния ден.

Програма - неделя

Кафе, регистрация за новодошлите, довършване на инсталации (09:00 - 10:00)

Участниците започват да се събират от 9 ч. Ще има кафе и кексчета, плодове или нещо подобно. В 10 ч. е началото на втория ден.

Увод (10:00 - 10:30)

Уводни думи, отново няколко думи за спонсорите, програма за деня, що е то "Rails Girls", какви са целите на събитието и какво да очакват участниците.

След тях уводната презентация ще продължи с въведение в програмирането за уеб и напътствия за дизайн на уеб приложения. Би трябвало да приключи към 10:30-10:45.

TryRuby.org (10:30 - 11:15)

Започваме с tryruby.org. Състои от 8 нива с по няколко стъпки всяко.

Забележки:

  • За начинаещи е (твърде) рязко задълбаване, с много термини; обясненията са прости, но термините не са спестени.
  • Много терминология, внимавайте с нея - не опитвайте да превеждате термините с българските им еквиваленти (например “conditionals” = “условни конструкции”), тъй като и българските понятия са непознати термини за един начинаещ; по-скоро обяснявайте на прост български какво прави нещо.
  • Чувствайте се свободни да пропуснете определени стъпки, ако ви се струват твърде сложни.
  • Ако не може да обясните добре нещо, или ви се струва ненужно задълбаване, продължете.

Стъпки, които непременно трябва да се пропуснат:

  • Level 3, challenge 2.
  • Не задълбавайте в level 3 като цяло; основната идея там е да се усети как работи chaining-ът на методи и че методите могат да завършват на ! и ?; може да обясните какво допринася “?" (по-ясен смисъл, нищо от техническа гледна точка), но не задълбавайте в проблемите на именуването.
  • Цялото level 5 (за файлове и директории). Не пропускайте обобщението на Level 4, което се намира в level 5, challenge 1.

Напомням, че copy/paste на по-дълги пасажи е напълно окей.

Добре е да приключите с това най-късно до към 11:30.

Уъркшоп 1 (11:15 - 13:00)

Веднага след tryruby.org се започва работа по приложението.

Ще използваме ръководството в тази презентация: bit.ly/railsgirlssofia3, вместо стандартното http://guides.railsgirls.com/app/. Разликите са основно две – това ръководство използва по-прости scaffold команди (simple_scaffold) и Nitrous.io. Повече подробности за т. нар. simple_scaffold в тази презентация от няколко слайда.

Продължете от слайда, до който сте стигнали предната вечер. Ако имате да довършвате обяснения за HTML и CSS, продължете от вчера. Може да направите кратък (2-3 мин.) преговор, за да затвърдите някои основни неща. Ако не сте започвали с HTML и CSS, вижте секцията "In HTML We Trust" за напътствия за какво да говорите.

Има "Ръководство за ръководството", обясняващо в детайли какво се случва зад завесите при всяка една от стъпките от ръководството за приложението "Idea". Като подробности, има и безплатна за участниците в Rails Girls книга "Learn Rails". Вижте секцията "Ресурси" за подробности.

Обяд (13:00 - 13:30)

Обядът ще е на място и е осигурен от спонсорите.

Bentobox (13:30 - 13:45)

След обяда ще направим Bentobox упражнението (слайдове, видео). Целта му е да покаже на учсатниците как да се ориентират в морето от термини и специфичен жаргон.

Другата съществена цел е да се успокоим след обяда и да увеличим нивото на концентрация.

Lightning talks (13:45 - 14:30)

Между 13:45 и 14:30 ще има сесия от 6-8 кратки (петминутини) презентации.

Събирам предложения за желаещи да говорят и темите им. Пишете до групата [email protected] с предложенията си. Вижте миналогодишните теми за вдъхновение.

Към момента имаме следните теми и предложения:

Силно препоръчителни са истории пред (суха) теория. Това прави впечатление и се запомня. Мотивационните и забавни, неангажиращи презентации са много подходящи.

Workshop 2 (14:30 - 17:30)

След lightning talks продължаваме с workshop сесията и с работата над приложението. Вероятно ще направим кратка кафе-пауза и почивка към 15:45 (ок. 20 минути).

Сошал

Туитене и шерване на снимки и текст във Facebook се насърчава. Официален хештаг: #RailsGirlsSofia.

След събитието

Имаме доста пълно ръководство за това как да продължи човек след събитието. Въпреки това, може да се разшири и да се добавят още ресурси. Най-малкото има нови материали, които трябва да се добавят. Трябва обаче да внимаваме да не стане overwhelming.

Хората не продължават да се занимават много - сами им е трудно, или пък им липсва достатъчно мотивация. Затова имаме идеи.

Study groups и регулярни срещи

Ще разкажем за study групите и колко успешни са се оказали те – регулярни ежеседмични срещи, на които да присъства поне един инструктор и желаещи участници, както от това, така и от минали Rails Girls събития, включително и хора, които не са били на Rails Girls.

Срещите са в init Lab. Имат си Facebook група. Засега са всеки четвъртък и петък, от 19:30 до 22:00 ч.

Набираме инструктори-доброволци.

Ресурси

  • Безплатни копия на "Learn Rails" от Daniel Kehoe

    Visit the web address learn-rails.com/railsgirls and enter the invitation code RAILSGIRLS to register and download the ebook.

  • Третото издание на The Rails Tutorial

  • ExplainShell е полезен сайт за обяснение на shell команди

  • Microsoft осигуряват DreamSpark акаунти за всички учащи (студенти, ученици, магистри, докторанти...), кандидатствали за Rails Girls, не само за одобрените.

Допринасяйте за това ръководство с pull requests.