Pratiche di sviluppo

Lavorare secondo una definizione di Fatto

Ogni squadra ha una definizione diversa di ciò che "fatto" significa, ma è importante avere una storia e assicurarsi che soddisfi i criteri definiti prima di essere accettato.

Alcuni criteri comunemente specificati dai team includono:

  • Codice rivisto per la formattazione
  • Commenti/Javadoc aggiunti
  • Soddisfa i livelli di copertura dei test richiesti
  • Supera i test di unità e integrazione
  • Convalida nell'ambiente QA
  • Localizzazione implementata

Senza un DoD ben definito, è facile finire in una situazione in cui molte cose sono a metà strada e niente è veramente completo.

Definire e rispettare le convenzioni di codifica e formattazione

Cose come i livelli di rientro e lo spazio vuoto possono non sembrare importanti, ma avere un codice formattato correttamente va molto lontano verso la leggibilità e la manutenzione. Le convenzioni dovrebbero essere discusse e concordate come squadra e seguite nel codice.

Obiettivo per una copertura di prova elevata

Con l'aumento delle dimensioni dell'implementazione di un progetto, il tempo necessario per eseguire il test sarà pari a quello necessario. Senza una buona copertura di test, il team di test non sarà in grado di scalare e gli sviluppatori alla fine saranno sepolti in bug.

Gli sviluppatori devono praticare il TDD, scrivendo test di unità non riusciti prima del codice di produzione che soddisferà i loro requisiti. Il QA dovrebbe creare un insieme automatizzato di test di accettazione per garantire che il sistema funzioni come previsto da un livello elevato.

Sono disponibili dei framework personalizzati, come Jackalope e Prosper, per semplificare il gioco delle API JCR in modo da garantire la produttività degli sviluppatori durante la scrittura di unit test.

Mantieni la demo pronta

Il sistema dovrebbe essere disponibile per la dimostrazione al business alla fine di ogni iterazione. Mantenendo il sistema in uno stato demo-ready, il team sarà sempre all'interno di un'iterazione di essere pronto alla produzione e il debito tecnico può essere mantenuto a un livello sostenibile.

Implementare un ambiente di integrazione continua e utilizzarlo

L'implementazione di un ambiente di integrazione continua consente di eseguire facilmente e ripetutamente test di unità e test di integrazione. Inoltre, disaccoppierà le installazioni del team di sviluppo, consentendo alle altre parti del team di essere più efficienti e garantendo installazioni più stabili e prevedibili.

Mantenere il ciclo di sviluppo rapidamente mantenendo bassi i tempi di realizzazione

Se l'esecuzione dei test di unità richiede molto tempo, gli sviluppatori non li eseguiranno e perderanno il loro valore. Se ci vuole molto tempo per creare il codice e distribuirlo, le persone lo faranno meno spesso. Rendere prioritari i tempi di realizzazione brevi assicura che il tempo dedicato alla copertura dei test e all'infrastruttura CI continui a rendere il team più produttivo.

Ottimizza Sonar e altri strumenti di analisi del codice statici e agisci sui loro report

Gli strumenti di analisi del codice possono essere utili, ma solo se i loro rapporti portano all’azione del team di sviluppo. Senza l'ottimizzazione dell'analisi fornita da questi strumenti, le raccomandazioni generate non saranno rilevanti e perderanno il loro valore.

Segui la regola del boy scout

I boy scout hanno una regola: "Lascialo meglio di quanto lo trovi." Finché tutti i membri del team di sviluppo aderiranno a questa regola e ripuliranno qualcosa quando incontreranno un casino, il codice migliorerà costantemente.

Evitare di implementare le funzioni YAGNI

Le funzioni YAGNI (o non ne avrete bisogno) sono implementate quando ci aspettiamo che avremo bisogno di qualcosa in futuro, anche se ora non ne abbiamo bisogno. Idealmente, dovremmo implementare la cosa più semplice che funzionerà oggi e utilizzare il refactoring continuo per assicurare che l'architettura del sistema evolva con i requisiti nel tempo. Questo ci permetterà di concentrarci su ciò che conta ed evitare il codice gonfiabile e la confusione delle caratteristiche.

In questa pagina