Come scegliere un fornitore per lo sviluppo software

Nella nostra attività quotidiana incrociamo spesso aziende che si sono sentite fregate da software house che hanno scelto per sviluppare un software su misura. In alcuni casi si tratta di vere e proprie truffe, in altri casi di “incompatibilità caratteriali”. Spesso però, questo problema è dovuto a un gap di conoscenza tra cliente e software house, o al fatto che l’azienda, quando ha selezionato il fornitore, non ha tenuto in considerazione alcuni aspetti importanti che tratteremo in questo articolo.

È veramente difficile scegliere il fornitore giusto per noi: la maggior parte delle volte si prende una decisione a caso, basandosi sulla conoscenza personale. Magari hai incontrato un tizio ad un corso, gli hai chiesto “sapresti sviluppare questo programma?”. Questa è la strada che spesso porta ad avere un software schifoso.

Quali sono i criteri per scegliere una software house?

1. Storicità

La storicità non è il più importante parametro in assoluto, perché ci possono essere delle aziende nuove che lavorano molto bene.

In ogni caso, il maggior problema per la creazione di software è la mancanza di organizzazione. Di conseguenza, puoi commissionare il lavoro a ragazzi di diciannove anni, bravissimi a programmare, ma incapaci di lavorare.

Quando lavori con aziende che non hanno storicità, non sai nemmeno se esistano i criteri di gestione del cliente nelle loro teste, né se li mettano in pratica.

Inoltre se decidi di fare un software è perché lo vuoi utilizzare per qualche anno: se lo usi solamente per sei mesi, è meglio se compri un tool. Ciò implica che tu debba esser certo che l’azienda che te lo sviluppa esista e sia solida: se ha dieci, venti o trent’anni ti dà qualche garanzia in più del fatto che, tra dieci anni, possa ancora essere in piedi.

Perché non scegliere uno sviluppatore freelance per creare il tuo software

Succede spesso di rivolgersi a programmatori in erba, freelance, studenti universitari, magari anche molto bravi. Proprio perché sono molto bravi, prima o poi, vengono chiamati da una grande azienda o continuano il loro percorso di studi: spariscono proprio nel momento in cui diventano necessari per l’assistenza e l’inserimento di nuove funzionalità.

Per questo, è fondamentale far sviluppare il tuo software a qualcuno che sai che sicuramente sarà ancora presente fra dieci anni almeno.

2. Esperienza nel Settore

In teoria, la programmazione è una “metabilità”: prendi dei sistemi e li programmi. In pratica, uno dei prodotti sviluppati da Mostaza  è un software per musei, chiamato “Amuse”: è un’app che sostituisce le audioguide, che con dei sensori vede dove si trova la persona nel museo e gli dice cosa lo circonda.

Se si dovesse sviluppare un Amuse specifico per ogni museo, la spesa sarebbe elevatissima: si parla di circa 50.000 €, visto che abbiamo impiegato dai tre ai quattro anni per svilupparla. Noi, però, lavorando con più musei, abbiamo potuto prodottizzarla, in modo tale che ogni cliente può pagare solo una parte dei quattro anni totali di sviluppo.

Ogni azienda ha, poi, delle caratteristiche che la contraddistinguono dalle altre.

Mostaza è molto forte nella parte di programmazione di app e di sistemi cloud, perché uno dei linguaggi che utilizziamo di più è React, che serve a questo tipo di soluzioni. 

Se devi creare un’app sia per Android sia per iOS e la programmi con React, puoi essere certo del fatto che il 95% dei due codici sarà identico.

Se ci chiedessi di sviluppare un software stand-alone, cioè che dev’essere installato sul tuo computer, saremmo in grado di farlo, ma non saremmo i migliori nel settore.

3. Vicinanza Geografica

Visto che il software si integra moltissimo coi processi di lavoro, se ce ne sono di precedente testati e sui quali sai già tutto, è probabile che ci sia un’app che ti risolva tutti i problemi.

Al contrario, in molti casi, se ti serve un software su misura, è perché il processo di lavoro è molto personalizzato. In tal caso, più lavori vicino al programmatore che sta sviluppando il tuo tool, dal punto di vista geografico, meglio è.

Tale affermazione vale principalmente per i software stand-alone: essendo solo sul tuo computer, se si rompe il dispositivo, devi avere un tecnico nella tua zona che se ne occupi. Di conseguenza, la vicinanza geografica è proporzionalmente più importante se si sceglie di sviluppare un software stand alone molto personalizzato.

