Open Source | Strumenti

Crea un gruppo di lavoro a distanza con strumenti gratuiti e open source

marzo 3, 2010 by Giuseppe Maldarizzi | 0 Commenti

Le distanze tra le persone si stanno sempre più riducendo grazie alle nuove tecnologie degli ultimi decenni. Una lettera che prima impiegava giorni oggi ci mette un istante ad arrivare a destinazione grazie alle mail e in qualsiasi momento è possibile contattare chiunque con l'aiuto di telefonini e chat. E' un mondo in continuo movimento dove si fa tutto restando fermi.

Ma come si crea un team di lavoro a distanza? E con quali strumenti?

Ecco alcuni suggerimenti utilizzando solo prodotti gratuiti e open-source e dividendo in fasi il processo di lavoro a distanza

1 - Il contatto

Lavorare a distanza vuol dire prima di tutto non avere nessun contatto fisico con il proprio collaboratore che potrebbe trovarsi dall'altra parte del mondo con un diverso fuso orario.
Uno dei maggiori problemi è quello di fissare dei momenti precisi durante la giornata che vadano bene per tutti per fare analisi, un po' di brainstorming o semplicemente il punto della situazione. Diventa quindi molto difficile organizzarsi quando il team è composto da più di 3 persone che durante la giornata fanno anche altro (questo è il bello del lavorare a distanza!).

Come fare? Il mio consiglio è quello di dividere il gruppo in diversi sottogruppi in base al proprio ruolo nel team e al lavoro da svolgere. Faccio un esempio:

Supponiamo che il gruppo sia composto da 1 TL (Technical Leader), 3 sviluppatori e 2 grafici che devono sviluppare un applicazione web. Lo divideremo in:

- Sottogruppo1: 1 sviluppatore si occuperà del progetto "core" (livello di logica del progetto)
- Sottogruppo2: 1 sviluppatore e 1 grafico lavoreranno sul backend (area riservata)
- Sottogruppo3: 1 sviluppatore e 1 grafico lavoreranno sul frontend (area pubblica)

In questa situazione bisogna fare in modo che il TL rimanga in contatto con ogni sottogruppo in modo indipendente per monitorare il progresso dei lavori, rilevare rischi su eventuali ritardi e gestire le tempistiche. L'ordine dei lavori non può essere stabilito a priori, ma dipende da progetto a progetto. Se parliamo di programmazione ad oggetti - ad esempio - possiamo come prima cosa tracciare le interfacce dei nostri oggetti (o modelli) in modo che tutti possano avere un'idea su quale sarà il "livello logico finale" anche se il core non è stato ancora sviluppato.

Periodicamente bisognerà cercare di riunire tutti in un'unica conference call per fare un punto generale sul progetto o per comunicare importanti decisioni.

Lo strumento che consiglio per accorciare le distanze è sicuramente Skype che include videoconferenza, permette di inviare file, condividere link e di lavorare in desktop remoto osservando reciprocamente i propri schermi dei computer.

2 - La gestione dei progetti

E' importante che ogni componente del gruppo di lavoro sia indipendente ma allo stesso tempo sia al corrente degli sviluppi del progetto, di quali sono i task da seguire e di quali potrebbero essere i rischi affrontando determinate decisioni.

Per far ciò esistono diverse applicazioni di project management: dalle applicazioni desktop Open WorkbenchKPlato, GanttProject e framework Web-based come PHProjekt, DotProject e PHPCollab.

Grazie a questi applicativi è possibile gestire le attività attraverso un diagramma di Gant ossia una rappresentazione grafica dell'arco temporale del progetto e delle attività da svolgere in modo da determinare in qualsiasi momento se i tempi di sviluppo sono rispettati.

3 - La gestione dei clienti

Bisogna tenere anche traccia delle relazioni con i clienti finali ossia i finanziatori veri e propri del progetto. Vengono in aiuto strumenti CRM (Customer RelationShip Management) per condividere le informazioni commerciali e non con tutti gli addetti al lavoro.

Esistono diversi strumenti CRM, io consiglio vTiger: è web-based e quindi accessibile a tutti gli utenti, open source, modulare e multi-lingua poichè è sviluppato da una community internazionale che offre il suo supporto per qualsiasi problema.

4 - Gestire e condividere i sorgenti

Questo è uno degli aspetti più importanti quando si parla di sviluppo software e bisogna scegliere con attenzione il proprio strumento di code repository. Sicuramente quello che consiglio è di creare una VPN - Virtual Private Network - dando accesso a tutti i collaboratori. La VPN infatti estende la connettività geografica creando una rete globale chiusa ed ogni utente può liberamente accedere ai documenti condivisi come se si trovassero a lavorare tutti nello stesso ufficio.

Al codice sorgente è necessario affiancare un sistema di controllo versione che si occuperà di gestire le diverse versioni del software che si andrà a sviluppare permettendo di recuperare in qualsiasi momento le versioni precedentemente sviluppate e di mettere in piedi un vero e proprio sistema di integrazione dei sorgenti tra le diverse risorse.

Tra i più famosi software di controllo versione c'è sicuramente SVN (Subversion) - successore del vecchio CVS (Concurrent Versions System) - e, per chi non ama i programmi a linea di comando, esiste la sua versione grafica chiamata TortoiseSVN

5 - Test e Deploy

Ultimo e non meno importanti sono la fase di test e la messa in produzione (deploy). Uno dei problemi più frequenti è quello di rendersi conto, nello stadio finale del progetto, che l'applicativo si comporta diversamente quando lo testiamo da un ambiente diverso da quello locale come ad esempio potrebbe essere un dominio di hosting dove non possiamo agire dal punto di vista sistemistico. Il problema diventa maggiore in un gruppo di lavoro dislocato e dove ognuno ha un proprio sistema di configurazione locale.

Il mio consiglio è quello di creare e configurare tre diversi ambienti con identiche caratteristiche tecniche: uno di staging da usare durante lo sviluppo, uno di test e uno di produzione. Il cliente avrà accesso solo all'ambiente di test e a quello di produzione. L'ambiente di staging verrà utilizzato da ogni collaboratore per poter testare la propria parte e capirne l'interazione con il codice degli altri.

Sempre facendo riferimento a progetti web, ricordate di testare il vostro sito/applicativo sui diversi browser poichè ognuno ha le sue caratteristiche ed un modo proprio di interpretare i CSS. Un recente e rivoluzionario sistema di virtualizzazione via web realizzato da Spoon permette di eseguire i test attraverso il browser su qualsiasi piattaforma dal PC al MAC, dai palmari ai telefoni cellulari di ultima generazione.

A questo indirizzo http://www.opensourcetesting.org/functional.php trovarete invece una lista di tool open source per eseguire test funzionali

 

Aggiungi commento


(Visualizza la tua icona Gravatar)

  Country flag