L‘anno scorso avevamo categorizzato i diversi interventi visti a Better Software in quattro grandi aree tematiche: Social, Mobile, Open, Agile. Quest‘anno a farla da padrone sono state le tematiche legate allo sviluppo agile, con interventi variegati nel tono e nella portata, e al mondo mobile. Non sono mancati interventi legati al design web e UX e all‘architettura dell‘informazione, ma l‘impressione è stata che gran parte della community presente fosse primariamente interessata al mondo lean/agile.
Better Software: l’edizione 2011
Anche quest’anno abbiamo partecipato alla conferenza Better Software, giunta alla sua terza edizione e tenutasi in un afoso fine giugno a Firenze. I lettori che non sanno cosa è Better Software e chi la organizza possono visitare il sito di questa conferenza [1] o leggersi i primi paragrafi del resoconto pubblicato lo scorso anno [2]. Per i più pigri, comunque, ripetiamo in breve che Better Software è una due giorni molto ben organizzata da Develer s.r.l. (gli orari sono rispettati in maniera tassativa, gli interventi si susseguono in un perfetto equilibrio di attività e pause), dedicata a vari argomenti inerenti il mondo dello sviluppo software, e animata da uno spirito molto informale (nessun rigido “dress code”, tipologia di interventi molto lontana da certi rigidi stilemi aziendalistici).
Non è nostra intenzione fare un resoconto “cronografico” dell’evento: il programma disponibile sul sito di Better Software riassume in maniera fedele quello che è accaduto; a questo va aggiunto il fatto che, nei prossimi mesi, verranno pubblicati sul sito di Better Software [1] i video degli interventi e che, in molti casi, le slide dei diversi autori sono già disponibili in rete (tanto per cominciare, date un’occhiata alla pagina [25] di Better Software su Facebook). Quello che ci interessa, in una sorta di follow-up di questa conferenza, è fare alcune riflessioni, sia generali, sia di ambito più specifico sui singoli interventi, per fissare il senso di quello che è stato detto durante Better Software. Non seguiremo pertanto un ordine cronologico ma ci concentreremo su gruppi di interventi affini per tematica e argomento. Chiaramente, poi, parleremo diffusamente solo di alcune tra le numerose presentazioni cui abbiamo assistito, ripetendo ancora, fino alla noia, che nei prossimi mesi gli intereventi filmati saranno resi disponibili sul sito della conferenza.
Interactive
Uno dei limiti riscontrati lo scorso anno era stato quello della concomitanza di numerosi interventi nello stesso spazio temporale, il che aveva finito per penalizzare alcuni relatori e soprattutto molti partecipanti, costretti a rinunce “dolorose” tra due o tre argomenti che avrebbero voluto seguire e che invece si svolgevano contemporaneamente.
Quest’anno la conferenza si è svolta sempre su tre binari paralleli, ma uno di essi è stato decisamente meno fitto di interventi, si è svolto in un’aula più piccola, e ha seguito modalità particolari, improntate all’interazione stretta tra “relatori” e partecipanti al “seminario”: non a caso si trattava del binario Interactive in cui venivano effettuati negli interventi che richiedevano necessariamente la partecipazione dell’uditorio, e i cui argomenti avevano portata eminentemente pratica. È in questa track, per esempio che sono stati previsti interventi come quello dedicato al codice legacy (Antonio Carpentieri – Stefano Leli, “Codice legacy: usciamo dal pantano!“), a particolari strategie comunicative per le start-up (Pietro Polsinelli, “Storytelling for software marketing“), all’avviamento e alla gestione di start-up tecnologiche da un punto di vista economico e gestionale.
In particolare, su questi ultimi temi, abbiamo seguito l’intervento di Massimo Canalicchio e Davide Rogai su “Incubatore Firenze: dall’idea innovativa all’impresa“, in cui, attraverso un caso di esempio inerente l’impresa Commit, nata da un gruppo di ricercatori universitari, sono stati mostrati i passi necessari per passare dall’idea alla sostenibilità economica dell’impresa.
In questo intervento, il responsabile di Incubatore Firenze [3] ha presentato la struttura che non ha solo il compito di mettere a disposizione delle start-up selezionate le infrastrutture basilari necessarie a partire (uffici, segreteria, rete etc.) ma deve soprattutto rispondere a un problema tanto banale quanto critico: chi decide di far partire una piccola impresa a sfondo tecnologico ha in genere ottime competenze nel campo IT, valide idee sul prodotto da realizzare o il servizio da erogare, ma spesso manca di quella cultura di impresa molto “basilare” ma altrettanto fondamentale, inerente la messa a punto di un corretto modello di business, l’importanza del monitoraggio finanziario, l’implementazione di un business plan che tenga presenti tutti i diversi aspetti che investiranno l’azienda dalla sua nascita alla maturità aziendale.
Auditorium e Workshop
Oltre al binario Interactive, le altre due track sono state denominate (del resto come nell’edizione precedente) Workshop e Auditorium, dal nome della sala in cui si svolgevano. In genere, seppur non esclusivamente, le presentazioni nello spazio Workshop, una sala di dimensioni medie (circa 100 posti), sono state improntate a temi più tecnici e verticali, mentre gli interventi in Auditorium, la sala più grande (sui 300 posti) sono stati a “più alto livello di astrazione”: in tal senso, durante la seconda giornata, la maggior parte dei contributi in Auditorium si sono incentrati sul temi dello sviluppo Lean/Agile.
Figura 1 – Il nostro Giovanni Puliti presenta il suo intervento nell’aula Workshop.
Agile & Mobile
Dovendo sintetizzare le tematiche trattate, racchiudendole entro poche etichette, si fa presto a dire che gli argomenti che hanno dominato la conferenza sono stati quelli legati al mondo della progettazione e sviluppo Lean/Agile e quelli legati, in senso lato, con gli annessi e connessi, alla programmazione per le piattaforme Mobile. Non sono mancati contributi di altro tipo (aspetti legali del web, infrastrutture tecnologiche per la persistenza dei dati come il cloud computing, riflessioni sull’architettura dell’informazione e il design delle interfacce utente), ma i due temi Agile e Mobile hanno senza dubbio connotato in maniera decisiva questa edizione di Better Software.
Agile
Si fa presto a dire Agile, nel senso che numerosi interventi si sono incentrati su questi temi, affrontandoli però da angolature anche molto differenti, come è stato possibile riscontrare in gran parte della seconda giornata in Auditorium: alcuni interventi sono stati maggiormente incentrati sugli aspetti metodologici e sulle specifiche tecniche da applicare alla gestione dei progetti, altri si sono maggiormente concentrati sulle dinamiche, quasi psicologiche, che intervengono nei gruppi e nelle organizzazioni e in molti casi sono uno dei principali motivi in grado di far fallire attività.
Agile in pratica
Con il suo “How (fr)agile you are. Metriche più o meno efficaci per misurare team, progetti e processi agili” Gaetano Mazzanti [4] affronta il sempre spinoso tema delle metriche. In maniera chiara e fluente, vengono posti alcuni interrogativi, solo apparentemente provocatori, e vengono proposte alcune soluzioni a tali domande. Che cosa si può misurare? È importante solo quello che è misurabile o, viceversa, ci sono aspetti fondamentali che non possono essere “ingabbiati” nelle metriche? Le metriche sono sempre oggettive, oppure possono ingannare e possono essere ingannate? Misurare ci dà veramente il polso della situazione o diventa solo una serie di “rituali” che rassicurano psicologicamente ma non danno un vero contributo alla soluzione dei problemi? Attraverso il concetto del “learn, change and move on” (double loop learning), Mazzanti invita a non “affezionarsi” alle metriche in quanto tali, ma a ricordarsi che si tratta sostanzialmente di mezzi e non di fini: le metriche sono di vario tipo e vanno tarate su ciò che intendiamo misurare, le metriche “scadono”, ossia non sono valide per sempre ma devono essere adattate ai cambiamenti e colte nell’evoluzione del tempo. In tal senso, quando passa a presentare delle metriche di esempio, uno dei grafici cui dedica maggiore attenzione è il motion chart di Google Spreadsheet, poiche’ in esso la dimensione temporale viene resa evidente con una animazione. Nella carrellata di metriche presentate, il relatore non intende mostrate qualcosa di rivoluzionario, ma ha invece la capacità e l’esperienza di mettere strettamente in relazione la metrica e il tipo di situazione in cui è ottimo (o, al contrario, potenzialmente disastroso) il suo impiego: dai backlog alle oramai canoniche board di ascendenza Kanban, dalla “deprecazione” delle queues ai Cumulative Flow Diagram (CFD), fino alle ragioni per cui il relatore ha poca fiducia nella velocity come indicatore, la panoramica è ampia e focalizzata, e la platea apprezza decisamente la presentazione.
In una sorta di passaggio del testimone con la presentazione precedente, Fabio Armani [5] presenta il suo “Scrumban – A methodology fusion“, in cui parte dalla metafora musicale della fusion (ossia quel genere che a cavallo tra anni Sessanta e Settanta mise insieme certi stilemi jazz e la strumentazione elettrica del rock, creando di fatto un nuovo filone musicale) per presentare l’esperienza di fusione tra la metodologia Scrum e i concetti lean di Kanban.
Figura 2 – Scrumban, ossia la fusione metodologica tra Scrum e Kanban.
La presentazione è molto lineare: viene illustrata, tra l’altro, una esperienza reale aziendale in cui, attraverso l’utilizzo combinato di Kanban e Scrum/XP (perche’ le tecniche dell’eXtreme Programming ben si accoppiano con Scrum, pur non essendo in se’ stesse Scrum) si è riusciti a gestire una trasformazione globale di una grande organizzazione verso le metodiche lean/agile. Al di là dei molti esempi concreti riguardanti sia gli aspetti più “triviali” del lavoro giornaliero (strumenti a disposizione, pair programming quando necessario, lavagne adeguate, continuous integration e smoke test tutte le notti etc.), sia gli aspetti più legati al modello organizzativo (potete trovare i grafici inerenti la struttura nelle slide [6] sul sito della conferenza), ci sono alcuni concetti che preme ricordare anche qui: il primo è relativo alla scalabilità di queste metodiche. Secondo il relatore, una metodologia come Scrumban è adattabile, con gli adeguati sforzi, sia a realtà relativamente piccole, sia a realtà aziendali di grande complessità e in tal senso, il concetto di Scrum-of-Scrums viene in aiuto. Il secondo concetto è che Scrum e Kanban hanno delle similitudini, ma anche delle differenze chiare, che occore conoscere bene per poter arrivare a una sintesi: solo con tale consapevolezza è possibile arrivare a un metodo in cui è garantito il flusso continuo tipico di Kanban, ma in cui certi aspetti di “strutturazione” connaturati in Scrum aiutano a gestire al meglio l’intero processo.
Probabilmente molte persone si aspettavano più “teatro” da parte di Francesco Cirillo [7], che invece ha focalizzato su pochi ma basilari concetti il suo intervento al pomeriggio del martedì, “Anti-if per manager“. Certo, non sono mancati anche i classici momenti di ironia, come quello della premiazione del concorso per il peggior codice dell’anno, o la descrizione delle strategie di fuga consigliate ai manager.
Figura 3 – Francesco Cirillo: Anti-if per manager.
Ma, paradossalmente, di tutto l’intervento, sono rimasti impressi nei partecipanti, e hanno dato luogo a successive discussioni, due concetti semplici semplici, ma strettamente legati fra loro. Il primo fa riferimento a una domanda provocatoria posta ai presenti dal relatore: “Tu lo compreresti il tuo software?”. L’altro, comunque connesso al primo, è relativo alla valutazione dei costi realistici di una semplice applicazione, e al perche’ una azienda “esperta” (ossia con membri del team che stanno insieme da molto più tempo e hanno una consistente code base già strutturata) finisce per far pagare di più la stessa applicazione rispetto a team meno consolidati. La soluzione a questo interrogativo, dice Cirillo, non è, come può sembrare, dovuta al fatto che si fa pagare l’esperienza o il nome, ma al fatto che, in certe situazioni, le soluzioni già acquisite e su cui ci si adagia finiscono per portare rigidità e incrostazioni all’intero processo di sviluppo, con i conseguenti aumenti di tempi e costi. Un punto su cui si può sicuramente riflettere.
Dinamiche reali e filosofia agile
A fianco di quelli più strettamente legati alla pratica agile, ci sono stati degli interventi che, a tratti, hanno assunto quasi una dimensione “filosofica” e si sono incentrati sugli aspetti legati alle dinamiche aziendali o interpersonali che comunque tanta importanza rivestono nell’ambito della produzione di beni o servizi. Del resto il Manifesto Agile chiaramente considera “gli individui e le interazioni più importanti che i processi e gli strumenti” e quindi questi aspetti assumono un rilievo significativo.
Matteo Vaccari [8] presenta “Pianificazione, pattern, antipattern“, partendo dall’assunto che in teoria tutto va bene e tutto funziona con l’Agile e Scrum, ma in pratica ci sono dei comportamenti problematici, una vera e propria serie di “antipattern” della pianificazione XP, che nascono spesso proprio dal fraintendimento (o dalla voluta dimenticanza) dei concetti dello sviluppo agile.
Figura 4 – Quanto sono importanti i requisiti non funzionali?
Tra i numerosi casi presentati e “sistematizzati” nei vari antipattern (uno su tutti: il “Sì, bwana”, in cui il team di sviluppo fa solo pedissequamente il suo compitino, così come affidatogli dal Product Owner, fregandosene completamente di tutto il resto), uno dei concetti maggiormente interessanti è stato quello relativo al rapporto tra requisiti funzionali e non funzionali: per come la vede il relatore, si dà in genere, e in buona fede, troppa importanza ai requisiti funzionali e troppo poca ai requisiti cosiddetti non funzionali che però poi sono quelli che possono fare la differenza in termini di miglioramento di un sistema che già esiste e che svolge comunque le funzioni basilari richieste.
Di carattere quasi “psicologico” l’intervento di Andrea Provaglio [9], intitolato “Overcoming blocks to self-organization“. Si parte dal principio che l’adozione di metodi come XP e Scrum implica grande attenzione ai cambiamenti relazionali e organizzativi e che una capacità essenziale dei gruppi di lavoro che vogliono impiegare metodiche di tipo Agile sia l’auto-organizzazione. Peraltro, la capacità di auto-organizzarsi da parte dei gruppi di lavoro è importante anche in ambito non strettamente legato allo sviluppo software. Poste queste premesse, l’intervento ha analizzato una serie di casi reali mettendo in evidenza certe abitudini mentali e comportamentali che comportano l’impossibilità per i gruppi di trovare una efficiente forma di auto-organizzazione.
Figura 5 – Costruire “steccati” nell’ambiente lavorativo è pratica diffusa e spesso inconsapevole.
Piuttosto interessante è l’esempio dell’organigramma che ha varie interpretazioni a seconda della modalità in cui connettiamo le caselline dei componenti (istituzionale, comunicativa, basata sull’influenza). Molti sono i blocchi verso l’auto-organizzazione individuati nella presentazione, che a tratti indulge nell’uso di un linguaggio quasi “new age”. In ogni caso, tra esperienza maturata, basilari concetti di analisi transazionale, esempi calzanti di situazioni lavorative e una dose di sano buon senso, l’intervento di Provaglio risulta piacevole e rilassante e consente di focalizzare temi di cui tutti siamo più o meno al corrente, ma che spesso tendiamo a rimuovere o a non sistematizzare.
Su un binario simile, seppur con modalità diverse, si indirizza l’intervento “I quattro punti cardinali per un orientamento lean nell’impr… insomma…” di Jacopo Romei [10]. Attraverso la metafora dei quattro punti cardinali, vengono descritti i quattro ambiti in cui una azienda può intervenire per rendere le proprie attività sempre più lean. Il nord è il focus sui clienti, in senso lato (chi paga, chi usa, chi supporta, chi deriva valore), l’est sono le potenzialità reali del sistema (cui si può chiedere tanto e poi non più), il sud rappresenta le specifiche aree in cui indirizzare gli sforzi, mentre l’ovest, su cui il relatore si dilunga maggiormente, sono gli sprechi delle politiche aziendali. Viene fatto un lungo elenco di attività di spreco, che vengono commentate diffusamente. Riassumendo velocemente, alcuni dei punti critici individuati sono i seguenti: i software sono spesso inutilmente complessi e hanno troppa roba dentro; spesso si negoziano solo tempi e budget, dimenticando altri aspetti fondamentali; c’è troppa fretta di aggiungere funzionalità nuove prima ancora di aver completato quelle già in lavorazione; i processi con cui vengono svolte le attività sono sempre più complessi del necessario; lotti e code fanno preallocare delle risorse e si finisce per avere troppo multitasking: meglio fare una cosa per volta, lasciando slack time per venire incontro alla inevitabile varianza; separazione tra decisioni e lavoro, dove spesso chi decide ha competenze perlomeno discutibili su quello che poi dovrà essere fatto, ma anche i responsabili IT si disinteressano dell’area business, quasi che la cosa non li riguardasse; “pensiero illusorio”, per cui si adottano metodi e strumenti di moda, ma senza valutare seriamente se sono adatti al contesto; debito tecnico: va anche bene “indebitarsi” un po’, ma occorre saldare il debito comunque prima possibile, perche’ è bene sostituire sistemi pieni di dipendenze con sistemi più moderni e tecnologie migliori, e occorre evitare di rimandare l’integrazione a fasi successive. Anche questa relazione non ha nulla di rivoluzionario, ma è un distillato di buon senso, oltretutto esposto in maniera molto chiara e lineare dall’autore.
Strumenti adatti alla complessità dei sistemi
Sarebbe riduttivo nei confronti di Alberto Brandolini [11] affermare solo che il suo intervento sia stato probabilmente il più “divertente” di tutta la conference, perche’ “Non è affatto semplice” è stato, sì, anche un riuscito momento di cabaret, ma non bisogna perdere di vista i contenuti “seri” del contributo. Per non rovinare il divertimento a chi non era presente, eviteremo di raccontare certi momenti di ilarità vissuti dall’Auditorium, lasciando il piacere della scoperta a quando il video del talk sarà disponibile sul sito ufficiale di Better Software (da sottolineare la divertente metafora del rapporto “cliente-consulente” visto come quello di due fidanzati, o l’esempio dell’applicazione di strumenti concettuali come le checklist ad attività cui poco e male si adattano).
Figura 6 – Il talk di Alberto Brandolini: non perdetevi il video, quando sarà pubblicato sul sito di Better Software.
Delle molte cose dette da Alberto, vogliamo riportarne solo due, strettamente legate fra loro e particolarmente significative: la prima è quella relativa al modello Cynefin (in brittonico, la lingua celtica del Galles, vuol dire più o meno “complessità del proprio contesto”) messo a punto dallo studioso Dave Snowden [12]: in questa visione si prendono in esame i diversi tipi di “realtà” e di situazioni, mettendo in luce come i sistemi possano ricadere sostanzialmente in quattro grandi categorie: semplici, complicati, complessi, caotici. In ciascuno di questi domini, le componenti in campo e il rapporto tra di esse è diverso e sempre meno facilmente “leggibile”, e diversi sono gli strumenti di interpretazione e di gestione di tali differenti contesti. Ai sistemi semplici possiamo applicare le “best practice”, ai sistemi complicati ben si adattano le “good practice”, a quelli complessi possiamo tentare di applicare delle “emerging practice” derivate da un approccio “probe-sense-respond”; ma ai sistemi caotici si possono applicare solo “pratiche sperimentali”, poiche’ diventa difficile, se non impossibile, categorizzare e prevedere. Il secondo concetto, derivante da questa analisi, è che l’errore grande che a volte viene compiuto nella gestione dei progetti sta nel non tener presente un semplice assunto: gli strumenti concettuali adatti a un contesto non funzionano in un altro. Ci sono situazioni in cui una checklist o un Gantt funzionano perfettamente perche’ adatti a quel contesto, ma in altre situazioni si rivelano strumenti inadatti e inutili.
Per le moltre altre cose dette (tipo la storiella dello sviluppatore che va alla conferenza e poi si licenzia…) rimandiamo alle slide e al video, che potrete trovare sul sito di Better Software nei prossimi mesi.
Mobile/HTML5
Se le tematiche dello sviluppo agile hanno avuto un ruolo di primo piano in questa edizione, va sottolineato che non sono mancati anche molti interventi, più o meno tecnici, legati all’altro grande tema, ossia quello del mobile e del linguaggio HTML5, strettamente connesso a tali dispositivi (seppur non in maniera esclusiva). Nel nostro resoconto, pertanto, teniamo insieme i due grandi argomenti, ben consci che seppur si sovrappongano, non siano esattamente la stessa cosa. Sono argomenti, peraltro, che stiamo affrontando già da un po’ di tempo sulle pagine della nostra rivista, nella serie “HTML5, CSS3, JavaScript e il mobile”.
Di ottimo livello ci sono parsi i due interventi di Francesco Fullone [13] svolti nell’aula workshop al lunedì e al martedì subito dopo pranzo. Il primo talk, intitolato “Your browser, your database” ha affrontato il tema della gestione della persistenza dati nelle applicazioni web alla luce delle novità di HTML5. Seppur non esclusivamente dedicato al mondo mobile, ma valido in un contesto genericamente web, collochiamo qui questo intervento poiche’ è strettamente legato al secondo talk dell’autore, specificamente dedicato invece proprio al mondo mobile.
Dopo aver ripercorso la “storia del salvataggio dati su browser” dagli albori ad oggi, passando per le numerose e diverse specifiche che dai cookie porta ai correnti approcci allo storage off line, il relatore ha presentato un quadro delle compatibilità fra i diversi sistemi di storage attualmente disponibili e le diverse versioni dei browser.
Figura 7 – Il volto perplesso di Francesco Fullone è giustificato dalla complessità di compatibilità tra le varie versioni dei diversi browser e le diverse strategie di offline storage.
Va detto che tendenzialmente le nuove versioni dei browser si stanno orientando verso una sempre più ampio e condiviso un supporto delle principali strategie di offline storage. Nel panorama attuale comunque è bene seguire alcune buone pratiche che possano garantire successo allo sviluppatore che realizzi web app destinate a essere fruite sulla vasta gamma di browser esistenti, ancor più con le diversificazioni legate al mobile, e Fullone le elenca in maniera chiara e motivata:
- utilizzare Modernizr per il detect in modo da capire subito cosa funziona o no su quel browser;
- evitare il sync per le proprie applicazioni, anche se è tanto carino;
- cercare di capire quando effettivamente l’utente è in linea oppure no;
- salvare comunque pochi dati sul browser.
Il secondo intervento, “Please don’t touch… the mobile parts!“, si è anch’esso caratterizzato per la competenza del relatore e per il perfetto equilibrio tra aspetti strettamente tecnologici e valutazioni inerenti la progettazione delle applicazioni. Prima di passare a illustrare le soluzioni, l’autore si concentra su alcune considerazioni apparentemente scontate che vengono però troppo spesso trascurate da chi realizza web app, un po’ per mancanza di conoscenze, un po’ perche’ si tende spesso ad adattare il sito pensato in maniera generica e non a progettare specificamente per il mobile. Ci sono dei limiti infrastrutturali da tener presenti: tanto per cominciare non sempre abbiamo a disposizione una connessione wireless, e le reti 3G hanno dei limiti sia intrinseci legati alla tecnologia, sia imposti dai provider che pongono dei tetti al traffico Internet; inoltre sul mobile gli header HTTP sono mediamente del 30% più grandi. Questo comporta che il caricamento delle pagine è più lento sul mobile, come tutti possiamo sperimentare, con tempi che aumentano dal 40% all’80%. Aggiungiamo a questo il fatto che su dispositivi mobili diversi, sia per marca che per tipologia che per sistema operativo, magari lo stesso motore alla base di un browser non dà lo stesso risultato: in certi casi, addirittura, HTML5 non funzionerà. Anna, il nuovo browser Webkit di Symbian, ad esempio, al momento supporta ben poco.
È chiaro pertanto che occorre seguire strategie diverse tra browser desktop e mobile, tenendo in considerazione che è la seconda categoria quella che crea maggiori difficoltà. A questo punto Fullone afferma molto realisticamente che, sebbene i sistemi mobile di Windows, Symbian e Blackberry continueranno ad avere una fetta di mercato, i sistemi principi del mondo mobile saranno almeno nel futuro prossimo iOS e Android; è quindi sensato concentrasi soprattutto su questi due, che hanno anch’essi dei limiti di spazio nella cache. Il relatore, poi, passa a descrivere una serie di strategie di ottimizzazione delle prestazioni (WPO, Web Performance Optimization) che gli sviluppatori debbono applicare per ottenere i migliori risultati nella visualizzazione e nel funzionamento delle proprie applicazioni per dispositivi mobili, seguendo il principio basilare che bisogna scambiare meno dati possibili e con meno chiamate possibili:
- effettuare l’embed delle risorse, per esempio i CSS;
- usare l’Application Storage per salvare almeno certi dati “fissi” (geolocalizzazione, info utente, ecc.) in maniera da ridurre le chiamate;
- salvare i CSS e i JavaScript in Local Storage;
- caricare le immagini più tardi possibile, senza scaricarle di nuovo;
- usare i CSS per disegnare elementi della pagina (bottoni, righini etc.);
- ottimizzare le immagini raster e utilizzare, ove possibile, il formato SVG;
- evitare l’uso di framework generici per JavaScript;
- fare detect lato server e ridurre la dimensione delle immagini (gli schermi sono piccoli!);
- i siti mobile sono in definitiva… mobile: pertanto usiamo un HTML diverso ed evitiamo “manie di grandezza” poiche’ abbiamo schermi da 3″ o 4″);
- usare meta-tag specifici per i siti mobile;
- ricordarsi che JQuery mobile/touch è un framework di visualizzazione, non di logica;
- valutare attentamente l’uso degli Sprite.
Che dire? Questi due interventi hanno riscosso notevole successo da parte di un pubblico interessato, probabilmente anche grazie all’ottimo bilanciamento tra la chiarezza dell’esposizione e la competenza tecnica che non scade mai in tecnicismo.
Market o store che dir si voglia: Android vs iOS
Più verticale, poiche’ dedicato specificamente al mondo Android, ma molto interessante è stato l’intervento di Fabio Collini [14] intitolato “Alcuni consigli per lo sviluppo e il marketing di applicazioni Android” nel quale, più che gli aspetti strettamente tecnici, sono stati presi in considerazioni gli “intoppi” che uno sviluppatore Android deve evitare per poter mettere in campo una strategia vincente sia di sviluppo che di diffusione delle proprie app. Da un punto di vista della diffusione, Collini illustra sia le caratteristiche dell’Android Market e degli altri market alternativi, alcuni poco affidabili, altri decisamente migliori, come l’Amazon Appstore, sia le strategie migliori di “posizionamento” affinche’ la propria app abbia un minimo di visibilità, ribadendo, se ce ne fosse bisogno, che qualità del prodotto e supporto continuo al feedback utenti costituiscono il miglior biglietto da visita. Vengono inoltre discusse le principali strategie di distribuzione delle app:
- gratuita: non si guadagna direttamente ma ci si fa conoscere o si rafforza una presenza in un altro mercato;
- con pubblicità: l’utente non paga, anche se deve accettare “lo spot”;
- a pagamento: e qui si fa vedere come siano diversi i prezzi percepiti come “giusti” per i diversi tipi di applicazioni, rimanendo comunque sempre nell’ambito dei pochi euro;
- “in app purchase”: l’applicazione base è gratis, ma pago se desidero utilizzare funzionalità avanzate o, nel caso dei giochi, ulteriori livelli.
In un mercato globale oramai enorme, con più di 250mila apps per Android, diventano sempre più importanti le strategie di internazionalizzazione, che vanno fatte bene e non a casaccio o in maniera cialtronesca, poiche’ si è notato come una delle lamentele più diffuse nei commenti dei vari market sia proprio legata alla mancata o cattiva traduzione/localizzazione/internazionalizzazione delle applicazioni. Non viene trascurato neppure il discorso della “pirateria” da molti additato come uno dei difetti maggiori di Android: a differenza che con i dispositivi Apple, le app sono installabili anche copiandole da un amico, o scaricandole da qualche link trovato in rete. Esiste in effetti una libreria fornita da Google che aiuta contro la copia, ma di certo non risolve il problema.
Figura 8 – Un “classico” degli ultimi tempi: le quote di mercato attuali e previste per i prossimi anni, riguardanti i sistemi operativi mobile. Android continua ad avanzare, iOS mantiene una fetta significativa, per gli altri sembrano rimanere solo gli avanzi.
Dal punto di vista degli “intoppi” tecnici che uno sviluppatore Android deve tenere in considerazione, la parola chiave è frammentazione: da un lato ci sono in giro numerose versioni del sistema, oltretutto montate su dispositivi anche piuttosto diversi tra loro; dall’altro, occorre ricordarsi che esiste una serie di schermi diversi su cui la nostra applicazione Android potrebbe finire per girare. Per quanto riguarda le diverse versioni del sistema, si assisterà molto probabilmente nel medio termine a un livellamento verso l’alto delle versioni di Android installate su smartphone e tablet, mentre al momento attuale il fatto che i tablet montino il sistema 3.0 mentre sugli smartphone continuino a girare versioni 2.x (quando non ancora versioni 1.x) di sicuro non facilita la vita dello sviluppatore; ma è, come detto, un problema destinato a risolversi in maniera piuttosto lineare con il passare del tempo. Diverso il discorso per quello che riguarda la diversità degli schermi su cui la nostra app dovrà essere visualizzata: lasciando da parte i casi, diciamo così, “estremi” verso il basso, in questo momento gli schermi sono molto diversi per dimensione e risoluzione (NormalHDPI, MDPI, LargeMDPI, etc.) e a volte, sui dispositivi di certe marche, non è neanche rispettata la proporzione standard tra altezza e larghezza dello schermo (e quei pixel in più vanno in qualche modo gestiti). Tutto questo comporta problemi di visualizzazione (per esempio icone troppo piccole e “sperdute”) che lo sviluppatore deve prevedere e tener presenti. Da Android 3.0 in poi la tecnologia dei Fragments aiuterà in parte a gestire questo problema, ma lo sviluppatore accorto deve realizzare una applicazione Android che sia in grado di essere visualizzata al meglio sia sui dispositivi a schermo “grande” come i tablet, sia negli smartphone con schermi di dimensione/risoluzione maggiore, sia negli smartphone, diciamo così, “normali”, che poi saranno la fetta di mercato primaria per quanto riguarda i dispositivi con sistema operativo Android, quelli che in questo momento ne stanno decretando il successo commerciale. Esiste comunque anche una soluzione ibrida che è quella dell’embedding di web app HTML5 distribuibili su market Android.
Non poteva mancare un intervento specificamente mirato al mondo del tablet Apple. “L’editoria digitale su iPad: un mercato in continua evoluzione“, proposto da Omar Cafini [15] si concentra sui modelli di business del mercato editoriale degli e-book, mettendone in luce la crescita esponenziale favorita proprio dalla diffusione del tablet di casa Apple. I due temi portanti della presentazione sono da un lato l’illustrazione dei pregi (e, onestamente, anche di qualche difetto) connessi al sistema messo a punto con l’Apple Store: in particolare viene diffusamente descritta l’applicazione Newstand presente in iOS5 che permetterà con un’unica applicazione di leggere tutte le riviste a cui si è abbonati. Ma il momento più interessante è la descrizione delle “soluzioni” possibili per la pubblicazione di contenuti editoriali (nel senso di giornali, riviste, libri) adatti al mondo iPad, in cui vengono individuati quattro tipi di app, dalla più semplice alla più complessa e “dispendiosa” per il produttore di contenuti, che è possibile realizzare:
- un semplice PDF, che ricalca pedissequamente il prodotto editoriale cartaceo;
- un PDF uguale al prodotto cartaceo, cui si sommano contenuti multimediali esterni alla app;
- un PDF con contenuti multimediali integrati dentro di esso;
- un’app in codice nativo con contenuti in HTML5.
Figura 9 – La soluzione più impegnativa per distribuire i contenuti editoriali su iPad è anche la più soddisfacente per l’utente finale.
Si è trattato di un intervento non strettamente tecnologico, che esponeva concetti di certo già noti a chi si occupi di creazione, editing e distribuzione di contenuti editoriali, ma che a nostro giudizio è risultata molto chiara e utile per lo sviluppatore “a testa bassa” che spesso perde di vista certi meccanismi “commerciali” che invece, in un mondo mobile sempre più basato su “stores”, “markets”, “negozi” e quant’altro, risultano decisivi per il successo o l’insuccesso del proprio faticoso lavoro.
Audio e video sul mobile
Un’altra area inerente principalmente (ma non esclusivamente) il mobile è stata quella relativa alla fruizione di contenuti multimediali audio e video.
Mark Boas [16] affronta l’argomento con linguaggio ironico ispirato ai termini militari, come se si fosse in una vera e propria guerra, nell’intervento intitolato “HTML5 audio and video. Lessons from the trenches” impostato come una sorta di promemoria dei problemi che si possono incontrare sviluppando librerie connesse al mondo audio e video per HTML5. Partendo dall’esperienza del progetto JPlayer, una libreria plugin per JQuery, il relatore ripercorre brevemente le grandi tappe dell’uso di audio e video nel web, ricordando il modello dei “plugin” che ha imperato fino ad ora (Flash, QuickTime, Real, Silverlight etc.). Le specifiche HTML5 sembrerebbero finalmente risolvere tanti problemi a livello web, introducendo un supporto nativo per l’audio e video nei diversi browser e favorendo una migliore integrazione del multimedia con gli altri elementi della pagina. In realtà i problemi non mancano, soprattutto poiche’ non è stata risolta la spinosa questione della compatibilità dei formati audio e video con i diversi browser, sia in termini di file contenitori (OGA, WebM etc.) sia in termini di codec contenuti.
Figura 10 – Lezioni dalle trincee: Mark Boas ci spiega come “salvare la pelle” nella dura battaglia per gestire al meglio audio e video in HTML5, sia su dispositivi desktop che mobile.
Uno dei consigli più semplici, ma anche più importanti, è quello di prevedere nel codice delle proprie applicazioni HTML5 una sorta di molteplicità dei “src=” che puntino a file audio/video con codec diversi compatibili con i diversi browser e sistemi, in maniera da accontentare tutti: si deve fare un po’ di lavoro in più, ma si ha la garanzia di vedere i contenuti multimediali riprodotti correttamente su tutti i browser e dispositivi. Oltre a ribadire l’importanza del testing su quanti più dispositivi e browser diversi possibili, e dell’uso di adeguati strumenti di detection, Mark non ha risparmiato di illustrare problemi e limiti che ancora sussistono. Innanzitutto, l’attuale stato non ancora maturo dei browser mobile potrebbe creare dei malfunzionamenti: Android dà garanzie di funzionamento in tal senso, per esempio, solo a partire dalla versione 2.3+. Poi gli effetti sonori nei giochi HTML5 funzionano ancora male: la soluzione sono gli sprites audio, ma tutto questo è comunque un’assicurazione sul prolungamento della vita di Flash ancora per diverso tempo… In definitiva, una delle presentazioni più interessanti, da un punto di vista tecnologico, dell’intera rassegna: consigliamo vivamente a chi è interessato a questi temi, di tornare a visitare il sito di Better Software e guardarsi il video, non appena sarà caricato.
Facciamo un cenno anche alla presentazione “Augmented music: a case study” di Tue Haste Andersen di Frog Design [17]: francamente ci aspettavamo qualcosa di più “rivoluzionario” e spettacolare, almeno a stare al titolo e alle premesse, ma confessiamo comunque di essere rimasti piacevolmente impressionati dalla app per iPhone che lo sviluppatore sta mettendo a punto e, soprattutto, dalle premesse storiche (dalla nascita della discografia alla morte del supporto musicale), concettuali e tecnologiche esposte nel suo talk: in definitiva siamo alla Ambient Music 2.0. Gli appassionati di sperimentazione musicale e i “discepoli” di Brian Eno (come chi scrive, ma ce ne sono molti nel mondo IT…) potranno approfondire l’argomento guardando il video della presentazione, scoprendo se già non le conoscono, le numerose applicazioni e i numerosi “esperimenti” che esistono in tal senso sui dispositivi mobile.
E (molto) altro
Ma a Better software, quest’anno, non si è parlato solo di Agile e Mobile/HTML5. Seppur in maniera minore, ci sono stati altri temi trattati.
Legge 2.0
Quello degli aspetti legali del web è stato un tema affrontato anche questo anno.
In “Web 2.0: copyright e libertà di espressione” Donato Nitti [18] presenta con linearità e chiarezza, e senza linguaggio “legalese”, i temi fondamentali della proprietà intellettuale, del diritto d’autore e della netta differenza tra il sistema legale USA che tende a tutelare la concorrenza, e a questo riguardo si basa sul fair use, e quello europeo, maggiormente concentrato a tutelare il diritto dell’autore, e che quindi si basa sulle libere utilizzazioni (ossia, di fatto, eccezioni e deroghe al diritto d’autore). Un intervento certo non dedicato ai tecnologi più accaniti, ma di sicura sostanza, specie per chi si trovi in qualche modo a dover gestire contenuti di tipo editoriale o multimediale.
L’intervento di Carlo Piana [19], “Cloud computing: un paradigma nuovo… anzi antico” si concentra sui problemi sollevati, a livello legale, dall’affermarsi delle architetture e delle infrastrutture basate sul concetto della nuvola. Vengono esaminate alcune problematiche tipiche, quali quelle della “residenza fisica” dei dati (con differenze notevoli tra dati salvati su server che stanno solo in Europa e situazioni più globalizzate) e del formato finale di esportazione dei dati: spesso i provider fanno pagare poco per il servizio, ma si avvalgono di clausole legali per praticare di fatto un vendor lock-in in quanto non sono tenuti a “restituire” i dati al proprietario in un formato standard e facilmente condivisibile. Insomma, in molti casi, a livello legale, la porta per entrare nel cloud è molto ampia, ma quella per uscirne è stretta e prevede un pedaggio esoso.
I dati son sempre… i dati
Quello della persistenza (in senso lato) dei dati è stato un tema secondario, ma comunque presente. Rimanendo in ambito cloud, il talk di Luca Bonmassar [20] “Virtualizzazione e cloud, un’infrastruttura pro alla portata di tutti” si è caratterizzato per approfondimento, chiarezza, linearità e senso pratico. Attraverso diversi casi di esempio, in genere quelli di un piccolo business che si trovi ad affrontare un improvviso successo e la conseguente crescita, il relatore ha spiegato come le infrastrutture web basate sul Cloud Computing, magari affiancate da tecniche di virtualizzazione, siano oramai adatte per le esigenze di aziende di ogni dimensione, senza mancare di presentare anche gli svantaggi. L’analisi dei diversi componenti della soluzione offerta da Amazon (AWS) ha costituito il pezzo forte della presentazione. Merita sicuramente, per chi fosse fortemente interessato all’argomento, la visione dell’intera presentazione quando i video saranno presenti sul sito. Altro aspetto importante di questo talk è stata la conclusione dedicata al calcolo dei costi di una tale soluzione e alla spiegazione delle buone pratiche per mantenere bassi i costi.
Figura 11 – Gioie e dolori del Cloud Computing: una dettagliata analisi dei principi generali, della soluzione AWS di Amazon, delle strategie da seguire per mantenere i costi bassi nella riuscita presentazione di Luca Bonmassar.
“Database in ambienti business critical con PostgreSQL” di Gabriele Bartolini [21] ha avuto il merito di presentare Postgres, il noto DBMS Object Relational, sia da un punto di vista tecnico, sia, soprattutto da un punto di vista dei punti di forza in virtù di una adozione sempre maggiore da parte delle aziende, specie se di piccole dimensioni. L’affidabilità, il TCO (total cost of ownership) decisamente basso, i significativi miglioramenti alla manutenzione, al monitoraggio e alla sicurezza, le nuove funzionalità (replica sincrona) che saranno introdotte nella imminente release 9.1, la chiarezza e unicità della licenza ne fanno oggigiorno una scelta possibile in molti ambienti: l’esempio di Skype che utilizza proprio PostgreSQL, dovrebbe far riflettere gli scettici.
Sempre di dati, da un punto di vista della analisi e dell’estrazione dell’informazione, ha parlato Davide Cerbo [22] in “Il web intelligente“. Temi quali il semantic web, il data warehouse, la text analysis sono piuttosto familiari ai lettori di MokaByte: ebbene, il talk in questione ha avuto il merito di presentare in maniera chiara e completa i diversi aspetti volti a creare, appunto, un web che già in molti hanno ribattezzato “3.0”. Tra la diffusa spiegazione di tecniche di analisi del testo, del web semantico, del valore degli open data (purtroppo ancora esposti troppo spesso in maniera non conforme), e dei sistemi di raccomandazione (tendenzialmente sempre migliori, almeno nei casi dei sistemi ibridi), però il concetto più importante che passa dalla relazione è il primo e più semplice: così come tutte le attività umane consumano risorse (energia, materie prime, manodopera etc.) anche i molti contenuti prodotti sul web esigono il loro costo e consumano l’attenzione. È da questa considerazione, prima ancora che dalle tecniche, che bisogna partire per creare un web intelligente, sempre più a misura delle persone.
Design, interfacce, user-experience
I temi legati alla visualizzazione e al design intesi come rapporto tra parti “visibili” del sistema e “architettura dell’informazione” ad esse sottesa sono stati trattati anche in questa edizione di Better Software. Abbiamo assistito solo a due talk di tale argomento. “L’altra metà del web” di Luca Mearelli [23] si è concentrata sull’errore diffuso che attribuisce poco valore all’interfaccia del backend di un sistema, con il risultato di ottenere spesso un sistema sgangherato che non permette di effettuare le operazioni essenziali per la gestione del sito o le rende oltremodo complicate. Al contrario, il backoffice è un elemento essenziale dell’applicazione che realizziamo, cui occorre dedicare in fase progettuale e di implementazione sforzi pari a quelli riservati al frontend, pur senza dimenticare che l’utente tipo che userà le due parti non è lo stesso.
L’altro talk dedicato al “visual design” è stato quello di Francesco Improta [24], “Design is (ir)relevant” che si è connotato per equilibrio e sensatezza. Si è trattato di una serie di riflessioni sul rapporto tra content, da un lato, e design, dall’altro e sul fatto se la “grafica” abbia un futuro sul web: secondo l’autore, più che stare a discutere se privilegiare il contenuto o la presentazione, occorre restituire al design un ruolo di centralità, che però esso deve avere a partire da alcuni assunti, apparentemente condivisi da tutti a parole, ma in realtà poco e male applicati. Tra i punti messi in luce, c’è l’importanza di un design funzionale all’obiettivo, spesso persa di vista dall’ego del “grafico” che dimentica che il designer non “fa arte per l’arte”, ma ricerca un design tanto intuitivo da sembrare invisibile, ma “intuitivo” non significa affatto “semplice”. L’assunto del relatore, tanto lineare quanto condivisibile, è che il design visuale da solo, in se’ e per se’, serve a poco, così come serve a poco il contenuto nudo e crudo, lasciato alla sua “nudità”. Parafrasando il titolo del libro di Steve Krug “Don’t make me think, assurto oramai a classico degli studi sull’interazione uomo-macchina e sulla usabilità web, l’autore propone di passare da un design “che non fa pensare” a un design che “rifletta il modo di pensare dell’utente”: in questo senso, non bisogna mai dimenticare il target di utenza. Si è trattato di una riflessione quasi “filosofica” ma sempre addentellata alla realtà quotidiana della progettazione grafica dei prodotti.
Figura 12 – Il visual design resta rilevante sul web, a patto che si tratti di design funzionale all’architettura dell’informazione.
Considerazioni varie
In conclusione, alcune brevissime considerazioni sui temi della conference e sul suo andamento. Che sia sostanzialmente piaciuta alla maggior parte dei presenti è fuori di dubbio, a giudicare dai commenti letti sui vari social network e blog e, soprattutto, ascoltati a caldo dalla viva voce dei presenti.
Questa edizione si è connotata per il grande spazio dato ai temi dello sviluppo agile, che hanno svolto il ruolo principe tra le tematiche tratate: gli organizzatori vogliono probabilmente fare di questa conferenza il punto di riferimento italiano per tutta la comunità che in qualche modo ruota intorno alla filosofia lean/agile, ma allora devono esplicitare maggiormente questo aspetto nella presentazione e nella comunicazione dei contenuti di Better Software, evitando comunque di cadere nella trappola dell’autoreferenzialità e della ripetitività delle proposte.
Sia chiaro non sono mancati interventi più “tecnologici” e strettamente legati a tematiche, diciamo così, di programmazione: gran parte degli interventi svoltisi nell’aula Workshop erano in effetti di questo tipo. Quello che è apparentemente mancato, almeno nelle impressioni a caldo scambiate con alcuni dei presenti, può essere stato in ambito tecnologico l’effetto “novità” che invece era stato avvertito prepotentemente nell’edizione precedente. Di certo, non si può imputare agli organizzatori il fatto che quegli argomenti che lo scorso anno apparivano come novità assolute (su tutte, l’esplosione del Mobile e le nuove specifiche di HTML5) siano state trattate quest’anno come “business as usual”: negli ultimi mesi certi standard si stanno decisamente affermando e crediamo che in questo senso la prossima edizione della conferenza possa riservare ulteriori sviluppi e approfondimenti. Per esempio, ci ha fatto riflettere come oramai, nel parlare di Mobile, sia necessario concentrarsi su paradigmi non solo tecnologici ma anche commerciali, con la grande importanza riservata ai concetti di Store, Market etc.
Aspettiamo pertanto, con curiosità e interesse, di sapere come sarà la prossima edizione della conferenza, con la certezza che essa abbia ormai ottenuto un livello di visibilità significativo nel panorama nazionale, e che stia via via acquisendo una sua particolare fisionomia sempre meglio delineata, con un suo pubblico di riferimento.
Riferimenti
[1] Il sito della conferenza, organizzata da Develer.com
[2] Francesco Saliola, “Better Software 2010. Resoconto di una conferenza eclettica”, MokaByte 151, maggio 2010
https://www.mokabyte.it/cms/article.run?articleId=FBI-JG2-65G-B7S_7f000001_26000063_9379428c
[3] Incubatore Firenze: nuove imprese tecnologiche
http://www.incubatorefirenze.org/
[4] Gama Tech
[5] OpenWare
http://www.open-ware.org/ita/home.htm
[6] Le slide della presentazione di Fabio Armani
http://www.bettersoftware.it/media/conference/slides/scrumban-a-methodology-fusion.rar
[7] Il network di Francesco Cirillo
http://www.francescocirillo.com/network.html
[8] Il sito personale di Matteo Vaccari
[9] Il sito personale di Andrea Provaglio
[10] Sviluppo agile, il sito di Jacopo Romei
[11] Avanscoperta
http://www.avanscoperta.it/site/
[12] Articoli di Dave Snowden su Cognitive Edge
http://www.cognitive-edge.com/articlesbydavesnowden.php
[13] Ideato
[14] Le applicazioni Android di Fabio Collini
http://www.folderorganizer.net/
[15] Il blog di Omar Cafini
[16] Happy Worm, l’azienda di Mark Boas
[17] Frog Design
[18] Studio legale Nitti & associati
[19] Carlo Piana, consulente legale
[20] Coderloop, l’azienda di Luca Bonmassar
[21] 2nd Quadrant
[22] ExMachina, l’azienda per cui lavora Davide Cerbo
[23] Il blog di Luca Mearelli
[24] RoboDomain, la startup di Francesco Improta e Simone Carletti
[25] La pagina di Better Software su Facebook
https://www.facebook.com/BetterSoftware