Take what you can, spread more

Посещение в НПМГ – София

NPMGДнес ми се случи нещо доста приятно – във връзка с една инициатива бях на посещение в Национална природо-математическа гимназия “Акад. Л. Чакалов” заедно с Ники Костов, който е и бивш ученик там. Най-общо искахме да разкажем малко за инициативите на Академията на учениците, като публиката ни беше предимно от осмокласници.

По-интересната част беше, че решихме да донесем някаква практическа стойност с посещението си, а именно да покажем на живо създаването на едно приложение, даващо бегла идея за темите, които ще обсъждаме в Училищната академия (а отчасти и Алго академията).

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

Публиката

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

Разбира се, не всички имаха възможност (някои търпение) да изтраят цялата лекция, но това е напълно разбираемо, особено за тяхната възраст. Хм, говоря като че ли вече съм много голям – ще ме разберете, когато някой 7-8 години по-малък от вас се обръща с “господине”, започвате да се чувствате малко по-възрастен. Здраве да е :).

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

Предизвикателството

Точно такова не бях имал скоро. Предполагам повечето четящи тази статия вече са срещали технически предизвикателства – в програмирането или другаде. И да, интересни са. Но не толкова. С времето се свиква с тях и човек открива “шаблони” (някой с по-добър превод за patterns?), по които да действа.

Водя лекции от доста време и в момента дали ще говоря пред 3, 30, 300 души – нямам притеснения, свикнал съм. Предполагам и с изнасянето на лекция пред осмокласници се свиква, но там нямам опит. Ако трябва да си призная, преди лекцията се чувствах странно. Не притеснено. Странно. Все едно ми предстоеше да се гмурна в много дълбок воден басейн, без да го познавам. Мога да плувам, знам че винаги мога да се измъкна ако загазя, но въпреки това е странно. Неизвестност. Хайде стига безглаголни стихотворения.

Обичам такива предизвикателства, особено след като преминат. Трябваше да реша как да се справя с няколко неща:

  • Да измисля приложение, което да е интересно за учениците
  • Да го напиша за ограниченото време (около час и половина)
  • Да съм интересен – за час и половина всеки би изгубил внимание, а тук фокусът беше важен, защото времето беше малко и обясненията трябваше да са бързи
  • Да обясня есенцията на HTML, CSS и JavaScript кодът, който пишех, без да навлизам в особеностите (най-вече на JavaScript)
  • Да минимизирам ползването на забързващи писането лоши практики (лошо именуване, неподреден код и т.н.)

По това как протече лекцията – мисля, че успях да покрия описаните (последното частично). Стараех се да имам възможно най-много дискусия с публиката докато пишех кода и да се фокусирам върху обясняване на това, което пишех в момента и какво то конкретно прави, като заедно с това се стараех да навръзвам нещата последователно. Беше важно да обясня как вземаме елемент от DOM дървото (и какво изобщо е елемент и таг), как “ровичкаме” в един обект чрез “.” (и какво е обект), както и защо правим едни операции преди други, като стигнахме даже до функции и викането им.

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

Много добро впечатление ми направи, че по-голямата част от публиката отговаряха вярно на въпросите ми и се ориентираха правилно в приложението, което пишехме (даже на един-два пъти успяваха да ме поправят).

Резултатът

tron game

Успяхме да напишем един доста функционален Tron (не много красив). Всъщност липсваше само управлението на втория играч, но по начина, по който сме написали кода – само трябва да се направи copy-paste на кода за червения и да се замени на съответните места “червения” със “синия” и разбира се клавишите за контрол да се сменят (нарочно го оставям недовършено, за да може читателите да се упражнят :) ).

Много съжалявам, че не записах видео. Нищо, ще ми остане хубавият спомен, а следващия път обещавам, че ще записвам, за тези, на които им е интересно да изгледат нещо такова.

Ето и самото приложение (W, A, S, D контролират червения играч): http://itgeorge.net/wp-content/uploads/2013/09/index.html. Have fun! :)

P.S.: Ето и в подходящ за изтегляне вид: http://itgeorge.net/wp-content/uploads/2013/09/tron-game.zip

 

, , , , , , , ,

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>