Py@Codette – bazele programării and more

Dacă ar fi să vorbesc despre cele mai fresh momente din acest an, cu siguranță mi-ar zbura gândul la cele 3 workshop-uri Py@Codette.

De ce spun asta? Pentru că fiecare ediție m-a încărcat cu energie, mi-a oferit oportunitatea de a cunoaște persoane creative, cu o sete incredibilă de cunoaștere și cu o atitudine de luat drept exemplu. Pentru că aici am câștigat prieteni, am descoperit și redescoperit oameni talentați și pasionați.

Conștientă că am început cu concluzia, am să merg către cursul normal pe care ar trebui să-l aibă povestea și am să vă explic ce este Py@Codette. Scurt și la obiect: un workshop unde învățăm să programăm (în Python), mâncăm plăcinte, legăm prietenii și ne distrăm cât cuprinde.

Motivația pentru un astfel de workshop a venit dintr-o observație pe care eu am făcut-o din discuțiile cu copiii de liceu și școală generală cărora le sunt sau le-am fost trainer. Mai mult decât atât, eu însămi am venit în capitală direct de pe băncile unui liceu de informatică. Întotdeauna am considerat că motivul pentru care atâția elevi ocolesc zona tehnică atunci când aleg o universitate stă cumva în inaccesibilitatea pe care aceștia o văd în materia numită informatică. Acest lucru se întâmplă deoarece programa școlară își structurează orele de informatică în jurul struțo-cămilei C/C++: nici C (“chior”) pentru că folosim particularități ale C++ – ului, dar nici C++ pentru că nu prea te învață nimeni OOP în liceu și nici de ce este atât de awesome acest limbaj(C++). Asta face ca elevul să fie ușor confuz încă de la început despre ce limbaj de programare folosește el de fapt. Pe urmă, C este un limbaj cu extreeeem de multe subtilități și hop-uri de stăpânit. Deeeci… ce-o să poți să faci cu el în cele câteva ore pe săptămână? Păi… calculăm niște sume, un Fibonacci, o înmulțire de matrici. Really? Cum poate asta să atragă atenția unui licean “average”? Ca să nu mai zic că dacă ești un pic mai slab de înger, după primele 2-3 seg fault-uri depui armele fără ezitare și pui mâna pe o carte de drept (nu zic… și de avocați e nevoie! Dar eu acum pledez pentru tabăra mâncătoare de pizza și făcătoare de bug-uri so.. am să continui fără scrupule).

Acestea fiind spuse, m-am gândit la un format de workshop în care programarea să fie transmisă într-o formă accesibilă unui începător. Mai mult decât atât, pentru a spori motivația de a descoperi mai multe și pe cont propriu, ar trebui, ca la finalul zilei să avem și un rod practic al muncii depuse și al celor învățate (un joc, o aplicație, etc. – ceva palpabil, vizual). Ideea o aveam. Mai rămâneau doar 100 de lucruri de făcut și stabilit pentru a-i da viață. Astfel.. M-a lovit prima întrebare: “Ce limbaj de programare vom folosi?” Răspunsul a venit rapid, căci știam că e ușor de învățat și totuși extrem de puternic și foarte folosit: Python. M-am gândit că eu, dacă aș vrea vreodată să discut despre programare cu un începător, aș alege Pyhton(eza) ca și limbaj în care să ne înțelegem. De ce? Pentru că nefiind complicat ca și sintaxă, și oferind o flexibilitate destul de mare, focus-ul nu mai pică pe cum scrii codul ci pe logica pe care urmează să o dezvolți în program, pe arhitectura produsului final.  Ba chiar mai mult: există foarte multe API-uri scrise în Python și care se integrează minunat cu acesta care-ți pot ușura considerabil munca de dezvoltare a unei aplicații scutindu-te de reinventarea semi-inutilă a unor roți. De la funcții ajutătoare optimizate pentru calcule matematice stufoase și până la funcții ce permit dezvoltarea unor interfețe grafice complexe, tu trebuie doar să gândești aplicația și să știi ce rotițe deja creeate să folosești pentru a face ca lucrurile să meargă. Saaau, dacă totuși nu-ți sunt încă familiare rotițele astea după nume… poți oricând să le cauți pe net :))

Odată ales limbajul, am încropit câteva materiale pentru un episod “Pilot” de workshop de Python – bazele programării plus două jocuri-proiect. Nu știam cât de potrivite sunt acestea pentru un licean (cineva care vede pentru prima dată sintaxă de Python). Așa că îmi trebuiau niște adolescenți la început de drum gata să-nvețe ceva (nou) într-ale programării. Și aceștia nu au întârziat să apară: trei elevi de clasa a noua mi-au acceptat invitația de a participa la câteva ședințe în acest scop. Programa făcută de mine a trecut testul. Nu cu notă maximă ce-i drept, dar am îmbunătățit-o împreună cu cei trei “minioni” și am decis să facem ceva cu ea la o scară mai mare; la urma urmei.. aveam material cât de-un workshop! Am propus formatul discutat până acum în cadrul unei întâlniri Codette, iar ideea a primit feedback pozitiv so… am continuat prin a căuta o mână de omuleți puși pe treabă, pentru a pune în scena realității povestea asta cu workshop-ul de Python care momentan era doar o înșiruire de cuvinte pe o bucată de Google Doc 🙂

Așa le-am cunoscut pe Diana Marusic, Irina Bulgaru și Mirela Bou – serioase, puse pe fapte mari și dornice să ajute și să învețe (mai mult) Python pentru a da o mână de ajutor. Între timp, ca o dovadă a muncii depuse și a seriozității lor, cele trei au ajuns și speakeri în cadrul proiectului.

