0 assinantes

Newsletter

Mantenha-se informado sobre as nossas novidades com nosso newsletter semanal, todas as segundas-feiras

Esse caso acontece sempre de forma semelhante, com algumas peculiaridades de cada empresa ou projeto, mas em linhas gerais, é sempre o mesmo.

O Gerente Noçãoless™ (GN) ou <figura-que-não-entende-como-produzir-software-mas-acha-que-sabe> convoca os desenvolvedores para uma reunião onde um novo projetinho (calafrios nos desenvs) está se formando. Você já ouviu essa história antes, não é mesmo? Um projetinho, pequenino, baratinho, rapidinho de se fazer e manter. Tudo o que precisa ser feito já foi "levantado" em algumas atas de reunião e tudo são flores...

... até que a equipe de desenvolvimento começa a perguntar.

- Ahn, esse item aqui, "Criar um cadastro de clientes físicos e jurídicos.", o que exatamente o cliente quer?
- O GN™ volta com a resposta: são uns 20 campinhos, com pesquisa de CEP dinâmica, 18 campos de preenchimento, sendo dos quais 11 são obrigatórios e tem umas regrinhas de validação que eles querem também e... [mais algumas dúzias de requisitos entram].

Documentar é preciso, todos sabem disso, mas devido ao tamanho de alguns projetos, parece impraticável, um fardo burocrático e sem necessidade. Uma barreira para se chegar ao produto final, o conjunto de códigos que irá funcionar de forma coordenada e atender aos desejos do cliente.

De uma forma ou de outra, pessoas envolvidas com tecnologia entendem a necessidade de criar documentos, evidências, histórico e a indústria exige cada vez mais metodologias para gerar esse material de forma organizada. O maior problema atualmente enfrentado é justamente o custo da documentação.

Uma pessoa, ao encomedar o projeto de uma casa, entende perfeitamente os custos de um engenheiro ou arquiteto, ao projetar as plantas, calcular as quantidades de materiais, mão-de-obra, prestação dos serviços e obviamente, execução da obra. Tudo isso é documentado e o contratante paga por isso porque entende que sem esse plano e sem as plantas, nada irá sair do chão.

Agora o mesmo não é verdade para criar um aplicativo. Para reduzir custos, normalmente são cortados documentação e testes, justamente os dois pilares da qualidade. No final, ficamos, se muito, com um diagrama de base de dados mal feito. As atas de reunião dizem apenas linhas gerais como: quero uma casa de dois andares, com 3 quartos e cozinha ampla. A documentação verdadeira especifica quantos azulejos devem ser comprados para cobrir as paredes da cozinha, por exemplo. Em software, é isso que normalmente é cortado: a especificação, os casos de uso. Confia-se demais apenas em protótipos visuais e o cliente começa a mudar o escopo (scope creep, já falamos disso) porque ele disse na reunião que gostaria de uma interface divina.

Então, por falta de documentação, surgem falhas na comunicação entre as partes. O desenvolvedor pode criar algo formidável, mas que não era o foco do usuário: ele não precisava de um super cadastro, mas de um super relatório. Hoje em dia, testes de software ainda são propostos e projetados como um anexo ao desenvolvimento, como se fosse possível separar um do outro. Vejamos um exemplo simples abaixo:

Projeto XPTO

Planejamento e Documentação: Plano de Projeto, Casos de Uso, Diagramas de Classe, Base de Dados - 2000 horas
Desenvolvimento: Criar códigos, interface, montagem das telas, validações e toda a funcionalidade  e correções - 5000 horas
Testes: 3000 horas

É claro que estou simplificando enormemente a divisão de tarefas, mas normalmente cortam-se horas de testes e de documentação para economizar e no final, todos saem perdendo:

- O sistema possui funcionalidades demais, que serão pouco ou nunca usadas;
- Há um alto índice de defeitos e erros;
- Os prazos foram todos estourados;
- O cliente perde a confiança na empresa desenvolvedora;
- A equipe fica desmotivada com o retrabalho e horas extras (muitas vezes não remuneradas);
- O cliente fica sem um produto necessário ao seu crescimento.

Mesmo em metodologias ágeis, alguma documentação é necessária. A forma de se usar o tempo e nível de detalhamento mudam de acordo com cada projeto. Mesmo o Extreme Programming, Scrum e Iconix exigem algum planejamento, mas é bastante comum o desenvolvimento iniciar com rascunhos em papel, linhas gerais do que a pessoa quer e alguns links para websites com funcionalidades que o cliente deseja.

Para se ter uma idéia de como um projeto pode sair do controle se não houver uma boa dose de planejamento e boa comunicação, certa vez, eu estava ministrando o treinamento de uma ferramenta que havíamos desenvolvolvido. O Analista de Negócios/Requisitos acompanhava e anotava as observações dos usuários. O treinamento essencialmente transformou-se em 3 semanas de levantamento de requisitos com literalmente dezenas de pessoas. Um dos usuários abriu o GMail e disse: queria que o sistema funcionasse assim. Outro foi mais longe: bem que podia ter aquelas ferramentas de desenho e edição do Word.

