Partajare de cod

Partajarea de cod are un rol crucial in realizarea proiectelor software de dimensiuni medii si mari, in special in cazuri in care mai multi programatori sau echipe participa la procesul dezvoltare/testare, iar codul unei parti influenteaza in mod direct o alta parte. Un alt aspect ce merita mentionat este si faptul ca prin partajarea codului se creeaza de obicei, intr-un fel sau altul, copii redundante ale codului, astfel ca in cazul defectarii echipamentului pe care este stocata o copie (e.g harddisk-ul laptop-ului lui Ionica) nu se pierde intreaga munca a echipei.

Directoare partajate

Solutiile de stocare bazate pe structuri de directoare partajate sunt avantajoase atunci cand se partajeaza fisiere editate rar sau la care accesul concurent este redus si conflictele se pot rezolva usor (e.g fisiere media, documente, arhive, imagini iso, etc).

Vom prezenta mai jos doua dintre cele mai populare sisteme de directoare partajate, care ofera servicii gratuite.

Google Drive

Google Drive ofera un serviciu de stocare de fisiere, intr-un sistem de foldere care pot fi partajate intre mai multi utilizatori. Interfata online ofera posibilitatea editarii concomitente a fisierelor, un utilizator putand sa urmareasca modificarile pe care le fac ceilalti utilizatori in timp real. Exista si o aplicatie desktop care face o copie locala a fisierelor, insa tratarea conflictelor (modificari concomitente de catre doi utilizatori) este limitata.

Daca doriti sa folositi Google Drive pentru proiectul vostru, este alegerea voastra, dar nu uitati sa ii oferiti acces si tutorelui vostru.

Dropbox

Dropbox ofera un serviciu de stocare de fisiere si este utilizat preponderent ca aplicatie desktop care face o copie locala a fisierelor. In cazul conflictelor (modificari concomitente de catre doi utilizatori) se pastreaza ambele variante ale fisierelor, fiind responsabilitatea utilizatorilor sa gestioneze aceasta situatie, sa faca merge intre cele doua versiuni. Dropbox ofera, de asemenea, si un istoric al versiunilor unui fisier.

Daca doriti sa folositi Dropbox pentru proiectul vostru, este alegerea voastra, dar nu uitati sa ii oferiti acces si tutorelui vostru.

Sisteme de versionare

Sistemele de versionare sunt construite in special pentru fisiere text care se modifica des si concomitent de mai multi utilizatori, facandu-le potrivite pentru partajarea de cod. Pe de alta parte, utilizarea lor este mai complexa si reprezinta un skill in sine.

Subversion (SVN)

Subversion (SVN) este un sistem de versionare, insotit de clienti in linie de comanda (svn) sau vizuali (TortoiseSVN) pentru diferite sisteme de operare. Fiecare contributor face modificari in sistemul local de fisiere si, atunci cand considera, poate urca (commit) noile versiuni pe un repository remote central sau poate citi (checkout) cele mai recente versiuni. In cazul in care doi contributori fac modificari concomitente (conflict), sistemul incearca imbinarea modificarilor (merge), dar nu reuseste intotdeauna. In cazul in care un merge esueaza, modificarile trebuie facute manual.

Tutoriale SVN:

Daca doriti sa utilizati SVN, vorbiti cu tutorele vostru, va poate gestiona un repository pe RiouxSVN

Git

Git, poate cel mai popular sistem de versionare, vine insotit de clienti in linie de comanda (git) sau vizuali (TortoiseGit, SourceTree) pentru diferite sisteme de operare. Spre deosebire de SVN, in Git exista un repository local si un repository remote central. Contributorul trebuie sa gestioneze modificarile cu repository-ul local (commit), dar si intre repository-ul local si cel remote (pull/push). De asemenea, exista posibilitatea crearii de branche-uri, adica versiuni paralele ale proiectului in intregime. Aceste elemente aduc posibilitati mai elegante de gestiune a codului si de rezolvare a conflictelor, dar aduc si o complexitate crescuta utilizarii, facandu-l de cele mai multe ori sa fie recomandat doar profesionistilor.

Nu va lasati insa descurajati! Precum ati observat, de la USO, lumea Open-Source favorizeaza git, asa ca va punem la dispozitie doua tutoriale foarte bune pe care le puteti parcurge pentru a va obisnui cu sistemul:

Daca doriti sa utilizati Git, va recomandam calduros sa incercati primul tutorial, datorita caracterului interactiv pe care il ofera (consola in care voi veti da comenzile). Cel de-al doilea tutorial include, pe langa elementele de baza, si concepte avansate pentru cei care vor sa aprofundeze mecanismele de finete ale protocolului.

