Ronaldo
Ronaldo Desenvolvedor, pai, cidadão do mundo.

Arquitetura pra que te quero!

Arquitetura pra que te quero!

Sempre que esbarro com uma startup de tecnologia vejo os fundadores procurando por developers para criar a versão inicial de um produto qualquer. Criado o produto, o time de desenvolvimento aumenta e são adicionados mais developers. E aí me pergunto: quem fez a arquitetura do software?

A grande maioria dos developers que conheço não tem experiência ou conhecimento suficientes para arquitetar um software. São poucos, na verdade, que dominam a arte de arquitetar um software de forma a permitir fácil manutenção e crescimento da plataforma que estão criando. O desenvolvimento de software é, na verdade, uma tarefa para uma equipe multidisciplinar e não a tarefa de um único skill. O developer é apenas uma das variáveis da equação.

Uma equipe eficaz de desenvolvimento de software precisa ter um analista de sistemas, para que o problema a ser automatizado seja devidamente modelado, um arquiteto de sistemas, para que seja criada a arquitetura correta de software e hardware para a implementação do sistema dentro dos parâmetros exigidos pelo cliente, e o developer, que é quem efetivamente vai escrever o código.

Outras especialidades também são necessárias: DBA para auxiliar na modelagem ótima do banco de dados, um designer com experiência em UI/UX para resolver as questões de usabilidade e beleza da interface com o usuário, um sysadmin, cuja função será manter toda a infra coesa e em funcionamento, não somente a infra do sistema, mas também a infra necessária para o funcionamento da startup.

Muitos dos problemas dos softwares modernos resumem-se a arquitetura mal-feita. O resultado é consumo excessivo de recursos, alto acoplamento entre camadas de software e uma péssima manutenabilidade. Isso faz com que o custo de desenvolvimento de novas features aumente, bem como o bug fixing.

Normalmente, sistemas com arquitetura comprometida sofrem demais com manutenção predatória, ou seja, a famosa gambiarra. Os puxadinhos começam proliferar-se devido às limitações arquitetônicas.

O Developer Pode?

O ideal é que o developer aprenda a fazer arquitetura de software. Ele pode? Com certeza! Ao trabalhar sozinho, poderá arquitetar suas soluções e ao trabalhar com uma equipe multi-disciplinar, poderá contribuir ativamente para que o software tenha uma boa arquitetura e, consequentemente, boa qualidade.

O developer acaba tendo contato com todas as áreas que envolvem o desenvolvimento de software e conhecer arquitetura e negócios somam skills ao mesmo, permitindo-lhe validar modelos, consistir implementações e otimizar seu próprio código.

O software é vivo

Eu costumo dizer que o software se assemelha a um ser vivo pois está sempre em mutação. Da mesma forma, a arquitetura do software precisa ser sempre adequada a novos parâmetros, novas exigências ambientais, novas regras de negócio.

A arquitetura precisa evoluir juntamente com o software. Ou seja, é um dos itens que estarão sempre em mutação durante o ciclo de vida de uma solução. A arquitetura inicial parte de um conjunto de suposições que pode não ser mais verdadeira depois de algum tempo. Assim, é preciso rever estas hipóteses, revalidá-las e aplicá-las à arquitetura, gerando novas versões melhor adaptadas do seu software.