Ogni verità passa attraverso tre fasi: all'inizio è ridicolizzata, poi è violentemente contrastata, infine la si accetta come evidente.
— Arthur Schopenhauer
Solitamente ci sono due tipologie di imprenditori che prendono in considerazione lo sviluppo di un software su misura. Il primo tipo lavora in un settore talmente innovativo che non ha trovato un software a pacchetto già pronto. Il secondo tipo, più comune, ha provato vari software già pronti, ma nessuno è stato all'altezza. Purtroppo per lui prima di valutare un software ad hoc, ha già speso una fortuna che, con il senno di poi, avrebbe potuto investire in una strabiliante soluzione personalizzata.
Perché un software su misura?#
Un software gestionale personalizzato o su misura è a tutti gli effetti un software gestionale che però viene creato per una specifica realtà o azienda.
Decidere in che casi si renda necessario l'utilizzo di un software personalizzato dipende dalla natura dell'azienda: il software gestionale deve supportare le attività dell'azienda e di conseguenza, la tipologia del business dell'azienda permette di rispondere a questa domanda. Per un business comune a molte aziende molto probabilmente sarà già presente sul mercato un software preconfezionato, diversamente per un'azienda innovativa sarà difficile trovare un software adatto alla sua gestione.
Questo è il caso tipico di una nuova azienda che con idee brillanti si ritaglia la sua nicchia di mercato e partendo da zero man mano cresce sempre più velocemente. All'inizio utilizza dei semplici fogli Excel o dei semplici documenti Word per gestire le sue attività. Subito dopo però capisce che deve trovare una soluzione più scalabile e adatta ai suoi scopi.
Questo è il momento in cui si ha la visione necessaria per capire i vantaggi che porta un software su misura.
Da notare che nella creazione del software su misura è possibile anche prevedere la migrazione dei dati raccolti inizialmente dai fogli excel. Inoltre, il software su misura realizzato evolverà con l'azienda e con l'evoluzione dei suoi processi aziendali.
Un altro caso si ha quando l'imprenditore dopo aver vagliato vari software già pronti e aver identificato i difetti di ciascuno di essi decide che è arrivato il momento di una soluzione ad hoc.
In alcuni casi, inoltre, si può evitare di realizzare un software personalizzato da zero. Ipotizziamo ad esempio che l'azienda nella sua fase embrionale utilizzi software diversi di produttori diversi per supportare le varie attività che svolge. In questi casi tipicamente l'azienda deve copiare lo stesso dato più volte in tutti i software che usa o deve copiare i risultati ottenuti da un software come input di un altro software.
La soluzione più elegante potrebbe essere quella di creare un software personalizzato, ma a seconda dei budget a disposizione non è da escludere la possibilità di creare dei connettori software che tengano sincronizzate le anagrafiche di software diversi in modo automatico e trasparente. Ad esempio nel caso di un'officina meccanica si potrebbero effettuare le revisioni ai macchinari utilizzando il software del produttore e sincronizzare i dati dei veicoli con il software di contabilità.
Chi ha bisogno di un software personalizzato ?#
In base alla nostra esperienza possiamo affermare che il software gestionale personalizzato è vitale per le aziende innovative, specialmente se sono aziende di servizi.
Tipicamente infatti le aziende di produzione, a meno di non essere innovative o molto attente a ridurre i costi, utilizzando sistemi ERP prepacchettizzati. Un software ERP (acronimo che sta per Enterprise Resource Planning) è un software che è nato proprio per le aziende di produzione classiche.
Se la tua azienda è un'azienda di produzione probabilmente sarai più interessato a pacchetti ERP già pronti. Oppure potresti essere interessato a delle personalizzazioni che migliorino alcuni aspetti del software per fare in modo che si adatti meglio alla tua attività, o per integrare il software ERP con sistemi esterni.
Se invece la tua azienda è un'azienda di servizi probabilmente il tuo lavoro potrebbe migliorare con l'introduzione di un software gestionale pensato per la tua realtà.
Le aziende di servizi infatti sono molto eterogenee e per questo motivo difficilmente in commercio esistono dei gestionali adatti a queste realtà.
Esempi classici di aziende di servizi sono i broker: aziende cioè che offrono servizi di qualità tutto compreso.
Tutte le volte che un'azienda offre un servizio chiavi in mano esternalizzando le singole attività/servizi a una rete di fornitori, ecco che si identifica un broker.
Un esempio potrebbe essere un'azienda edile che si limita a fare dei preventivi e a girare l'esecuzione dei singoli lavori a una rete di artigiani, un altro esempio potrebbe essere un'azienda di noleggio di barche conto terzi per effettuare vacanze in barca a vela, ecc.
In tutti questi casi il software è una parte integrante della qualità del servizio che si offre.
Quali sono gli errori da evitare?#
L'errore che fa naufragare una buona intenzione è disinteressarsi della soluzione che verrà creata. Mentre nel software a pacchetto l'imprenditore si limita a vagliare le proposte e scegliere la meno peggio, nel campo dello sviluppo software su misura diventa parte del team di progettazione. È l'imprenditore che deve sapere ciò che vuole e saperlo comunicare. Poi l'azienda di sviluppo software saprà consigliarlo al meglio, ma le idee chiare in partenza le deve avere il committente.
Se l'imprenditore non ha tempo da dedicare al progetto conviene che deleghi il compito a una persona di sua fiducia oppure che rinunci. Non ci sono alternative.
Quali sono le migliori tecnologie per realizzare software ad hoc?#
La caratteristica cardine che deve avere un software moderno è l'ubiquità, ovvero deve poter essere utilizzato praticamente ovunque, con qualsiasi dispositivo da un numero di persone non limitato a priori.
Le uniche tecnologie che hanno provato che ciò sia possibile sono le tecnologie legate al mondo del Web.
Le tecnologie web permettono di sviluppare software su misura con i seguenti vantaggi:
- Software longevo: il web e con esso le tecnologie che hanno permesso di realizzarlo sono nate verso la fine degli anni 80. Da allora si sono evolute in modo retrocompatibile. Questo vuol dire che ad esempio la prima pagina mai pubblicata del WEB http://info.cern.ch/hypertext/WWW/TheProject.html risalente al 1991 è visualizzabile a tutt'oggi anche con browser moderni come Firefox, Chrome o Internet Explorer e con la stessa resa che aveva più di 25 anni fa(!). Il software gestionale scritto oggi con un linguaggio proprietario, come quelli che girano sul Framework .NET di Microsoft, sarà ancora funzionante fra 20 anni? Fra 20 anni ci saranno ancora i S.O. come li conosciamo oggi?
- Software manutenibile: il concetto dell'open source e di standard aperti è molto importante nel campo dello sviluppo software. Un software sviluppato con tecnologie aperte, come le tecnologie web, ha il pregio di non essere legato alle sorti dell'azienda che l'ha creato. Proprio per il fatto che le tecnologie web sono di dominio pubblico, chiunque con la giusta dose di conoscenze potrebbe modificare un software creato con tali tecnologie. Cosa succede se fra 5 anni chi vi ha sviluppato il software non vi offre più supporto? La risposta a questa domanda spiega l'importanza delle tecnologie aperte.
- Software scalabile: questa caratteristica è intrinseca nel software creato su misura. Essendo creato su misura in ogni momento può essere adattato a nuove esigenze. Il suo ciclo di sviluppo segue l'evoluzione e la crescita dell'azienda e si adatta di conseguenza.
- Software ubiquo: un software gestionale, per adattarsi al meglio ai processi aziendali, deve essere disponibile ovunque e a qualunque dipendente di un'azienda: dall'impiegato che sta in amministrazione al commerciale che si trova dal cliente fino al manager che si trova in viaggio. Questa caratteristica di essere accessibile ovunque rende le tecnologie web la scelta migliore nello sviluppo di gestionali su misura.
- Software multidispositivo e multipiattaforma: la diversità di figure che accedono al gestionale rende naturale la necessità di avere un gestionale multidispositivo e multipiattaforma. Al gestionale ci devo poter accedere dal computer desktop con sistema operativo Windows, dal tablet con sistema operativo iOS, dal computer desktop con sistema operativo Mac OS X e da computer e dispositivi touch che ancora non esistono, ma che quando usciranno, data l'evoluzione storica, saranno dotati certamente di un browser internet.
- Software userfriendly: negli ultimi anni il design di interfacce utente usabili e amichevoli è stato prerogativa del web. Gli applicativi desktop si sono limitati a cercare di replicare e inseguire il design dettato dai creativi e dagli studiosi di usabilità del web. Il motivo principale è che creare nuovi controlli o nuove interfacce sperimentali nel web è molto semplice, mentre nello sviluppo di applicazioni tradizionali è piuttosto complicato. Per creare la propria interfaccia utente, nello sviluppo di applicazioni desktop classiche, si può attingere a un insieme ristretto di elementi e campi messi a disposizione dal produttore dell'ambiente di sviluppo. Crearne di nuovi è molto difficile. Nel web invece elementi come ad esempio un menù a tendina, un bottone, una lista con suggerimento automatico, ecc. si creano da zero ed è possibile modificarli o crearne di nuovi.
- Software senza installazione: il software realizzato con tecnologie web è pronto all'uso. Questo vuol dire che per utilizzarlo basta aprire il proprio browser all'indirizzo del server locale alla rete aziendale o su internet. Di conseguenza la manutenzione, quando necessaria, si fa in un unico posto, sul server, e non su tutti i computer che utilizzano il gestionale. Lo stesso dicasi per i backup e le copie di sicurezza che devono essere fatte solo sul server. Inoltre anche l'installazione si fa una sola volta sul server, in modo indipendente dal numero di postazioni e di computer che accederanno al gestionale.
Per non parlare dei nuovi scenari che aprono le tecnologie Web. Uno fra tutti è la possibilità di rendere autonomi i propri clienti diminuendo le telefonate in azienda. Pensiamo ad esempio al settore dei trasporti. Già nel 1994 (dopo 3 anni dalla pubblicazione della prima pagina web) il corriere UPS inaugurava il suo sito internet con funzionalità come il tracciamento delle spedizioni. Di punto in bianco i clienti di UPS non dovevano più chiamare il numero verde per sapere dov'era il proprio pacco. In un colpo solo un ottimo servizio e un bel risparmio per UPS. A ruota tutti i concorrenti UPS dovettero introdurre lo stesso livello di servizio.
A questo punto si potrebbe pensare che, vista l'elevata accessibilità al dato fornita da una soluzione web, il dato non sia al sicuro, specialmente se si trova in una server farm chissà dove. Paradossalmente invece il dato è più al sicuro nella server farm che non in un server in azienda. Questo perché le server farm hanno sistemi di sicurezza superiori a quelli che può mettere in campo la singola azienda come:
- hardware ridondato (se si rompe un componente es. un hard disk, entra subito in funzione il suo gemello senza interrompere il servizio)
- sistemi di videosorveglianza 24/7
- sistemi di raffreddamento e controllo della temperatura (i server scaldano molto)
- sistemi di backup avanzato a prova di disastro ambientale (incendi, allagamenti, terremoti, ecc.)
- sistemi di backup dell'energia elettrica (a batteria come gli UPS, a combustibile, ecc.)
La sicurezza invece dell'accesso al dato al solo personale autorizzato viene garantita da una serie di accorgimenti tecnologici come il fatto di utilizzare una connessione criptata tramite l'utilizzo di certificati SSL e l'utilizzo del protocollo HTTPS (HTTP over SSL), lo stesso utilizzato da banche ed e-commerce per gestire le transazioni monetarie. Altri accorgimenti sono quelli di salvare le password sul database non in chiaro ovvero in modo criptato, gestire accuratamente (sanitize) i dati inseriti dagli utenti o letti dal database.
Come mai l'imprenditore rimanda la scelta del software su misura?#
Come abbiamo visto l'imprenditore prima di arrivare al software su misura ha già compiuto delle scelte sbagliate. L'imprenditore capisce subito quali sono i vantaggi del software custom, ma è frenato da alcuni preconcetti il più delle volte errati. Vediamoli uno per uno.
La qualità#
Il settore dello sviluppo software è fondamentalmente nuovo. Come tale il problema principale di cui soffre è la qualità. Non è raro che chi ci contatta ha già avuto esperienze negative con liberi professionisti a cui aveva affidato la realizzazione del proprio software. La giovane età del settore ha fatto sì che ci sia più richiesta dell'offerta e di conseguenza si sono buttati in questo settore anche persone improvvisate. Il risultato sono software buggati, insicuri, limitati, sviluppati con tecnologie datate (Visual Basic, Access, ecc.) che non reggono il passo dei tempi. I preconcetti sul software su misura sono alimentati dal lavoro scadente di personale poco qualificato.
Mentre nella scelta di un software a pacchetto si opera principalmente una valutazione sul prodotto, nel campo del software su misura va invece operata una scelta sulle persone a cui affidare il proprio progetto. Chi sono? Che studi hanno fatto? Che esperienza hanno? Che tecnologie usano? Sono trasparenti? Comunicano in modo chiaro? ecc.
Il costo e i tempi#
Subito dopo la qualità, l'altra preoccupazione ricorrente riguarda il costo e i tempi. Non è raro che per uno stesso progetto si ottengano preventivi con una forbice molto ampia come ad esempio 9'000 € - 3 mesi per la consegna, l'offerta più economica e, 50'000 € - 12 mesi quella più cara. Come può essere che chiedendo le stesse cose a più aziende i preventivi siano così vari?
I motivi sono diversi, uno di questi è sicuramente il processo di sviluppo adottato dalle software house. Molte, sviluppano utilizzando metodologie e strumenti generici. Per questo motivo i preventivi di quest'ultime saranno per forza di cose lunghi nei tempi e di conseguenza costosi.
Le software house invece che fanno i preventivi più economici e con i tempi di consegna più rapidi o stanno sottovalutando il lavoro da svolgere (questo diventerà un grosso problema) oppure adottano metodologie e strumenti specifici che gli consentono di "industrializzare" lo sviluppo software mantenendo al contempo alta la qualità del prodotto finale.
Il problema di "Industrializzare" lo sviluppo di applicazioni e software è stato preso in considerazione fin dagli albori dell'informatica.
Nel corso del tempo sono stati proposti vari modelli di sviluppo e metodologie di sviluppo che si prefiggevano vari obiettivi come:
- produrre software manutenibile;
- produrre software sicuro;
- produrre software privo di bug o errori;
- ecc.
Tutti questi metodi, a partire dal modello di sviluppo a cascata e finendo con gli approcci più in voga al momento quali l'Extreme Programming, le metodologia Agile e il Test Driven Development o TDD, hanno però un limite.
Non prendono in considerazione un obiettivo molto importante: produrre software di qualità, ma in tempi brevi e a costi contenuti.
La risposta per produrre software di qualità a costi contenuti e in tempi ragionevoli sta nella specializzazione e nell'utilizzo di strumenti adatti.
Se si analizza il campo dei software si nota subito che esistono degli elementi comuni a varie tipologie di software.
Gli sviluppatori software allora hanno pensato bene di enucleare le caratteristiche comuni ai software in "librerie" o "framework" di mattoncini pronti all'uso. Così facendo sono proliferati tutta una serie di web framework (CodeIgniter, Yii framework, CakePHP, Zend framework, Symfony, Kohana, Akelos, DooPHP, ecc.) che sono uno la fotocopia dell'altro, ma hanno tutti lo stesso grande difetto: sono troppo generici. Vogliono consentire lo sviluppo di qualsiasi applicazione web, ma così facendo aggiungono uno strato di complessità fornendo in cambio funzionalità per lo più generiche.
Intendiamoci, partire con un framework generico o partire con una libreria è meglio di niente, ma si può essere molto più rapidi ed efficienti utilizzando il META-Sviluppo RAPIDO, specifico per un determinato settore o dominio applicativo.
Facciamo un esempio. Ipotizziamo di dover realizzare un software gestionale su misura. Fin da subito possiamo identificare degli elementi ricorrenti e comuni a qualsiasi software gestionale:
- Griglie: vengono utilizzate per visualizzare i dati in modo conveniente e permettono all'utente di filtrarli e ordinarli a piacere. Es. Griglia dei clienti, delle fatture, degli ordini, ecc.
- Maschere di modifica: vengono utilizzate per inserire, modificare, cancellare i dati.
- Campi delle maschere: vengono usati per inserire dei valori numerici (prezzi, importi, quantità), date (data di scadenza, data dell'ordine, ecc.), alfanumerici (ragione sociale, email, ecc.).
- Gestione di utenti, ruoli e permessi: anche questi sono concetti ricorrenti. A seconda dell'utente, del suo ruolo e dei suoi permessi potrà svolgere o meno delle attività, potrà modificare dei dati o solo vederli.
- Stampe: ad esempio stampe di etichette, fatture, documenti, report, ecc.
- Importazioni ed Esportazioni di dati da fogli excel, da file posizionali, da file csv, xml, ecc.
Gli elementi precedenti sono ricorrenti esclusivamente nel campo dei software gestionali, già nel campo dei CAD su misura non vanno bene.
Ecco quindi che un imprenditore, per la stessa richiesta di software gestionale su misura potrebbe ricevere i seguenti 3 preventivi da tre aziende diverse:
- 50'000 € e 12 mesi di lavoro, da un'azienda che sviluppa tutto da zero;
- 20'000 € e 6 mesi di lavoro, da un'azienda che utilizza un framework web generico;
- 9'000 € e 3 mesi di lavoro, da un'azienda che ha sviluppato internamente degli strumenti e usa il META-Sviluppo RAPIDO specifico per il settore dei software gestionali.
Per questo motivo prima di commissionare un lavoro, è bene chiedere vari preventivi e informarsi sugli strumenti e le modalità di sviluppo utilizzate.
Come sarà?#
L'altra grande incognita è: come sarà il software? Come apparirà? Sarà facile da usare?
Il meglio sarebbe poter vedere una dimostrazione del software, ma essendo creato sulle esigenze del cliente al momento dell'offerta non esiste ancora e quindi non è possibile mostrarlo. Ciò che si può fare e che l'imprenditore dovrebbe richiedere, è la possibilità di visionare delle schermate o dei filmati di altre soluzioni sviluppate dalla software house. In questo modo è possibile farsi un'idea abbastanza chiara di come risulterà il prodotto finito.
Inoltre, è molto importante che l'imprenditore abbia la visibilità sull'avanzamento del progetto. Specialmente per progetti complessi con tempi di sviluppo superiori al mese è fondamentale prevedere degli incontri a cadenza fissa, ad esempio ogni mese, in cui la software house mostra lo stato di avanzamento del lavoro. In questo modo l'imprenditore può seguire tutte le fasi di sviluppo e intervenire per tempo se c'è bisogno di correggere la rotta. Inoltre provando fin dalle prime fasi le funzionalità implementate è possibile rendersi conto di come lavora la software house.
Alla fine del processo di sviluppo l'imprenditore conoscerà già tutti i dettagli del software che ha commissionato perché fin dalle prime fasi ha seguito gli sviluppi e quindi non ci saranno brutte sorprese.
Se hai altri dubbi puoi contattarci oppure puoi leggere tutti gli articoli di questa serie:
- Come evitare gli errori più comuni nella scelta del software
- Startup: nasce l'esigenza di adottare un software in azienda
- Software a pacchetto: le promesse non mantenute
- Software su misura: la soluzione per le imprese innovative
- Come chiedere un preventivo per lo sviluppo di un software personalizzato?
- Scelta del software: piccolo decalogo sul da farsi