Android. C’è chi lo ama, c’è chi lo odia, molti lo criticano.

Certo, è ancora il sistema operativo più popolare, soprattutto per la sua flessibilità e per l’enorme varietà di funzioni, ma non è esente da forti critiche, soprattutto quando è comparato a sistemi più snelli come iOS.

Abbiamo parlato con i nostri sviluppatori Android cercando di capire quali siano i difetti maggiori che riscontrano nel loro lavoro quotidiano. Questi sono i difetti principali su cui tutto il team ha concordato:

 

Frammentazione

Android è grande perché è compatibile con un’infinita di dispositivi Hardware e Software. Android è problematico per lo stesso identico motivo. Per quanto a tutti piace avere un sistema operativo che funzioni bene anche su sistemi di seconda o terza mano, il dovere continuamente correggere in corsa mille problemi di compatibilità, soprattutto quando trattiamo con API molto vecchi, rende maggiore la fatica che il guadagno per i nostri programmatori, senza la certezza di una vera qualità per il cliente.

Il gestire in continuazione le interfacce, il dovere inserire infiniti controlli per garantire la compatibilità, e l’estenuante gestione della UI sono tutti elementi che giocano a sfavore, piuttosto che facilitare la compatibilità generale del sistema.

Android continua ad avere un sistema di supporto minimo  funzionale, che limita la capacità d’intervento quando ci sono problemi di compatibilità e di UI.

 

Non è un sistema veramente aperto

Sulla carta, abbiamo un sistema facilmente modificabile dagli sviluppatori, con versioni beta di ogni app e una buona libertà d’azione sugli applicativi. La realtà è ben diversa: per creare un’app completa, non basta basarsi sul codice open source, ma anche su una lunga serie di codici proprietari.

Per potere poi pubblicare l’app nello store, bisogna accettare l’intero protocollo del pacchetto Google, e di conseguenza l’accesso alle stesse e il loro acquisto è regolamentato da Google. Il codice rimane aperto per un discorso di compatibilità, ma dal punto di vista dello sviluppo è un gioco abbastanza ipocrita.

 

Kotlin

È il linguaggio di programmazione specifico d’Android. In principio si usava Java, che è anche diffusamente insegnato all’università, mentre l’apprendimento di Kotlin è lasciato più alla libera iniziativa del singolo. Da quando Oracle ha fatto causa a Google, affermando che hanno rubato loro Java come linguaggio di programmazione, Google sviluppa all’85% con Kotlin, mal supportando (intenzionalmente) Java, tanto che in genere le ultime versioni sono totalmente incompatibili con quelle attualmente supportate (si parla di Java 8 contro Java 15).

Kotlin limita molto anche la professionalità del singolo sviluppatore, in quanto è un linguaggio troppo specifico che ti “condanna” a lavorare esclusivamente su Android. I nostri programmatori sono tutti d’accordo sul fatto che supportare Java sarebbe stato più funzionale, e forse anche più onesto.

 

Emulatori

A differenza di quanto succede su IoS, nell’ambiente Android l’emulatore virtualizza totalmente la macchina. Il problema è che essendo lo stesso radicato nell’hardware, subisce le limitazioni del sistema stesso nel quale viene eseguita l’operazione.

Con un sistema di supporto scadente, i continui blocchi del sistema e la stabilità che si riduce enormemente anche con l’aggiunta di features extra, il gioco non vale la candela.

 

Animazioni

Che siano gratuite o implementate, rappresentano spesso un problema al momento della loro creazione. In entrambi i casi, è richiesto al programmatore di scrivere un numero molto più alto di righe di codice, rispetto a quelle necessarie in altri ambienti. Soprattutto con scadenze a breve termine, i programmatori non dovrebbero sprecare tempo prezioso per risolvere problemi di questo tipo.

Mancando già la possibilità di creare buone animazioni di base dal principio, la mole di lavoro aumenta esponenzialmente, e questo, assieme alla necessità di scaricare le librerie correlate appesantisce l’intero processo.

 