O sistema era para Web e tínhamos 2 semanas para colocar em produção. No final, tudo deu certo e algumas funcionalidades do GMail foram criadas, como o autosave e a parte de edição também foi criada, usando um componente comercial. A empresa levou prejuízo porque não houve um planejamento prévio e a documentação era bastante escassa e quase inexistente. Melhorou quando começamos a congelar os requisitos e aplicamos princípios do Scrum, já que o RUP sairia 40% mais caro... ou não?

O fato é que com a experiência, percebe-se que documentação é chato de se fazer e atualizar. Não há sensação de conquista, mas quando um projeto começa a dar errado, é muito bom olhar para o cliente e dizer: olha aqui, você aprovou exatamente o que fizemos, está escrito. Podemos mudar, mas o novo prazo será xyz. E acredite, a visão que esse cliente terá não é de um chato mercenário, mas de uma pessoa altamente profissional, organizada e que sabe o que está fazendo, mesmo que ele tenha que pagar mais por isso.

Moral do Post

- Defenda o projeto com a palavra escrita.
- Acordos verbais e camaradagem só funcionam quando tudo vai bem. Quando o tempo fechar, aquele que possuir evidências é que sairá vencedor.
- O cliente sempre tem razão, exceto quando o que ele se contradiz com o que foi escrito e aprovado 2 meses antes.
- Cortar documentação é o mesmo que cortar qualidade. Lembre-se que mesmo a metodologia mais ágil ainda exige o mínimo, como um e-mail.
- O fardo de levantar requisitos detalhadamente e fazer protótipos antes de começar a construir telas é recompensado depois, com menos retrabalho e mais prazo para alterações que serão pedidas fora dos acordos iniciais.

Fonte: Bicalho's Memory About Fuck3d Projects

Notícias relacionadas

Carlos Cardoso's picture

Uma vez eu fiz um orçamento de um projeto. Tinha umas duas semanas para planejamento e documentação. O cara primeiro perguntou se não dava pra jogar pro final do cronograma, pra sair tudo mais rápido.

Depois perguntou se não dava pra tirar a documentação do projeto, pra ficar mais barato.

garoa's picture

Por que não fardo E necessidade? Eye-wink

Rodrigo8's picture

eu acho q tudo se resume a ânsia do pronto mais rápido e ser mais barato .. somado a falta de profissionalismo de visao do contexto da idéia do todo de quem paga. Ótima receita para o prejuízo.

JulianaPrado's picture

Oi

Creio que documentar as etapas de um projeto por mais simples que ele seja é um ato de sensatez e algo que economiza um retrabalho imenso depois quando algo dá errado no meio do caminho.

Por isso devemos ser a favor de se documentar sempre

abnerneves's picture

Jawdropping!
CARÁCOLES
Laughing out loud
Esse BOT está cada dia melhor.

lfiore01's picture

Mandou bem, Ju. Laughing out loud

Visit my blog -> http://ciberculturabr.com.br/

Consultoria em TI para pequenas empresas -> www.aninfo.com.br

Tango's picture

Neste artigo o bot mandou bem no parser. Infelizmente o funcionamento como um todo ainda é meio instável, indo de razoável a previsível.

Neste artigo o parser provavelmente deu pau e ele simplesmente usou uma frase feita com base no tema (provavelmente definido com um filtro bayesiano).

Talvez seja bom aumentar a diversidade das frases feitas ou pelo menos pegar essa excessão do parser.

Por sinal, a API tá documentada?

--

Fly-By-Wire: Viagens e trabalho
Dicas, histórias e reflexões na sala de embarque

abnerneves's picture

Ok ! Ok!
Não precisa ser tão crítico. É obvio que existem pontos para melhorias, mas você tem duvidas que ela seria aprovada em um teste de Touring ?
Btw, suas observações estão corretas e eu tb gostaria de dar um olhada na API, afinal de contas estou trabalhando em um projeto de IA.

Oceanos (não verificado(a))

O problema é que documentar virou falta de competitividade. Cliente pede programa que demora 9 meses para ser bem-feito e documentado. Se você não falar que demora 3, ele vai para a software house ao lado que vai fazer uma porcaria de software e vai se ferrar (ou cobrar muito, se for "esperta") na manutenção...

O que mais pega para documentação não ser bem-feita, imagino, é o maldito vendedor que promete o céu e a terra em duas semanas, que por sua vez, o faz para não perder o cliente. Com os devidos prazos, não haveria restrição para documentação. Existe uma certa cultura nas empresas também, muitas vêem a TI como um fardo, como algo que infelizmente elas tem que investir, e não em algo que se investirem, pode aumentar a competitividade no mercado. O que isso vira? Bem, vira o mínimo de investimento possível e falta de "respeito" (não precisa de documentação, não precisa ser bom, pode ser genérico)...

_______________

http://www.clubecetico.org

abnerneves's picture

Quote:

...ele vai para a software house ao lado...

Isso quando ele vai em um software house ! senão ele pedo pro sobrinho do vizinho que é esperto e "manja" muito de computador. Sad

Rocky's picture

Levei muito na cabeça por causa disso, mas ainda sou relaxado com documentação, mas estou mudando..... Smiling

