Trust me, Im a developer

45
Quali sono le caratteristiche principali che contraddistinguono uno sviluppatore affidabile? Giulio Roggero … in 5 punti

Transcript of Trust me, Im a developer

Page 1: Trust me, Im a developer

Quali sono le caratteristiche principali che contraddistinguono uno sviluppatore affidabile?

Giulio Roggero

… in 5 punti

Page 2: Trust me, Im a developer

1 - Punta alla semplicità

Page 3: Trust me, Im a developer

Spaghetti code

Page 4: Trust me, Im a developer

Lasagna code

Page 5: Trust me, Im a developer

Da dove derivano i bug?

• Complessità del codice che aumenta con il passare del tempo

• Non conoscenza della tecnologia

• Incomprensioni

Page 6: Trust me, Im a developer

Quindi, cosa fare per limitare il problema?

Page 7: Trust me, Im a developer

Aumentiamo la documentazione!

https://www.flickr.com/photos/theeerin/145287882

Page 8: Trust me, Im a developer
Page 9: Trust me, Im a developer

Una regola empirica

• Lo fai una volta, lo fai cablato

• Lo fai 2 volte inizi a generalizzarlo

• Lo fai 3 o più volte è un Pattern

Factory

Page 10: Trust me, Im a developer

Architettura emergente

• Architettura ”hello world”

• Partire risolvendo problemi puntuali

• Validarli

• Man mano che le responsabilità emergono identificare i Patterns

Nota: non partire subito con un framework solo perché lo usano tutti!

Page 11: Trust me, Im a developer

Stili architetturali

• Microservices

• Client-Server

• Blackboard

• Pipe and filters

• Plugins

• Layered

• Monolithic

… tutta la lista su https://en.wikipedia.org/wiki/Software_architecture#Architectural_styles_and_patterns

Page 12: Trust me, Im a developer

ConsiglioPosticipare il più possibile le decisioni irreversibili evitando l’over-engineering della soluzione.

Page 13: Trust me, Im a developer

2 - Bilancia debito tecnico e valore di business

Page 14: Trust me, Im a developer

Tempo

Costo per aggiungere nuova funzionalità

Debito tecnico

Debito Tecnico

Page 15: Trust me, Im a developer

Tempo

Valore di business generato

Ritardo del rilascio

Costo del ritardo

Page 16: Trust me, Im a developer

Tempo

Valore di business generato

Rilascio o non rilascio con debito?

Debito accumulato

rappresentazione semplificata

Page 17: Trust me, Im a developer

Costo del ritardoDebito accumulato

Page 18: Trust me, Im a developer

Costo del ritardoDebito accumulato Rilascia ora con debito e ripaga

Costo del ritardoDebito accumulato Rilascia in ritardo

Page 19: Trust me, Im a developer

Tempo

Debito tecnico totale

In ogni caso tenere sotto controllo il debito tecnico

Fuori controllo

Sotto controllo

Attenzione!

Page 20: Trust me, Im a developer

Product Backlog

Le azioni per ripagare il debito tecnico vanno nel product

backlog insieme alle store di business!

Page 21: Trust me, Im a developer

ConsiglioRendere sempre visibile il debito tecnico e ordinare nel backlog azioni per tenerlo sotto controllo

Page 22: Trust me, Im a developer

3 - Sviluppa guidato dai test

Page 23: Trust me, Im a developer

Scrivo il test

Scrivo il codice per

passare quel test. Solo quello!

Faccio refactoringdel codice

Ogni 10 minutiA piccoli passi

TDD

Page 24: Trust me, Im a developer

Esempio di test

Test

Codice dopo refactoring

Check if it fits

Prepare vehicle

Create new order

… e dopo refactoring anche del test!

Page 25: Trust me, Im a developer

Quanti test?Test Manuali

Unit

API

UI

Page 26: Trust me, Im a developer

Il Test Driven Development (TDD) non e solo una buona pratica di test ma e soprattutto una pratica per creare codice migliore!

Chiaro da leggere

01Mantenibile

02Documentato

03Semplice

04

Page 27: Trust me, Im a developer

Consiglio

Inizia a scrivere i test, anche semplici, ma inizia. Esercitati. Ci vogliono mesi, anche anni, per prenderci la mano. Non mollare subito!

