Chestionar Proiect Colectiv
Semestrul acesta am avut o materie numită Proiect Colectiv, care a constat în dezvoltarea unui sistem soft care să gestioneze resursele unui departament al unei facultăți.
După ce au fost prezentările tuturor grupelor, am făcut un sondaj cu Project Managerii tuturor grupelor de la secția Info română (mai puțin 223/1 care nu mi-a răspuns) și pe cine am mai prins de la inginerie și info-engleză cu diferite întrebări ca să văd ce abordare au avut diferitele grupe, ce limbaje sunt mai populare, care cerințe au fost mai greu de implementat, etc.
În acest post voi încerca să fiu obiectiv și să prezint doar datele din chestionar (care conține și răspunsurile mele). Într-un post de sfârșit de an poate voi elabora mai mult cu opinia mea despre această materie.
Ce limbaj de programare ați folosit?
Java domină puternic, cu 9 grupe lucrând cu el. Al doilea este C#, folosit de 6 grupe. Pe al treilea loc este PHP, folosit de o grupă jumate (una din grupe a lucrat cu un combo C# + PHP). Mai este un limbaj, folosit de o singură grupă, Python.
Ce alte frameworkuri ați folosit? (UI, ORM, etc)
Aici răspunsurile sunt mai neclare, pentru că mulți deși au folosit C#, nu au scris la framework .NET, și mă îndoiesc că au folosit C# pe alte platforme, iar mulți au uitat că Swing îi tot un framework.
Majoritatea frameworkurilor folosite au fost pentru UI (Swing, MetroFramework, Twig, jQuery) și doar 5 grupe au declarat că au folosit vreun ORM.
Din aceste două întrebări ne putem da seama cam care au fost platformele pentru care s-a dezvoltat: 3.5 grupe au făcut aplicații web, iar 13 aplicații desktop. Cele făcute în C# rulează doar pe Windows (6), iar restul sunt cam independente de platformă, mai ales cele Java, dar și Python și PHP se pot porta cu maxim modificări triviale.
Ce sistem de versionare ați folosit?
Există 3 grupe cu un răspuns șocant: niciunul.
GitHub a fost folosit de 5 grupe, BitBucket de una singură, CodePlex încă una, TFS tot de una și SVN de 6 grupe, din care 5 au folosit serverul oferit de facultate. C#-iști sunt cei mai variați.
Ce ați folosit pentru issue tracking/discuții legate de proiect?
Ghici ce site are 1 miliard de utilizatori? Faaaacebooook. 12 grupe au folosit exclusive Facebook, câte o grupă Trello, BitBucket issues, GitHub Issues sau grup pe Yahoo. Și o grupă a zis că „Intalniri pentru lucru la proiect”.
Câți membri a avut grupa ta?
În medie fiecare grupă a avut 11.94 membri. Minimul a fost 4 (o singură grupă), iar cele mai mari grupe au avut 15 persoane (3 grupe).
Câti membri chiar au contribuit la cod?
Media pe grupe a fost 6.64, deci cu ceva mai mult de jumătate din membri chiar au scris cod. Minimul a fost 1 (2 grupe), iar maximul a fost 13 (1 grupă).
Exprimate ca procentaje, aceste numere se transformă în 54% au lucrat în medie, minimul a fost că 10% să lucreze doar, iar maximul a fost 100% (o singură grupă).
Câti membri au lucrat ceva?
Aici situația e un pic mai bună, în medie 9.11 persoane lucrând. Minimul e tot 1 (de data aceasta la o singură grupă), iar maximul e de 15 (la două grupe).
Ca procentaje, media este de 74.41%, iar acuma 100% se găsește la 6 grupe.
Ți s-a părut că ii prea complexă aplicatia pentru un semestru?
6 răspunsuri de Da, 11 de Nu.
Care cerințe ți s-au părut mai dubioase? (top 3)
Cele mai alese 8 cerințe sunt:
- F2.1 - Defineşte programe de studiu la nivel de licenţă şi master - 3 nominalizări
- F1.5 - Importă orarul generat de aplicația software externă – 3 nominalizări
- F4.3 - Obţine calendarul activităţilor didactice, ştiinţifice şi administrative (cu diferite posibilităţi de filtrare) – 3 nominalizări
- F2.3 - Defineşte evenimente administrative (time frame, teams, activities, tasks) - 4 nominalizări
- F2.2 - Defineşte granturi de cercetare (echipă, faze, activități) – 4 nominalizări
- F2.4 - Defineşte cercuri studenţeşti pentru anumite programe de studio – 4 nominalizări
- F2.5 - Obţine rapoarte de alocare şi de folosire a resurselor, pentru fiecare membru al departamentului, fiecare proiect/eveniment, fiecare fază/activitate și fiecare resursă logistică – 7 nominalizări
- Și câștigătorul este F1.4 - Importă state de funcţii generate de aplicaţia software externă, cu 10 nominalizări
De la actorul „Cadru didactic” nu a fost nicio cerință votată în top, în schimb de la „Director” aproape toate au fost votate în top, cu precădere definirea de programe și evenimente noi.
Ce ți-ar fi plăcut să fie diferit?
La această întrebare au fost 4 sugestii și posibilitatea de a da și un alt răspuns.
Cele patru sugestii au fost:
- Oportunitatea de a-ți alege propria echipă (să nu fim grupați după grupele de la facultate – aleasă de 6 persoane
- Problema mai draguță – 10 persoane
- Să se facă în anul 3, după ce am făcut deja ISS – 6 persoane
- Evaluări în mai multe etape (la fiecare iteratie) – 4 persoane
O sugestie dată de 3 persoane a fost ca toate proiectele să fie evaluate de către aceeași comisie. Alte sugestii dese au fost ca să se dea mai multe detalii despre problemă, respectiv „să nu fie o problemă gândită in 15 min”. Două persoane au sugerat ca profesorul să fie team lead.
Câte linii de cod a avut proiectul tău?
În medie, 10684 (estimare destul de brută, deoarece câțiva nu au răspuns cu număr, și unii au dat doar un interval gen 5-6000). Minimul a fost 514, iar maximul 29000 (bănuiesc că aici au fost numărate și linii de cod autogenerate).
Și acum un mic plot, în scară logaritmică, între numărul de linii de cod și nota obținută.
// Pauză la obiectivitate
După cum se vede în grafic, este o relație destul de liniară (la scară logaritmică) între numărul de linii scrise și nota obținută. Două excepții: Python, care a obținut cea mai mare notă, cu al doilea cel mai mic număr de linii de cod și un C#, cu cele mai puține linii de cod și a doua cea mai mică notă.
Și așa am obținut confirmarea ipotezei de la care am pornit când am început să fac chestionarul: Python is za best.
// Punct de vedere obiectiv repornit.
Până acum am analizat răspunsurile project managerilor. Să vedem acuma ce ne zic notele obținute pe fiecare cerință și actor (am notele doar de la secția română).
La capitolul cerință cea mai puțin/prost făcută câștigătorul coincide cu cel dat în chestionar: Importarea statelor de funcții, cu nota medie fiind 3.97. Aproape de ea îi Obținerea de rapoarte, cu 5.45. Al treilea ocupant al podiului este Importarea de orare, cu 6.06.
Cel mai des/bine făcută cerință este Înregistrarea de resurse umane, cu o medie de 9.31. Este singura cu o notă de peste 9. A doua este Definirea de granturi de cercetare, cu 8.36, iar a treia este Transmite directorului cerere de crearea a unor proiecte noi, cu 8.25.
Pentru fiecare cerință este cel puțin o grupă care nu a făcut-o deloc (a luat 1). Importarea de state nu a fost făcută de 11 grupe, importarea de orare de 6 grupe și obținerea de rapoarte a fost omisă tot de 6 grupe. Înregistrarea de resurse umane, adăugarea de programe de studii noi și adăugarea de granturi de cercetaresunt singurele care nu au fost făcute de doar câte o echipă.
Calculând mediile pentru cerințe, fără a lua în considerare grupele care nu au făcut nimic, în top tot Importarea de state este, cu media ajustată de 6.95, iar pe doi rămâne obținerea de rapoarte cu 7.12. Apoi se schimbă situația: următoarele două sunt Obţinere calendarul activităţilor pentru un cadru didactic (7.61) și Înregistrează activităţi de cercetare desfăşurate (7.52).
Fiecare cerință a fost făcută perfect de cel puțin o grupă (a luat 10). 16 grupe au primit peste 9.50 la Înregistrarea de resurse umane, și câte 10 grupe au luat peste 9.50 la Adăugare grant cercetare, Adăugare eveniment administrative, Adăugare cerc de studenți și Transmitere cerere de creare proiect nou. Cele mai puține note de peste 9.5 au fost obținute de către Importare state funcții (2 grupe) și Obține calendarul activităților didactice etc (pentru public) (3 grupe).