# Come non perdere i propri soldi NON affidandosi a webAgency farlocche

Test Driven Development Domain Driven Development RESTful API Luca Pezzino

Capita spesso di imbattersi in colleghi skillati che criticano il lavoro di altri colleghi “ignoranti” che “bruciano” potenziali clienti: c’è chi propone la creazione di un ordine per delimitare un’elite di addetti ai lavori, altri l’impiego esclusivo di ingegneri informatici e così via…

In realtà, al cliente, per scremare chi riuscirà a fornirgli il miglior Return Of Investment da seducenti webAgency farlocche, basta la conoscenza superficiale di 2 concetti sconosciuti a tutta quella gente assai poco professionale (purtroppo la stragrande maggioranza):

Due concetti che richiedono skills e tools avanzati (quindi importanti investimenti di tempo e risorse). Se sondando il vostro interlocutore, avvertite tentennamenti o incapacità di rispondervi in merito, scartatelo immediatamente: vi farà solo perdere il vostro investimento nel medio e lungo termine.

Un esempio pratico? Come fullStackDev (Laravel + RESTful API + Vue.js), sto rifacendo un importante eCommerce (Pollini) per progetto personale (nemmeno Pollini sa che lo sto sviluppando).

Aggiornamento 01/01/2020: ho levato il link alla recensione della bozza del progetto, ecco la recensione del progetto finale: Luca Pezzino E-commerce

Apparentemente un eCommerce come tanti altri, in realtà è stato il frutto di (dis)avventure tecnologiche da parte del team che l’ha sviluppato a suo tempo (il progetto è ora passato ad un’altra agenzia, quella "colpevole" di quell'inferno programmatico, Still4, è fallita lo scorso ottobre): zero progetto iniziale, zero documentazione, zero fondamenta, zero strutture. Una favela (tecnicamente un monolite, molto procedurale, poco OOP) cresciuta un po’ per volta, senza una visione della direzione da seguire.

Lo sto rifacendo da zero con i 2 concetti segnalati (oltre che in modalità DomainDrivenDesign), ecco alcuni vantaggi che si sono già verificati ancor prima della sua pubblicazione:

  • TDD: mentre lo sto ancora sviluppando, Laravel è passato dalla versione 5.8 alla 6.4. L’upgrade ha richiesto mezza giornata di aggiustamenti, grazie ai tests che mi hanno segnalato gli errori. Il sito ufficiale era, è e rimarrà alla versione 5.1 (con tutti i problemi che ne derivano, sicurezza in primis), poiché non c’è alcun test scritto e gli errori verrebbero segnalati dai clienti che non riuscirebbero a portare a termine gli acquisti 😉
  • Package: tutte le modifiche che di tanto in tanto apporto sono immediatamente circoscrivibili al package che contiene il soggetto della modifica, importati automaticamente ove necessario via riga di comando.

Come al solito la qualità, nel tempo, ripaga molto più della quantità nell’immediato: https://martinfowler.com/articles/is-quality-worth-cost.html (per chi non ha voglia di leggersi l'articolo, ovviamente la risposta alla domanda è "sì").