Partilhar via


Sessões Back to Basics? Por que não?

Olá pessoal, tudo certo?

Estamos em tempo de mudança. Como o Markus fala de vez em quando, “o Mundo Mudou!”. Concordo com vocês, as vezes é difícil acompanhar o ritmo das mudanças e inovações que atingem nossa área. TI é assim! Durante o último Tech-ed Brasil 2009, eu ouvi o mesmo comentário de vários participantes: “Qual tecnologia eu devo usar?”, “O que eu preciso estudar agora?”, “Porque temos tantos frameworks e opções diferentes disponíveis?”, “O que eu uso para uma aplicação Web?”, entre outros.

De fato, não temos uma resposta padrão ou simples para todas essas perguntas. Tenho trabalhado em TI nos últimos 15 anos e já vi diversas mudanças em arquitetura, alavancadas por diferentes fatores. Quem aqui não viu (tudo bem, alguns aqui não viram) o nascimento do cliente/servidor, aplicações com C++, VB6, componentes em COM+ sobre Windows Server 2000, as novidades do mundo Web, a adoção de Web Services em alta escala pelas empresas, etc. Você viu também a publicação do .NET Framework, sua evolução com as versões 2.0, depois 3.0 com o WCF e o WPF, o uso de serviços REST, o .NET 3.5 SP1. Finalmente, vimos o crescimento da discussão em torno de SOA, SOI, SAAS e mais recentemente o Cloud Computing, o provisionamento dinâmico, a computação de alta escala, o Windows Azure, etc.

Durante o Tech-ed Brasil, tive a oportunidade de falar sobre a iniciativa Software + Serviços da Microsoft, que oferece uma visão para a TI do futuro. Um dos slides que usei mostra a evolução das arquiteturas dominantes nas últimas décadas. Claro, é uma simplificação do que aconteceu em TI, mas vale como ilustração, veja:

image

Em cada década, tivemos uma arquitetura dominante, que definiu o estilo e o comportamento do software que era construído para o mercado e para nossos usuários. Vale destacar que cada nova arquitetura apareceu como uma nova alternativa de infraestrutura, adicionando valor e novas opções de recursos para as arquiteturas existentes. Essa combinação tem sido observada até hoje e muitas empresas ainda convivem com várias dessas arquiteturas, ao mesmo tempo.

Mas retornando às dores de nosso dia-a-dia e pensando nas perguntas que vimos no começo deste post, existe ao menos uma coisa que é constante nessa evolução toda: a aplicação de bons príncípios de engenharia de software. Independente do tipo de framework, camada, componente ou novos recursos que você adote, lembre-se sempre de princípios como:

  • Programação Estruturada;
  • Programação Orientada a Objetos;
  • Modelagem de Dados e Teoria de Conjuntos;
  • Bons Patterns de Arquitetura;
  • Tipos Abstratos de Dados, Filas, Pilhas, Listas Ligadas, Caches;
  • Otimização de Algortimos, etc.

Como arquitetos de software, creio que é saudável manter “frescos na memória” esses conceitos. Separe um tempinho de seu corrido dia para relembrar os tópicos acima.

Creio que uma sessão “back-to-basics” de vez em quando vai ajudá-lo a olhar os vários recursos e frameworks sob um prisma diferente. Isso também vai ajudá-lo a reconhecer quais tecnologias você pode aplicar em sua empresa, no momento certo de sua necessidade.

É o que eu tenho feito e tem funcionado!!!

Por enquanto é só! Até o próximo post :)

Waldemir.

Comments

  • Anonymous
    September 14, 2009
    Excelente reflexão, Waldemir! Focar nas últimas tecnologias é importante, mas o alicerce sempre precisa estar lá! Como gosto de metáforas, lá vai a minha: seria como estudar somente eletrônica embarcada para melhorar a performance e a segurança dos automóveis, e esquecer como se fabricam pneus, rolamentos, discos de freio...

  • Anonymous
    September 14, 2009
    Olá Palma, tudo certo? Valeu pelo comentário! E pela metáfora também! Sem dúvida, tenho conversado com alguns profissionais que estão imersos na ansiedade dessa corrida de inovações, entre tantas mudanças e lançamentos. Mas acabaram esquecendo o básico: os velhos princípios de engenharia de software, que são e devem ser nossos guias. Relembrá-los de tempos em tempos deve evitar algumas derrapadas (pneus, hã hã!?) em projetos críticos. Abraço! Waldemir.

  • Anonymous
    September 14, 2009
    Cambiucci, Confesso que senti uma certa nostalgia ao ver você escrever sobre a evolução partindo de client/server, arquitetura WinDNA e os princípios do .Net :). Época de grandes desafios tecnológicos, mesmo porque não tínhamos, no momento, a quantidade de informação disponível que temos hoje, nem o sem número de frameworks (open-source ou não) existentes hoje, o que fazia com que os arquitetos/desenvolvedores tivessem que sambar diariamente para entregar soluções alinhadas às linhas de negócio e que tivessem qualidade no atendimento de requisitos não-funcionais. Tudo bem, existiam alguns problemas como o querido DllHell, mas era divertido :) Citando uma frase do seu tópico, "o mundo mudou", mas mudou pra melhor. Grande Abraço

  • Anonymous
    September 15, 2009
    Olá Roberto, E olha que eu nem citei VB5, VB6, controles VBX, OCX, FLAT THUNKING 16/32 bits, depois componentes no MTS (Option Pack 4, sensacional), COM+ 1.0, COM+ 1.5, CGI - Common Gateway Interface em C, depois ainda ISAPI Filters, ISAPI Extensions, Critical Sessions, MUTEX, Semáforos, BubleSorts, B-Trees, suas primeiras listas duplamente ligadas em C++, suas pilhas em C++, seus primeiros componentes Enterprise Services no .NET, COMTI, COMAREA, .TLB, Serviços C++, seu primeiro comando printf("sobre Números Reais: n %f %.2f %e %E n", fp, fp, fp, fp ); o SPY, HOOK de mensagens, e tantos outros nomes inesquecíveis de nossa história! :) Melhor parar se não uma turminha chora! :) []s Waldemir.