Utente:Marcobombe/Sandbox
"Cowboy coding" è un termine utilizzato per descrivere una metodologia di sviluppo del software in cui i programmatori hanno piena autonomia nel controllo della pianificazione del progetto, nella scelta degli algoritmi, degli strumenti di sviluppo e dello stile di programmazione del codice. Un "cowboy coder" può essere uno sviluppatore isolato o parte di un gruppo di sviluppatori, in assenza di alcuna gestione esterna che controlli gli aspetti di sviluppo del progetto, come la sua natura, la portata, il set di funzionalità.
"Cowboy coding" può avere connotazioni positive o negative, a seconda delle proprie opinioni sul ruolo di gestione e di processo formale nello sviluppo di software. Spesso usato come termine dispregiativo dai sostenitori delle metodologie di sviluppo software, è tuttavia rivalutato da programmatori che praticano il loro lavori all'interno di alcune comunità.
Svantaggi del "Cowboy Coding"
In contesto "Cowboy Coding", la mancanza nel progetto di formali metodologie software di gestione possono essere indicativi (anche se non necessariamente) di piccole dimensioni di un progetto o di una sua natura sperimentale. Progetti software con questi attributi possono presentare:
- Carenze nella struttura dei rilasci
Il progetto può mancare di uno studio di fattibilità, di stima, pianificazione o attuazione che può causare ritardi di progetto. Improvvise scadenze ed emergenze di rilascio potrebbero favorire la produzione di software con codice sporco e scritto velocemente, in cui gli errori vengono corretti al fine dell' immediata funzionalità e non secondo uno stile pulito e un approccio flessibile e generale. Spesso gli errori corretti in questo modo devono essere ripresi in futuro con maggiore attenzione e maggiore perdita di ulteriore tempo di sviluppo.
- Sviluppatori inesperti
Il "Cowboy Coding" è comune a hobbisti o a programmatori ancora studenti in cui gli sviluppatori possono inizialmente avere familiarità minima con le tecnologie, come ad esempio gli strumenti di sviluppo, che il progetto richiede. Ciò può comportare che il tempo necessario per imparare le conoscenze di base possa essere sottovalutato e accorciato causando ritardi successivi ben più gravi nel processo di sviluppo. L'inesperienza può portare anche a non tener conto di norme comunemente accettate, rendendo il codice sorgente di difficile lettura o causare conflitti tra la semantica dei costrutti del linguaggio e il risultato della loro produzione.
- Requisiti di progettazione incerti
Applicazioni software personalizzate, anche quando si utilizza un ciclo di comprovata di sviluppo, possono verificarsi dei problemi con il cliente in materia di requisiti. Codifica Cowboy può accentuare questo problema non scala i requisiti per un calendario ragionevole, e può causare i componenti inutilizzati o inutilizzabili essere creato prima che il progetto è finito. Allo stesso modo, i progetti con i clienti meno tangibili (progetti, spesso sperimentali, vedere lo sviluppo di giochi indipendenti) può iniziare con il codice e non un'analisi formale dei requisiti di progettazione. Mancanza di analisi di progettazione può portare a scelte tecnologiche errati o insufficienti, eventualmente, richiedere agli sviluppatori di porto o riscrivere il loro software in modo che il progetto deve essere completato. Incompletezza Molti modelli di sviluppo software, come SCRUM, utilizzare un approccio incrementale che sottolinea prototipi funzionali in ogni fase. Progetti non gestiti possono avere pochi o test di unità di lavoro iterazioni, lasciando un progetto incompleto inutilizzabile.
Advantages of Cowboy Coding
- Developers maintain a freeform working environment that may encourage experimentation, learning, and free distribution of results.
- Without a development/designer framework, the programmer, as opposed to the project manager, is responsible for removing roadblocks. This may improve the speed of development.
- Independent developers can begin with cowboy coding techniques before later selling them to commercial use or creating community-supported projects.
- Small projects may be burdened by heavy software management methodologies; cowboy coding removes this burden.
- By coding in their own time, a hobby project may come to fruition which otherwise wouldn't have