Vi siete mai chiesti come funziona una software house? E quali sono le sfide di progettazione che i team che ci lavorano devono affrontare ogni giorno? E quanto e quale tipo di lavoro si nasconde dietro la realizzazione di un’applicazione, di un plugin WordPress o di un intero portale web?
A queste domande risponderà oggi Daniele Ferrari, ICT specialist e cofondatore di FactorDev, software house e web agency di Pontremoli, in provincia di Massa Carrara. Per la sua lunga esperienza nel campo, Daniele è sicuramente il professionista giusto a cui rivolgere queste mie curiosità, che sono poi quelle di molti di noi. In effetti, spesso ci succede che, per una scarsa confidenza con la materia in questione, etichettiamo con il termine “programmazione” tutta una serie di attività che invece sono parecchio differenti le une dalle altre.
Insomma: esistono programmatori specializzati nell’esecuzione di certi compiti e programmatori specializzati nell’esecuzione di altri. Confondere i piani è sempre un errore grossolano.
Ma lasciamo parlare direttamente Daniele. Andiamo cioè ad ascoltare qual è la sua storia e cerchiamo di fare un po’ di chiarezza su alcuni punti di quel vasto universo che è racchiuso nella parola informatica.
Ciao Daniele, e grazie della tua disponibilità. Inizierei chiedendoti di parlarci un po’ di te. Per esempio, qual è la tua formazione?
Grazie a te, Alessandro, per l’opportunità di scrivere sul tuo popolare blog. Sono da sempre un appassionato di tecnologia. Il mio percorso formativo comincia all’ITC Belmesseri di Pontremoli, scuola in cui mi diplomo con la specializzazione di “programmatore”. Ho iniziato da lì il mio tuffo nell’oceano gelido dell’informatica: variabili, array, cicli, diagrammi di flusso… una giungla! Decisamente meno attraente dell’informatica fatta di videogame e di applicazioni a cui mi ero appassionato fin da bambino.
Superata l’impasse iniziale ed essendo così forte il mio desiderio di imparare, mi sono gettato nello studio anima e corpo, con l’intento di poter nuotare in quell’oceano. Volevo divertirmi a sviluppare anche io ciò che vedevo creato da altri. Riuscito nell’intento, mi sono iscritto alla facoltà di Ingegneria Informatica, accorgendomi di aver nuotato fino a quel punto in un lago e non in un oceano. Tutto sembrava così difficile, ma io lo devo imparare: è bello creare qualcosa dal nulla.
Quando hai avuto l’idea di fondare FactorDev? Quali sono esattamente i servizi che offrite ai vostri clienti?
All’università conosco Mary Ercolini, cofondatrice di Factordev, una persona con cui da subito nasce un feeling, visto che ha il mio stesso desiderio di imparare e di approfondire. Iniziamo così a collaborare con alcune società, e diamo il via alla nostra carriera di sviluppatori software e, in seguito, di analisti e progettisti. Ma si sa, tutte le cose belle non possono durare a lungo, e le aziende che incontriamo – e soprattutto la zona in cui viviamo – non ci consentono di continuare il nostro lavoro in serenità.
Spesso, però, si chiudono delle porte e si aprono dei portoni. Decidiamo infatti di giocarci un’altra opportunità: fondare una nostra azienda e di proporci a quelli che in passato erano stati i clienti delle aziende con cui abbiamo lavorato – Università degli studi di Milano Bicocca, un’importante azienda farmaceutica svizzera e altri. Iniziamo, non senza alcune difficoltà, a ingranare, ci lanciamo anche nel mercato dei siti web, ambito già seguito in passato, ma questa volta con clienti nostri.
Inizialmente, abbiamo ottenuto contratti con piccole strutture ricettive o associazioni, e in seguito con altre realtà più strutturate – case editrici e e-commerce. Rispolveriamo inoltre il progetto di firma grafo metrica, che sembra tornare in voga, e riallacciamo i rapporti con Nicola Bianconcini, che nel frattempo ha fondato la sua azienda, Kedos.
Decidiamo di iniziare la commercializzazione di KeFirma – la nostra proposta all’avanguardia in ambito di firma grafometrica e dematerializzazione.
Le affinità che ci legano a Kedos sono molte, e insieme decidiamo di unire i nostri gruppi per allargare il ventaglio dell’offerta ai nostri clienti. Inizia quindi una proficua collaborazione, che ci vede in prima linea con importantissimi clienti nell’ambito finance e telecomunicazioni, senza tralasciare lo sviluppo di siti web. Iniziamo, grazie alla collaborazione con Lorenzo Bellini – un vecchio amico-collega –, lo sviluppo di app per smartphone iOS e Android. Con Lorenzo, fondatore della newCo Emberware, abbiamo realizzato l’applicazione CARSH, il primo aggregatore di provider di car-sharing.
Parliamo di linguaggi di programmazione in ambito web. Quali sono i più usati al giorno d’oggi?
A questa domanda preferirei non rispondere: potremmo infatti scatenare un’interminabile diatriba nei commenti in coda al tuo post. Visto che me lo chiedi, provo comunque a citare quelli più usati.
Ogni linguaggio gode di seguaci e di momenti di gloria e di ignominia. Lo stesso Java, per citarne uno, nasce come un linguaggio rivoluzionario, subisce poi un declino – oscurato da altri linguaggi più alla moda, meno accademici e più performanti – e infine ritorna fortemente in auge nell’attuale sviluppo di servizi web.
Non si può trascurare il framework .NET di Microsoft, che ospita tra i principali linguaggi il C# e il VB.NET, e che ha conquistato un’ampia fetta di mercato. Non posso fare a meno di citare anche il glorioso PHP, con cui sono stati realizzati i principali software web open source, e che è usatissimo come base per molti siti e servizi web. Insomma, direi che è il più diffuso.
Poi ci sono una miriade di altri linguaggi, molti dei quali divertenti, molti macchinosi e molti accademici. Ognuno di essi ha le proprie specificità e i propri seguaci, che sono disposti a qualunque cosa pur di difendere a spada tratta il proprio linguaggio preferito.
Un sito web dev’essere ovviamente ospitato su un server. Puoi darci qualche dritta su come scegliere una soluzione di hosting per un sito o un blog personale? In sostanza: quando scegliamo un hosting, quali sono i parametri che dobbiamo valutare?
Realizzare un sito in modo nativo o appoggiandosi a un CMS open source o proprietario non è ovviamente sufficiente: c’è bisogno di un luogo che lo possa ospitare affinché diventi pubblico e possa essere visitato da chiunque.
La scelta dell’hosting, vero e proprio motore pulsante del sito, è tra le più delicate e spesso la più trascurata. In genere, ci si orienta sul provider più economico, e questo può non essere un problema, almeno inizialmente, in quanto il sito non è molto trafficato. Poi arrivano gli spider, quei piccoli programmi in grado di indicizzare tutto il contenuto del sito nei motori di ricerca, che rallentano pesantemente le performance del sistema, ma che non si possono limitare, pena l’esclusione dagli indici dei motori. Ce ne sono a migliaia, Googlebot è solo uno dei tanti.
Pensate che, analizzando alcuni LOG di un sito, ho trovato una grande attività da parte di un provider cinese. E questo è un fatto curioso, se si pensa che il sito in questione ha solo contenuti in lingua italiana. In quel caso, sapete che cosa è successo al sito, sul quale tra l’altro era stato fatto un ottimo lavoro di SEO? A causa degli spider, si è trovato a essere spesso irraggiungibile oppure lentissimo. I motori di ricerca hanno iniziato a penalizzarlo: tantissima fatica per nulla, tutto da rifare. Se solo si fosse speso qualcosa in più, affidandosi a qualcuno che avesse seguito la crescita del progetto nel tempo e che magari avesse aumentato le risorse – o avesse consigliato di aumentarle – prima che fosse troppo tardi! Ora il sito sarebbe ancora nella prima pagina delle SERP di Google. Che peccato!
Quindi, più che concentrarmi sulle caratteristiche fisiche di un server, mi concentrerei sul trovare dei veri e propri partner tecnologici con cui intraprendere un vero e proprio percorso di crescita.
Poniamoci ora dal punto di vista di un’azienda che sia orientata verso una soluzione di tipo housing. Quali sono i fattori da considerare in questo caso?
L’housing – fisico o virtuale in cloud – è senza dubbio la soluzione che permette a un’azienda di essere autonoma in tutto e per tutto. Una soluzione scalabile nel tempo, soprattutto se si tratta di virtualizzazione in cloud, in cui si possono aggiungere processori, spazio disco o memoria, a seconda delle necessità. Insomma: finalmente un server tutto per noi dove poter installare tutto quello che vogliamo e dove non c’è alcuna “stupidissima” policy di qualche anziano sistemista.
Ma… c’è sempre un “ma”. L’housing puro, detto anche “unmanaged” – cioè senza nessuno che lo configuri, lo monitori, lo aggiorni e lo bilanci – rischia di essere un boomerang di entità bibliche. Sicuramente l’housing è la soluzione migliore per chi ha la possibilità di spendere qualcosina in più e vuole un server tutto per sé, ma io consiglio vivamente la soluzione “managed”, cioè gestita da un sistemista con tanta esperienza e in grado di intervenire tempestivamente e di monitorare costantemente le prestazioni, per evitare inutili e fastidiosi blackout di servizio.
Appunto. In effetti, non tutti sanno che il lavoro del progettista di siti web non termina con la consegna del progetto al cliente. Un bravo progettista monitora in continuazione quello che potremmo chiamare lo “stato di salute” del sito. Puoi spiegarci meglio in che cosa consiste questo lavoro dietro le quinte?
Dovrei girare a te questa domanda oppure dovremmo rispondere a quattro mani. L’aspetto tecnico è fondamentale, così come lo è l’aggiornamento del contenuto e delle keyword in base alle attuali esigenze del pubblico. I due ambiti vanno a braccetto: una figura non può prescindere dall’altra. È importantissimo monitorare lo stato di salute del sito, oltre che con gli strumenti presenti sul server, anche con quelli online, come per esempio l’utilissimo strumento di Google WebMasterTools. È poi indispensabile controllare sempre i LOG, per verificare che non ci siano link interrotti o errori nelle pagine web. Le immagini caricate da chi scrive i contenuti devono essere ottimizzate e devono “pesare” il meno possibile. Insomma, un vero e proprio lavoro certosino, che spesso non è considerato e che viene pagato malvolentieri da chi si vede recapitare una fattura di “assistenza e manutenzione annua”.
Quali sono le considerazioni che ti fanno optare per un’applicazione già esistente – per esempio, un plugin WordPress – oppure per una ad hoc, che richiede cioè un tuo intervento di programmazione? In altre parole: quali sono le considerazioni che ti spingono verso una soluzione già esistente oppure verso la creazione di qualcosa di nuovo?
Nel mercato esistono soluzioni a pagamento sviluppate sia da aziende affidabili che da professionisti affidabili, ma anche soluzioni sviluppate da dilettanti. Esiste anche il software open source, gestito in alcuni casi da community di professionisti seri e affidabili, in altri casi da community di dilettanti. Inutile spiegare i vantaggi e gli svantaggi delle varie soluzioni, e non esiste nemmeno un modus operandi corretto.
Molto è dato dal budget del cliente e dal reale utilizzo che si farà del plugin-modulo individuato. Certo, non metterei un plugin debole come cuore del mio progetto, ma potrei utilizzarlo a corredo di altri servizi più importanti.
Infine, se proprio non trovo nulla che mi soddisfi, cerco di individuare qualcosa che almeno si avvicini a quanto voglio realizzare: una sorta di semilavorato da cui partire per i nuovi sviluppi. In questo modo, se riesco, posso dare un contributo alla community open source da cui ho preso in prestito il semilavorato.
Se invece proprio non si trova nulla, l’unica soluzione è svilupparlo ex novo, come per esempio ci è capitato di dover fare per integrare Danea Easyfatt – un gestionale per piccole medie imprese – con il noto plugin di e-commerce WooCommerce. In casi di questo tipo, cerchiamo di rendere il plugin commercializzabile, in modo da poterlo rendere disponibile ad altri o rivenderlo a successivi clienti.
Ammettiamo che io sia uno studente di informatica e che voglia diventare softwarista dopo la laurea. Mi daresti qualche consiglio perché possa partire con il piede giusto, evitando i classici errori dei principianti?
L’informatica è un mondo in continua e accelerata evoluzione. Credere di essere arrivati è uno dei peggiori errori che si possano fare. Lavorare in questo campo richiede una devozione alla materia paragonabile a pochissime altre discipline. Quindi, se non si ha intenzione di dedicare buona parte della propria vita allo studio perenne – e al conseguente sconforto nell’accorgersi che, nel frattempo, è uscito qualcosa di ancora più nuovo di quello che si è appena finito di approfondire –, è meglio rinunciare in partenza.
Ti occupi anche della creazione di app, come hai anche tu stesso accennato. Puoi parlarci di qualche applicazione che hai creato? E quali sono le difficoltà che si incontrano progettando un’app?
CARSH è stata la prima e per ora unica app professionale che abbiamo realizzato.
Il mondo delle app è molto giovane e la giungla dei dispositivi e dei sistemi operativi è in continua evoluzione. Credo di poter considerare lo sviluppo di app come una delle attività più complesse in questa fase storica. In effetti, manca ancora esperienza diffusa, mancano modelli enterprise consolidati e mancano – o sono rare – le community di supporto. Inoltre, i sistemi operativi evolvono con release frequenti, che spesso rendono obsolete una parte non trascurabile delle app realizzate.
In conclusione, un’app è fatta di molte cose, ma una buona componente server a supporto del client, se solida, strutturata e ben progettata, rappresenta un elemento fondamentale dell’app stessa, ed è in grado di proteggerla, almeno parzialmente, dalle evoluzioni esterne.
C’è un lavoro che hai fatto di cui sei particolarmente orgoglioso?
Ogni lavoro ha le sue peculiarità, e in parte sono affezionato a tutti quelli che ho svolto. Ricordo, appena iniziata la mia attività lavorativa – erano i primissimi anni 2000 –, un software commissionato dalla redazione di Passaparola, la famosa trasmissione televisiva. Un progetto che mi ha proiettato nel mondo dei professionisti, io ancora giovane universitario in erba. Si trattava di gestire tutto l’archivio delle domande – oltre ventimila – del succitato quiz televisivo, ivi compresa la realizzazione del copione e soprattutto del controllo sulla non replicabilità di domande “simili”, cioè già utilizzate in puntate precedenti. Riconosco che il mio approccio è stato molto ingenuo, data la mia inesperienza, ma sono riuscito a camuffare discretamente il mio disagio, e questa attività mi ha permesso di crescere molto dal punto di vista professionale.
Sempre da questo forbito gruppo di autori è emersa un’altra sfida. Decisero di aprire un ristorante nel quale introdurre alcuni momenti ludici durante le serate. A noi fu commissionata la realizzazione di un gioco a quiz, trasmesso da un circuito interno al locale, a cui si poteva rispondere tramite SMS. Un sistema decisamente complesso e innovativo.
Che cosa fai per rimanere aggiornato sulle novità che riguardano il tuo lavoro?
Lo scambio di idee e di informazioni con i colleghi e i collaboratori è tra le principali fonti di ispirazione. La passione per quel che faccio mi porta poi a leggere sul web tutto ciò che riguarda il mondo ICT.
I libri purtroppo sono obsoleti appena escono, specie se si deve attendere la traduzione dalla lingua originale, quindi i testi non sono certo lo strumento più adatto per l’aggiornamento. Sono però fondamentali per studiare un argomento specifico, cosa che il web non è in grado di offrire.
Attenzione, però: le informazioni che circolano sui giornali e sulla Rete, spesso sono alimentate da intenti pubblicitari, celati e non. Il rischio è cioè quello di perdersi in una miriade di notizie spesso inutili, quindi è fondamentale avere una propria bussola per potersi orientare.
Siamo in chiusura. Quali sono i tuoi progetti nel breve termine? E nel lungo?
La collaborazione nata con Kedos da quasi un anno sta prendendo la direzione sperata. Superata la fase di incertezza iniziale e affinate le comuni strategie, siamo pronti ad affrontare le numerose sfide che abbiamo di fronte.
Horizon 2020 potrebbe darci la possibilità di sviluppare alcuni progetti che abbiamo in cantiere da anni. Uno su tutti il progetto di firma grafometrica e di dematerializzazione dei documenti, già iniziato con KeFirma.
Nel lungo periodo, vorremmo consolidare sul territorio la nostra azienda, aumentando il numero di dipendenti e collaboratori, per creare un vero e proprio centro di competenze e per consentire alle aziende di grandi dimensioni, che sempre di più cercano partner tecnologici affidabili, di esternalizzare fasi del processo produttivo.
Ringrazio Daniele Ferrari per la sua disponibilità, nonostante i tanti e pressanti impegni lavorativi. Penso proprio che, in futuro, tornerò a scomodarlo con nuove domande e nuove curiosità da soddisfare. L’informatica è davvero un campo sterminato, e un professionista del suo calibro può aiutarci a chiarire molti dei nostri dubbi, e può darci una mano nel fare scelte tecniche migliori per i nostri siti web e per i nostri blog.