Death March

November 5th, 2004 § 9 comments

Todo programador já vivenciou o tipo de projeto conhecido como Death March. Aliás, eu acho que esse é o estado comum dos projetos em firmas aqui do Brasil, principalmente as pequenas, onde a competição em mercados restritos leva a estimativas muito baixas do tempo necessário para desenvolver um projeto. Conseqüentemente, as coisas falham, erros são cometidos e atrasos se acumulam.

Hoje, eu finalmente consegui sair dessa fase em um projeto e finalmente relaxar, sabendo que a situação está sobre controle. As três últimas semanas foram um caos de longas horas, pouco sono e muito desespero. O feriado prolongado que eu previa acabou desaparecendo em um mar de horas extras.

O projeto, na verdade, não era nem tão grande assim, mas algumas falhas internas tornaram os problemas muito maiores e levaram a algumas decisões incorretas que deixaram a aplicação fraca e incapaz de lidar com muitas das situações previstas da maneira necessária.

A única solução era corrigir os problemas e refatorar extensivamente, justamente o que eu passei fazendo nessa reta final. Código reproduzido infindavelmente por meio de Copy & Paste foi convertido em métodos. Métodos de 800 linhas caíram para 50 por meio do uso estratégico de sub-rotinas e com o tempo o código parou de parecer uma bagunça e eu comecei a acreditar que o projeto veria a luz do dia.

A história termina bem porque o cliente testou o sistema e, com exceção de alguns problemas de entendimento, o código funcionou muito bem. Nenhum erro catastrófico e nenhuma inconsistência. E eu vivi para mais um dia.

§ 9 Responses to Death March"

  • Fico feliz por você, Ronaldo. É uma agonia isso de não ter certeza se o resultado vai sair a contento, vai agradar o cliente, etc…

  • Como não sei detalhes do projeto, fica difícil uma opinião. A única coisa que posso dizer é que, a ferramenta utilizada parece ser meio arcaica (como a maioria). Temos interfaces gráficas que permitem fazer frufrus e mais um monte de coisas, mas parece que ninguém pensa ‘realmente’ no desenvolvedor.

    Quando falaste em ‘copy and paste’ lembrei de uma notícia recente de um desenvolvedor (BSD eu acho), que estava sendo pago pela cominudade para o desenvolvimento. Ele também falou que copiou e colou muita coisa. Puxa, não é assim que se ‘refatora’. É necessário a utilização de ferramentas especializadas. O Delphi, só na versão 9 (ou 200x, como queiram), incorporou uma ferramenta para ‘refactoring’. Recentemente coloquei um flash mostrando o VisualWorks
    http://cadafalso.deusexmachina.com.br/flash/refactoring.html

    Muitas vezes, a gente deixa o programa ‘como está’ por falta de ferramentas que ‘realmente’ auxiliem o desenvolvedor. A desculpa é ’em time que está ganhando não se mexe’ (coitado do meu Grèmio :-).

    Eu tenho pena de nós.

  • Gesiel says:

    Cara, entendo exatamente pelo que passou… é comum um cara fazer um sistema meio sem projeto, tipo me baseio em alguns rascunhos e vou projetando enquanto faço… ai sai esta coisa confusa, sem métrica, sem padrão, difícil de debugar, extender e manter… ai tem que aparecer um xerife e botar ordem na casa… padroniza, comenta, implementa a reutilização de código, etc… é isso ai…

  • Ronaldo says:

    Obrigado, Marcus! Eu realmente fiquei numa agonia terrível. No dia da apresentação, cada hora que o telefone tocava e era meu chefe, eu gelava… :-)

  • Ronaldo says:

    Eu não sei se você vai ficar surpreso, Guaracy, mas o projeto é feito em .NET, que supostamente é uma ferramenta mais moderna — inclusive, se não me engano, a próxima versão do Visual Studio vai contar com ferramentas para refatorar o código.

    Eu até acho que dá para fazer isso não mão com algum cuidado. Eu estou lentamente limpando o sistema e convertendo muito código em partes reutilizáveis que estão facilitando em muito a manutenção. Mas eu sinto falta de ferramentas automáticas que determinam tipos, acham parâmetros e constroem automaticamente o que se precisa. Mas fico pensando se o ASP.NET dá suporte a isso com a mistureba MVC que faz.

    Eu também tenho pena de nós.

  • Ronaldo says:

    Opa, Gesiel! Tudo bom? Acho que o maior perigo que um projeto inicial enfrenta é justamente esse, começar errado por falta de tempo, planejamento ou qualquer outra coisa. Consertar depois é muito mais difícil, é claro.Eu acabo agindo muito como esse xerife que você menciona. Perfeccionismo é bom nessas horas… :-)

  • Fabricio says:

    Ronaldo, você esqueceu de mencionar as horas extras nos finais de semana, nas folgas (enquanto todo mundo estava descansando) e nos feriados!

    Que bom que tudo acabou em Pizza Hut! 😉

  • Ronaldo says:

    Pois é, Fabrício. Muita ralação mesmo. Mas graças a Deus deu tudo certo.

  • Charles says:

    Geralmente meus chefes se irritam comigo porque quando pego um projeto que outra pessoa programou eu me meto a “refazer” ele. Indento, vejo código duplicado, crio métodos para essas duplicações e por aí vai. É incrível como a pressa gera código confuso.

What's this?

You are currently reading Death March at Superfície Reflexiva.

meta