Primul meu laborator de PW

După cum am mai scris aici, semestrul ăsta încerc și eu marea cu degetul și sunt asistent la o materie care se numește Programare Web. Pentru cine mă știe, știe că e straigh up my alley, pentru că asta fac de muuuultă vreme, și am o oarecare experiență în domeniu. Prima experiență interesantă a fost când a trebuit să susțin eu laboratoare în fața studenților și să-i sprijin în timp ce se obișnuiau cu PHP, și alte tehnologii web. Dar pe departe mai dificil (dar nu mai puțin interesant) mi-a fost să pregătesc eu un laborator.

PW este o materie nouă, se face pentru prima oară acum, și nu există materiale existente pentru laboratoare (sau pentru curs, for that matter). Deși avem stabilită o tematică generală, în funcție de nivelul cu care se avansează la laborator și de feedback-ul de la studenți, tematica de laborator se mai schimbă. Anyway, cum eu sunt mai proaspăt în treaba asta cu laboratoarele decât colegul meu, Matei, a ajuns acum, în săptămâna a 6-a, rândul meu să inventez un laborator. Și n-a fost simplu.

Partea teoretică merge repede, mai ales dacă știi despre ce e vorba. Dar când am ajuns la partea practică, la partea de ”cum îi fac eu pe oamenii ăștia să aplice cât mai mult din partea teoretică în cod, dar să le ajungă 2h și să nu fie PREA simplu pentru ei”, m-am lovit de un perete. Am văzut studenți care au trecut în 5 minute peste probleme care mie mi-au luat (e drept, acum mai mulți ani) zile întregi să le rezolv. Dar am avut și surpriza ca mulți studenți să se blocheze în chestii elementare. Concluzia de aici e că, după ce ai lucrat mare parte din viață în Web, nu mai știi ce e greu și ce nu e greu pentru un începător, pentru că fiecare vine cu alt soi de pregătire.

Am făcut până la urmă un compromis între ceva dificil și ceva prea simplu, și am pus ca task, în mare, utilizarea unei clase Template (care trebuie doar periată puțin, pentru overloading) pentru separarea codului HTML de cod PHP (asta a fost o întrebare la mai mulți studenți care s-au apucat de teme). Sunt foarte curios care or să fie feedback-ul despre laborator. Deja unul dintre studenți m-a tras de urechi (și are toată dreptatea) că nu am pus laboratorul suficient de repede pe site. Data viitoare știu să mă apuc mai din timp.

Proiecte ProgramareWeb

Am mai scris mai demult că ajut la câteva laboratoare de ProgramareWeb semestrul ăsta. Well, o să încerc să revin odată și odată cu detalii, am avut doar experiențe plăcute până acum la laborator, am râs și am văzut mulți studenți extrem de apți, este o experiență foarte interesantă pentru mine :).

Studenții care au PW trebuie să își aleagă o temă de proiect, și au o mână de teme din care pot să aleagă, dar pot (și sper eu se simt încurajați) să-și inventeze teme proprii. Deși știu că multă lume și-a ales materia asta ca să se scape de-o grijă (pentru că profesorul nu are reputație de baubau) am fost foarte plăcut impresionat de unele din temele pe care studenții care m-au contactat până acum le-au propus. Le voi cere la un moment dat acordul să scriu și aici despre ele, și cred că în cazul în care se vor ocupa de ele vor ieși niște aplicații web nu doar mișto ca idee, dar și utile înafara ariei „academice”.

Eu am descoperit în web un mediu excelent de exprimare a ideilor proprii (și aici nu mă refer la blog-uri, ci la idei în modul general, aplicații, concepte …) în special din cauză că timpul de la concept la implementare este foarte scurt, uneori doar câteva ore. Îmi puneam problema ieri că poate o mare parte dintre studenții care chiar sunt interesați de dezvoltarea ideilor lor nu au realizat asta (parțial pentru că nu le-am spus niciodată, parțial pentru că nu au fost suficient de curioși încât să încerce :) ) și mă gândeam chiar că din cauza abordării minimaliste de genul „ce-mi iasă mie din asta” sau, mai rău „dacă nu primesc puncte pe asta de ce să mă chinui” unii dintre ei s-ar putea să piardă ceva nu doar interesant, ci și util.

Printre alte idei mai bune sau mai proaste pe care le-am avut, mă gândeam inclusiv să le oferim un spațiu în care nu doar să își testeze aplicațiile (pentru că pot face asta pe webserverul de test de la ei de pe comp) ci să poată să arate altor colegi ce au reușit să facă și să poată discuta cu ei despre (și cu noi) probleme pe care le-au întâlnit. N-ar fi ăsta un super exemplu de Web2.0? O să reflectez un pic asupra ideii ăsteia, care se oprește de fapt doar dintr-o lipsă momentană de resurse (cum ar fi server și timp :P).

sampling teaching

Acum ceva mai bine de o săptămână m-a sunat unul dintre profesorii mei de la facultate, cu care am mai colaborat pe diferite chestii, să mă întrebe dacă nu sunt interesat să țin câteva laboratoare la o materie numită Programare Web. Nu m-am gândit prea mult atunci, dar am acceptat. În consecință, acum sunt asistent la Programare Web, o materie de anul 4, specializarea C5, la dl. prof. Florin Rădulescu și la Ciprian Dobre.

Am de ținut 3 laboratoare, celălalte 7 sunt susținute de colegul meu (mai experimentat), Matei Popovici. Pentru că nu am mai făcut niciodata așa ceva, să fiu sincer, am fost cam morcovit pentru prima „reprezentație”:), dar totul a decurs ok și toți cei  ~50 de studenți (! – deh, luni or tras chiulu de la tot oricum :P) de la primul laborator de marți au supraviețuit :P

Sunt câteva lucruri pe care le văd pozitive în treaba asta cu laboratoarele, și anume că ăsta fiind primul an în care se ține Programare Web, am oportunitatea să mă implic activ în dezvoltarea unor laboratoare interesante despre ceva cu care lucrez zilnic și despre care am strâns destul de multe informații utile și practice de-a lungul anilor. O să încerc să postez aici despre dificultățile care apar când lucrezi la o tematică (ce cuvânt de „lemn”!) de laborator de la 0, și despre reușitele noastre în domeniu :).

Îi invit, de asemenea, pe acei prieteni care citesc pe-aici și lucrează în bresle conexe aplicațiilor web, să vină cu idei și propuneri de ce cred ei că ar trebui ca tinerii absolvenți de facultate ar trebui să știe despre aplicații web. În principiu, ce ne-am propus până acum este să încercăm să încurajăm niște bune practici pentru dezvoltarea unor aplicații web scalabile, secure și robuste. Aplicațiile de laborator o să le facem în PHP (deja aud criticile :P), și ne-am propus să discutăm și despre interfețe, și despre funcționalitate javascript, și despre arhitectura aplicațiilor web în general. În plus, o să dedicăm două laboratoare securizării.

Ce mi se pare mie mișto este că oamenii au de făcut un soi de proiect, constituit din 4 teme care se construiesc una peste cealaltă, și la laborator învață chestii utile pentru temele respective. Pașii sunt aceeași, dar fiecare lucrează pe tema de proiect ce și-o ales-o, și la sfârșit ar trebui să aibă o aplicație web completă și funcțională.

Later edit: se pare că popularitatea mea e în scădere, vineri am avut doar doi studenți la laborator :P