Vai al contenuto

Approccio tecnico

L'eccellenza non è una coincidenza: è il risultato di una disciplina mantenuta per anni

Far funzionare un codice è questione di un giorno; farlo funzionare senza errori per anni è il frutto di una disciplina.

C'è un solo insegnamento su cui abbiamo costruito per anni nel mondo del software: «funziona» non basta. Tra un progetto che in scena sembra «funzionare» e lo stesso progetto ancora facilmente estendibile, sicuro e veloce tre anni dopo c'è un baratro da milioni di dollari. Da un lato di quel baratro c'è il codice scritto per salvare la giornata, dall'altro il codice che costruisce il domani. In Partnerfy ogni riga che scriviamo segue principi precisi che la tengono dal lato giusto del baratro. Quei principi non li abbiamo inventati noi: li abbiamo presi dalla letteratura ingegneristica internazionale, testati sul campo e inseriti nel contratto. Il risultato: il codice consegnato al cliente della sua agenzia non è quello che funziona il primo giorno, ma quello che funzionerà ancora tra dieci anni. Questa pagina spiega come si applica concretamente questa disciplina e quali meccanismi di filtro garantiscono che nessuna riga vada in produzione senza la sua approvazione.

Tra «codice funzionante» e «codice di qualità» c'è un baratro

Nel settore, per avere «codice funzionante» basta anche uno sviluppatore junior capace. «Codice funzionante» significa solo che produce il risultato corretto per un singolo sprint, una singola funzionalità, un singolo scenario utente. Ma la vita del software non è un singolo sprint. Tre mesi dopo, quando si vuole aggiungere una nuova funzionalità, sei mesi dopo, quando bisogna reggere un picco di traffico, un anno dopo, quando arriva il conto del debito tecnico: è allora che si vede il baratro tra «codice funzionante» e «codice di qualità». Il primo produce un nuovo bug ogni volta che lo si tocca; il secondo continua a crescere in silenzio. Nella cultura ingegneristica di Partnerfy la parola «funziona» non si usa mai da sola: diventa un impegno scritto, «funziona e ha bassi costi di manutenzione». Il terzo anno fa parte del nostro contratto quanto il giorno della prima consegna.
Tra «codice funzionante» e «codice di qualità» c'è un baratro

Ci fondiamo su tre metodologie moderne di ingegneria

La disciplina di base, scritta nel contratto, su come viene prodotta ogni riga di codice. Non metodi che usiamo, ma metodi che abbiamo accettato.

Agile / Scrum

Sprint di due settimane, stima in story point, retrospettive e misurazione della velocity. L'avanzamento del progetto è visibile ogni settimana; se emerge uno scostamento, il punto di controllo interviene durante lo sprint, non all'inizio di quello successivo.

TDD / BDD

Scriviamo il test prima del codice. Prima di sviluppare una funzionalità esistono già gli scenari di test che ne descrivono il comportamento atteso. I bug si intercettano prima che nascano, non si correggono dopo.

CI/CD e DevOps

Ogni commit viene automaticamente testato, impacchettato e inviato all'ambiente di staging. Non esistono rilasci manuali: l'errore umano è escluso dalla fase di rilascio. Mettere in produzione una funzionalità non è un comando, è un pulsante.

Il prezzo del codice spaghetti non si vede il giorno della prima consegna

Il prezzo del codice spaghetti non si vede il giorno della prima consegna

C'è una verità che il settore del software ha ignorato per anni: il codice scritto in fretta, poco strutturato e non documentato sembra «funzionare» il giorno della prima consegna. Il cliente è contento, l'agenzia è contenta, lo sviluppatore è contento. Ma quel giorno è stata innescata una bomba a orologeria. Le strutture che nel settore si chiamano «codice spaghetti», anche se il primo giorno funzionano senza errori, col tempo diventano edifici goffi e costosi in cui non si può piantare nemmeno un chiodo. Aggiungere una funzionalità significa «prima capire il codice»; correggere un bug esistente significa «prima scoprire dove mettere le mani». Nella letteratura ingegneristica questo si chiama «debito tecnico». In Partnerfy siamo consapevoli della responsabilità che ricade su ogni modulo che scriviamo. Per questo assegniamo a ogni classe un solo compito, manteniamo ogni funzione il più piccola possibile e per ogni nome applichiamo lo standard della letteratura. Così, tre anni dopo, un altro ingegnere che apre il progetto potrà leggere che cosa fa il codice, anche se noi non saremo più lì.

