Wordpress Sì O No Intervista A Stefano Maffeis

Realizzare un sito WordPress conviene? Quali sono i limiti e i vantaggi del CMS più usato al mondo? Ne ho parlato con un programmatore purista del codice ed ecco cosa mi ha svelato.


Questo mese ho deciso di intervistare lui, il fedele compagno di ogni copywriter, quello che costruisce la cornice, affinché tu possa metterci il contenuto: Il Programmatore.

Anche conosciuto come Web Developer, il programmatore è quella figura mitologica che trasforma la caffeina in codice. Di solito se ne sta chiuso in uno scantinato, rigorosamente in maglietta perché le camicie stonano con il suo essere asociale, e disdegna chi lo confonde con geek e hipster, troppo modaioli per i suoi gusti.

Visto che la Lombardia è ancora in zona rossa e non posso uscire di casa, però, l’intervista di questo mese non poteva che essere a qualcuno che vivo ogni giorno molto da vicino, per questo ho scelto di fare 4 chiacchiere sulla programmazione con Stefano Maffeis. Stefano è un programmatore che stimo molto e che gestisce tutti gli aspetti tecnici di questo sito web. Negli ultimi 12 mesi di pandemia abbiamo condiviso la scrivania e sì, condividiamo il talamo da quasi 12 anni, ma questa è un’altra storia. Pronti a sapere cosa ne pensa di WordPress un purista del codice? Iniziamo!

Con i CMS, creare un sito web è diventato un gioco da ragazzi. Quanto credi che la figura di un programmatore professionista sia ancora fondamentale quando, con due click su una piattaforma, il sito è bello che fatto?

Questa è una domanda molto interessante. La programmazione web è una branca dell’informatica relativamente giovane e sta forse raggiungendo ora un certo livello di maturità. Come tutte le situazioni in evoluzione, è facile passare da una prima fase in cui solo gli addetti ai lavori sono in grado di metterci le mani dentro, ad una in cui la platea si allarga, fino a raggiungere gli amatori. E questo è un bene.

Come in tutte le situazioni in crescita esponenziale, però, si parte dall’affrontare problemi semplici e via via si vanno ad affrontare (o a scoprire) casi d’uso sempre più complessi, ed è qui che un amatore in genere finisce per non bastare più.

Permettimi di citare uno dei più famosi autori di letteratura informatica:

Non ci vuole poi questa gran conoscenza o abilità per far funzionare un programma. I ragazzi delle superiori lo fanno con facilità. Giovani universitari danno avvio ad attività miliardarie grazie solo ad alcune righe di codice PHP o Ruby. [...] Il codice che producono non sarà bellissimo, ma funziona. Funziona perché far funzionare qualcosa, almeno una volta, non è poi così difficile. Far le cose per bene è proprio tutta un’altra cosa. Scrivere un buon software è difficile. Richiede conoscenza e abilità, qualità che i programmatori più giovani non hanno ancora acquisito. Richiede riflessioni e conoscenze che la maggior parte dei programmatori non si preoccupa di sviluppare. Richiede un livello di disciplina e dedizione che la maggior parte dei programmatori non pensa di dover avere. Soprattutto, richiede di avere una passione per la propria attività e il desiderio di essere professionali.

Uncle Bob (Robert C. Martin)
in Clean Architecture

Insomma, se vuoi qualcosa che “più o meno funzioni” e non hai esigenze troppo complesse, anche un ragazzino ormai è in grado di aiutarti… se, invece, hai bisogno di qualcosa che funzioni sempre (un e-commerce non può permettersi di essere irreperibile o di sbagliare alcuni calcoli sulle promozioni o sull’approvvigionamento dal magazzino), allora non è consigliabile affidarsi a chi non sia in grado di garantire un certo livello di qualità definibile come “professionale”.

Abbiamo parlato di CMS e siti preconfezionati, quale è la tua posizione su WordPress? Lo usi? Ti piace?

Wordpress è una delle cose più straordinarie successe a Internet in questa “prima fase”. lo metterei al fianco di Google, Wikipedia e Facebook nell’importanza che ha significato nel rendere il web lo strumento di condivisione e reperimento di informazioni che è oggi.

