Codare cowboy - Cowboy coding

Codificarea cowboy este o dezvoltare software în care programatorii au autonomie asupra procesului de dezvoltare. Aceasta include controlul programului proiectului, limbajelor, algoritmilor, instrumentelor, cadrelor și stilului de codare.

Un codificator cowboy poate fi un dezvoltator singuratic sau parte a unui grup de dezvoltatori care lucrează cu un proces sau disciplină minimă. De obicei, apare atunci când există o participare redusă a utilizatorilor de afaceri sau ventilată de către conducerea care controlează doar aspecte nedezvoltate ale proiectului, cum ar fi țintele largi, termenele, domeniul de aplicare și vizualele („ce”, dar nu „cum” ").

„Codificarea cowboy” vede în mod obișnuit utilizarea ca un termen derogatoriu, atunci când este contrastat cu metodologii mai structurate de dezvoltare software .

Dezavantaje

În codificarea cowboy, lipsa metodologiilor formale de gestionare a proiectelor software poate fi indicativă (deși nu neapărat) a dimensiunii reduse sau a naturii experimentale a unui proiect. Proiectele software cu aceste atribute pot prezenta:

Lipsa structurii de eliberare

Lipsa estimării sau a planificării implementării ar putea determina întârzierea unui proiect. Termenele bruște sau presele de lansare a software-ului pot încuraja utilizarea unor tehnici „rapide și murdare” care vor necesita o atenție suplimentară ulterior.

Dezvoltatori fără experiență

Codificarea cowboy poate fi obișnuită la nivel de hobby sau student, unde dezvoltatorii ar putea inițial să nu fie familiarizați cu tehnologiile, cum ar fi testarea, controlul versiunilor și / sau instrumentele de construcție, de obicei mai mult decât codarea de bază necesară unui proiect software.

Acest lucru poate duce la subestimarea timpului necesar pentru învățare, provocând întârzieri în procesul de dezvoltare. Lipsa de experiență ar putea duce, de asemenea, la ignorarea standardelor acceptate , făcând sursa proiectului dificil de citit sau provocând conflicte între semantica constructelor limbajului și rezultatul rezultatului lor.

Cerințe de proiectare incerte

Aplicațiile software personalizate, chiar și atunci când se utilizează un ciclu de dezvoltare dovedit, pot întâmpina probleme cu clientul în ceea ce privește cerințele. Codificarea cowboy-ului poate accentua această problemă nescalând cerințele la o cronologie rezonabilă și ar putea duce la crearea unor componente neutilizate sau inutilizabile înainte de finalizarea proiectului. În mod similar, proiectele cu clienți mai puțin tangibili (deseori proiecte experimentale, vezi dezvoltarea independentă a jocului ) ar putea începe cu cod și niciodată o analiză formală a cerințelor de proiectare. Lipsa analizei de proiectare ar putea duce la alegeri tehnologice incorecte sau insuficiente, care ar putea necesita dezvoltatorului să porteze sau să rescrie software-ul lor pentru ca proiectul să fie finalizat.

Incompletitate

Multe modele de dezvoltare software, cum ar fi Programarea extremă , utilizează o abordare incrementală care subliniază faptul că software-ul trebuie să poată fi eliberat la sfârșitul fiecărei iterații. Proiectele neadministrate pot avea puține teste unitare sau iterații de lucru, lăsând inutilizabil un proiect incomplet. Ca atare, metodologiile agile au fost comparate cu codificarea cowboy, dar agile au procese formale, proceduri, măsurare, management de proiect și alte supravegheri, în timp ce codificarea cowboy nu are nimic din toate acestea.

Avantaje

  • Dezvoltatorii mențin un mediu de lucru în formă liberă care poate încuraja experimentarea, învățarea și distribuirea gratuită a rezultatelor.
  • Permite dezvoltatorilor să treacă granițele arhitecturale și / sau nivelate pentru a rezolva limitările și defectele de proiectare.
  • Întrucât discutarea arhitecturilor, scrierea specificațiilor și revizuirea codului necesită tot timpul, un singur dezvoltator (dacă este suficient) poate produce o aplicație care funcționează mai bine prin codare cowboy. Sarcini precum cercetarea sau prototiparea s-ar putea să nu necesite calitatea codului oferită de metodele mai complexe.
  • Deoarece codificarea se poate face în timpul liber al dezvoltatorului, un proiect ar putea să se realizeze, care altfel nu ar avea.

Vezi si

Referințe

  1. ^ Hughes, Bob și Cotterell, Mike (2006). Managementul proiectelor software , pp.283-289. McGraw Hill Education, Berkshire. ISBN  0-07-710989-9
  2. ^ "În apărarea cascadei: deconstruirea manifestului agil" (PDF) . Adus la 1 februarie 2016 .
  3. ^ "StickyMinds - STAREAST 2000: Confessions of a (Recupering) Coding Cowboy" . StickyMinds . Adus pe 2 februarie 2016 .
  4. ^ „Explorarea dezvoltării agile” . Buletin informativ software pragmatic .
  5. ^ "StickyMinds - Nu spargeți doar software. Creați software" . StickyMinds . Adus pe 2 februarie 2016 .
  6. ^ K, Alex. „Timpul„ 20 la sută ” al Google în acțiune” , Blog oficial Google, 18 mai 2006

linkuri externe