Il viaggio di una riga di codice verso la produzione: tre filtri spietati

Nel team di ingegneria di Partnerfy nessuno sviluppatore può inviare il proprio codice direttamente in produzione. Ogni riga deve superare tre controlli distinti prima di andare online.

1. Revisione umana (code review)

Il codice viene prima esaminato da un altro ingegnere senior. Ci sono errori di logica? Vulnerabilità di sicurezza? È conforme agli standard? Viola i nostri principi architetturali? Il codice non approvato non passa alla fase successiva. Chi scrive e chi revisiona sono sempre persone diverse: nessuno approva il proprio codice.

2. Test automatici (pipeline CI)

Il codice che supera la revisione umana passa ai server di test automatici. Unit test, test di integrazione e scenari E2E vengono simulati in pochi secondi. Centinaia di scenari verificano se il codice danneggia un'altra parte del sistema. Se un solo test fallisce, il codice viene rimandato indietro.

3. Rilascio in staging + zero downtime

Il codice che supera i test passa all'ambiente di staging, una copia esatta del sistema in produzione. Dopo un'ultima verifica in condizioni vicine ai dati reali, va in produzione senza che l'utente se ne accorga (zero downtime). Se qualcosa va storto, il rollback automatico riporta alla versione precedente in pochi minuti.

Nulla va in produzione senza la sua approvazione

Anche un progetto impeccabile che ha superato i tre filtri tecnici non arriva davanti al suo cliente finché Lei non ha apposto la firma nel sistema.

Il nostro filtro tecnico in tre fasi porta un progetto allo stato «pronto per il rilascio», ma per noi «pronto» non significa «rilasciato». Ogni progetto sviluppato le viene presentato prima nella sua dashboard ID.Partnerfy, attraverso un URL di staging riservato e chiuso all'esterno. A questo punto il suo cliente non vede ancora nulla. Lei controlla personalmente dalla dashboard design, funzioni e contenuti. Se ha richieste di revisione, le invia dalla dashboard; altrimenti dà la sua approvazione premendo «Go Live». Nel momento in cui la sua firma digitale e la sua approvazione entrano nel sistema, il progetto va automaticamente online sul dominio reale. Questo meccanismo non è solo interfaccia: è una decisione architetturale in cui si incontrano tre discipline distinte. Primo, inserisce un passaggio in più tra il suo cliente e noi; secondo, garantisce che l'ultima parola su una decisione tecnica resti la sua; terzo, permette di intercettare un eventuale errore tecnico reversibile «dietro le quinte anziché sul palco». «Go Live» non è un pulsante: è una sua decisione.

Un solo pulsante in ID.Partnerfy: «Go Live»

La schermata di approvazione della dashboard ID.Partnerfy è il risultato più concreto della nostra architettura di partnership. Per ogni modulo sviluppato, nella dashboard vede quattro elementi: (1) l'URL di staging, un link di anteprima che mostra la versione finale prima del rilascio; (2) le note di sviluppo, cioè quali funzionalità sono state aggiunte o corrette in questo sprint; (3) i report dei test, con i risultati dei test automatici; (4) il pulsante Go Live: rosso, grande, ben evidente. Finché non preme quel pulsante, il modulo non produce alcuna modifica nel sistema in produzione che il suo cliente vede. Nel momento in cui lo preme, parte il processo di rilascio automatico; il cambio di versione avviene con zero downtime; al termine riceve una notifica nella dashboard. Se lo desidera, può estendere l'autorizzazione a premere il pulsante a determinate persone del suo team. Che possano premerlo un suo account manager, un suo product manager o perfino il cliente finale è una sua scelta organizzativa. Ma chiunque lo prema, in quell'istante la catena di autorizzazioni viene registrata.
Un solo pulsante in ID.Partnerfy: «Go Live»

