17 aprile 2013

"Android - programmazione avanzata" offre contenuti eccellenti e notevoli approfondimenti. Dalla lettura del libro e relativa recensione sono nate alcune domande e curiosità su ciò che ha portato alla nascita di questo volume.

Le ampie risposte fornite dagli autori, Emanuele Di Saverio e Stefano Sanna, possono essere utili sia a quanti vorrebbero conoscere il libro, sia a chi lo ha già acquistato o a chi è interessato allo sviluppo su Android.
 
Non c'è un vero e proprio ordine nelle domande; la numerazione serve solo come riferimento per eventuali commenti.

Domanda 1: Ho trovato che “Android – Programmazione avanzata” sia un testo un po' particolare rispetto agli altri titoli editi da Edizioni FAG: presuppone già conoscenze non superficiali di Android e della sua programmazione, senza che ci siano altri titoli dello stesso editore che affrontino la programmazione di base per questa piattaforma.
Mi sarei aspettato un doppio volume: uno con le tecniche di base e questo, avanzato. È stata una scelta vostra o dell'editore? C'è una motivazione strategica dietro la decisione di fare solo questo volume?

Risposta: Più che una strategia, direi che c'è una constatazione di fondo: il web, a partire dal portale ufficiale di Google (developer.android.com), è ricchissimo di specifiche, tutorial ed esempi di codice che introducono alla programmazione su Android. Non mancano anche libri (in PDF, ndr) completamente gratuiti. Ci è sembrato, invece, che mancasse un testo di approfondimento su alcuni temi specifici, che andasse oltre ciò che si trova normalmente sui blog o sui forum. Io ed Emanuele volevamo fare un libro diverso dagli altri; non ultimo, fare un testo avanzato in Italia ci sembrava una bella sfida. L'editore ha sposato il nostro progetto, dimostrando sicuramente coraggio rispetto allo scenario editoriale complessivo nazionale, che vede i numeri in costante contrazione. Il riscontro è stato buono, dunque possiamo dirci tutti soddisfatti della scelta.

Domanda 2: Quali possono essere i prerequisiti per poter trarre il meglio da questo volume? Potete esplicitare quali sono le conoscenze minime che avete presupposto in un vostro potenziale lettore? Quali eventuali risorse potete consigliare per raggiungere tali basi, prima di affrontare la lettura del vostro testo?

Risposta: è necessario conoscere Java e le buone pratiche di programmazione ad oggetti, avere un po' di confidenza con i design pattern e, ovviamente, aver fatto un minimo di sperimentazione con la piattaforma Android. Il libro non spiega cosa sia una Activity o a cosa servano gli Intent, concetti fondamentali e imprescindibili, ma introducendo gli argomenti nuovi (ad esempio, NFC) guida il lettore passo passo senza dare nulla per scontato. Ci sono altri capitoli (ad esempio, quello sui Service) che possono essere “gustati” solo dopo essersi scontrati con problemi reali.

Domanda 3: la stampa del volume è avvenuta a febbraio 2012 e nel volume descrivete la versione 4.0 della piattaforma. Secondo voi, quali sono le novità più importanti nelle versioni successive? Avete pensato di inserire sul vostro sito aggiornamenti su alcune novità? Potete consigliare altre risorse per approfondire i nuovi argomenti?

Risposta: Jelly Bean (Android 4.1 e 4.2) segna la maturazione della piattaforma, dopo la “riunificazione” operata da Ice Cream Sandwich. Le novità sono tante, ma a nostro avviso una in particolare merita attenzione, perché segna – per così dire – una discontinuità rispetto alle modalità di utilizzo dei tablet rispetto al passato: la multiutenza. In ambito professionale è una rivoluzione e una affermazione di Android come alternativa all'uso di sistemi desktop. Si pensi, ad esempio, a tutte le situazioni in cui un tablet è condiviso da più commessi all'interno di un negozio, oppure dagli operai di un cantiere, dalle forze dell'ordine in servizio, dai medici di un ospedale: la gestione di più utenti non è più a carico delle singole app, ma è il sistema operativo che si occupa di isolare (e proteggere) i dati di ciascun utente. Più in generale, l'API di Jelly Bean si è arricchita, le prestazioni migliorano continuamente, le risoluzioni diventano elevatissime. Resta solo da chiedersi quale altre novità arriveranno con Android 5.0! Sicuramente il lavoro iniziato con il libro continuerà ma, come detto prima, trattandosi di argomenti avanzati abbiamo bisogno di tempo (e maturare esperienza) prima di avere qualcosa da condividere con i lettori. A tutti, ovviamente, consigliamo di tenere d'occhio il sito ufficiale e soprattutto i video che Google pubblicherà a valle della Google I/O di maggio.