Quanto ao editor estilo Word tem um componente gratuito muito bom chamado openWYSIWYG ele suporta a maior parte das linguagens da Web (PHP, ASP, RoR,etc) e é muito fácil de costumizar.... Laughing out loud

_____________________

IndyCar Brasil tudo sobrea Fórmula Indy!

Primeiro Pro-Commenter da Blogosfera Brasileira.

TheDarkMaster's picture

Quando o cliente começa à pedir mil funcionalidades (e você sabe que ele vai usar dez delas de fato) eu falo que vou cobrar o uso por parte dele de todas as mil funcionalidades. O sujeito se acalma rapidinho Eye-wink

Se você consegue ler esta mensagem então o seu computador irá se auto-destruir em dez segundos, tenha um bom dia Smiling

Tem um ditado que diz que um projeto bem começado é meio caminho andado. Um projeto mal planejado é o dobro, o triplo ou mais do caminho a se percorrer.
Se com software a coisa é assim, imginem com hardware. Faz um circuito, manda comprar componente, desenha plac,a manda fazer placa, três semanas depois monta a placa, fica um mês debugando o firmware, para depois descobrir que não era nada daquilo, e aí remenda a placa toda para atender os novos requisitos, daí o circuito não funciona porque os remendos causam instabilidade, até decidir recomeçar o processo, comprar os novos componentes, desenhar nova plaa, produzir nova placa...

Na verdade eu acho que grande culpa do que acontece não é só do cliente. O grande custo no desenvolvimento de um projeto não está em DIGITAR códigos, em si pensar como escrever e como corrigir os existentes. Grande parte do tempo um desenvolvedor não está DIGITANDO realmente, tá olhando pra tela, verificando as classes e procurando saber o que digitar. Se isso tudo fosse feito REALMENTE no planejamento do projeto, o analista teria gasto um tempo muito menor ( pois o trabalho dele é só entender o que deve ser feito, e não fazer ) e já entregaria mastigadinho para o desenvolvedor o que ele precisa fazer e onde deve buscar. Além disso você consegue ter um controle muito melhor do projeto, pq com uma documentação completa, você consegue identificar pra onde o projeto está evoluindo, e quantas entidades já foram escritas, e quantas ainda faltam. Além disso, você pode mostrar ao cliente onde vai ser impactado se uma mudança acontecer. Mostrar quais objetos serão afetados, e não apenas falar que "se ele mudar o campo da tela, vai mudar um monte de coisa no projeto". Esse tipo de frase lembra os mecânicos ( desonestos ) tentando enrrolar os donos dos carros. Então pra mim, não existe essa perda toda de tempo, pq raramente eu vejo um desenvolvedor digitando freneticamente que nem uma secretaria, e sim olhando pro monitor, procurando entender as classes e o que diabos ele precisa fazer, tarefa que deveria ser do "analista" mas que o GN eliminou pois acha que isso não é preciso.
Gustavo Barros

mamendes's picture

É aquela base que só quem sofre com as consequências pensa: análise de impacto e análise de custo/benefício.

Quem não sofre com as consequências só faz a modelagem baseada em "legal que":

"Seria legal que o sistema tivesse isso, seria legal que o sistema tivesse aquilo, ..."

Klbr's picture

Documentação é aquela coisa super importante que todo mundo levanta a mão aprovando, mas na hora do vamos ver o que conta mesmo é o dinheiro, o tempo pra terminar o projeto e aquele pensamento "vamos documentar" se perde no tempo e no espaço.

Quando dá um problema de magnetude astronômicas é que nos lembramos que era importante, mas o legal que acabamos sendo meio masoquistas e preguiçosos no fim das contas. Smiling

Excelente matéria!
----
.\o>
. |
. \\

robsonhermes's picture

Isso me fez lembrar de outra coisa mto importante: o papel do arquiteto de software. O cara com experiência suficiente para definir quais tecnologias serão adotadas, como frameworks, api`s, etc.

Uma escolha errada nesse sentido também compromete o projeto. É muito legal conhecer um projeto novo, em uma visita de 10 minutos no sourceforge ontem a noite antes de sair do trabalho, e achar que ele é a solução para os problemas da humanidade, ou pelos menos dos desenvolvedores. Depois começam os problemas de integração...

rod.stuchi's picture

Acho que tudo isso depende do grau de maturidade da empresa, pois não é nada fácil aderir um modelo de trabalho a métodos pré-moldados.
Se a empresa é madura não há nada de mau em seguir um CMMI à "risca", mas se a empresa está começando e não tem muita maturidade o melhor a se fazer é mesclar Modelos Ágeis (XP, SCRUM, FDD...) com Modelos Controlados (CMMI, RUP, ITIL, ISO) tem um artigo do Mateus Velloso que fala sobre CMMI e o fardo que é documentar projetos. Eye-wink

garoa's picture

Ei, Salsinha! Ó seu amigo aí! Smiling

Opções de exibição de comentários

Selecione seu modo de exibição dos comentários favorito e clique "Salvar opções" para ativar suas mudanças.


Design Wenetus