(Solo FYI - Sono cofondatore di una società ( Digité ) che costruisce e vende software aziendale a una varietà di organizzazioni tecnologiche, quindi Ho uno sfondo su questi argomenti :-))
Agile e Scrum sono correlati, in quanto sono metodi di sviluppo del software. Agile è un termine generico per metodi specifici come Scrum, Extreme Programming (XP) e altri.
CMMI, d'altra parte, è un framework di gestione della qualità utile per le grandi organizzazioni che devono misurarsi in termini di capacità e maturità complessive per dimostrare la qualità ripetibile del lavoro software che svolgono. Le organizzazioni possono utilizzare un mix di metodi di sviluppo del software: metodi Agile (come Scrum / Kanban / XP / BDD / TDD / etc), metodi "tradizionali" (Waterfall, Iterative) o un mix (Agile ibrido), a seconda delle esigenze aziendali . Possono ancora utilizzare CMMI come un quadro generale di governance per misurare e sviluppare le loro capacità software.
Sicuramente, come sviluppatore solista, non devi preoccuparti di CMMI!
In generale, i metodi Agile ti danno la possibilità di creare il tuo software con meno rischi, maggiori possibilità di successo e avvertimenti precoci che ciò che stai sviluppando potrebbe non essere il prodotto giusto (come sono sicuro tu sai, non è solo importante per costruire il tuo prodotto giusto - ma anche per costruire il prodotto giusto). Anche se sei uno sviluppatore solista, devi avere altre persone con cui tu (devi) interagire, specialmente i tuoi clienti. Metodi agili come Scrum o Kanban ti danno la possibilità di consegnare a loro il software di lavoro più spesso (in scatti ogni 2-3 settimane), ottenere il loro feedback più spesso e adottare misure correttive più spesso che in altri modi. Kanban ti aiuta a farlo ancora più continuamente. Consiglierei i seguenti libri, se non ne hai letti altri finora -
- Scrum - The Power of Scrum - di Jeff Sutherland
- Kanban - Cambiamenti evolutivi di successo per la tua organizzazione tecnologica - di David Anderson. (Se hai bisogno di un'introduzione di base a Kanban, puoi guardare qui: Che cos'è Kanban? )
Per rispondere alla tua domanda finale, ti consiglio di iniziare con Kanban. La mia ipotesi è che tu abbia già un processo che segui per costruire e distribuire software ai tuoi clienti. Kanban ti aiuterà a mappare il tuo processo esistente, ti aiuterà a "visualizzarlo" e ad aiutarti a fornire più spesso / più continuamente. E apportare miglioramenti nel tuo processo per aiutarti a diventare più agile nel complesso. Se vuoi qualcosa di più formale e strutturato, dovresti adottare Scrum. Potrebbe richiedere uno sforzo maggiore in anticipo, ma non preoccuparti troppo delle sue strutture formali, concentrati invece sul suo intento fondamentale di fornire più spesso software di lavoro ai tuoi clienti.
Spero che questo aiuti.
Cheers!