Gli indicatori esterni della nostra disciplina ingegneristica: tre metriche concrete raccolte dai nostri processi. Se i numeri da soli non bastano a dire molto, sono forse il modo più rapido per vedere come il contratto funziona nel mondo reale.

100%
Code review superata
Nessun codice senza approvazione umana
85%+
Copertura dei test
Pipeline di test automatici
<5 min
Tempo di rollback
Quando qualcosa va storto

Sei documenti consegnati insieme al codice

«Consegnare» un software non significa solo inviare codice funzionante. La rapidità di comprensione che ci si aspetta da un altro ingegnere che aprirà il progetto tra tre anni dipende dalla qualità della documentazione che consegniamo.

Documentazione API

In formato OpenAPI / Swagger: schemi di input e output per ogni endpoint, coppie di esempio richiesta/risposta, elenco dei codici di errore e requisiti di autorizzazione. I team front-end o i partner di integrazione possono iniziare a programmare senza ulteriori incontri.

Schema dell'architettura

Diagramma di sistema di alto livello: quale servizio comunica con quale, da dove a dove scorrono i dati, quale integrazione usa quale livello. In allegato le motivazioni delle decisioni architetturali (Architecture Decision Records).

Schema del database

Diagramma ER, descrizioni delle tabelle, mappe delle relazioni, strategia di indicizzazione e tipi di dati. I file di migrazione sono nel repository, versionati e ordinati.

Guida al rilascio

Istruzioni passo passo per il rilascio del progetto: quali variabili d'ambiente, quali comandi di build, quali pulizie della cache, quale ordine di migrazione del database. La procedura di rollback è nello stesso documento.

Runbook operativo

Soluzioni per gli scenari più comuni: come eseguire un backup, come leggere i log, come scalare, quali passi compiere durante un incidente. È il documento che guida un ingegnere DevOps chiamato nel cuore della notte.

Documentazione nel codice

Commenti JSDoc / PHPDoc / KDoc a livello di funzione, con le motivazioni delle decisioni architetturali critiche accanto alla riga di codice. Il codice racconta se stesso: per leggere la documentazione non serve passare a un'altra scheda.

Tra anni, quando un altro ingegnere aprirà questo codice — anche se noi non ci saremo — il codice parlerà da solo

Un codice ben scritto è la migliore documentazione.

L'ultima domanda che un ingegnere dovrebbe porsi è questa: «Tra cinque anni, quando uno sviluppatore che non ho mai conosciuto aprirà questo codice, lo capirà anche senza di me?». Se la risposta è no, il codice non è stato scritto abbastanza bene. In Partnerfy rispondiamo di nuovo a questa domanda a ogni commit. Ogni classe, ogni funzione, ogni variabile che scriviamo è scritta come se fosse destinata a chi erediterà il progetto da noi. I nomi dicono ciò che fanno, le motivazioni delle decisioni architetturali stanno nel codice, la documentazione non è un file Word staccato dal codice: vive accanto al codice, nelle righe di commento, nel README del repository. Il vantaggio a lungo termine per un'agenzia che lavora con noi è questo: anche se smette di lavorare con noi, il codice che lasciamo resta alla sua agenzia e può proseguire con un altro team. Perché è stato scritto per raccontarsi da solo. La nostra reputazione non è solo ciò che Lei ha mentre lavora con noi: è il livello di qualità che lasciamo dietro di noi quando ce ne andiamo.

Ci contatti per conoscere nel dettaglio il nostro approccio tecnico

Compili il modulo qui sotto: le invieremo un white paper tecnico dettagliato sui nostri standard di ingegneria, un esempio di documentazione API e lo schema del processo di sviluppo. Può contattarci anche direttamente al numero 0850 259 30 04.

Per qualsiasi domanda può contattarci in ogni momento: [email protected]

Abbiamo ricevuto la sua candidatura!

Esamineremo la sua candidatura partner e la ricontatteremo al numero al più presto.

—

Che tipo di azienda ha?

In quali ambiti ha bisogno di supporto?

500
1 1.000

Numero stimato di clienti da acquisire ogni mese (1 – 1.000)

Bölüm Tipi Seç

Eklemek istediğiniz bölüm tipini seçin

Eklendikten sonra Filament admin'den içeriği düzenleyebilirsiniz.

risultati