Testes primeiro!

Seis razões para desenvolver seus testes primeiro. Interessante (e curto) artigo sobre algumas das vantagens mais tangíveis do TDD, com uma pitada de humor.


ABN AMRO com ColdFusion

Pode ser que você já tenha visto e já sabia (é provável), mas como a minha memória anda fraca e, confesso, nunca tinha me chamado a atenção, vale a pena citar – na forma deste post – que um dos bancos mais importantes (e conhecidos) do mundo usa ColdFusion em seu site principal.

http://www.abnamro.com/index.cfm

Sou cliente do Banco Real ABN Amro no Brasil e por acaso caí em uma página institucional do ABN Amro (mundial), que tinha extensão .cfm. Percebi de cara e fui fuçar. O resto do site todo roda em CFM. Interessante. Vale a pena lembrar para citar para os que fazem aquela velha pergunta “mas quem é que usa ColdFusion?”

Detalhe: como o banco foi vendido para o Santander, o exemplo pode não durar muito.


Piada do Programador Estrela

Um programador mediano estava sendo entrevistado para um emprego em uma grande fábrica de software: “E quais são suas pretensões salariais?”, perguntou o entrevistador, depois de ouvir longas e digressões do candidato sobre a sua própria capacidade e seu “score” numa provinha de certificação. “Aproximadamente uns vinte mil reais por mês, mais benefícios.”, respondeu, e com ar todo empertigado, arrematou: “Quais os benefícios que a sua empresa oferece?”. E o entrevistador, depois de pouco pensar, responde: “Normalmente, férias de 6 semanas por ano, fundo de pensão para complementar sua aposentadoria, um carro novo a cada dois anos, cartões de crédito, título de um clube, plano de saúde integral para todos os dependentes e viagem aos Estados Unidos duas vezes por ano.” “Você está brincando?” – pergunta o programador. “É claro! Mas foi você quem começou!”

(Originalmente criada pelo Alex meses há atrás, e hoje adaptada para o blog…)


Escolha seu servidor

Bê-a-bá básico de como configurar seu(s) servidor(es): Choosing Your Server: Web Servers. Vale a pena para aqueles que estão pensando em sair de uma hospedagem compartilhada e partir para uma hospedagem dedicada, mas estão em dúvida como comprar/contratar.


MVC: Model View Controller e os Três Macacos

Muito se fala sobre MVC, e no desenvolvimento de aplicativos em Flex comenta-se muito em relação a ele também. Embora o próprio modelo de desenvolvimento de aplicativos em Flex já possibilite o desenvolvimento de aplicativos em MVC, o advento de frameworks e micro-arquiteturas como o Cairngorm fomenta ainda mais a discussão sobre o MVC.

E a estrutura para entender o MVC, uma vez que ele é um padrão de arquitetura (alguns o chamam de framework, de paradigma, etc.. mas acredito que chamá-lo de arquitetural seja mais significativo) é o mesmo do entendimento de um design pattern: entender o problema (que é a motivação para o surgimento de um padrão), entender o padrão, e por fim entender como o padrão resolve o nosso problema.

A partir do momento que o software começa a ficar grande e complexo demais e que muitos dados são apresentados para o usuário, sentimos a necessidade de separar os dados (model) da interface (a view), de modo que as mudanças na UI não mudem o modo como gerenciamos os dados. E isso é feito desacoplando (removendo a relação direta) da user interface do acesso aos dados através de um elemento adicional, o controller, que irá intermediar essa relação.

Assim, a responsabilidade de cada um dos três elementos fica bem definida:

O Model representa as informações do domínio do aplicativo (a Folha de Pagamento, por ex) e fornece funções para operar os dados (calcular o total da Folha, por ex.), isto é, ele que expõe as funcionalidade do aplicativo. O Model também é responsável por notificar a View quando os dados forem alterados.

A View, objetivamente, deve renderizar o Model e possibilitar a interação do usuário, bem como consultar ao Model quando este notificá-la de que houve alterações nos dados afim de manter a consistência entre ambos.

O Controller, o maestro da orquestra, responde às ações dos usuários (um clique, por exemplo), possibilita mudanças no Model (fazer uma requisição ao servidor e obter novos dados, por exemplo) e seleciona a View correspondente.

