Cowboy coding is an undisciplined approach to software development that gives programmers complete control over the development process. In this context, cowboy is a synonym for maverick -- a loner who does things his own way.
An organization might permit cowboy coding because there are not enough resources to commit to the design phase or a project deadline is looming. Sometimes cowboy coding is permitted because of a misguided attempt to stimulate innovation or because communication channels fail and there is little or no business stakeholder involvement or managerial oversight. An individual developer or small team might be given only a minimal description of requirements and no guidance regarding how these objectives should be achieved. They are free to select frameworks, coding languages, libraries, technologies and other build tools as they see fit.
The cowboy approach to coding typically focuses on quick fixes and getting a working product into production as quickly as possible. They may also edit code on a live production server, skipping over the formal processes for quality assurance testing, regression testing and documentation required by continuous integration and other Agile software development methodologies. Instead of producing lean, well-written code, cowboy code often has errors that cause failures upon deployment or make it difficult to maintain over time. Integrating the various components of the code may also be a challenge since with cowboy coding there are no agreed-upon best practices to provide continuity.