Seja iterativo você também; faça como programadores e arquitetos.

tio gegeca (rogerio)
7 min readMay 10, 2023
Desenho do autor — A vida passo-a-passo seria mais difícil para um polvo, mas eles têm 8 cérebros e juntam as pontas com coerência (sei lá)

Sempre me lembro de uma definição que atribuo a Christopher Alexander, um arquiteto e matemático, professor e autor influente em ambas as áreas, de computação e arquitetura. Suspeito que eu tenha construído essa ideia, porque em inglês os termos não fazem tanto sentido. Ou seja, “o que os programadores chamam de arquitetura é o que os arquitetos chamam de programa, e vice-versa”. Não encontrei fontes que confirmem essa frase como de autoria de Christopher Alexander, nem uma definição precisa e universalmente aceita. A relação entre “arquitetura” e “programa” pode variar dependendo do contexto. A frase é uma generalização pouco útil, mas gosto dela e uso com frequência com meus alunos, que, aparentemente, não entendem muito do que eu falo. Mas, costumo esclarecer em textos como esse.

Em geral, a arquitetura de software pode ser vista como um paralelo para a arquitetura física. A relação entre engenharia de sistemas e arquitetura é complexa e variada, com interpretações e definições diferentes dependendo do contexto. As áreas de arquitetura e engenharia de sistemas estão relacionadas, por envolverem a criação e a execução de sistemas complexos. Seja em construções urbanas, desenvolvimento de software, ou qualquer outro tipo de aplicação em que seja necessário planejar, projetar e implementar sistemas de componentes inter-relacionados, de forma estruturada e coerente, com foco na eficácia, eficiência e funcionalidade do todo, e não das partes individuais.

Há diferenças significativas entre arquitetura e engenharia de sistemas. Mas há alguma sobreposição entre os termos usados por programadores e arquitetos. “Arquitetura de software” se refere à estrutura de um sistema de software, incluindo componentes, interfaces, padrões de comunicação e outros elementos relacionados. Em arquitetura, o termo “programa” descreve os requisitos funcionais e espaciais de um ambiente construído. O programa pode incluir condicionantes de projeto, necessidades dos usuários, funções que o projeto deve desempenhar e outros aspectos relacionados. Esses termos são usados de forma diferente em contextos diferentes, podendo haver sobreposição e ambiguidade. Christopher Alexander, arquiteto e matemático, é conhecido por seu trabalho em teoria da arquitetura e design de sistemas. A suas obras podem trazer perspetivas interessantes. Há outros termos de interpretação confusa por meus alunos e interessados em processos de projeto. Iterativo é outro termo que uso para interligar as similaridades entre os processos de projeto de diversas áreas, além da arquitetura e da computação.

“Iterativo” se refere a uma abordagem que envolve tarefas em ciclos repetidos, com análises e ajustes do ciclo anterior, na transição para o próximo ciclo. A abordagem iterativa é flexível e adaptável, permitindo ou requerendo ajustes contínuos à medida que novos contextos surgem. Cada ciclo iterativo inclui uma avaliação e reanálise da situação para o projeto poder progredir com eficiência e eficácia. A cada passo, é preciso olhar em volta, para decidir os próximos passos, o que pode envolver mudar de direção, ou parar o processo. O termo “iterativo” vem do latim “iterare”, que significa “repetir” ou “fazer de novo”. Na área de desenvolvimento de software, a abordagem iterativa tem sido utilizada com a adoção da metodologia de desenvolvimento de software “iterativo e incremental”. Alguns modelos sequenciais podem ser inadequados para lidar com a complexidade e a incerteza que muitos projetos enfrentam, quando os requisitos mudam ao longo do tempo. Devido à dinâmica das cidades, o planejamento urbano quase impede a adoção de processos descritos em livros teóricos. Esses livros não são inúteis, sendo preciso estudá-los para ter flexibilidade ao analisar e decidir cada passo do processo de projeto urbano e da paisagem.

A abordagem iterativa ajuda as equipes a se adaptarem melhor às mudanças e incertezas, permitindo ajustes e melhorias. Essa abordagem é adotada em muitas áreas. Arquitetos e designers devem prestar mais atenção à abordagem iterativa, que ensina a tomar decisões na vida.

Há uma tendência em algumas áreas, como design e arquitetura, de ver a repetição como um sinal de falta de progresso. A iteratividade não repete o trabalho e sim faz o trabalho em ciclos repetidos, com cada ciclo resultando em uma melhoria ou avanço. A evolução depende da adaptação para seguir os ciclos, que parecem se repetir, mas não são os mesmos. A similaridade permite adaptar, usando experiências e estudos, mas a evolução raramente repete os mesmos passos para todas as situações.