Domanda 4: Nel capitolo 8, "Qualità del software", affrontate vari argomenti legati al Test Driven Design e descrivete l'uso di strumenti che agevolano la scrittura del codice secondo certe metodologie agili. Avete applicato tali metodologie in progetti reali? Potete dirci le vostre esperienze in tale ambito?

Risposta: Purtroppo, non tutti i clienti le apprezzano e pochissimi, pur apprezzandole, le richiedono. Volendo parafrasare un noto proverbio, potremmo dire che “le metodologie sono come i sentieri: se non ci si passa regolarmente, crescono le erbacce”. C'è da dire, però, come sottolineato anche nel testo, che il supporto sulla piattaforma Android è ancora acerbo e lontano dalla qualità e complessità degli omologhi strumenti per le applicazioni di backend (si pensi, ad esempio, a quanto sia strategico e “vitale” un tool come Robolectric e il fatto che non sia ufficialmente parte della piattaforma).

Domanda 5 Una curiosità: mi sarei aspettato, da esperto Java (ma non di Android), un meccanismo di build che facesse uso di Maven o qualcosa di analogo e non solo di Ant. Ci sono novità/evoluzioni in questo senso per i tool di build?

Risposta: Quando abbiamo scritto il libro il supporto Maven per Android era ancora acerbo. Ora la situazione sta migliorando, ma c'è ancora qualche problema nell'integrazione con l'IDE. Non escludo che nel breve futuro ci sia una accelerata in tal senso, l'esigenza è forte.

Domanda 6: Da tutte le pagine traspare evidente la vostra grande esperienza nello sviluppo di applicazioni in campo mobile. Potete raccontare brevemente la vostra storia e se è legata in qualche modo anche ad una vostra passione per questo tipo di applicazioni?

Risposta: Il mio primo contatto con un dispositivo mobile programmabile è avvenuto nel 1999: si trattava di un PSION 5MX, con sistema operativo EPOC e un prototipo di Java Virtual Machine compatibile con l'API 1.1.6. Quel sistema operativo sarebbe poi diventato Symbian, leader per circa un lustro della telefonia mobile, prima dell'avvento di iOS e Android. Lavoravo nel gruppo Network Distributed Applications del CRS4, un centro di ricerca presso Cagliari, ad un progetto che aveva come obiettivo l'erogazione multicanale (termine oggi scontato, ma al tempo assolutamente pionieristico!) di servizi. I “canali” erano il browser, le applicazioni native (Java), gli SMS, le interfacce vocali e la TV interattiva (ovvero, la porzione programmabile del digitale terrestre che nessuno utilizza!). I palmari (o PDA) programmabili costituivano uno dei nuovi canali. In seguito arrivano nuovi sistemi, nuovi ambienti (ad esempio, Java Micro Edition), nuovi dispositivi. La vera promozione da mercato di nicchia a leader del mercato ICT, però, è arrivata con il lancio dell'iPhone prima (2007), che ha rivoluzionato hardware e software, e dell'App Store poi (2008), che rivoluzionato il meccanismo di distribuzione delle applicazioni. Dopo circa 14 anni spesi in questo settore, credo il bilancio personale sia assolutamente positivo. Non ci si annoia mai, c'è un continuo (ma non troppo rapido) susseguirsi di novità e opportunità che rendono molto piacevole questo lavoro.

Domanda 7: Al giorno d'oggi esistono molte applicazioni acquistabili a pochi euro. Secondo voi, che modello di business permette agli sviluppatori di avere degli introiti da simili applicazioni? È solo una questione di “sperare” di vendere tante copie o c'è dell'altro?

Risposta: Vivere di sole app” è piuttosto difficile. Al lancio dell'App Store per iPhone, molti sviluppatori brillanti colsero l'occasione ed effettivamente realizzarono dei guadagni lusinghieri (parliamo sempre di sviluppatori singoli, non di software house); con l'aumentare degli sviluppatori, delle aziende specializzate e delle applicazioni disponibili, tutto è diventato più complesso. Nel mondo Android, poi, i dati dicono che gli utenti scarichino tante app, ma che siano più restii a pagarle (mentre tollerano di buon grado un po' di pubblicità). Avere delle buone app sull'application store, però, è un ottimo biglietto da visita: “questa l'ho fatta io” spesso vale più di tante sigle roboanti sul CV (che comunque deve essere solido!).

Domanda 8: è interessante, nel capitolo 7, "Bluetooth", il riferimento ad Arduino. Avete sperimentato soluzioni basandovi su tale board?

