Codice VS Codice

In passato ho fatto un piccolo articolo dove spiegavo quali sono le qualità che un buon freelance dovrebbe avere, secondo il mio punto di vista, per essere scelto da un buon cliente (https://www.gianlucaporta.it/freelance/).
Tante volte purtroppo ci si imbatte in buoni imprenditori (in quanto magari sono dei bravi venditori) ma cattivi programmatori. Ecco, quando fai il freelance e sei un web developer, NON basta saper parlare, bisogna saper scrivere bene il codice.
Al giorno d’oggi il codice deve essere ottimizzato per garantire rapidità nell’accesso delle informazioni, per far si che il sito abbia un’indice di gradimento migliore nella serp dei motori di ricerca come Google (si le prestazioni incidono di molto) e per sfruttare meno risorse possibili lato server.

Perché faccio questo articolo?
Perché i miei anni di esperienza aumentano, sono a 10 ormai e in questi anni mi sono confrontato con diversi programmatori e diversi clienti. Non esiste un solo modo di programmare, ma lo si può fare in svariati modi, quindi non esiste il modo migliore o quello perfetto. Inoltre ci vogliono le competenze per capire chi è in gamba e chi no.

Ora il problema è che il cliente tante volte si impone un budget ridotto, questo fa si che la scelta ricada sulla scarsa qualità ad un basso prezzo (attenzione, alto prezzo non è sinonimo di qualità, ma è molto improbabile che chi è veramente in gamba e lo sa si venda ad un basso prezzo). Questo fa si che tante volte io come altri a colleghi competenti ci troviamo davanti clienti che vengono a chiedere delle modifiche gratis, perché hanno già pagato una persona che non era in grado di risolvere i loro problemi. La colpa non è di certo mia o dei miei colleghi che sanno fare il loro lavoro, quindi abbiate rispetto del lavoro altrui, sopratutto quando vi viene fatto un preventivo e rispondete: “troppo caro”. Ci sono anni di studio esperienza e notti insonni a risolvere problemi che andrete a pagare.

Vediamo un piccolo esempio:
Riporto di seguito un piccolo esempio, di cui avevo fatto un screenshot tempo fa, durante una lavorazione.
A sinistra potete vedere il codice presente su un’e-commerce che mi è stato chiesto di sistemare, è una banalità lo so, ma questa è stata una delle tante cose che ho trovato in quel codice.
A destra c’è il codice scritto da me, che fa le stesse cose della parte a sinistra ma è notevolmente più leggibile anche per fare ulteriori modifiche o sistemazioni.
Bisogna distinguere un programmatore da un dattilografo, quest’ultimo viene pagato per il numero di caratteri che batte con la tastiera, mentre il programmatore per come pensa e risolve i problemi nel modo più ottimizzato possibile.

Nello stesso sito ho trovato sul codice, gli ID di categorie, detto cosi per tanti magari non vuol dire niente, mi spiego.
Dietro i siti ci sono dei database (basi di dati) che contengono delle informazioni, come nomi di prodotti di categorie ecc, i quali sono associati ad un identificativo univoco, generato al momento della creazione. Questo vuol dire che se io ho una condizione legata a degli id sul codice, ogni volta che devo aggiungere una categoria o un prodotto a quella condizione devo chiamare il programmatore per farlo fare, al posto di gestire dal pannello di amministrazione la modifica. Questo fa si che il programmatore poi vada pagato per la lavorazione fatta, quindi magari ci sarà un costo basso iniziale ma poi nel tempo il dispendio di denaro sarà uguale o maggiore a quello richiesto sul primo preventivo di uno sviluppatore in gamba.
Ora immaginate che questa persona alla quale vi siete rivolti lavori sempre cosi e abbia 100 clienti, che in contemporanea chiedono la stessa modifica vostra, oltre al danno la beffa di dover aspettare il vostro turno, quando magari vi bastava associare alla categoria una valore dal pannello di amministrazione e in 5 minuti il lavoro era fatto senza alcun costo aggiuntivo.

Racconto brevemente un’altra esperienza avuta quest’anno: richiesta di passare da magento1 a magento2 rispecchiando tutti i crismi della versione attuale dell’e-commerce.
Ovviamente per fare un preventivo del genere bisogna conoscere al meglio il sito dal quale si parte con annessi plugin, per evitare di perdere tempo ho detto che bisognava fare un analisi di fattibilità (pagata a consuntivo, eh si le analisi si pagano) per conoscere la situazione attuale e capire cosa fare e come muoversi. Ovviamente il tutto è finito in un nulla di fatto perché la risposta è stata l’azienda a cui avevamo affidato il progetto ha già fatto l’analisi e ha detto che si può fare ma si è rivelata incompetente e non stata in grado di fare il lavoro, inoltre il budget era di 3k e un mese di tempo per lo sviluppo. Ovviamente il lavoro è stato rifiutato da me, in quanto non mi occupo di salvare casi disperati.
Dare dei tempi senza senso inoltre senza le competenze per farlo o senza pensare a quello che si sta facendo è solo controproducente. E’ come se io volessi costruire una casa, vado con il mio disegno dall’architetto e gli dico la voglio tra un mese, peccato che l’architetto in questione non è al corrente della superficie dove vorrei costruire sia come spazio sia come consistenza del terreno che magari non regge il peso dello stabile che vorrei costruire, il disegno che do io non avrà sicuramente pensato ai calcoli dei pilastri o muri di sostegno per tenere su la struttura e magari nevica e un mese non basta perché non si può lavorare.

Ecco perché mi infastidisco quando arrivano le solite parole tipo: eh ma tu sei bravo, ti ci vanno 5 minuti, eh ma cosa vuoi che sia per te. Questa è mancanza di rispetto, perché anche se ci vogliono 5 minuti, dietro quei 5 minuti ci sono anni di esperienza e duro lavoro. Se già sapete che tecnologia utilizzare, quanto tempo ci va, cosa fare ecc potete risolverlo da soli il problema senza andare a chiedere consulenze gratuite sminuendo il lavoro altrui e facendo perdere tempo.

Passiamo al problema del “non ho le competenze come faccio a scegliere un bravo programmatore?”
Intanto mettiamo da parte il low budget (se ho pochi soldi non compro la Ferrari ma la Panda), dopo di che analizzate chi avete davanti, parlateci e capite se è veramente capace.
Guardate i lavori che ha fatto, eventualmente contattate le aziende con le quali ha lavorato per sapere se si sono trovate bene o se ci sono stati problemi. Controllate la sua reputazione sui social, su Google. Guardate da quanto tempo lavora, il “calibro” dei clienti con cui a lavorato e se collabora con qualche azienda.