Desenvolver software é como reformar uma casa - Blog CMMI & MPS.Br
Home > Engenharia > Desenvolver software é como reformar uma casa
By Washington Souza on October 16, 2010
Excelente artigo escrito por Samuel Diniz comparando o desenvolvimento de software com uma reforma de casa.
Assim, se você nunca passou por uma reforma antes e está pensando em iniciar uma empreitada, ou pensa em desenvolver software :), aqui vão algumas dicas de quem conviveu com uma reforma bem abrangente, cometeu vários erros, quase morreu de desgosto, mas pelo menos aprendeu algumas boas lições para a próxima vez. Em cada dica, eu faço uma analogia com o desenvolvimento de software.
Esta é provavelmente a dica mais importante: Só inicie a obra quando você souber exatamente o quê e como será feito. Estamos aqui falando de definição do escopo e levantamento de requisitos. Não pense que tudo se resume ao projeto do arquiteto ou decorador. Nem basta saber os tipos de materiais que serão usados. Você precisa saber EXATAMENTE o quê será feito. Qual será a cor do piso? Onde será utilizado? Como serão feitas as emendas e os recortes? Se algo der errado, quais as alternativas? Você verificou se as instalações hidráulica e elétrica propostas no modelo são realmente viáveis? Tem certeza que aquele registro importante ou o painel de disjuntores não vão ficar atrás de algum armário? O armário planejado vai mesmo comportar aquilo que você pretende guardar nele?
Considerou o espaço para ventilação que alguns eletroeletrônicos precisam?
Analise bastante o projeto e confronte-o com o local. Cruze as plantas que você já tem com as do projeto. Estude os possíveis cenários de uso. Faça algumas simulações com recortes de papelão. Quanto mais tempo você gastar confirmando o projeto e tomando decisões (ou seja, planejando), menos tempo, dinheiro e trabalho você vai perder contornando restrições durante a obra. Muito faz-desfaz será evitado com uma boa análise e planejamento e comunicação com aqueles que vão executar a obra.
Em desenvolvimento de software é a mesma coisa. O escopo precisa estar muito bem definido antes do início do projeto. E, uma vez iniciado, a coisa mais importante a fazer é definir os requisitos e promover o entendimento claro deles por todos os interessados. Entregar algumas funcionalidades logo cedo, como prega o desenvolvimento ágil, pode contribuir para esclarecer os requisitos no início do desenvolvimento, que é muito mais barato. Se isso não for possível, prototipar pode ser de boa ajuda. É claro que podem ocorrer mudanças no decorrer da empreitada. Mas quanto mais tempo de análise você gastar com isso no início, menores serão os aborrecimentos depois.
Não inicie a obra sem ter providenciado todos os materiais necessários
No desenvolvimento de software esse problema geralmente ocorre quando você terceiriza a construção do software. Se você contrata uma empresa (ou um "freela") para construir seu software, mas não entrega as informações de que ela precisa, essa empresa vai acabar assumindo uma outra construção – afinal ela precisa trabalhar para receber – e isso pode acabar gerando o famigerado ciclo vicioso de enrola-enrola. Percebe-se que os clientes, em geral, são rápidos para definir o escopo, mas muito lentos para ajudar na especificação de requisitos e PRINCIPALMENTE homologar os entregáveis que muitas vezes ocorrem cedo no projeto. Assim, minha dica é: Não assuma compromissos se o cliente não estiver disposto a assumir compromissos (contratuais) para o fornecimento dos requisitos e prazos para homologação.
No caso de uma reforma, isso é importantíssimo. Como já foi dito no início deste artigo, há muitos detalhes que vão além do projeto. Por isso, é vital que você acompanhe de perto a obra. Caso você trabalhe o dia inteiro, converse com o seu chefe para flexibilizar de alguma forma o seu horário para que você possa passar pelo menos uma ou duas horas por dia acompanhando a execução da reforma.
Você não vai se arrepender. Além de evitar muitos erros e supresas, esse controle vai diminuir a probabilidade de erros serem cometidos em cima de outros erros. Em outras palavras, menos retrabalho. Estamos falando aqui de boa comunicação e feedback constante.
As pessoas em geral levam numa boa concertar seus próprios erros. Já quando o assunto é concertar erros dos outros… Ninguém gosta de refazer algo por culpa de outra pessoa. Em reformas isso é muito comum. Você diz para o pedreiro colocar a pia naquele lugar, depois muda de idéia e pede para ele refazer tudo e mudar a posição. A chance de ele ficar com má vontade e fazer pior é muito grande, pois isso é do ser humano. O que fazer nesses casos?