Cowboy coding: Difference between revisions

Content deleted Content added
Advantages: Edited to remove negative inference that this applies only to hobbyists.
Tags: Mobile edit Mobile web edit
Bender the Bot (talk | contribs)
m Advantages: HTTP to HTTPS for Blogspot
 
(32 intermediate revisions by 25 users not shown)
Line 1:
{{Short description|Derogatory term in software development}}
{{multiple issues|
{{procon|date=July 2013}}
{{POV|date=July 2013}}
{{refimprove|date=January 2011}}
{{original research|date=January 2011}}
Line 7:
}}
{{Use mdy dates|date=February 2016}}
'''Cowboy coding''' is a [[software development]] methodology where programmers have [[autonomy]] over the development process. This includes control of the project's schedule, languages, algorithms, tools, frameworks and coding style.
 
'''Cowboy coding''' is a [[software development]] methodology where programmers have [[autonomy]] over the development process. This includes control of the project's schedule, languages, algorithms, tools, frameworks and coding style. Typically, little to no coordination exists with other developers or stakeholders.
A cowboy coder can be a lone developer or part of a group of developers working with minimal process or discipline.{{Citation needed|date=January 2011}} Usually it occurs when there is little participation by business users, or fanned by management that controls only non-development aspects of the project, such as the broad targets, timelines, scope, and visuals (the "what", but not the "how").{{Citation needed|date=January 2011}}
 
A cowboy coder can be a lone developer or part of a group of developers working with minimal process or discipline.<ref>{{Citationcite web needed|last1=Scott |first1=Welker |title=cowboy coding |url=https://searchsoftwarequality.techtarget.com/definition/cowboy-coding |website=searchsoftwarequality |publisher=TechTarget |access-date=January2 March 20112022}}</ref> Usually it occurs when there is little participation by business users, or fanned by management that controls only non-development aspects of the project, such as the broad targets, timelines, scope, and visuals (the "what", but not the "how").{{Citation needed|date=January 2011}}
 
"Cowboy coding" commonly sees usage as a [[pejorative|derogatory]] term when contrasted with more structured [[software development methodology|software development methodologies]].
Line 17 ⟶ 18:
 
===Lack of release structure===
Lack of [[estimation (project management)|estimation]] or implementation planning might cause a project to be delayed. Sudden deadlines or pushes to release software may encourage the use of [["quick and dirty]] or [[code and fix]]" techniques that will require further attention later.<ref>{{cite web |url=http://www.stickyminds.com/sites/default/files/presentation/file/2013/09BSOFR_W7.pdf |title=In Defense of Waterfall: Deconstructing the Agile Manifesto |accessdate=February 1, 2016}}</ref>
 
===Inexperienced developers===
Cowboy coding can be common at the hobbyist or student level where developers might initially be unfamiliar with the technologies, such as testing, version control and/or build tools, usually more than just the basic coding a software project requires.
 
This can result in underestimating time required for learning to be underestimated, causing delays in the development process. Inexperience might also lead to disregard of accepted [[Standard Operatingoperating Procedureprocedure#Information technology industry use|standards]], making the project source difficult to read or causing conflicts between the [[Semantics#Computer science|semantics]] of the language constructs and the result of their output.<ref>{{cite web|url=http://www.stickyminds.com/presentation/stareast-2000-confessions-recovering-coding-cowboy|title=StickyMinds - STAREAST 2000: Confessions of a (Recovering) Coding Cowboy|work=StickyMinds|accessdate=February 2, 2016}}</ref>
 
===Uncertain design requirements===
Line 33 ⟶ 34:
* Developers maintain a free-form working environment that may encourage experimentation, learning, and free distribution of results.
* It allows developers to cross architectural and/or tiered boundaries to resolve design limitations and defects.
* As discussing architectures, writing specifications and reviewing the code all take their time, a single developer (if sufficient) may well produce a working application faster by cowboy coding. Tasks like research or prototyping may not require the code quality more complex methods provide.
* Since coding can be done during the developer's free time, a project could come to fruition which otherwise wouldn't have.<ref>K, Alex. [httphttps://googleblog.blogspot.com/2006/05/googles-20-percent-time-in-action.html "Google's '20 percent time' in action"], Official Google Blog, May 18, 2006</ref>
 
==See also==
* [[Hacker (programmer subculture)|Hacker]], a subculture that relies on the creativity of individual programmers
* [[Code monkey (disambiguation)|Code monkey]], a pejorative term for programmers who are employed to write simple or repetitive code
* [[Self-employment]]
* [[Indie game development]]
* {{Section link|Cowboy|Negative associations}}
 
==References==
Line 47 ⟶ 50:
* [http://c2.com/cgi/wiki?CowboyCoder Cowboy Coder] definition at [[Ward Cunningham|Ward's]] Wiki
* [http://c2.com/cgi/wiki?CowboyCoding Cowboy Coding] definition at [[Ward Cunningham|Ward's]] Wiki
* [{{cite web|url=http://cowboyprogramming.com/2007/01/11/delving-into-cowboy-programming/ |title=Delving into Cowboy Programming]|archiveurl=https://web.archive.org/web/20190323115724/http://cowboyprogramming.com/2007/01/11/delving-into-cowboy-programming/|archivedate=2019-03-23}}
 
{{independent media}}