A wikipedia diz que arquitetura significa construção principal, basicamente referenciando ao arquiteto que atua em qualquer situação de arranjo espacial.
No nosso caso é o software que interessa e precisa receber essa “orientação espacial” para ser bem feito.
Vamos ver o que a documentação do RUP fala sobre a arquitetura de software, que é a responsabilidade do arquiteto:
“A arquitetura de software abrange:
- as decisões significativas sobre a organização de um sistema de software
- a seleção dos elementos estruturais e das interfaces através das quais o sistema é composto em conjunto com o comportamento, como especificado na colaboração entre esses elementos
- a composição dos elementos estruturais e comportamentais em subsistemas progressivamente maiores
- o estilo de arquitetura que guia essa organização, esses elementos e suas interfaces, suas colaborações e sua composição
A arquitetura de software não diz respeito apenas a estrutura e comportamento, mas também a uso, funcionalidade, desempenho, flexibilidade, reutilização, abrangência, restrições tecnológicas e econômicas, trocas e estética. ”
Do ponto de vista do desenvolvedor, o arquiteto é a pessoa :
- com muita experiência nas tecnologias utilizadas pela empresa;
- que tem a visão geral de todas as implementações de aplicações da empresa (não confunda isso com saber todas as regras de negócio);
- que domina pelo menos uma ferramenta de desenvolvimento;
- que sabe que o banco de dados é um repositório de informação, e não uma camada de regras de negócio, mas que em alguns casos é interessante que isso exista;
- que conhece bem os padrões de desenvolvimento e sabe que cada caso é um caso, não existe bala de prata;
- que domina as principais linguagens de programação utilizadas pela empresa;
- que procura tirar o melhor proveito do software/metodologia que a empresa tem, ao invés de ficar reclamando do que a empresa não tem;
- que conversa com o desenvolvedor e sugere/obriga o uso de determinada arquitetura, sempre com justificativas técnicas;
- que sempre está atualizado com as novas tendências, mesmo que ainda não tenham presença significativa no mercado.
Pois bem, mas o desenvolvedor não é o dono da empresa e muito menos quem participa do processo de seleção do arquiteto, portanto a realidade é outra!
Em muitas empresas que tenho conhecimento por colegas desenvolvedores, esse papel não é nada disso que eles esperam, na maioria dos casos os arquitetos são pessoas:
- com nível superior;
- com pouca ou nenhuma experiência em desenvolvimento;
- que conhecem UML;
- que dominam alguma ferramenta de UML;
E por que isso acontece? Por que na realidade as empresas esperam um perfil diferente para o arquiteto. Elas ainda acham que informática é como a engenharia civil, onde um arquiteto orienta um mestre de obra sem ter construído nenhuma obra antes.
Ou seja, o arquiteto (papel do chefe) manda o analista (o subordinado, o pião) fazer o que ele acha correto.
Ah, mas o arquiteto tem curso superior e o analista não! Essa frase eu já escutei e tenho pena de quem acredita que na faculdade se ensina tudo e que alguém sem diploma possa fazer um excelente trabalho. Acredito que a maioria das pessoas competentes que eu conheço (analistas, DBAs, desenvolvedores) fizeram faculdade de outro curso ou começaram alguma e desistiram para cair no mercado.
O Carlos (não, ele não tem link para o nome dele, ele não tem blog, site, nada, segundo suas próprias palavras é um indigente digital) ,que sempre fala de temas interessantes (esse post mesmo surgiu de uma conversa de almoço no trabalho), tem umas histórias curiosas sobre carreira acadêmica: outro dia voltando a pé do trabalho pela Avenida Paulista ele percebe a poucos metros de distância uma fisionomia familiar de um rapaz entregando folha de papel de propaganda para as pessoas que passavam pela rua… depois de pensar um pouco ele lembrou: era o cara que estudou no colégio com ele e era o aluno com as maiores notas da turma! Que coisa não, como nada na vida realmente é previsível…
Bom, voltando ao assunto principal, na verdade o que as empresas esperam são “documentadores seniors” que tem uma tamanha autoridade, e em algumas vezes arrogância para definir padrões que quase sempre não conhecem o suficiente.
Alguns dizem que os arquitetos sabem mexer melhor no powerpoint do que nas IDEs de desenvolvimento, mas felizmente existem exceções.
A área de informática cresce muito rápido e os arquitetos não tem uma posição confortável de deixar de acompanhar como as coisas evoluem e o que ele poderia adotar para melhorar o dia a dia do desenvolvedor. Eles precisam sempre tentar melhorar visando o crescimento da empresa.
O escritor francês Jean Giraudoux tem uma citação interessante que resume tudo isso: “Only the mediocre are always at their best“.
Fernando Boaglio, para a comunidade. =)