Codifica da cowboy - Cowboy coding
La codifica cowboy è lo sviluppo di software in cui i programmatori hanno autonomia sul processo di sviluppo. Ciò include il controllo della pianificazione, dei linguaggi, degli algoritmi, degli strumenti, dei framework e dello stile di codifica del progetto.
Un programmatore cowboy può essere uno sviluppatore solitario o parte di un gruppo di sviluppatori che lavorano con un processo o una disciplina minimi. Di solito si verifica quando c'è poca partecipazione da parte degli utenti aziendali, o alimentata dal management che controlla solo gli aspetti non di sviluppo del progetto, come gli obiettivi generali, le tempistiche, l'ambito e gli elementi visivi (il "cosa", ma non il "come". ").
La "codifica da cowboy" vede comunemente l'uso come un termine dispregiativo se confrontato con metodologie di sviluppo software più strutturate .
Svantaggi
Nella codifica cowboy, la mancanza di metodologie formali di gestione del progetto software può essere indicativa (sebbene non necessariamente) della natura sperimentale o di piccole dimensioni di un progetto. I progetti software con questi attributi possono presentare:
Mancanza di struttura di rilascio
La mancanza di una stima o di una pianificazione dell'implementazione potrebbe causare il ritardo di un progetto. Scadenze improvvise o spinte al rilascio del software possono incoraggiare l'uso di tecniche "rapide e sporche" che richiederanno ulteriore attenzione in seguito.
Sviluppatori inesperti
La codifica dei cowboy può essere comune a livello di hobbisti o studenti in cui gli sviluppatori potrebbero inizialmente non avere familiarità con le tecnologie, come test, controllo della versione e/o strumenti di creazione, di solito più della semplice codifica di base richiesta da un progetto software.
Ciò può comportare una sottovalutazione del tempo necessario per l'apprendimento, causando ritardi nel processo di sviluppo. L'inesperienza potrebbe anche portare al mancato rispetto degli standard accettati , rendendo difficile la lettura della fonte del progetto o causando conflitti tra la semantica dei costrutti del linguaggio e il risultato del loro output.
Requisiti di progettazione incerti
Le applicazioni software personalizzate, anche quando utilizzano un ciclo di sviluppo collaudato, possono incontrare problemi con il cliente riguardo ai requisiti. La codifica cowboy può accentuare questo problema non ridimensionando i requisiti a una tempistica ragionevole e potrebbe comportare la creazione di componenti inutilizzati o inutilizzabili prima che il progetto sia finito. Allo stesso modo, i progetti con clienti meno tangibili (spesso progetti sperimentali, vedi sviluppo di giochi indipendenti ) potrebbero iniziare con il codice e mai con un'analisi formale dei requisiti di progettazione. La mancanza di analisi del design potrebbe portare a scelte tecnologiche errate o insufficienti, con la possibilità che lo sviluppatore porti o riscrive il proprio software affinché il progetto possa essere completato.
Incompletezza
Molti modelli di sviluppo software, come Extreme Programming , utilizzano un approccio incrementale che sottolinea che il software deve essere rilasciabile alla fine di ogni iterazione. I progetti non gestiti possono avere pochi unit test o iterazioni funzionanti, lasciando inutilizzabile un progetto incompleto. In quanto tali, le metodologie agili sono state paragonate al cowboy coding, ma agile ha processi formali, procedure, misurazioni, gestione del progetto e altri controlli mentre il cowboy coding non ha nulla di tutto questo.
Vantaggi
- Gli sviluppatori mantengono un ambiente di lavoro libero che può incoraggiare la sperimentazione, l'apprendimento e la distribuzione gratuita dei risultati.
- Consente agli sviluppatori di superare i limiti dell'architettura e/o dei livelli per risolvere limiti e difetti di progettazione.
- Poiché discutere di architetture, scrivere specifiche e rivedere il codice richiede tempo, un singolo sviluppatore (se sufficiente) può produrre un'applicazione ben funzionante più velocemente mediante la codifica da cowboy. Attività come la ricerca o la prototipazione potrebbero non richiedere la qualità del codice fornita dai metodi più complessi.
- Poiché la codifica può essere eseguita durante il tempo libero dello sviluppatore, potrebbe essere realizzato un progetto che altrimenti non avrebbe.
Guarda anche
- Hacker , una sottocultura che si affida alla creatività dei singoli programmatori
- Code monkey , un termine peggiorativo per i programmatori che sono impiegati per scrivere codice semplice o ripetitivo
- Lavoro autonomo
- Sviluppo di giochi indie
- Cowboy § Associazioni negative
Riferimenti
- ^ Hughes, Bob e Cotterell, Mike (2006). Gestione del progetto software , pp.283-289. McGraw Hill Education, Berkshire. ISBN 0-07-710989-9
- ^ "In difesa della cascata: decostruire il manifesto agile" (PDF) . Estratto il 1 febbraio 2016 .
- ^ "StickyMinds - STAREAST 2000: Confessioni di un (recupero) Coding Cowboy" . StickyMinds . Estratto il 2 febbraio 2016 .
- ^ "Esplorando lo sviluppo agile" . Notiziario software pragmatico .
- ^ "StickyMinds - Non rompere solo il software. Crea software" . StickyMinds . Estratto il 2 febbraio 2016 .
- ^ K, Alex. "Il '20 percento di tempo' di Google in azione" , Blog ufficiale di Google, 18 maggio 2006
link esterno
- Definizione di Cowboy Coder su Ward's Wiki
- Definizione di Cowboy Coding a Ward's Wiki
- "Approfondire la programmazione Cowboy" . Archiviato dall'originale il 23 marzo 2019.