Apoi ni s-au alăturat senioarele Georgiana Chelu, Giorgiana Vlăsceanu și Daniela Chivu. Acestea din urmă au făcut o treabă excelentă (și era știut încă de la început că așa avea să fie, dată fiind experiența lor de teaching/vorbit în public). La junioare am avut emoții pe motiv că nu le cunoșteam și poate și pentru că erau și mai mici ca vârstă/poate chiar și ca experiență. Dar s-au ridicat peste nivelul așteptărilor și au făcut o treabă foarte bună. Ca și traineri juniors, deși nu au fost (încă) puse în postura de speakeri le-am mai avut pe Maria Anca Băluțoiu, Iuliana Brânzoi, Bianca Iancu, Corina Tudorache, Silvia Bălan (trainer și participant), Andreea Bobe și Ștefan Haiducu (aceștia doi din urmă fiind și participanții la ședințele de testare și îmbunătățire a programei). Silvia Stegaru și, în rest, cam toate persoanele amintite mai sus au ajutat și cu partea de organizare.

Acum că am cunoscut povestea și echipa să vedem cum a decurs, de fapt, primul workshop Py@Codette? Aș spune mai bine primele workshop-uri, căci am avut 2 întâlniri și discuții pe aceleași materiale. De ce? Fiindcă numărul de înscrieri la workshop-ul “pilot” a depășit cu mult numărul de participante pe care le puteam accepta și am dorit să oferim o a doua șansă și să ne cunoaștem cu încă pe atâtea liccene și studente-n primii ani cu aceeași sete de cunoaștere care ne-a inspirat la prima ediție. Primul workshop din serie își propune să prezinte bazele programării într-o manieră (Python-ească) cât se poate de accesibilă. Sunt 3 “speakeri” cu moduri diferite de predare, de a transmite informația și de a îmbrăca niște concepte generale din știința “scrisului de cod” în pielea de șarpe a limbajului de programare ales. Odată stabilit un punct de sprijin, urmează lucrul la proiect: în primul workshop  – x&0, iar în cel de-al doilea Hangman. Astfel, ne asigurăm că le trezim interesul pentru a descoperi și pe cont propriu ce alte lucruri interesante se pot face în Python/folosind cunoștințe de programare. Un adaos la acestea ar fi pauzele în care mâncăm pizza, sandwich-uri, fructe, plăcinte (semnătura worksop-ului – am fi vrut ca Py@Codette să  aibă și un pic de Pie@Codette :)) deci am adus asta la workshop) și alte bunătăți.

Py@Codette - Aprilie 2017-194

Py@Codette v2 a venit cu materiale și mai interesante și interactive concepute de către Georgiana Chelu, Irina Bulgaru și subsemnata cu mâinile pe taste în timpul “conceperii” acestui articol 🙂  Scopul acestei ediții a fost acela de a exemplifica utilizarea unui API și boost-ul de putere oferit unui limbaj de programare de existența a cât mai multor API-uri implementate folosindu-l sau care se pot interfața ușor cu acesta. Astfel că, la Py@Codette v2, participantele au învățat cum să folosească Facebook API-ul pentru Python. Mai pe românește: au căpătat skill-ul de a-și posta pe propria pagină de Facebook sau de a comenta fără ca măcar să deschidă browser-ul sau aplicația de pe telefon… ci rulând un simplu script de Python. Aici partea de hands-ons cât și cea de proiect se concentrează pe exersarea diverselor task-uri ce se pot automatiza ușor în Python: de la a descărca poze de pe xkcd sau Pinterest și până la a-ți spama grav prietenii de pe Facebook :)) Asta este partea amuzantă. Dar să ne gândim la utilitate: vrei de exemplu să share-uiești/faci reclamă la un post/eveniment al organizației din care faci parte în toate grupurile de care aparții, sau vrei să automatizezi procesul de a face urări prietenilor sărbătoriți în fiecare zi, sau să prelucrezi date obținute de pe profilul prietenilor tăi. Folosind un pic de automatizare totul devine mai fun și mai simplu. Partea a doua a Py@Codette v2 ne-a introdus în arta de a da click-uri, deschide aplicații din GUI și a le utiliza cu ochii-nchiși și mâinile legate la spate.

Gândește-te cum te pot ajuta acest gen de cunoștințe! Ai un job plictisitor care implică acțiunea repetitivă de a testa o aplicație GUI și ai de dat click-uri după un anumit pattern. Well… enjoy a coffee and let the script do that for you. Apoi, partea a treia a aceluiași workshop ne-a oferit o vedere de ansamblu asupra a ceea ce putem face dpdv procesare de imagini folosind funcții deja implementate în PIL – un modul de Python optimizat pentru astfel de task-uri. Vrei să “brand-uiești” toate imaginile dintr-un folder cu un logo și nu vrei să faci asta “de mână” sau nu ai un profil de Lightroom sau licență de Photoshop? Noi am oferit soluția. Cum să-ți reunești pozele  în orice format de colaj? Do a script in Py și n-o să mai depinzi de aplicațiile online care nici nu-ți oferă cine știe ce flexibilitate la partea asta. Saaau… think big: fă-ți propriul tău tool de editare de imagini!

_DSC0411

Despre Py@Codette v3 pot să vă spun doar că este work in progress, iar tematica sa o veți descoperi atunci când vom avea totul pus la punct.

Dar pot încheia acest articol cu atmosfera generală de la workshop-urile de Py de până acum pe care o puteți descoperi imortalizată în pozele din albumele de pe pagina noastră de facebook, pentru care puteți accesa URL-urile de mai jos:

Un insight în ceea ce privește programa și materialele puteți descoperi pe repo-ul Py@Codette din git-ul Codette:

Spread the love