Essendo tecnologie superate, possiamo dire che il programmatore di riferimento, all’inizio dell’implementazione di queste tecnologie, era veramente “il vicino di casa”. Ci stiamo spostando da tale tipo di tecnologia, ma, se fosse necessario per te creare un software stand alone, sappi che devi avere un tecnico molto vicino alla tua azienda. 

4. le tecnologie utilizzate

È la parte più difficile da valutare per chi non è del settore, ma la più critica. Se infatti chi ti fornisce il software usa tecnologie obsolete, potresti avere un sacco di problemi. Ad esempio, ora, al primo posto dei linguaggi di programmazione troviamo il Python. Ciò vuol dire che se fai sviluppare un software implementato in Python, puoi essere certo che, per i prossimi dieci anni, ci saranno dei programmatori sulla piazza in grado di sistemare il programma, nel caso ce ne fosse bisogno: anche se l’azienda che ha creato il tuo tool fallisce, avrai la possibilità di rivolgerti a qualcun altro.

Se, invece vuoi far creare un programma scritto in Delphi, ti conviene desistere: solo un programmatore su quattrocento sa scrivere in Delphi. Ciò vuol dire che, se ti fai fare il software con questo linguaggio, e il programmatore dopo la creazione del tuo software scompare, dove pensi di poter trovare un altro programmatore in grado di aiutarti?

Nel momento in cui richiedi un preventivo, chiedi in che linguaggio verrà programmato (devono scriverlo per forza): a quel punto, vai su Google e prova a capire quanto diffuso è quel linguaggio di programmazione, e accetta solo tecnologie diffuse.

In Mostaza, ad esempio, utilizziamo solo tecnologie web open source, molto diffuse tra i programmatori.  

COME VALUTARE LE OFFERTE 

Di chi Sarà la Proprietà del Codice Sorgente?

Su questa definizione, moltissime persone vengono veramente fregate.

La cattiva abitudine che hanno le aziende di programmazione è che ti fanno pagare lo sviluppo ma, poi, o riciclano software già usati in precedenza con te o ne creano uno nuovo per te e lo riciclano con un altro cliente, facendolo pagare. 

Il software, prima o poi, avrà bisogno di modifiche. Se il codice sorgente è tuo, puoi contrattare con chi te l’ha fatto, dicendo:

“No! Queste modifiche costano troppo: vado da qualcun altro.”

Se, invece, lasci la proprietà del codice sorgente al programmatore, potresti cadere nella trappola tipica del chiederti poco all’inizio, per convincerti a comprare il suo servizio, per, poi, farti pagare molto di più, nel momento in cui ci sono da fare delle modifiche.

L’Assistenza Tecnica

L’assistenza tecnica comprende due punti di vista:

  •     Economico: se il tuo software non funziona, devi capire cosa sia compreso nel canone e cosa no, come dovrai pagare ciò che non è compreso…;
  •     Temporale: nel momento in cui il tuo software non funziona, devi capire in che tempi te lo sistemeranno e per quanto rimarranno i malfunzionamenti;
  •     Economico-temporale: devi capire se avrai dei rimborsi per i malfunzionamenti del software.

L’ultimo punto, in America, è definito dallo SLA (Service Level of Agreement – Livello Minimo di Servizio). Devi capire quale sia il servizio minimo. Il fatto è che spesso i contratti, in Italia, non prevedono SLA, anzi, tutelano moltissimo i programmatori: è un problema, se fai un software davvero importante per la tua azienda. Infatti, se è davvero importante, tutta la tua azienda, alle otto del mattino, si collega al programma e ci lavora tutto il giorno: perdere una giornata di lavoro, perché il software non funziona, può risultare un’enorme perdita di denaro.

Come vedi, spesso parliamo delle aziende di programmazione come se avessero tutte le colpe loro. La verità è che l’azienda di software sa ognuna delle informazioni che ti sono state date in questi capitoli, ma, nel momento in cui ti dice:

“Per lavorare con noi e avere l’assistenza ci devi dare 3.000 € al mese.”

Subito ti tiri indietro. Deriva tutto dalla mancanza di chiarezza.

In realtà, potrebbero essere necessari 5.000 € di lavoro (es.: supervisione, assistenza, monitoraggio…), per sviluppare il tuo software. Ma, nel momento in cui le persone si spaventano anche solo davanti a 3.000 €, l’azienda di software, non per fregare, ma per una questiona di pavidità (non vogliono litigare), offre un’assistenza più economica, il che implica che alcune parti saranno scoperte.

Documentazione/Formazione

La parte più difficile e complessa in assoluto è convincere le persone a utilizzare il tuo software.

Quanto più è documentato il tutto, quanto più si è chiarita all’inizio la parte di formazione, tanto più si riesce a gestire in maniera efficace la parte della valutazione delle offerte.