IGTI Blog
Entenda algumas razões para escolher essa carreira na área de Tecnologia da Informação

A importância da Arquitetura de Software no século XXI

Entenda algumas razões para escolher essa carreira na área de Tecnologia da Informação

Professor autor: Diovani Merlo

Vivemos rodeados por diversas tecnologias, mas como escolher adequadamente os melhores componentes para uma solução de software? Temos que desenvolver todo software do zero? Como evitar problemas na escolha de tecnologias que não agregam valor para o cliente? Como evitar que as soluções de software ultrapassem os custos previstos para o projeto? Como construir soluções de software que tenham ciclo de vida longo e que permitam evolução tecnológica para suportar as exigências do mercado atual? Como entregar soluções de software que suportem modificações de forma rápida? As respostas para essas perguntas e tantas outras são essenciais para apoiar a decisão de seguir ou não a carreira de em Arquitetura de Software, um dos caminhos mais desafiadores e desejados de TI.

Problemas típicos enfrentados

Atualmente, as empresas precisam de tecnologia da informação para se manterem competitivas e entregar valor para seus clientes e parceiros. Contudo, existem vários problemas que precisam ser superados para alcançar os objetivos. Os problemas comuns enfrentados por essas empresas e que são desafios à espera de um Arquiteto de Software envolvem:

  • Construção de soluções de software que não atendem aos objetivos de negócio da organização;
  • Construção de soluções de software que não agregam valor a nossos clientes;
  • Múltiplas plataformas para desenvolvimento;
  • Múltiplas linguagens para desenvolvimento;
  • Diversos estilos de arquitetura, como por exemplo Arquiteturas de Processos de Negócio, Arquitetura Orientada a Serviço, WEB, Arquitetura Orientada a Eventos, etc;
  • Ausência de liderança técnica para estabelecimento de uma arquitetura de referência;
  • Segurança das aplicações;
  • Conformidade com órgãos reguladores;
  • Soluções que não utilizam padrões de mercado;
  • Necessidade de integrações com diversas soluções legadas na própria organização e de  parceiros;
  • Problemas na definição do escopo dos projetos principalmente relacionado à requisitos arquiteturais;

Clique aqui para ler uma lista criada pela InfoQ (em inglês)  de 10 erros mais comuns em uma arquitetura de software.

Perfil comportamental do profissional de Arquitetura de Software

Um profissional que deseja se tornar um Arquiteto de Software competente e que consiga resolver os problemas comuns citados anteriormente deve ter como principais características comportamentais:

  • Comunicação: Fazer-se entender é um dos principais desafios para um Arquiteto de Software, pois a maior parte do seu trabalho será baseado na comunicação com seu time de desenvolvimento para expor e fundamentar os condutores e decisões arquiteturais que o levaram a escolha dos diversos componentes e linguagens para a construção de uma determinada solução.
  • Liderança: Tomar decisões e acreditar nelas. Porém, somente isso não é o suficiente. Ir além significará ter que liderar equipes para que estas implementem suas ideias e gerem softwares de qualidade.
  • Conhecimento técnico: Um Arquiteto de Software competente é aquele que constantemente se move para buscar novos conhecimentos a todo momento. Não há como ficar na zona de conforto e satisfeito em dominar apenas uma tecnologia ou linguagem de programação. É preciso buscar alternativas técnicas frente aos diversos problemas apresentados em cada solução de software a ser desenvolvida.
  • Atitude: Essa talvez seja a característica mais importante, pois um bom Arquiteto de Software é aquele que “pega o boi pelo chifre” e faz acontecer. Ou seja, não espera que outro profissional resolva os problemas durante o desenvolvimento da solução. Assume os problemas e ajuda o time de desenvolvimento a buscar caminhos alternativos ou não para que a solução seja construída. Nesse sentido, esse perfil não pode se afastar da codificação, pois muitas vezes é exigido o desenvolvimento de provas de conceito para validar requisitos arquiteturais para definição de uma implementação de referência.

Áreas de conhecimento técnico necessárias

