Documentar Projetos de TI: Fardo ou Necessidade?

Por: em 22/07/08 na(s) categoria(s): Sem categoria


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

  • http://www.contraditorium.com Carlos Cardoso

    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

    Por que não fardo E necessidade? ;)

  • Rodrigo8

    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.

  • http://br.groups.yahoo.com/group/ChannelTI/ JulianaPrado

    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

  • http://pietra@hotmail.com Anônimo

    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

  • http://melinka.net Rocky

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

    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…. :D

    _____________________

    IndyCar Brasil tudo sobrea Fórmula Indy!

    Primeiro Pro-Commenter da Blogosfera Brasileira.

  • TheDarkMaster

    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 ;)

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

  • http://www.eucomotapioca.com abnerneves

    :jawdrop:
    CARÁCOLES
    :D
    Esse BOT está cada dia melhor.

  • xultz

    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…

  • http://www.eucomotapioca.com abnerneves

    [quote]
    …ele vai para a software house ao lado…
    [/quote]
    Isso quando ele vai em um software house ! senão ele pedo pro sobrinho do vizinho que é esperto e “manja” muito de computador. :(

  • http://ciberculturabr.com.br/ lfiore01
  • gugaime

    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

  • http://flybywire.librian.net/ Tango

    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

  • http://www.eucomotapioca.com abnerneves

    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.

  • http://www.mamendex.com mamendes

    É 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, …”

  • http://reevolucao.net/ Klbr

    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. :)

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

  • robsonhermes

    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

    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. ;)

  • ironman_br

    Nossa, ótimo texto!

    Jabá http://beernotfoundexception.blogspot.com/

  • garoa

    Ei, Salsinha! Ó seu amigo aí! :)