This article's use of external links may not follow Wikipedia's policies or guidelines. (January 2009) |
This article needs additional citations for verification. (June 2007) |
Cowboy Coding is a term used to describe software development where each developer has autonomy over his own development process. This often includes control of the project's schedule, algorithms, tools, and coding style.
A Cowboy Coder is a lone developer who benefits from having the complete problem space and program in mind. Many successful programming projects had be started by a cowboy coder, who wanted to solve his own problem. The benefit of cowboy coding is the reduced time for documentation and communication with team members. Cowboy coders create or join teams and agree on common tools and coding style for the benefit to the code base.
Cowboy coding has risk of creating a technical dept[1]. At first only the developer of a tool or patch knows what the program is doing. Most of the communication, documentation and testing has been delayed to the time of a working prototype. The case of patches, where the typical cowboy style is core dump, debug, patch, join IRC or email upstream to convice a maintainer to apply the patch, is often joked as Ready!, Fire!, Aim ;-).
Cowboy coding works well, if solving the problem is interesting enough for others, who pay the technical dept created by the cowboy coder. Cowboy coders who lead open source or community projects need the skill to delegate work like testing and documentation to the user base, using the technical dept as a leverage to speed up time to market.
Cowboy Coding can have positive or negative connotations, depending on one's opinions on the role of management and formal process in software development; but "Cowboy Coding" is more often used as a pejorative term by supporters of software development methodologies, such as Agile who created the term to point out the lack of commitment to a methology.
Examples of Cowboy Coding
External links
- Cowboy Coder definition at Wards Wiki
- Delving into Cowboy Programming