Desenvolvimento

Ξ 1 comentário

Responsabilidades de um Arquiteto de Software

publicado por Ronaldo Cunda

Responsabilidades de um Arquiteto de SoftwareTodo ano a CNN Money, juntamente com o site PayScale, lançam a lista de melhores empregos das Américas, e há pelo menos cinco anos o arquiteto de software aparece com grande destaque na compilação (aqui a lista do ano passado). Embora seja uma função relativamente nova, vem crescendo muito no decorrer dos últimos anos e ganhando cada vez mais espaço no mercado de trabalho. Mesmo assim ainda vejo muitas pessoas fora da tecnologia da informação perguntando-se o que exatamente faz esse profissional.

Pensemos no seguinte cenário, rotineiro em qualquer início de projeto: o escopo do trabalho está definido com tudo o que precisa ser realizado, sabemos quem é o cliente final do produto, é criado o plano de releases e entregas, montada a equipe técnica (desenvolvedores e testadores), definido um método de trabalho e, finalmente, iniciada a execução do projeto. Embutido nesse planejamento, de preferência antes do começo do desenvolvimento, é necessário pensar em todas as camadas e módulos que farão parte da solução final, além de possíveis integrações com outros sistemas e serviços, dependências externas, utilização de componentes pré-existentes, frameworks de mercado, banco de dados, entre outras minúcias que somente aumentam a complexidade da plataforma que será criada.

Nesse ponto que entra o arquiteto de software: montar a melhor solução técnica para o projeto, sempre buscando atender as expectativas do cliente dentro do prazo e custo estimados. Por isso deve estar sempre um passo adiante do time de desenvolvimento, analisando e equilibrando as variáveis que fazem parte do negócio frente a todas as (in)definições técnicas que surgirem. Além disso, o profissional deve atuar como um líder e possuir um bom conhecimento sobre o nível da própria equipe, para ter plenas condições de montar uma solução que não seja exageradamente complexa, onde ele seja o único que a entenda, nem simples demais que não atenda os requisitos do produto ou sistema.

A grande maioria dos clientes não está interessada como será a plataforma, preocupando-se no fim apenas com o resultado entregue. Essa deve ser uma responsabilidade da equipe técnica, centralizada na figura do arquiteto de software. Assim, a estrutura montada deve ser flexível o suficiente para que novas “caixas” possam ser acopladas sem demasiado esforço e a posterior manutenção não seja uma dor-de-cabeça a cada mudança. Não é preciso ter todas as respostas logo de saída, mas é sempre aconselhável deixar a casa arrumada caso isso seja necessário no futuro. Nenhum profissional dedicado é o mesmo depois de alguns anos. Com certeza um código que fiz no passado é muito menos estruturado e pior do que um código que escrevo hoje. Uma arquitetura que foi criada de maneira errática anteriormente e que não seja possível modificá-la nesse momento, pelo menos serviu para uma coisa: saber para qual caminho não devo seguir.

Um detalhe que venho notando é que inúmeros desses profissionais são apenas pagos para ditar regras e padrões para suas equipes de desenvolvimento, mas muitas vezes esses mesmos sujeitos não sabem onde colocam um ponto-e-vírgula no próprio código. Acredito que todo arquiteto deve saber programar com alguma desenvoltura e sujar as mãos quando for preciso, até mesmo para colocar à prova toda a plataforma que foi planejada para o produto. Como saber se um framework é o mais indicado para aplicar em determinada situação? Como ter certeza se um padrão de projeto é mais adequado para solucionar um problema se não o tiver posto em prática?

Nenhum profissional deve ser tratado como um ser intocável, que vive em um pedestal acima de todo mundo, e o arquiteto de software não é diferente. A arquitetura de um sistema deve ser debatida e analisada por todo o time técnico. Todos devem ter a noção do que está sendo proposto e ter a liberdade de sugerir modificações e/ou melhorias. Cada um tem suas próprias experiências profissionais e o debate sadio deve ser sempre exaltado dentro de um ambiente profissional entre todos os envolvidos.

Se olharmos novamente a lista de melhores empregos, notaremos que o desenvolvedor/programador também aparece como um dos profissionais mais valorizados atualmente. Todos possuem suas próprias preocupações e responsabilidades, mas ninguém é dono da razão sobre qualquer tema. Somos todos partes importantes da mesma engrenagem.

[Crédito da Imagem: Arquiteto de Software – ShutterStock]

Autor

Formado em Ciência da Computação em 2003 pela PUCRS, trabalha com tecnologia de informação há mais de 10 anos, especialmente utilizando tecnologias Microsoft. Líder técnico, desenvolvedor e analista de sistemas. Entusiasta de metodologias ágeis, Scrum e XP, e praticante de boas práticas de programação.

Ronaldo Cunda

Comentários

1 Comment

You must be logged in to post a comment.

Busca

Patrocínio

Publicidade



Siga-nos!

Newsletter: Inscreva-se

Para se inscrever em nossa newsletter preencha o formulário.

Artigos Recentes