Mi piace? Solo in contesti specifici. WordPress non nasce come gestore di contenuti generalista ma, in realtà, come motore per costruire blog. Tutto ciò che WordPress conosce, tutto ciò che “manipola”, sono blog post. Quando si costruisce un e-commerce con WordPress, gli articoli sono blog post “camuffati” da prodotti. Le schede delle persone nella pagina staff del sito? blog post “camuffati” da pagine istituzionali. Quindi per un blog è una buona soluzione, per qualcosa di più…non è detto.

Da vero programmatore, quali credi che siano i suoi limiti maggiori? E i suoi vantaggi? – A livello mondiale un sito su 3 è fatto in WordPress, qualche vantaggio dovrà pure averlo…

Come accennato nella risposta precedente, WordPress viene spesso usato fuori dalla sua natura, e questo può creare problemi di inutile complessità aggiunta e, dove c’è complessità, c’è possibilità di problemi, rallentamenti e difficoltà nel controllo puntuale del sistema…terreno fertile per bug. Questo “adattamento forzato”, tra l’altro, è in pieno contrasto con uno dei principi cardine della buona programmazione, Keep It Simple Stupid - rimani sul semplice, stupido.

A questo problema di “natura”, si somma il fatto che WordPress sia un sistema molto facilmente estendibile con moduli (plug-in) creati da programmatori terzi. La maggior parte delle funzionalità che vadano oltre al normale blog, infatti, vengono in genere implementate con l’installazione di plug-in (spesso gratuiti) presi dal marketplace messo a disposizione da WordPress stessa. Questo è uno dei motivi principali del grande successo di WordPress, ma anche uno dei suoi più grandi problemi, che si ricollega a quanto detto prima. Chi ha fatto quel plug-in? È stato programmato con criterio o da un programmatore alle prime armi? Viene aggiornato costantemente o è stato abbandonato perché è scemato l’interesse (o, peggio, il programmatore ha riscontrato problemi che non è stato in grado o non è stato interessato a risolvere)? Stiamo effettivamente mettendo nel nostro sito del codice di cui sappiamo molto poco. Peggio, stiamo combinando tra di loro vari plug-in fatti da persone diverse, con idee diverse, che non è detto che abbiano riflettuto sulle ripercussioni dell’uso del loro plug-in in concomitanza con altri. E’ un po’ come succede quando si usano più medicine assieme: potrebbe andare bene o potrebbe crearsi un mix micidiale.

Un ultimo punto, poi la smetto di fare terrorismo, è quello del problema di sicurezza di WordPress. Qui le questioni sono 2: per prima cosa, il linguaggio su cui si basa (PHP) non si può definire una tecnologia secure by design. Se usato da persone esperte è sicuro come un qualunque altro linguaggio enterprise, ma è talmente facile da programmare (male) che il rischio di usare un plug-in che esponga una falla di sicurezza è piuttosto alto, e questo “costringe” a mantenere i plug-in sempre aggiornati, sperando, come detto sopra, che gli sviluppatori restino interessati a mantenere sicuro il loro plug-in, cosa che come sa chi abbia gestito un sito WordPress per un tempo decente può portare a rompere layout e funzionalità.

La seconda questione di sicurezza è legata alla naturale appetibilità che offre un sistema così diffuso agli occhi dei malintenzionati. Se io fossi un hacker (giuro che non lo sono) e dovessi decidere se investire il mio tempo nel capire come entrare con una sola chiave in milioni di siti WordPress o forgiare singole chiavi per singoli siti fatti custom o con CMS meno diffusi, non avrei dubbi su dove indirizzare i miei sforzi :)

Ci sono dei CMS che reputi migliori rispetto a WordPress? Perché?

Questa è una risposta più complessa di quanto sembri. Nell’informatica, “migliore” non esiste. Ci sono talmente tanti problemi e tanti modi di affrontarli e risolverli che potrebbero esserci contesti in cui un servizio online (Wix, Shopify) basta e avanza, altri in cui serve invece una soluzione totalmente custom.