Daca doriti sa utilizati Git, vorbiti cu tutorele vostru, va poate gestiona un repository pe GitLab

Discutii

Programe clasice pentru discutii

Generalitati: partajare de ecran

Skype si Hangouts va permit sa vorbiti online cu voce si/sau video. Ambele au cam acelasi set de functionalitati, oferind partajare de ecran (util ca ceilalti sa-ti vada ecranul cand vrei sa le faci un demo live). Skype insa trebuie downloadat ca aplicatie si creat un cont, in schimb hangouts functioneaza daca ai un cont google (nu neaparat gmail) direct in browser, deci poate fi mai comod. Ambele pot avea probleme audio/video sau intarzieri / probleme de conectivitate.

Platforme pentru dezvoltatori

Generalitati: integrare scrum, sprinturi

Ideea pe care se bazeaza scrum este impartirea muncii in iteratii mici si realizabile numite sprinturi, in care se scriu atat cod de dezvoltare cat si de testare a ceea ce se dezvolta. Astfel te asiguri ca partile mici pe care le adaugi iterativ de-a lungul sprinturilor sunt functionale. Vizionati acest video scurt pentru o prezentare mai detaliata.

WebStandup este o platforma foarte simpla in care membrii echipei au intalniri online in anumite zile la anumite ore si ofera informatii in legatura cu ceea ce fac; se raspunde la intrebari precum:

  • ce ai facut saptamana trecuta / saptamana asta pana acum?
  • ce ai de gand sa faci in continuare?
  • ce probleme ai?

Astfel fiecare din echipa va fi informat cu cine lucreaza la ce. Toate astea au un rol important in canalizarea corecta a eforturilor si rezultarea unui produs final mai bun si mai bine testat. E.g. poate va vine o idee de un test interesant ce l-ati putea genera legat de o anumita functionalitate. Acum ca stiti cine lucreaza la acea functionalitate, puteti vorbi direct cu responsabilii sau lasa comentarii asupra statusului, cu cine ce vrea sa faca in continuare, sau sa-l ajutati cu sugestii la ce probleme a intampinat.

Chat

HipChat si Slack sunt doi clienti de chat folositi preponderent de echipe pentru comunicare interna. Se organizeaza in canale de discutii (e.g. unul “general” unde se fac anunturi, unul numit “brainstorming feature release 2.0”, etc.). Ambele au functionalitati precum:

  • notificarea unuia sau a mai multor useri dintr-un canal
  • comunicarea in privat cu un singur utilizator

Slack si HipChat sunt competitori, asa incat ramane la latitudinea voastra sa-l folositi pe cel care va place mai mult, daca va place vreunul. Vezi "What are the pros and cons of Slack versus Hipchat? - Quora"

Gestiunea taskurilor

Platformele pentru gestiunea task-urilor permit distribuirea responsabilitatilor, estimarea efortului ramas si compararea efortului depus cu estimarile de pana acum.

Nu sunteti obligati sa folositi nicio platforma de gestiune a task-urilor, puteti obtine punctaj maxim la proiect si fara folosirea lor, dar sunteti liberi sa le folositi daca considerati ca va aduc un plus de eficienta.

Jira

Jira permite gestiunea task-urilor, distribuirea responsabilitatilor, estimarea efortului ramas intr-o interfata web bazata pe formulare si board-uri. Board-urile sunt modalitati de a prezenta task-urile introduse intr-o forma care face mai usoara spargerea task-urilor mari in taskuri mici si prioritizarea acestora. De asemena, Jira poate fi interfatat cu o solutie de versionare si/sau code review pentru a face update automat la statusul task-urilor, in functie de commit-uri. Va poate ajuta in faza de planificare si impartire a responsabilitatilor. Lung video cu ce poate oferi, dar merita din plin sa il urmariti. :)

Trello

Trello va permite colaborarea in cadrul unei echipe intr-un mod foarte usor prin distribuirea responsabilitatilor si comunicarea pe baza task-urilor. Puteti discuta in cadrul unui task pentru a gasi o solutie mai buna, puteti seta diverse etichete cat si unul sau mai multi responsabili de acele task-uri si deadline-uri pentru ele. Va poate ajuta in a tine evidenta in care se afla proiectul, ce a fost rezolvat si ce inca e nerezolvat. Va poate ajuta in faza de planificare si impartire a responsabilitatilor. Scurt video cu ce poate oferi.

sd-ca/colaborative.txt · Last modified: 2016/02/23 20:28 by cosmin_ioan.petrisor
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0