Cosa sono i feature branch?
Potremmo discutere per ore sul significato di feature nell’ambito dello sviluppo software ma accordiamoci su questa semplice definizione: “Una funzionalità del nostro software”. Una funzionalità potrebbe essere qualcosa come “Creare un nuovo post”, “Aggiungere una immagine a una bozza”, “Cancellare un post”.
Questa imprecisa definizione non è realmente importante per il contesto. Dovremmo invece essere tutti d’accordo sul seguente assunto: qualunque sia la definizione formale di feature, più piccola è, meglio è:
- Da un punto di vista del business, più una funzionalità è piccola e più velocemente è implementata e quindi rilasciata sul mercato, iniziando a generare introiti prima
- Per il progetto, una funzionalità piccola vuol dire anticipare il feedback del cliente, permettendo maggiore reattività per correggere il tiro e rimanere profittevoli
- Per lo sviluppatore, una funzionalità piccola significa meno conflitti e meno mal di testa in fase di merge, oltre a un minore sforzo mentale per lo sviluppo in sé
Proviamo ora a dare una definizione di feature branch. Un feature branch altro non è un branch che contiene una feature.
Ogni qualvolta abbiamo a che fare con i feature branch, nella nostra testa si rinforza però la corrispondenza uno a uno tra le feature e i feature branch, al punto da creare dei vincoli mentali talmente radicati da sentirci a disagio anche solo a pensare di fare diversamente:
- committare parte di una feature direttamente sul branch develop (o qualunque sia il branch di sviluppo principale)
- mergiare il feature branch prima che la feature sia completata
- committare una piccola feature direttamente su develop, senza nessun altro branch
- usare lo stesso branch per due feature
- … qualsiasi altra azione che vada contro i nostri feature branch