Para se tornar um Arquiteto de Software, o profissional precisa dominar áreas de conhecimento de relevância para conseguir exercer as atividades dessa carreira:

  • Gestão de Pessoas: O profissional precisa dominar a comunicação pessoal através de técnicas de liderança, negociação e gestão de conflitos. O Arquiteto de Software também deve ser capaz de estabelecer um planejamento estratégico para buscar autoconhecimento, buscando mapear as forças, fraquezas, oportunidades e ameaças que são inerentes a qualquer projeto de software.
  • Engenharia de Software: O profissional precisa conhecer as etapas que são necessárias para o desenvolvimento de soluções de software como gestão de requisitos, projetos, desenvolvimento, testes, gerência de configuração, ferramentas e qualidade de software;
  • Processos de desenvolvimento de software: O profissional também deve conhecer algum processo de desenvolvimento – uma das mais procuradas atualmente é o processo de desenvolvimento ágil;
  • Estimativa de softwares: O profissional que assume o papel de Arquiteto de Software em projetos de desenvolvimento será solicitado para validar estimativas do time de desenvolvimento sobre o esforço e prazo necessários para construção da solução de software;
  • Conhecimento em estratégias de negócio: O profissional que dominar conhecimento das áreas de negócio e buscar o alinhamento entre as soluções a serem desenvolvidas e os objetivos das empresas terá sucesso em seus projetos ;
  • Linguagens de modelagem: O profissional deve dominar pelo menos uma notação que o permita representar a arquitetura das soluções de software concebidas através de diagramas que facilitam o entendimento de quais componentes a solução utiliza bem como a interação e dependência existente entre eles ;
  • Sistemas Operacionais/Servidores de Aplicação: O conhecimento em sistemas operacionais leva o profissional a conseguir avaliar e solucionar problemas comuns relacionados à implantação e manutenção das soluções de software entregues pelo time de desenvolvimento;
  • Algoritmos e Linguagens de Programação: Atualmente, o mercado está exigindo profissionais multiqualificados. No caso do profissional que busca assumir o papel do Arquiteto de Software não é diferente. Esse papel exige o conhecimento de uma linguagem de programação base, contudo será exigido desse profissional o conhecimento de outras linguagens, mesmo que de forma macro para a tomada de decisões acerca de requisitos arquiteturais.
  • Banco de Dados: As soluções demandadas pelo mercado  atualmente remetem a softwares que precisam rodar na nuvem (Cloud) e/ou que possuem requisitos arquiteturais de desempenho e escalabilidade fortes. Nesse sentido, o Arquiteto de Software deve conhecer banco de dados relacionais, não relacionais e orientados a grafos para conseguir montar uma arquitetura que utilize um ou mais bancos de dados citados anteriormente;

Competências

Um profissional que almeje o papel de Arquiteto de Software precisa ter em mente quais são as competências técnicas que mais serão exigidas para esse perfil. Nesse sentido, podemos elencar como essenciais:

  • Produzir resultados técnicos e de negócio satisfatórios: O Arquiteto de Software não pode contentar-se com resultados que não sejam satisfatórios e deve sempre buscar a melhoria contínua das entregas técnicas e componentes utilizados nos projetos de software.
  • Possuir visão de negócio: Alinhar o que as áreas de negócio das empresas  esperam de TI é um dos maiores desafios para um Arquiteto de Software. Entregar software que agregue valor e esteja claramente alinhado para suportar os processos de negócio primário das empresas é seu principal objetivo.
  • Enfrentar os problemas gerados no projeto: O Arquiteto de Software deve ser aquele que não pode ter medo dos problemas gerados nos projetos de software. Deve sempre encará-los, avaliando suas possíveis causas raízes bem como as soluções de contingência e definitiva ao longo do projeto de software.
  • Assumir as decisões técnicas do projeto: O Arquiteto de Software deve saber ouvir sua equipe no que tange a construção de uma arquitetura de software. O envolvimento da equipe é fundamental, pois todos precisam acreditar naquilo que será proposto. Contudo, mais de um caminho surgirá para escolha e é nesse momento que o Arquiteto precisa assumir o timão do navio e guiar a equipe para o que ele acredita ser o melhor caminho para atingir os melhores resultados esperados para o projeto.
  • Estar sempre antenado a tendências de mercado: O Arquiteto de Software deve ser um dos profissionais que mais acompanha as novidades tecnológicas lançadas pelo mercado. É importante que ele tenha em mente quais componentes estão em alta, quais estão em desuso e quais devem ser evitados na construção de uma arquitetura de software.
  • Buscar aprendizado contínuo: O Arquiteto de Software deve estabelecer mecanismos de feedback para identificar quais áreas de conhecimento precisam ser melhoradas. Além disso, não existe conhecimento congelado, pois o profissional que se julga sênior e assume uma zona de conforto não sobrevive no atual mercado de trabalho.
  • Aceitar a utilização de sistemas legados: As empresa atuais já possuem uma infraestrutura de aplicações diversificadas e o Arquiteto de Software deve conhecer bem produtos de mercado para soluções como ERP, CRM, Gestão de Identidades, Soluções de BPMS (Business Process Management), pois suas soluções com certeza terão que se comunicar com todo esse ecossistema tecnológico.

Tarefas e atividades que realiza