Tools grafici

Anche questi, scarsi e in genere mal scopiazzati dall’ambiente IOS. Google ha speso un’infinità di tempo ed energie per la creazione di features che uno sviluppatore senior molto difficilmente userà. Il dovere passare quasi tutto il tempo cercando tra menù differenti l’opzione più utile consuma inutilmente tempo ed energia. A livello di pura e semplice manualità, è molto più semplice scrivere a mano la totalità dei codici.

 

User experience

Non c’è bisogno di cambiare sistema operativo per sentirsi persi. È sufficiente cambiare telefono Android, e spesso e volentieri ci toccherà reimparare da zero come utilizzare il nostro nuovo dispositivo. Come se non bastasse, la sopracitata mancanza di updates seri e sistematici rende spesso frustrante l’uso d’Android, tanto che, dopo solo un paio d’anni, i telefonini con questo OS sono generalmente obsoleti.

Anche se molti OEM si stanno organizzando per migliorare il sistema di updates, la compatibilità dei vecchi telefoni è estremamente ridotta rispetto agli equivalenti IoS, con conseguenze anche sulla rivendibilità dei dispositivi o il loro recupero. Il fatto che esistano così tante versioni d’android, impedisce anche al più abile degli sviluppatori d’avere una visione d’insieme per correggere questo “malfunzionamento”.

In genere, poi, la maggior parte dei dispositivi Android non è molto user friendly, rispetto agli equivalenti di altri sistemi, e questo può diventare un malus di tutto rispetto, impedendo alle fasce meno tecnologiche o “motivate” l’utilizzo pieno del dispositivo.

 

Difetti del dispositivo

Anche i dispositivi d supporto non mancano di difetti importanti, primo tra tutti, la durata media della vita degli stessi, abbastanza inferiore rispetto agli equivalenti iOS. La batteria è l’elemento che crea più problemi, accorciando spesso e volentieri ulteriormente la durata del telefono. Tra obsolescenza programmata maggiore, scarsa ottimizzazione a livello operativo, e disguidi causati da una poco fluida gestione degli aggiornamenti, molto spesso un telefono Android non dura molto più di due anni.

Gli updates, quando ci sono, non solo causano appunto microdanni che si accumulano nel tempo, ma spesso e volentieri sono lenti e incompleti. Essendo Android comunque un sistema open source, i continui cambi e le variazioni tra tutte le versioni obbligano le aziende a una continua revisione del sistema operativo per rimanere al passo coi tempi, e questo allunga all’infinito i tempi di rilascio delle nuove versioni.

Ultimo, ma non meno importante, è l’interazione tra la componente hardware e software. Accade spesso che ci siano versioni di android che non vengano supportate in maniera ottimale dai dispositivi stessi. Google non controlla la produzione ed integrazione d’hardware e software come fa Apple, e questo si nota nel momento in cui si cerchi d’inserire apps più “corpose” nel telefono.

 

Creazione e caricamento app

Dal punto di vista tecnico, l’unico vero problema riscontrato è la quantità assurda di RAM che viene consumata durante la creazione d’un’app in ambiente Android.

Il problema maggiore è dato dal caricamento nello store. Essendo eccessivamente semplice come processo (un’app può ricevere l’ok in meno di 24 ore), gli standard di sicurezza e qualitativi subiscono spesso un tracollo. È facile sia che le app di qualità si perdano tra migliaia di versioni scadenti con le stesse funzionalità, e, ancora peggio, rende facile la presenza di app non sicure o corrotte. Un controllo qualità maggiore, simile a quello operato da Apple, diminuirebbe di molto i rischi per il cliente e migliorerebbe la qualità generale dello store.

Un grazie speciale al nostro team: Francesco Fornasini (Lead), Marco Mardegan, Alessandro Persiano, Domenico Savino, Davide Pagin, Alessandro Sisto per il loro contributo alla discussione.

Foto di TheAverageTechGuy da Unsplash.