Com o início dos posts sobre Agilidade senti falta de algumas referências como por exemplo o que é o brownbag que falamos tanto nos posts da Lambda3? Por isso hoje vou voltar as origens e escrever sobre Padrões (Pattern  Language) que está presente tanto na Agilidade (Padrões para introduzir novas ideias) como no nosso código (Padrões de Projeto) e é o conceito base de brownbag.

Para escrever esse texto me baseei no paper: “Patterns: Spreading the Word” da Linda Rising, que foi publicado pela primeira vez na Object Magazine em  Dezembro de 1996.

O desenvolvimento de software é uma ciência em constante evolução que tem examinado outras disciplinas como as engenharias de hardware, industrial, produção entre outras. Recentemente o marketing, a psicologia e até mesmo a filosofia tem sido alvo de analogias. Neste caminho um grupo de indivíduos muito respeitados na comunidade de orientação a objetos começou a observar o trabalho de um arquiteto, Christopher Alexander que foi o precursor do conceito de Padrões definido assim:

“Cada padrão descreve um problema que ocorre repetidamente em nosso ambiente e depois o núcleo da solução para esse problema de tal maneira que você pode usar esta solução um milhão de vezes sem fazer isso da mesma forma duas vezes.”

Depois disso os pesquisadores Jim Coplien e Doug Schmidt definiram Padrões de Software:

“ Padrões de Projeto capturam as estruturas estáticas e dinâmicas de soluções que ocorrem repetidamente na produção de software em um contexto particular”

Na OOPSLA’94, conferência de sistemas, linguagens e aplicações orientadas a objetos foi apresentado pelo GOF (Gang of Four: Gamma, Helm, Johnson, e Vlissides) o famoso artigo Padrões de Projeto de software (Desing Patterns). Depois disso Richard P. Gabriel publicou Patterns of Software, Linda Rising escreveu sobre padrões para introduzir novas ideias com o Livro: “Frearless Change” e Martin Fowler organizou o livro “Padrões de Arquitetura de Aplicações Corporativas” (Patterns of Enterprise Application Architecture) em 2003. Essas são algumas das principais referencias na área para vocês entenderem a importância do tema.

Para Padrões como observou Ralph Johnson as pessoas precisam aprender na prática e precisam praticar em problemas dentro do seu domínio. O livros citados acima e a maioria sobre padrões são na verdade catálogos de padrões que usam o formato da conferência PloP que é a conferência de Padrões. Na versão brasileira da Conferência SugarLoaf Plop de 2014 , nos 20 anos do livro Padrões de Projeto, conversando com Ralph Johnson ele me disse inclusive que um dos melhores livros para se aprender sobre Padrões de Projeto é o da série Use a Cabeça e não o dele por ter uma abordagem muito mais didática, mas eu não tiro o mérito do Livro dele, ainda está na primeira edição e é o livro mais vendido da computação de todos os tempos.