Page 28: Trust me, Im a developer

4 - Rende tutto automatico, fin dal primo giorno

Page 29: Trust me, Im a developer
Page 30: Trust me, Im a developer

Esempio di automatismo

Developer PC

Git

PushJenkins Pipeline

Pull

Integration test server

Deploy and Test

Pre Prod serverDeploy and Test

Prod ServerDeploy and Test

Page 31: Trust me, Im a developer

Quando farlo? Automatizzate la

“hello world application”

implementata sulla vostra architetturaDallo Sprint Zero!

Page 32: Trust me, Im a developer

Automatizzare il prima possibile

1. Build automatica con aggiornamento di tutte le librerie da repositorydei sorgenti (npm, maven o altro). No copie di librerie a mano.

2. Tutta la catena dei test up and running e non solo gli Unit ma fino ai test in produzione.

3. Verifica statica del codice con linters.

4. Adottare un'adeguata politica di branch. Piu semplice e meglio e.

5. Implementare la catena di continuous: integration, delivery e deploy.

6. Definire un'adeguata politica di versionamento del codice.

7. Agganciare in modo corretto al codice loggers e analytics.

Page 33: Trust me, Im a developer

Consiglio

Automatizzare subito costa anche 100 volte meno di farlo dopo. Parti semplice e non aspettare!

Page 34: Trust me, Im a developer

5 - Non si innamora della tecnologia ma degli utenti!

Page 35: Trust me, Im a developer
Page 36: Trust me, Im a developer
Page 37: Trust me, Im a developer

Mangiare sano

Mangiare cibo buono

Non mangiare sempre la stessa cosa

Sfruttare al massimo la pausa pranzo per rilassarsi

Non spendere troppe energie nella scelta di cosa mangiare

Scegliere i piatti da mobile e web

Pagare senza dover inserire ogni volta la carta di credito

Consegna in 20’

Piatti buoni, sani e caldi grazie ad un menu equilibrato

Prenotare la consegna per un orario desiderato

Creare un nuovo segmento di mercato differenziandosi dai food delivery classici

Chi vuole mangiare nel Week-end o è fuori Milano

Persone che lavorano o studiano nel centro di Milano

Foorban.com. Selezioniamo gli ingredienti più freschi e cuciniamo un menù diverso ogni giorno. Ordina i tuoi piatti preferiti e saranno consegnati in 20’

Vision BOARD

Target Group Needs Product Business Value

Who is out?

Page 38: Trust me, Im a developer

Marketing manager di

una multinazionale

30 anni, laureata.

Sportiva e dinamica.

Le piace tenersi in forma ed è attenta a cosa mangia.

Ama sperimentare nuovi ingredienti a tavola.

Sfruttare al meglio la pausa pranzo andando in palestra.

Mangiare sano e buono.

Non spendere troppo tempo nella scelta.

Anna

Page 39: Trust me, Im a developer

Sceglie piatto

Chissà cosa c’è di buono oggi?

Ho fame!

Se la foto mi attira lo prendo

Prendo il cellulare

Scorro i piatti Guardo la foto

Aggiungo il piatto al carrello

Descrizione… Attenzione: le foto devono essere molto

ben fatte!

Page 40: Trust me, Im a developer

Sceglie piatto Invia ordine Verifica la consegna

Sfoglia piatti

Dettagli piatto

Aggiungi piatto

Sceglie orario

Conferma

Paga

Guarda dov’è il piatto sulla mappa

Leggi quanto manca alla consegna

AssistenzaConferma ordine

Page 41: Trust me, Im a developer

Consiglio

Quando scrivi il codice pensa sempre come impatterà sul comportamento dell’utente finale (vale anche per le parti senza interfaccia utente!)

Page 42: Trust me, Im a developer

Riassumendo

Page 43: Trust me, Im a developer

1. Semplicità

2. Debito tecnico e valore

3. Test prima!

4. Tutto automatico

5. Utenti al centro

Page 44: Trust me, Im a developer

Il software è un asset!

Non pensiamo ”basta che funzioni”, altrimenti alla lunga avremo costruito un asset pericolante.

Page 45: Trust me, Im a developer

Giulio Roggero

www.agilereloaded.it

www.intre.it

www.mia-platform.eu

@giulioroggero