O principal objetivo de um Arquiteto de Software é conseguir entregar software que atende principalmente aos requisitos arquiteturais. Isso significa que ele é o responsável por garantir que a solução entregue os requisitos funcionais de valor para o cliente aliado a segurança, escalabilidade, disponibilidade, desempenho, usabilidade.

Um Arquiteto de Software passa grande parte do tempo em reuniões com o time de desenvolvimento e com seus clientes. Nessas reuniões ele é o responsável por comunicar os condutores e decisões arquiteturais que suportam todos os componentes escolhidos para a solução. Essa defesa é realizada tanto no aspecto técnico como de negócio, onde custo, prazo e escopo delimitam suas fronteiras para a escolha de qual caminho tomar.

Dentre as atividades de um Arquiteto de Software, podemos destacar:

  • Identificar e modelar requisitos arquiteturais;
  • Selecionar estilos arquiteturais para a solução;
  • Realizar estimativas de esforço e prazo para apoiar o gerente de projetos;
  • Realizar PoC (Proof of Concept – Prova de Conceito) para validar implementações de referência;
  • Selecionar componentes de software como frameworks, bancos de dados, servidores de aplicação, etc para a solução;
  • Garantir que a arquitetura proposta está sendo seguida através de auditoria de código;
  • Solucionar conflitos técnicos na equipe;
  • Apoiar o time de desenvolvimento na resolução de problemas;
  • Representar arquitetura da solução utilizando notações como UML;
  • Participar de reuniões técnicas com a equipe;
  • Participar de reuniões com os clientes;
  • Responsável por todas as decisões técnicas do projeto;
  • Estabelecer critérios e componentes para a segurança da solução;
  • Gerir riscos técnicos;

Também é importante destacar que um Arquiteto de Software não vive em uma ilha. Ou seja, na definição de uma arquitetura de uma solução, o Arquiteto de Software sofre influências de outros papéis. Por exemplo, as áreas de negócio o influenciam diretamente através da definição de metas de negócio. A área técnica o influencia diretamente com definições de governança como o estabelecimento de produtos de parceiros a serem utilizados. Confira aqui uma leitura complementar do Fórum Desenvolvedores da Microsoft sobre o Arquiteto de Software e um arquitetura corporativa.

Comparação com outros perfis profissionais

A escolha de uma carreira direcionada a estudos para o trabalho como Arquiteto de Software deve ser avaliada com bastante clareza, pois atualmente temos diversos papéis em um time de desenvolvimento de software. Alguns desses papéis possuem áreas de sombra com as responsabilidades de um Arquiteto de Software e outros não.

Observando abaixo, temos uma comparação entre o perfil do Arquiteto de Software com Engenheiro de Software através de dois gráficos polares os quais abordam as dimensões de Arquitetura de Software, Linguagens e Tecnologias, Gestão de Pessoas, Engenharia de Software, Gestão de TI, Infraestrutura de TI, Sistemas de Gestão Empresarial, Segurança da Informação, Gestão de Projetos, Gestão de Processos de Negócio, Estratégia e Marketing e Inteligência de Negócio.

Pode-se observar que um Arquiteto de Software deve ter uma formação muito forte em arquitetura, ou seja, conhecimentos em:

  • Desenvolvimento de requisitos arquiteturais;
  • Análise e desenho de arquitetura de software;
  • Arquitetura orientada a serviços;
  • Arquitetura de sistemas WEB;
  • Arquitetura de sistemas móveis;
  • Padrões e estilos arquiteturais;

Já o Engenheiro de Software deve ter uma formação mais forte nos seguintes  conhecimentos:

  • Processos em projetos de software;
  • Engenharia de requisitos;
  • Métodos ágeis em desenvolvimento de software;
  • Testes de software;
  • Gestão de configuração e mudanças em projetos de software;

Conclusão

Clique aqui para ler sobre o assunto no SEI-Software Engineering Institute, uma excelente fonte de conhecimento.

Ao optar por a carreira de Arquiteto de Software é importante ter em mente que, como qualquer outra profissão, não será uma tarefa fácil. Os profissionais que já passaram por outros papéis como Desenvolvedor de Software, Analista de Sistemas, LÍderes Técnicos com certeza terão uma bagagem que facilitará essa caminhada.

O sucesso para um profissional na área de tecnologia da informação é cheio de pedras( e das grandes!). Para superar esses obstáculos, o profissional precisará de comportamentos e técnicas específicas que o ajudarão a vencer. Pode-se afirmar que a profissão de Arquiteto de Software é o topo de uma pirâmide que exigirá muita dedicação e conhecimento técnico. E o mais importante a se ressaltar é: Chegar ao topo não é o maior problema, mas se manter lá é que exigirá muito mais desses profissionais.