Acho que quase todos os programadores experientes passaram por três etapas e algumas passaram por quatro:
-
Os codificadores Cowboy ou nuggets sabem pouco ou nada sobre design e o veem como uma formalidade desnecessária. Se estiver trabalhando em pequenos projetos para partes interessadas não técnicas, essa atitude pode servir bem por algum tempo; Fica Feito, impressiona o chefe, faz o programador se sentir bem consigo mesmo e confirma a ideia de que ele sabe o que está fazendo (mesmo que não saiba).
-
Os astronautas de arquitetura testemunharam os fracassos de seus primeiros projetos de bolas de fio para se adaptarem às mudanças das circunstâncias. Tudo deve ser reescrito e, para evitar a necessidade de outra reescrita no futuro, eles criam plataformas internas , e acabam gastando 4 horas por dia em suporte porque ninguém mais sabe como usá-los corretamente.
-
Os quase-engenheiros costumam confundir-se com real , engenheiros treinados porque são genuinamente competentes e compreendem alguns princípios de engenharia. Eles estão cientes dos conceitos subjacentes de engenharia e negócios: Risco, ROI, UX, desempenho, capacidade de manutenção e assim por diante. Essas pessoas vêem o design e a documentação como um continuum e geralmente são capazes de adaptar o nível de arquitetura / design aos requisitos do projeto.
Neste ponto, muitos se apaixonam por metodologias, sejam eles Agile, Waterfall, RUP, etc. Eles começam a acreditar na absoluta infalibilidade e até mesmo necessidade dessas metodologias sem perceber que na real campo de engenharia de software, eles são meramente ferramentas, não religiões. E infelizmente, isso impede que eles cheguem ao estágio final, que é:
-
Programadores de fita adesiva AKA gurus e muitos fazem .
Geralmente, essas pessoas têm tudo a ver com a criação de um produto "bom o suficiente" e, portanto, suas obras podem ficar um pouco abaixo da engenharia, mas estão milhas longe do código de espaguete produzido por codificadores cowboys. Nuggets não conseguem nem identificar essas pessoas quando são contadas sobre elas , porque para elas, tudo o que está acontecendo em segundo plano simplesmente não existe.
Alguns de vocês provavelmente estarão pensando neste ponto que eu não respondi a pergunta. Isso porque a questão em si é falha. A codificação Cowboy não é uma escolha , é um nível de habilidade e você não pode escolher ser um codificador de cowboy mais do que você pode escolher para ser analfabeto.
Se você é um codificador de cowboys, então você não sabe de outra maneira.
Se você se tornou um astronauta de arquitetura, você é fisicamente e psicologicamente incapaz de produzir software sem design.
Se você é quase-engenheiro (ou engenheiro profissional), concluir um projeto com pouco ou nenhum esforço inicial de design é uma escolha consciente (geralmente devido a prazos absurdos) que deve ser ponderada em relação aos riscos óbvios. , e realizada somente depois que as partes interessadas tenham concordado com elas (geralmente por escrito).
E se você é um programador de fita adesiva, então nunca há qualquer razão para o "código cowboy" porque você pode criar um produto qualidade com a mesma rapidez.
Ninguém "prefere" o cowboy codificar sobre outras metodologias porque não é uma metodologia. É o equivalente de desenvolvimento de software de botões de mashing em um videogame. Tudo bem para os níveis iniciantes, mas qualquer um que tenha passado por esse estágio simplesmente não o fará. Eles podem fazer algo parecido semelhante , mas não será a mesma coisa.