Aprendendo com a Arquitetura de Softwares Livres
Como você aprende a programar? Volte um pouco no tempo, ou veja a sua situação atual, e faça uma análise sobre como as técnicas de programação de computadores lhe são ensinadas.
Em geral você aprende apenas sobre a sintaxe de linguagens e sobre alguns algoritmos famosos, certo? Em geral em cursos de Análise e Desenvolvimento de Sistemas e similares as aulas de programação focam em mostrar a sintaxe das linguagens de programação, como usar essa ou aquela IDE, como configurar uma conexão com o banco de dados, como resolver pequenos problemas isolados, etc.
Agora vamos fazer um paralelo com Arquitetura e Engenharia Civil. Nestes cursos os alunos examinam diversas construções e problemas de arquitetura existentes, assim eles aprendem com os erros e acertos daqueles que vieram antes.
Eu gosto de pensar neste exemplo com algo que está próximo da minha realidade atual que é o caso dos prédios de Santos/SP. Na cidade há diversos prédios que entortaram com o passar dos anos, chegando à inclinações de até 1,80m! Isso é bastante coisa e o problema acontece por conta de os prédios terem sido construídos sobre sapatas de 3 a 4 metros de profundidade.
O tempo passou, os prédios entortaram e os engenheiros aprenderam. Hoje em dia os prédios da cidade são construídos sobre estacas com mais de 50 metros abaixo do solo! Tem um prédio sendo contruído perto de onde moro e o bate estaca está há meses trabalhando, isso dá uma ideia da profundidade que é necessário atingir para garantir estabilidade para a construção.
Acredito que quando um novo prédio vai ser construído na cidade é necessário aprender com os exemplos daqueles que foram construídos antes e isso é fantástico.
Agora, voltando para a nossa área… Quantos aí param para analisar um projeto de e-commerce antes de desenvolver um novo? E aquele gerenciador de conteúdos? Tem também aquela rádio online que parece fácil de começar. Enfim, acho que já deu para entender né?
Eu acredito que muito do que aprendemos em cursos é algo parecido com subir paredes (softwares simples) usando diferentes materiais (linguagens de programação) e com diferentes ferramentas (IDEs, bancos, etc). O problema é que não aprendemos como os grandes softwares foram escritos. Será que eles usaram apenas sapatas que os fizeram entortar? Será que eles usam estacas mais profundas?
Por não saber como e ou por que as decisões de arquitetura foram tomadas em outros softwares o que acontece é que aprendemos apenas a subir paredes, mas quando chegamos no mercado de trabalho nos são dadas tarefas para construir casas, sobrados, prédios, shopping centers, catedrais, pontes, etc. Mas se tudo o que sabemos é como construir paredes, então acabamos construíndo paredes e mais paredes até que elas fiquem com a aparência de um prédio de 50 andares. O problema é que sem as fundações corretas, sem apoios, sem estrutura, o nosso prédio acaba caindo com o primeiro vento que bate.
Mas, como aprender com a construção de outros softwares? Como acessar o código fonte e aprender com o que já existe?
Com Software Livre!
Foi exatamente com essa ideia que o pessoal do The Architecture of Open Source Applications resolveu reunir em livros os relatos dos autores e colaboradores de aplicações em software livre famosas e bastante utilizadas.
Que tal conhecer como funciona a arquitetura do Asterisk? De repente seja legal saber um pouco mais sobre o Sendmail, ou sobre o Git. As arquiteturas do MediaWiki e do Moodle podem ser interessantes para programadores PHP.
O projeto já tem dois livros que somam quase 50 projetos em software livre! É uma base muito legal para estudar e entender como funcionam alguns dos grandes softwares usados hoje em dia.
O terceiro livro do projeto trata de performance e parece bem interessante também.
Atualmente estou lendo o primeiro livro e estou gostando bastante. Você pode ler online ou comprar uma versão para o seu e-reader favorito. Eu comprei o epub para ler no Kobo por apenas $10 e foi um investimento muito bem feito.
Agora imagine: E se os cursos de programação também fizessem uso deste material? Acredito que isso ajudaria a preparar melhor o futuro da nossa profissão pois pelo menos ajudaria a evitar os erros comuns do passado e a aprender com os acertos daqueles que deram certo e continuam até hoje. Isso ajudaria a realmente evoluir a área.
Mas a minha indicação deste livro não é apenas para quem está começando, é para todos os profissionais da área. Eu estou aprendendo bastante com o livro e acredito que ele pode acrescentar para muitos outros.
Fica aí a dica ;)
InFog