Esta abordagem é uma oportunidade para avaliar o trabalho, identificar pontos fortes e fracos, identificar novas necessidades ou oportunidades e ajustar o trabalho. Isso permite que um projetista ou uma equipe de projeto adapte o processo de desenvolvimento em tempo real e tome decisões com base em dados concretos. Isso permite que a equipe de projeto se concentre em partes menores e mais gerenciáveis do projeto, tornando o trabalho mais ágil e eficiente. Também promove um processo de desenvolvimento mais fluido, em que o projeto evolui constantemente à medida que novas informações e feedbacks são incorporados. Sei que alunos cansam-se de trabalhar em equipe nos trabalhos práticos do curso de arquitetura, mas duvido que sejam assim na vida particular, quando participam de jogos iterativos. Não é treino, é refletir e aprender com as experiências diferentes que a vida nos coloca.

Não se trata de repetir trabalho, mas sim de seguir ciclos com adaptação e melhoria contínuas. Isso leva a um desenvolvimento mais eficiente, com menos desperdício de recursos e um produto final mais bem-adotado aos contextos, às situações e às necessidades dos usuários. Enfim, adaptando-se a tudo o que está se desenvolvendo. Não mudar é morrer, como deveria ter dito Darwin, acho eu.

Há muita literatura e teoria sobre a abordagem iterativa em design e arquitetura. Seguem-se alguns exemplos, embora me pareça mais fácil identificar essas situações no cotidiano de qualquer pessoa que aprende a evoluir em cada passo de sua vida:

  1. “Iterative Design and Innovation” de David Kelley e Tom Kelley, livro sobre inovação em design e negócios, com estudos de caso de empresas;
  2. “The Architecture of Community” de Leon Krier, que é mais um manifesto pela abordagem iterativa e adaptável ao desenho urbano e à arquitetura, usando as complexidades e as mudanças constantes das comunidades;
  3. “Thinking with Type” de Ellen Lupton, que é sobre design gráfico, mas ensina a usar a abordagem iterativa como uma ferramenta para tipografia e composição, até que se atinja a clareza e a eficácia;
  4. “The Design of Everyday Things” de Don Norman; um livro clássico sobre design de produtos, que vê um projeto como ciclos contínuos de observação, reflexão e ação, com melhorias a cada ciclo.

Há muitos textos, artigos e teorias que exploram como a abordagem iterativa pode melhorar a eficácia e eficiência do processo de design em diversas áreas. Mas basta prestar atenção aos processos de decisão do dia a dia. A vida parece fluir iterativamente, como um processo que ocorre repetidamente em ciclos diferentes, só que em iterações diferentes a cada vez, cujas decisões dependem de análise e ajustes contínuos. As etapas parecem se repetir, mas elas só continuarão se repetindo se em cada etapa a vida for aprimorada com base na evolução do aprendizado adaptativo, obtido da etapa anterior.

Muito similar aos processos de projeto em arquitetura e urbanismo, o desenvolvimento de software segue uma abordagem iterativa. Isto envolve, por exemplo, a criação de um protótipo funcional, para ser analisado, criticado, e ajustado, em uma nova versão para ser testada, repetindo o ciclo de ajustes, até que o produto final obtenha um certo nível de satisfação. Funciona para projetos sob poucas condicionantes, mas funciona melhor ainda para projetos complexos, justamente por permitir ajustes e melhorias contínuas ao longo do processo, até que o objetivo final seja alcançado. Como costumo dizer a alunos, os projetos arquitetônicos e urbanísticos nunca estão prontos e completos, porque os seres humanos a que eles se destinam tampouco ficam prontos, completos e perfeitos.

Os ciclos iterativos são sequenciais, o que não significa que possamos saber de antemão qual deve ser o próximo passo numa sequência pronta, de etapas pré-determinadas. Em cada ciclo, uma etapa é concluída antes que a próxima etapa possa começar. Os ciclos iterativos podem ser executados em paralelo em diferentes partes do projeto, se necessário. Cada ciclo iterativo tem várias etapas, executadas em ordem sequencial. E, raramente, é possível estabelecer um cronograma, estabelecendo os tempos para cada passo em cada ciclo iterativo. Na prática, a escolha do caminho mais adequado pode levar de algumas semanas a vários meses para ser definida, dependendo do tamanho e da complexidade do projeto. A vida parece curta, mas pode durar muito, talvez para permitir perceber e definir cada passo. Como nos projetos, cada ciclo da vida produz uma nova versão do sistema, que pode ser representada por um projeto, mas nós mesmo somos processos complexos. Devemos usar o aprendizado para cada ciclo iterativo de evolução. Os ciclos iterativos, em projetos, são adaptados às necessidades à medida que surgem. É assim na vida, em projetos de arquitetura, design, arte, engenharia da computação. A flexibilidade é relevante nos ciclos iterativos, ao permitir uma maior flexibilidade e adaptabilidade, ao contrário das abordagens sequenciais tradicionais. Apesar de a ordem das etapas poder ser re-ajustada, cada etapa precisa ser concluída antes do próximo ciclo começar. Cada ciclo inclui uma avaliação da situação para que um projeto, assim como a vida, a humanidade, as coisas e o mundo, possam progredir.

P.S. sugiro ler outro texto meu sobre o significado de acúmen. Por aqui: https://tiogegeca.medium.com/acúmen-bdb9eae1d7d8

--

--