Personalmente, per i siti di complessità bassa o intermedia (la fascia in cui si usa solitamente WordPress) ho adottato negli ultimi anni un CMS open source danese di nome Umbraco. Si tratta di una piattaforma basata sulla tecnologia Microsoft Asp.NET, che ha un ottimo sistema di sicurezza integrato ma che al tempo stesso lavora con un linguaggio (C#) che è meno immediato di PHP, imponendo un paradigma object-oriented, laddove PHP consente più libertà nell’impostazione del proprio codice (libertà in informatica però spesso non è un vantaggio reale, soprattutto in ambito professionale).

Ciò che mi piace di questo CMS è il fatto che, mentre WordPress si basa come detto sul solo “blog post” come elemento contenitore di informazione, Umbraco impone al programmatore di creare i propri elementi contenitori, che si mappano su classi in ambito di programmazione, consentendo una gestione e manipolazione pulita e puntuale dei dati, senza inutili complicazioni o “adattamenti” forzosi.

WordPress è una soluzione più “chiavi in mano”. Lo installi e sei già pronto a inserire contenuti. Umbraco è invece più una cassetta degli attrezzi: ci sono le fondamenta pronte e tutto il materiale per cesellare l'edificio esattamente come il progetto richiede.

Tra l’altro, Umbraco si sta evolvendo verso l’adozione di .NET Core, la prossima (o per meglio dire attuale) generazione della tecnologia Microsoft, che porterà presumibilmente la possibilità di usarlo anche in ambiente Linux, e questo farà piacere ai puristi che non amano i server Windows.

Hai lavorato per 10 anni come responsabile tecnico e ti sei occupato anche della selezione del tuo team di lavoro. Cosa differenzia un vero programmatore da uno che sa “solo” mettere mano al sito?

Beh. Il “vero” programmatore è innanzi tutto chi lo fa con passione, dedizione e soprattutto continuità. C’è chi dice che per padroneggiare una competenza bisogna praticarla per 10.000 ore. Non c’è evidenza scientifica a riguardo, ma è comunque una indicazione valida nella direzione di quello che io ritengo essere un impegno “professionale”. Mi è successo tante volte di sperimentare una tecnologia da solo a casa la sera per qualche ora, ottenendo risultati altalenanti, per poi imparare a padroneggiarla in pochi giorni di utilizzo continuativo e mirato nell’ambiente di lavoro. Spesso la qualità è insita nella quantità, più tempo passi sul codice, migliore diventi a gestirlo.

Ma questo solo ad una condizione: studiare e tenere la mente aperta e focalizzata verso la qualità. Troppo spesso, e ci sono passato anche io, si vedono programmatori che si sono costruiti una propria “bolla” ferma nel tempo e nello spazio, senza rendersi conto che ci sono da anni metodologie, tecnologie, competenze mature là fuori, che sarebbero in grado di ridurre ad una frazione lo sforzo da fare per creare qualcosa di solido, e con una qualità nettamente più alta di quella che stanno producendo.

Troppo spesso, soprattutto quando si è giovani, si tende a voler reinventare in continuazione la ruota, c’è entusiasmo, c’è voglia di provare e di arrivare in fretta a scrivere del codice, senza rendersi conto dei possibili limiti, delle ridondanze o dei rischi che accompagnano quello che si sta facendo. Questo può essere un buon approccio amatoriale, perché spinge a fare una sorta di ricognizione, di panoramica, di molte cose diverse o di come si possano affrontare i problemi, ma in ambito professionale c’è bisogno che ogni scelta sia ben soppesata, razionalizzata e testata, per assicurare al committente che il margine di errore sia il più basso possibile.

Concludo con una citazione di un bellissimo libro:

Purtroppo, la metafora più comune per lo sviluppo di software è quella dell’edilizia: si costruisce un edificio [..] Più che all’edilizia, il software assomiglia al giardinaggio, è più materia organica che cemento armato. [..] Si tiene costantemente sott’occhio la salute del giardino e si fanno aggiustamenti (al suolo, alle piante, alla disposizione) secondo necessità.

Andrew Hunt, David Thomas
in Pragmatic Programmer

Il mio consiglio finale, quindi, è di affidarsi a qualcuno che non solo sappia come far funzionare ciò che vi serve una e una sola volta, ma che lo sappia fare funzionare tutte le volte che serve (qualità del software) e che sia in grado di prendersi cura della sua crescita nel tempo (manutenzione, sicurezza). Solo così potrete evitare fastidiosi e costosi “incidenti di percorso”.


Grazie Stefano! È stato un piacere parlare con te di programmazione. Ora scappo, i tuoi figli reclamano la cena :-)

Per seguire le vicissitudini professionali di Stefano Maffeis. potete seguire la sua pagina LinkedIn qui.