E deste modo, desacoplando a View do Model e com a separação de responsabilidade, reduz-se consideravelmente o nível de complexidade do software, permitindo também uma maior especialização e foco do desenvolvedor, algo de extrema importância hoje em dia com a necessidade cada vez maior de interfaces com o usuários mais efetivas.

Esse fluxo pode ser sintetizado conforme a imagem abaixo, cujo original é da Sun:

mvc_diagrama_sun.jpg

Um ponto importante aqui é não confundir o MVC com desenvolvimento em Três Camadas. Desenvolvimento em Três Camadas é uma arquitetura para softwares cliente-servidor, e as camadas representam sistemas distintos (camada de apresentação, camada de negócios e camada de dados, que podem, análoga e respectivamente, ser um aplicativo em Flex, o código Java no servidor e um banco de dados). E fundamentalmente a camada de apresentação nunca pode acessar os dados diretamente, isto é, deve passar pela camada intermediária (ou pelas camadas, já que há sistemas com mais de três camadas).

E embora MVC e Três Camadas pareçam significar a mesma coisa, o nível em que eles atuam é bem diferente. Enquanto o MVC trata do código do aplicativo propriamente dito, o desenvolvimento em Três Camadas refere-se a um nível topologicamente mais alto (entre os sistemas). Outra diferença vital é que em Três Camadas o fluxo é linear (da camada de apresentação para a de negócios, de negócios para dados, voltando de dados para negócios e de negócios para dados), em MVC é triangular (a View envia um comando para o Controller, que por sua vez atualiza o Model e a View é consulta os novos dados no Model). Portanto, não vamos confundir as coisas!

E as implementações em MVC variam de acordo com a linguagem, claro. Mas nada disso é realmente novo, e há algo mais que gostaria de apresentar aqui, agora que já estamos contextualizados.

Eu e Beck Novaes, quando trabalhávamos juntos em um projeto educacional e de treinamento em desenvolvimento em Adobe Flex e Cairngorm, criamos uma série de idéias e conceitos, dos quais uma delas era relacionada à MVC.

Você provavelmente já escutou a história dos Três Macacos Sábios, não é mesmo? Muito possivelmente associada a Gandhi, que sempre levava consigo os três totens dos macaquinhos. Um os macacos está tampando os olhos, outro tampando os ouvidos e o terceiro tampando a boca, representando “não veja o mal, não ouça o mal, não fale o mal”.

Da mesma forma, apresento os Macacos MVC (ou MVC Monkeys para os gringos…):

  • A View é muda, mas faz gestos (user gestures) para o Controller e escuta mudanças no Model;
  • O Model é cego, mas escuta o Controller e fala para a View sobre as mudanças nele próprio;
  • O Controller é surdo, fala para o Model quando mudar de estado e vê os gestos da View.

mvc_monkeys.jpg


Resenha: As Leis da Simplicidade

Certa vez ouvi falar de uma fita de vídeo chamada “Como dizer o que você tem a dizer em 5 minutos?”, mas que tinha mais de uma hora de duração. Um tanto questionável, não é mesmo? A resposta do autor era simples: “Ninguém compraria uma fita com apenas 5 minutos de duração!”.

John Maeda, em contrapartida, seguiu suas próprias leis. Utilizando-se das duas primeiras leis, Reduzir e Organizar, escolheu 10 das 16 leis que tinha em mente, e de acordo com a terceira, Tempo, escreveu um livro curto de 100 páginas, que pode ser lido rapidamente.

A cada capítulo eu associava a lei em questão com situações do dia a dia e vários pensamentos me vinham à cabeça. As leis são concisas, e o livro, além de criativo, com muitas histórias e comparações com a vida real, é livre de jargões tecnológicos e muito mais focado em negócio do que nessa ou naquela tecnologia – o que para mim é muito positivo.

Contudo, não nego que em razão da “buzz” que ocorreu com o livro, eu esperava mais. Mas fazendo uma análise fria do preço do livro, do tempo que levei para ler, da introdução ao assunto da simplicidade e das perguntas que ele me fez fazer, considero uma boa leitura.

Assim, se você procura um livro com dez leis que possam ser traduzidos em dez passos para aplicar simplicidade em seu negócio (ou para aplicar em seu website), esse livro não é para você. O livro em si é uma ótima base para questionamentos e fomenta muitas perguntas, de modo que você próprio deve decidir como e o quão simples seu produto ou serviço pode e deve ser.