Blog di Garda Informatica2024-03-10T16:50:00+01:00Garda Informaticahttps://www.gardainformatica.it/https://www.gardainformatica.it/bloghttps://www.gardainformatica.it/favicon/favicon-32x32.pnghttps://www.gardainformatica.it/img/garda-informatica-logo-2x.png© 2011-2024 Garda InformaticaIntegrazione Notifiche WhatsApphttps://www.gardainformatica.it/blog/sviluppo-software/integrazione-notifiche-whatsapp2024-03-10T16:50:00+01:00Per superare uno dei limiti attuali delle Progressive Web App, abbiamo deciso di integrarci con WhatsApp e sfruttare la sua app per inviare messaggi e di conseguenza notifiche push in tempo reale.
Possiamo affermare con una certa sicurezza che chiunque abbia uno smartphone avrà sicuramente installata anche la app di WhatsApp (ormai la si trova preinstallata).
Per questo motivo abbiamo pensato di appoggiarci a questa sua ubiquità per inviare messaggi e notifiche in modo da superare un limite che, specialmente su iOS, separa le PWA dalle app native.
Abbiamo sperimentato con successo questo approccio all'interno di un progetto che notifica attraverso messaggi WhatsApp i propri utenti non appena tornano disponibili i biglietti per eventi richiesti (es. concerti).
Attualmente le API di WhatsApp (Meta) permettono di inviare le seguenti tipologie di messaggi:
In definitiva i messaggi e le notifiche WhatsApp sono una possibilità in più che si aggiunge al classico invio di email di notifica.Il software su misura è davvero più costoso del software a pacchetto?https://www.gardainformatica.it/blog/sviluppo-software/il-software-su-misura-e-davvero-piu-costoso-del-software-a-pacchetto2024-03-06T14:22:00+01:00Se stai pensando di cambiare il Sistema Informativo della tua azienda, rispondi a queste domande:Che cosa sono le API nel software?https://www.gardainformatica.it/blog/sviluppo-software/cosa-sono-API-software2024-03-04T12:22:30+01:00Che cosa sono le API e perché devi scegliere software che forniscano delle API? Magari ti è capitato di leggere "Integrazione con API di Google, il software si dovrà integrare con le API di PayPal, Integrazione con API di Dropbox, e così via".
Ma cosa sono le API?
L'acronimo API tradotto in italiano sta per Interfaccia di Programmazione dell'Applicazione e in pratica è un modo per far parlare tra loro due software.
Normalmente un software viene utilizzato attraverso un'interfaccia utente, ovvero l'insieme di pulsanti, finestre, menù ed elementi grafici con cui l'utente interagisce quando vuole usare il software.
Chi crea il software può prevedere altri tipi di interfacce per l'uso del software.
Una di queste può essere l'interfaccia di programmazione dell'applicazione. Questa interfaccia non viene usata da un utente umano, ma viene utilizzata da un altro software per automatizzare l'esecuzione di alcune attività al posto dell'utente umano.
Facciamo un esempio. Google Calendar è un'applicazione web che permette di organizzare la propria agenda. Io attraverso la sua Interfaccia utente posso creare un nuovo evento premendo su "nuovo" e inserendo i dati dell'evento: la data, l'ora, la durata, il titolo e così via.
Google Calendar fornisce anche una API, ovvero un'interfaccia di programmazione per comandare le sue funzioni da un altro software. Ad esempio posso fare in modo che quando qualcuno va sul mio sito e compila il modulo per la richiesta di contatto, venga in automatico creato un promemoria per domani, nel mio Google Calendar con i dati dell'utente che ha inserito la richiesta. In questo modo in agenda avrò già il promemoria per ricordarmi di rispondere alla richiesta ricevuta.
Per realizzare in pratica questa integrazione dovrò leggere la documentazione tecnica delle API di Google Calendar e implementare nel mio software il protocollo di comunicazione che è stato previsto da Google Calendar. È richiesto del lavoro di programmazione, ma una volta implementato beneficio del potere dell'automazione.
Quali sono i 3 vantaggi delle API.
Il primo è che con le API puoi automatizzare i processi. Al posto di fare tu a mano il copia incolla di dati da un software all'altro, puoi realizzare delle integrazioni tra software e degli automatismi che lavorino al posto tuo e dei tuoi collaboratori. L'abbiamo appena visto con l'esempio di Google Calendar.
Il secondo vantaggio te lo spiego con un esempio. Fai finta che nel tuo settore non esista un software gestionale che ti aiuti a svolgere il tuo lavoro.
Ad esempio potresti essere un tecnico che fa la revisione di ascensori. Ogni giorno fai le tue revisioni, compili dei verbali e l'ufficio amministrativo trascrivere i dati di questi verbali nel software gestionale per fare le fatture a fine mese.
Moltiplica questo lavoro per 10-20 tecnici e ti accorgi che potrebbe essere utile compilare il verbale invece che su carta, direttamente dal tablet in un software apposito. Se questo nuovo software dovesse anche gestire la contabilità il suo costo di realizzo sarebbe eccessivo.
Però per tua fortuna il software di contabilità che già utilizzi espone delle API. Allora non ti serve un software che faccia tutto, ma ti basta un software per la parte operativa, quindi far compilare i verbali dal campo, e poi questo software si deve integrare con il software di contabilità.
Non c'è bisogno di re-implementare le funzionalità di un software di contabilità, è molto più facile integrarsi con uno già esistente.
Terzo e forse più importante vantaggio è quello di poter aggiungere dei "superpoteri" al tuo software.
Pensa ad esempio di avere un gestionale di spedizioni e di voler calcolare il preventivo per un trasporto che visiti vari indirizzi. Grazie alle API di Google Maps puoi sviluppare un'integrazione che calcoli la distanza chilometrica effettiva e moltiplichi tale distanza per il costo chilometrico in modo da determinare il costo del trasporto.
Se dovessi fare la stessa cosa senza Google Maps, come minimo dovresti avere un database di tutte le coordinate GPS, di tutte le strade e dovresti mantenerlo aggiornato costantemente. In pratica non potresti.
Purtroppo non è detto che il software con il quale vuoi integrarti esponga delle API. Ricorda che dipende sempre dal produttore di quel software la decisione di realizzare un'interfaccia di programmazione applicativa.
Di seguito metto alcune sigle di tecnologie che vengono utilizzate per realizzare le API:
Se riconosci una di queste sigle nel materiale informativo di un software di tuo interesse, ci sono buone probabilità che esponga un'API.
In conclusione ti lascio due riflessioni.
In Garda Informatica Realizziamo gestionali su misura in tempi rapidi grazie al META-Sviluppo RAPIDO e nel tempo abbiamo sviluppato vari tipi di integrazioni come ad esempio:Esempio di Progressive Web App iOS/Androidhttps://www.gardainformatica.it/blog/sviluppo-software/esempio-progressive-web-app-ios-android2024-03-01T11:30:00+01:00Vediamo come funziona l'installazione su iOS/Android di una Progressive Web App (PWA). Per farlo abbiamo realizzato una PWA di esempio, ispirata ad Airbnb, che è priva di funzionalità, ma ha il solo scopo di mostrare il flusso di installazione Aggiungi ad HOME.
Una Progressive Web App (in breve PWA) è un'applicazione web che coniuga in un'unica soluzione le caratteristiche offerte da una App per smartphone e una Applicazione Web.
L'utente può iniziare ad usarla dal web, come un normale sito internet, e decidere solo in un secondo momento se vuole installarla sul proprio smarphone.
Le statistiche dicono che gli utenti installano sempre meno App. Oggi i cellulari vengono già forniti con le App più famose già precaricate (es. Facebook e Whatsapp), ma a parte quelle è ben difficile che l'utente installi una nuova app specialmente se poco conosciuta.
L'utente medio sopra i 18 anni tende ad installare 0 app al mese (Fonte: How is Apple Encouraging Progressive Web Apps on iOS 13 ).
Quando l'utente, dopo aver usato la PWA, decide che è utile, può installarla sul suo smartphone in modo da averla sempre a portata di mano.
Vediamo in pratica come funziona con un esempio.
L'utente può venire a conoscenza di una App "nuova" in vari modi:
Tutti questi casi hanno in comune che la prima volta si passa da un sito Web o tramite link diretto o scansionando un QR Code.
Nel nostro esempio l'utente può cliccare sul link https://esempio.app oppure scansionare il QR Code seguente.
Una volta effettuata questa azione sarà già sulla PWA di esempio.
Vediamo il comportamento a seconda del tipo di dispositivo.
Al primo accesso compare un popup che invita l'utente ad installare la App. L'utente può decidere di procedere con l'installazione o chiudere il popup.
Se decide di installare la App viene avviata la procedura di installazione e un messaggio segnala l'esito dell'installazione. A quel punto è possibile chiudere il sito e lanciare direttamente la App dalla schermata del browser, anche in assenza di connessione ad internet.
CLICCA SULLE IMMAGINI PER VEDERLE A SCHERMO INTERO.
Se invece l'utente chiude il popup, può utilizzare la App direttamente dal browser (N.B. la App di esempio ha solo due pagine prive di logiche). Quando poi si sarà convinto potrà premere sul bottone "Installa" del menù e installare la App.
Inoltre, per evitare che si dimentichi di questa possibilità, pur non essendo troppo insistenti, abbiamo deciso di riproporre l'installazione anche le volte successive che l'utente accede alla Web App, purché sia passato almeno un giorno dall'ultima volta che gli era stato proposto e sempre che nel frattempo non abbia già installato la App sullo smartphone.
Nel filmato seguente vediamo lo stesso flusso che però parte dalla scansione di un QR Code cartaceo.
Il comportamento è simile al caso del cellulare Android, ma in questo caso la PWA guida l'utente affinché la installi. Vediamo un filmato di esempio.
Dopo il primo accesso, la PWA salva i dati ricevuti sullo smartphone in questo modo è possibile usarla anche in assenza di connettività. Vediamo un filmato di esempio.
Quando l'idea da realizzare come App è nuova e innovativa è solitamente meglio partire realizzando una Progressive Web App. Come abbiamo visto gli utenti non installano le App a meno che siano già affermate e conosciute.
Permettere di provare una App sotto forma di "sito" prima di procedere alla sua installazione facilita il superamento di questa barriera.
Inoltre i costi di realizzazione e mantenimento di una App nativa sono molto maggiori rispetto ai costi di sviluppo di una PWA. Di conseguenza, a parità di budget da investire, è possibile destinare più risorse al marketing o al cambio delle funzionalità in corsa (Azioni di pivot ).
Infatti ogni nuova idea, prima di rivelarsi efficace e profittevole, deve essere "testata" sul mercato. Molto spesso capita che l'idea, come era stata inizialmente concepita, non è perfettamente in linea con le richieste del mercato e quindi è necessario intraprendere delle azioni di modifica della PWA. Avere ancora a disposizione risorse da investire può fare quindi la differenza tra il successo e il fallimento.
Una volta poi che l'idea è stata validata e la PWA ha successo è possibile realizzare la App nativa a colpo sicuro, finanziandola con gli introiti generati dalla PWA.
Infine l'unico modo per pubblicare App native è attraverso gli store di Apple (per iOS) e Google (per Android). Entrambi gli store pongono dei limiti alle App pubblicabili.
Ad esempio su Apple non è possibile pubblicare App enterprise ad uso interno o indirizzate a un pubblico ristretto, ma devono sempre essere aperte a tutti. Inoltre i vincoli e le limitazioni imposte dagli store cambiano nel tempo, senza preavviso, e alle volte sono di interpretazione soggettiva.
Se vuoi approfondire questi rischi puoi leggere l'articolo Perché NON conviene sviluppare App iOS.
Questo articolo non sarebbe equo se non evidenziasse che in alcuni casi non è possibile realizzare una PWA e bisogna per forza realizzare una App nativa.
Il caso principale riguarda l'invio di notifiche Push.
Su Android è possibile anche con le PWA mandare delle notifiche PUSH, sia ad App aperta che ad App chiusa. Su iOS attualmente le notifiche PUSH sono ricevibili solo se la PWA è aperta, diversamente vengono notificate solo alla successiva apertura dell'App.
In questi casi si può superare questo limite affiancando all'invio di notifiche PUSH anche l'invio di email e/o messaggi WhatsApp e/o SMS.
Esistono poi altri casi particolari come ad esempio la lettura di tag NFC o l'accesso a funzionalità particolari dell'hardware dello smartphone che non sempre sono disponibili in una PWA.
Di seguito una lista di Progressive Web App in vari settori, utilizzate ogni giorno da milioni di utenti nel mondo.
Starbucks Progressive Web App .
La PWA è più piccola del 99,84% rispetto all'app iOS esistente di Starbucks, rendendo l'app Web favorita tra i suoi utenti. Grazie alla PWA hanno raddoppiato il numero di utenti web che effettuano ordini ogni giorno.
Uber Progressive Web App
Con l'espansione dell'azienda in nuovi mercati, il sito web di Uber è stato ricreato da zero come PWA per offrire un'esperienza di prenotazione paragonabile all'app mobile nativa.
Il cuore della web app pesa solo 50kB consentendo di caricarla in 3 secondi anche su una rete lenta come la 2G.
Spotify Progressive Web App
A causa del disaccordo tra Spotify e Apple in merito alla commissione del 30% che l'Apple Store trattiene sulle vendite generate all'interno dell'App Spotify, Spotify ha deciso di sviluppare una versione PWA della loro app, come hanno fatto molti altri grandi marchi.
Rispetto all'app nativa, la versione PWA è notevolmente più veloce con la sua interfaccia utente unica e adattiva. Come molte altre PWA, agli utenti viene anche richiesto di aggiungere Spotify PWA alla schermata iniziale, rendendo Spotify PWA più accessibile e alla pari con le versioni native.
Pinterest Progressive Web App
Con un focus sulla crescita internazionale, Pinterest ha riscritto la sua piattaforma web come PWA. Il social network ha rilevato che solo l'1% dei loro utenti mobili si convertiva in registrazioni, accessi o installazioni di app, a causa delle scarse prestazioni sui dispositivi mobili.
Rendendosi conto che l'opportunità di migliorare la conversione era enorme, hanno ricostruito la piattaforma web utilizzando la tecnologia PWA.
Youtube Progressive Web App
Da inizio 2021 anche Google ha convertito il sito web di Youtube in una Progressive Web App. Questa nuova PWA si unisce alla lista di PWA di Google:
Per maggiori informazioni sullo sviluppo di App e Progressive Web App consulta la pagina App iOS/Android e Web Application.Quanto costa mediamente una Web App iOS/Android?https://www.gardainformatica.it/blog/sviluppo-software/quanto-costa-mediamente-app-ios-android2024-02-26T10:36:09+01:00In base alla nostra esperienza possiamo dire che mediamente la realizzazione di una Progressive Web App costa 20.000 € + IVA.
Su internet le risposte a questa domanda sono perlopiù elusive come se essere trasparenti e dire chiaramente quanto costa sia un problema. In altri casi vengono dati dei range di prezzo senza senso: da 5.000 a 50.000 €. Queste risposte fanno perdere tempo e desistere chi è potenzialmente ben intenzionato a commissionare lo sviluppo di una App.
Abbiamo quindi voluto evitare giri di parole e dare la risposta ancora nella prima riga: analizzando tutti i progetti da noi realizzati, possiamo dire che in media il costo di una Progressive Web App si aggira intorno ai 20.000 € + IVA.
SE VUOI AVERE UN'IDEA PIÙ PRECISA PUOI:
Prova subito il nostro calcolatore online!Perché NON conviene sviluppare App iOShttps://www.gardainformatica.it/blog/sviluppo-software/perche-non-conviene-sviluppare-app-ios2024-02-20T17:30:00+01:00Prendendo spunto da due articoli ovvero "Apple Encouraging Progressive Web Apps By Rejecting iOS Apps" e "Considering App vs. Website? It’s 2019: Build a Website." voglio elencare i motivi principali per cui oggi è meglio sviluppare una Web App piuttosto che una App per iPhone.
Il primo aspetto da valutare è il fatto che gli app store e in special modo l'App Store di Apple, si possono rifiutare di pubblicare la tua App per mille motivi. Basta infatti andare a leggere le App Store Review Guidelines di Apple dove viene detto quanto segue:
The App Store is a great way to reach hundreds of millions of people around the world. If you build an app that you just want to show to family and friends, the App Store isn’t the best way to do that.
Quello che viene accennato qui, in modo non proprio esplicito, è che le App che si vogliono pubblicare sullo Store devono essere di interesse mondiale o quasi. Questo esclude non solo le App che si vogliono mostrare a famiglia e amici, ma anche tutte le App che, ad esempio, sono rivolte ai dipendenti di un'azienda e non a chiunque. Quindi l'intera classe delle App aziendali ad uso interno probabilmente verranno rifiutate dalla pubblicazione sull'App Store di Apple.
4.2 Minimum Functionality
Your app should include features, content, and UI that elevate it beyond a repackaged website. If your app is not particularly useful, unique, or “app-like,” it doesn’t belong on the App Store. If your App doesn’t provide some sort of lasting entertainment value, it may not be accepted.
Quindi la tua App, per poter essere pubblicata, deve come minimo:
Purtroppo tutti questi punti sono opinabili: quando si considera una App utile? Unica? "App-like"? Chi decide se fornisce qualche forma di intrattenimento duraturo?
Sono tutte cose che decidono i revisori dello store. Purtroppo noi sviluppatori scopriamo se l'idea del nostro cliente è utile o unica o "app-like" solo se la inviamo allo store per il processo di approvazione e quindi solo dopo che l'abbiamo sviluppata completamente!
If the App Store model and guidelines are not best for your app or business idea that’s okay, we provide Safari for a great web experience too.
In questo punto viene suggerita come alternativa il web ed è come se dicessero "La tua App non è stata approvata? Trasformala in una Web App". Noi fortunatamente utilizziamo le tecnologie web anche per realizzare App iOS e quindi il passaggio da App a Web App nel nostro caso non è devastante, ma prova a pensare ad uno sviluppatore che ha sviluppato una App per iOS utilizzando le tecnologie proprietarie di Apple (Objective-C o Swift, Xcode, ecc.): nel caso in cui l'App Store dovesse rifiutare la sua App sarebbe una tragedia in quanto dovrebbe riscriverla tutta d'accapo con le tecnologie web (HTML, CSS, JavaScript) ammesso che sia in grado di farlo. Prova a immaginare di essere il suo cliente: se ti va bene (lo sviluppatore riscrive l'App con tecnologie web) spendi il doppio, se ti va male (lo sviluppatore non è in grado di fare ciò) hai perso i tuoi soldi (di solito migliaia di euro).
Sviluppare una App per iOS è costoso. Molto più costoso che svilupparla per Android o come Web App. Questo perché per sviluppare una App iOS è obbligatorio disporre di hardware specifico Apple ed è obbligatorio iscriversi all'Apple Developer Program pagando un canone annuale. Come minimo servono 3'000 € di investimento iniziale.
Quelli appena elencati purtroppo sono i costi minori, i costi maggiori derivano dal fatto che Apple non ha mai trattato bene gli sviluppatori e questo si traduce in un ambiente di sviluppo (Xcode) buggatissimo e lentissimo che fa perdere un mare di tempo per riuscire anche solo a impacchettare la propria App e inviarla allo Store per il processo di approvazione.
Inoltre Apple gestisce male il rilascio degli aggiornamenti, pertanto se si aggiorna il sistema operativo del proprio iPhone (iOS) all'ultima versione disponibile c'è il rischio poi di non avere gli strumenti per svilupparci sopra poiché questi ultimi diventano compatibili con le nuove versioni di iOS solo in un secondo momento, quando cioè Apple rilascia gli aggiornamenti di Xcode.
Altro aspetto dolente è il supporto pressoché inesistente nonostante si paghi il canone annuale per essere Apple Developer. In caso di problemi, il più delle volte causati da bug dell'ambiente di sviluppo Xcode, si finisce per chiedere assistenza nel forum degli sviluppatori dove si ottengono le classiche risposte inutili e illogiche che sembrano date da automi a stati finiti. Stiamo parlando di intere giornate di lavoro buttate nel ... per tentare di capire come mai Xcode non compila, non riconosce più il nostro iPhone, non carica la build, ecc..
Poi c'è da considerare i costi di rilascio. Ogni volta che si vuole aggiornare la App, correggere un bug o qualsiasi intervento di manutenzione grande o piccolo che sia è sempre un bagno di sangue. Ogni 5-6 mesi dal rilascio iniziale le librerie usate vengono deprecate (diventano cioè obsolete) e gli strumenti di sviluppo e le procedure di rilascio cambiano. Quindi ogni volta, oltre alla modifica che si vuole effettuare, c'è da riscrivere una parte dell'App o rileggere chili di documentazione per capire come è cambiato il processo di rilascio di una App. In più ogni rilascio vuol dire una nuova richiesta di approvazione da parte di Apple con conseguente rischio che la App non sia più in linea con le linee guida aggiornate.
Il fatto poi che i sistemi Apple siano chiusi complica qualsiasi tipo di analisi e debug. Concetti perfettamente noti ad un ingegnere informatico, come ad esempio la cifratura a chiave pubblica e privata, vengono rinominati nel mondo Apple con buzzword che non vogliono dire nulla e servono solo a confondere le idee come "Provisioning profile", "signing identity", ecc.
Dall'altro lato sviluppare una Web App costa molto meno: semplificando, per installare una modifica basta copiare dei file su uno spazio web, non richiede l'approvazione di nessuno e gli standard web sono aperti e future proof (la prima pagina web della storia del 1991 è ancora oggi apribile con un normale browser).
Quand'anche il povero sviluppatore, dopo mesi di duro lavoro, riuscisse a farsi approvare la App sviluppata probabilmente non otterrebbe l'effetto sperato in quanto le statistiche ci dicono che la maggior parte degli utenti installano 0 (zero) App al mese sul proprio iPhone. Questo ci dice che una volta che l'utente ha installato i soliti Facebook, WhatsApp, YouTube e poco altro molto probabilmente non installerà la tua App.
Dall'altro lato la Web App non ha bisogno di essere installata anche se è possibile comunque aggiungerla alla Home grazie alla funzionalità di Safari "Aggiungi a Home". Se poi è stata sviluppata come Progressive Web App avrà la sua icona sulla Home e si potrà aprire senza vedere la barra degli indirizzi avendo l'impressione che si tratti proprio di un App nativa.
L'unico caso in cui può essere necessario tentare la strada della App è quando si vogliono avere:
Per chi vuole approfondire i benefici di una Progressive Web App abbiamo scritto l'articolo Esempio di Progressive Web App iOS/Android.
Sviluppare una App per iOS è un percorso a ostacoli non indifferente per cui, a meno che la tua idea non sia utile, unica, "app-like" (come inteso da Apple) e debba accedere ad hardware particolare dell'iPhone, ti sconsigliamo vivamente di far sviluppare una App per tale dispositivo, il gioco non vale la candela.
Al suo posto ti consigliamo di far sviluppare una Progressive Web App iOS/Android.
Per maggiori informazioni sullo sviluppo di App e Progressive Web App consulta la pagina App iOS/Android e Web Application.Quanto costa un gestionale?https://www.gardainformatica.it/blog/sviluppo-software/quanto-costa-un-gestionale2024-02-14T17:43:16+01:00Una domanda da non sottovalutare quando si valuta l'adozione di un nuovo gestionale in azienda è: quanto mi costa?
Naturalmente non ci si può limitare a calcolare il costo delle sole licenze, ma bisogna valutare anche altri fattori che concorrono a determinare il TCO ovvero il "Total Cost of Ownership".
Parlando di gestionali "prefabbricati" bisogna infatti chiedersi:
Inevitabilmente, facendo due conti, ci si renderà conto che di tutte queste voci, le licenze sono quelle che impattano meno, specialmente se si pensa di utilizzare il nuovo gestionale per gli anni a venire.
Perché non puntare invece su una soluzione su misura?
Un gestionale sviluppato su misura infatti:
In alternativa si può prendere il meglio dei due mondi utilizzando un software di fatturazione "prefabbricato" a cui affiancare un software gestionale verticale sviluppato su misura.
Per stimare il costo di un software su misura abbiamo realizzato un calcolatore che permette di avere un'idea di tempi e costi di realizzazione .Il mercato dei software gestionali in Italiahttps://www.gardainformatica.it/blog/sviluppo-software/il-mercato-dei-software-gestionali-in-italia2024-02-07T17:27:35+01:00Attualmente il mercato dei software gestionali in Italia è composto sostanzialmente dalle seguenti categorie di prodotti:Cos'è l'Informatica?https://www.gardainformatica.it/blog/sviluppo-software/informatica-significato2024-02-01T16:57:07+01:00Molti associano il significato del termine Informatica a smartphone, PC, notebook, mouse, tastiere, cavi, HD, ecc. Poiché questo è il significato commerciale del termine: quando si parla di catene di informatica si pensa a negozi che vendono "ferro" e in misura minore a pacchetti software. Ma questo è inesatto. Vediamo perché.Lo sviluppo software è arte o scienza?https://www.gardainformatica.it/blog/sviluppo-software/sviluppo-software-arte-o-scienza2024-02-01T12:15:00+01:00Per rispondere a questa domanda riporto il parere di Bram Moolenaar , un programmatore di computer olandese e membro attivo della comunità del software open source. Bram è l'autore originale, il manutentore, il responsabile dei rilasci e il "benevolo dittatore a vita" di Vim , un editor di testo molto popolare tra i programmatori e gli utenti esperti nonché l'editor che utilizziamo quotidianamente in Garda Informatica.
In una recente intervista pubblicata qui gli è stato chiesto "Secondo te, lo sviluppo del software è più vicino all'arte o alla scienza?" e lui ha risposto:
Non vedo molta scienza nello sviluppo del software. La scienza implica che c'è la prova che qualcosa sia vero. Nel software ci sono molte opinioni e c'è l'esperienza, ma c'è qualche prova che un linguaggio di programmazione sia migliore di un altro? Ci sono prove che la programmazione orientata agli oggetti (OOP NdA) si traduca in una migliore produttività? La maggior parte delle prove riguardano misurazioni delle prestazioni e ci sono statistiche, ma quasi nessuna relazione con il linguaggio in cui è stato scritto un programma o quali strumenti sono stati utilizzati. Non è nemmeno arte, dal momento che l'obiettivo principale è che il software funzioni bene, non che sia bello. È piuttosto un lavoro di artigianato. E un artigiano usa tutti gli strumenti che pensa gli faranno ottenere il miglior risultato, non importa se sono quelli che usano tutti gli altri o qualcosa di diverso. E un buon artigiano crea i suoi strumenti quando necessario.
In Garda Informatica la pensiamo esattamente come il buon Bram e riteniamo che molto spesso nel mondo dello sviluppo software si prendano per buone delle pratiche solo perché vanno di moda e non perché sia stato dimostrato scientificamente che sono la soluzione migliore.
Tenersi aggiornati è fondamentale, ma valutare le novità con pensiero critico è molto importante per non sottovalutare il dispendio di energie necessario per padroneggiare un nuovo paradigma di programmazione, un nuovo linguaggio o un nuovo framework.
Col tempo ci siamo infatti accorti che molto spesso le promesse di "ridurre la complessità" adottando questo o quel framework/metodologia/linguaggio sono vane.
Nei casi reali la complessità di fatto non può essere evitata e, come suggerisce Bram, molto spesso è più efficace crearsi i propri strumenti piuttosto che tuffarsi a capofitto nell'ultimo trend del settore.