Archive Page 2
Analogias são uma maneira poderosa de explicar algum conceito: parte-se de um principio já conhecido e estabelecido para tentar explicar ou mesmo formar um outro. Tome como exemplo explicar uma escala baseada em outra (“se X é um fusca, então Y é uma ferrari”): o conhecimento prévio sobre um fusca e uma ferrari é transportado para X e Y, seja lá o que forem. Mas, apesar de analogias serem usadas como uma ferramenta poderosa para dar explicações, algumas podem apenas direcionar para concepções erradas e por vezes desastrosas. Em desenvolvimento de software não faltam analogias. Desenvolver software é como construir prédios; é como criar uma linha de produção; é como fazer um filme e tantas outras que não chegaram a ganhar algum destaque.
Embora algumas analogias pareçam completamente razoáveis, sequer chegam perto do que é realmente desenvolver software. Não é como construir casas. Derrubar e repintar paredes é, por vezes, trivial em software, mas não é quando se trata de cimento e tijolos de verdade. Começar de cima para baixo não é razoável quando se constrói casas, mas pode ser quando se desenvolve software. Não é como uma linha de produção porque não existem, nos bons projetos de software, divisões tão fortes e distintas separando cada uma das fases. Por fim, não deveria ser como fazer filmes já que estouros de tempo e orçamento não são bem vistos e eu nem preciso de uma analogia para explicar isso. Mas existe uma analogia que eu considero certeira: Desenvolver Software é Como Dirigir. Ela foi feita por Kent Beck no eXtreme Programming Explained: “Driving is not about getting the car going in the right direction. Driving is about constantly paying attetion, make a little correction this way, a little correction that way”. No livro esse trecho é usado para dar uma idéia a respeito XP, algo sobre não criar planos impossíveis de serem seguidos por resistirem às mudanças. É sobre como é mais sensato pensar onde se quer chegar e reagir de acordo durante o caminho, da mesma maneira como é dirigir: você pensa onde quer chegar, pensa nos caminhos e reage a engarrafamentos, acidentes, semáforos, buracos e pedestres.
Só que nós podemos levar essa analogia um pouco além.
Uma porção de motoristas, a maior parte que eu conheço, para falar a verdade, tem algum seguro contra acidentes ou roubo. Seguro é uma maneira que os motoristas encontraram para se proteger quando algo extremo acontece – caso de um acidente ou roubo. Mas não são os únicos mecanismos já que temos air bags, cintos de segurança, freios de ultima geração, e mais uma porção de acessórios prontos para nos ajudar nesses casos extremos. Entretanto, bons motoristas sabem que nem seguro e nem acessórios são itens melhores do que direção defensiva. Você não acelera mais do que o necessário porque existem limites de velocidade, não ignora sinais vermelhos, se mantém atento quanto aos outros carros para ficar a uma distância considerada segura. E isso o tempo todo, afinal é melhor ser cuidadoso do que experimentar os air bags. Acidentes causam muitos danos: lesões físicas, traumas, falta de confiança – para esta última, basta perceber como a maior parte dos clientes encara com desconfiança os projetos de software.
Com software não é diferente. Você pode até ter seguros, geralmente em forma de contratos estipulando perdas e ganhos quando casos extremos acontecem, mas se manter atento para evitar acidentes é mais razoável, principalmente quando é o passageiro – no caso o cliente – quem sofre mais com as conseqüências. Boas práticas, testes automatizados e integração contínua são algumas maneiras que os bons desenvolvedores encontraram para dirigir defensivamente, elas dão suporte para reagir quando o trânsito muda e ajustes precisam ser feitos. Não pára por aí, assim como bons motoristas se preocupam em oferecer feedback aos outros (vide as sinalizações feitas, ou mesmo alguém alertando sobre uma porta aberta), bons desenvolvedores se comunicam bastante para prover as setas e alertas necessários.
Já passamos por muitos acidentes, tanto em desenvolvimento de software quando na direção de carros. Outros acidentes virão, seja por nossa culpa ou por causa de desenvolvedores desavisados, mas é preciso aprender com cada um deles para criarmos softwares melhores.
Filed under: agile, software | 16 Comments
Pesquisar
-
Você esta atualmente visualizando os arquivos do blog Motor Curiosidade.