Risposta: Abbiamo fatto parecchia sperimentazione, soprattutto quando il supporto a Bluetooth era ancora primordiale. Ora stiamo lavorando sul profilo Low Energy del protocollo, purtroppo non ancora esposto attraverso una API pubblica. Sicuramente l'accoppiata Android + Arduino rappresenta una formidabile opportunità per realizzare prototipi e dare ampio spazio alla creatività. Ne è prova l'estensione ADK, nata proprio attorno ad una specializzazione di Arduino. In un certo senso, è mancata quella “proliferazione di accessori” che ci sarebbe aspettati, ma forse il limite è proprio nel fatto che si tratti di un dispositivo “wired” (USB): un futuro ADK basato su Bluetooth LE e una board Arduino con modulo omologo a bordo (cioè, senza necessità di ulteriori shield) potrebbe aprire la strada a nuovi oggetti integrabili con Android (peraltro, tardano ad arrivare le board ADK2 con Bluetooth).

Domanda 9: com'è stata l'esperienza di scrivere un libro come questo? Come mai insieme? Da dov'è nata l'idea? Avete in cantiere altre iniziative editoriali?

Risposta: Abbiamo lavorato assieme per un paio d'anni presso un'azienda romana, mettendo le mani sulla primissima versione di Android, alcuni mesi prima che arrivasse in Italia. Provenendo entrambi da una lunga esperienza su Java Micro Edition, abbiamo ovviamente accolto con molto entusiasmo il formidabile salto generazionale di Android. Accanto ai progetti “ufficiali”, abbiamo iniziato a fare della sperimentazione per conto nostro; in particolare, abbiamo scritto la prima (ed unica?) libreria Bluetooth per Android 1.x, che non offriva una API pubblica per gli sviluppatori (esposta poi da Google a partire dalla versione 2.0, ndr). Abbiamo avuto un contatto con l'editore e l'idea del libro focalizzato su temi avanzati si è via via consolidata e raffinata, sino a giungere al prodotto finale. Curiosamente, abbiamo scritto la maggior parte del testo dopo aver cambiato entrambi lavoro e vivendo in due città diverse. In questo momento non abbiamo altre iniziative editoriali in corso, ma scrivere e condividere esperienze fa parte del nostro modo di approcciare questo lavoro, dunque non escludo che

Domanda 10: Quali sono, secondo voi, le letture che non possono mancare a chi vuol affrontare la programmazione di Android? Che consigli date a chi vorrebbe avvicinarsi a questo tipo di attività ma ha, come unico bagaglio, qualche conoscenza di programmazione su sistemi tradizionali?

Risposta: Una solita base di Java e di programmazione ad oggetti, una padronanza di design pattern e di buone pratiche di design delle applicazioni; è poi importante conoscere bene i protocolli di comunicazione e le metodologie per testing automatico e continuos integration. Quali testi? Ne esistono diversi, alcuni più datati, altri più moderni; moltissimi in inglese, qualcuno disponibile in traduzione. L'invito che facciamo è consultare un book store, leggere le recensioni e poi prendere un testo per ogni argomento e poi, da ciascun testo, trovare spunti per nuovi approfondimenti. Ciascuno trovi il suo percorso formativo e di specializzazione. Segnalare qui i “soliti testi famosi” di fatto tarpa le ali agli autori meno conosciuti, ma non meno validi.

Domanda 11: avete avuto feedback dal vostro libro? Che genere di “consigli” potrebbero dare i vostri lettori per aiutarvi nel vostro lavoro editoriale?

Risposta: I feedback sono stati molto positivi. I consigli vertono essenzialmente su due fronti: trattare altri argomenti avanzati e aggiungere una sezione introduttiva (che ci riporta alla prima domanda!). Non siamo onniscienti, dunque gli argomenti che sono fuori dal nostro ambito professionale (per esempio, i giochi) non potremo mai trattarli. Sugli altri, valuteremo a tempo debito.

Domanda 12: il vostro è uno dei pochi libri a colori. C'è una motivazione dietro questa scelta, accanto all'ovvia piacevolezza estetica?

Risposta: è innegabile che un libro a colori consenta agli autori di arricchire di grafici e screenshot il testo, a tutto vantaggio del lettore. Come detto in apertura, questo lavoro non è frutto solo del nostro lavoro, ma del coraggio dell'editore, che ha deciso di dare una ulteriore impronta differenziante al testo, stampandolo a colori.

Domanda 13: qual è la proporzione tra libri cartacei ed ebook venduti per il vostro libro? 

Risposta: Più che di proporzione, bisognerebbe parlare di sproporzione: gli ebook rappresentano pochi punti percentuale della versione cartacea. Non so se si tratti di un gap culturale, di una questione di oggettiva difficoltà a leggere libri tecnici (con codice) su schermi piccoli o altro. Sta di fatto che i nostri lettori preferiscono il libro cartaceo, magari da tenere sempre a portata di mano sulla scrivania (magari da rivendere usato quando uscirà la nuova edizione...).

Concludo ringraziando ancora gli autori per il tempo che hanno dedicato a rispondere alle domande. Chi volesse leggere una recensione del libro, la può trovare a questa pagina: http://webtoolsreview.blogspot.com/2013/04/recensione-libro-android-programmazione.html

0 commenti :