Chestionar Proiect Colectiv

    Semestrul acesta am avut o materie numită Proiect Colectiv, care a constat în dez­voltarea unui sistem soft care să gestioneze resursele unui de­par­ta­ment al unei facultăți.

    După ce au fost prezen­tă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 im­ple­men­tat, etc.

    În acest post voi încerca să fiu obiectiv și să prezint doar datele din chestionar (care conține și răspun­surile 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.

    Language
distribution

    Ce alte frame­workuri ați folosit? (UI, ORM, etc)

    Aici răspun­surile 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.

    Ma­jori­tatea frame­workurilor folosite au fost pentru UI (Swing, MetroFrame­work, 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 plat­formele 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 in­de­pen­dente 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 uti­liza­tori? Faaaace­booook.  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 nom­i­nal­izări
    • F1.5 - Importă orarul generat de aplicația software externă – 3     nom­i­nal­izări
    • F4.3 - Obţine calendarul ac­tiv­ităţilor didactice, şti­inţi­fice şi     ad­min­is­tra­tive (cu diferite posi­bil­ităţi de filtrare) – 3     nom­i­nal­izări
    • F2.3 - Defineşte evenimente ad­min­is­tra­tive (time frame, teams,     activities, tasks) -  4 nom­i­nal­izări
    • F2.2 - Defineşte granturi de cercetare (echipă, faze, activități) –     4 nom­i­nal­izări
    • F2.4 - Defineşte cercuri stu­denţeşti pentru anumite programe de     studio – 4 nom­i­nal­izări
    • F2.5 - Obţine rapoarte de alocare şi de folosire a resurselor,     pentru fiecare membru al de­par­ta­men­tu­lui, fiecare proiect/eveniment,     fiecare fază/activitate și fiecare resursă logistică – 7     nom­i­nal­izări
    • Și câștigă­torul este F1.4 - Importă state de funcţii generate de     aplicaţia software externă, cu 10 nom­i­nal­iză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 posi­bil­i­tatea de a da și un alt răspuns.

    Cele patru  sugestii au fost:

    • Opor­tu­ni­tatea 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 au­to­gen­er­ate).

    Și acum un mic plot, în scară log­a­r­it­mică, între numărul de linii de cod și nota obținută.

    Language vs grade
distribution

    // Pauză la obiec­tiv­i­tate

    După cum se vede în grafic, este o relație destul de liniară (la scară log­a­r­it­mică) î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 con­fir­marea ipotezei de la care am pornit când am început să fac ches­tionarul: Python is za best.

    // Punct de vedere obiectiv repornit.

    Până acum am analizat răspun­surile project man­ager­ilor. 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 În­reg­is­trarea 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 di­rec­toru­lui 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.  În­reg­is­trarea 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 con­sid­er­are 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: ur­mă­toarele două sunt Obţinere calendarul ac­tiv­ităţilor pentru un cadru didactic (7.61) și În­reg­istrează activităţi de cercetare des­făşu­rate (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 În­reg­is­trarea de resurse umane, și câte 10 grupe au luat peste 9.50 la Adăugare grant cercetare, Adăugare eveniment ad­min­is­tra­tive, Adăugare cerc de studenți și Trans­mitere 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 ac­tiv­ităților didactice etc (pentru public) (3 grupe).