Sobre aquela de padrões vs flexibilidade

Uau, eu acabei de notar que eu perdi o prazo pra entregar-lhes uma nova postagem no blog. Mas é que as festas de fim de ano... tá! Não tem desculpa, eu vacilei...

Mas eu tenho estudado e pesquisado sobre aquela coisa de padronização do ambiente de desenvolvimento que eu falei no último post. Eu não fui o primeiro a questionar a padronização vs flexibilidade. Na verdade eu encontrei uma discussão muito boa (em inglês) aqui no StackOverflow. Claro né ;p. Há muitas opiniões interessantes como os...

Contras:

  • Padronização que burocratiza demais as coisas. Por isso a gente vê softwares de governo que ainda estão na versão 6 do IE.

É.. é basicamente isso mesmo, engessar o ambiente de desenvolvimento de forma que incluir novas tecnologias se torna uma pain in the ass. Porém isso afeta mais empresas que não possuem um foco no desenvolvimento, que faz várias aplicações diferentes. Quando não existe padrão algum entre as aplicações, todo dia é uma novidade. Nesse caso o foco é dentro de cada aplicação, ter tudo muito bem estruturado para que a manutenção não seja onerosa.

Poderíamos considerar os cacoetes do programador, como espaço ou tab, ou a IDE que ele prefere usar... Isso vai depender muito da linguagem e do foco da empresa. Portanto, não vou entrar nessa parte.

Prós:

  • Contratar é mais fácil: Você sabe as competências que busca.
  • Cortar custos de licença... As vezes você vai comprar softwares e se você usa em muitos projetos o custo cai.
  • Consistência na entrega do produto.
    • Você vai ter padrões de desempenho já conhecidos.
    • Documentação mais rica.
    • Um time pode pegar o trabalho do outro na metade e não vai ser um problema, porque a estrutura já vai ser conhecida.
  • Ajuda na inovação (!)
    • Temos que concordar que é muito mais fácil atualizar um código que tá bem documentado e tem uma arquitetura conhecida.
A lista de prós é MUITO maior e nem vale a pena no momento estender mais do que isso. Porque em resumo... Padronização e Flexibilização não são opostos extremos. E o padrão pode ser constantemente revisado, e não quer dizer que você vai ter que rever todo o padrão, só em casos pontuais, como incluir uma nova library ou framework, trocar linguagem.
 Padronização e flexibilidade não são inimigos.

Coisas como análise de requisitos, ciclos de desenvolvimento, containers vs maquina virtual, linguagem, geração automática de documentação, etc... são coisas que podem mudar de forma independente uma das outras. O principal ponto é que, com um padrão, você pode botar o básico rodando sem muito esforço e focar apenas nos problemas que o produto final precisa resolver.

 Conclusão

Minha conclusão é a seguinte, quando você tem uma rotina de desenvolvimento, sempre os mesmos produtos, sempre a mesma "base" os padrões emergem naturalmente. Então, trabalhe a favor da natureza, nunca contra. E por mais que cada caso seja um caso a padronização ainda pode ser um fator facilitador nos processos de atualização, porque tudo que já foi feito está claro e bem documentado.

But beware
 Quando você não tem esse padrão emergente através das aplicações, você tem vários clientes e cada um quer uma coisa diferente, como faz? Você precisa ser ágil ir adequando e estabelecendo as coisas a medida que-- eita, desenvolvimento ágil também é um padrão... mas o que?




Fontes:
Stack(Love)Overflow - Should developer tools, languages, frameworks, etc. be standardized across an organization? [closed]
Software Engineering Stack Exchange - Standards In Enterprise Development
Minha experiência - (drops the mic)
 

Comentários

Postagens mais visitadas deste blog

Como ler cada linha de um arquivo no Powershell

Uma série sobre Python - Ambiente de desenvolvimento

Wagtail CMS para construção de sites - Apresentação