A equipe de um projeto de software

Por: em 27/02/09 na(s) categoria(s): Artigo, Destaque, Software


No clássico livro de Frederick Brooks, The Mythical Man-Month, um dos capítulos fala sobre a montagem de uma equipe de desenvolvimento. Ele apelida isso de equipe cirúrgica, na qual traça um paralelo entre uma equipe médica e uma célula de desenvolvimento de software.

A equipe cirúrgica de Brooks

O projeto descrito no livro é enorme e exigia uma quantidade grande de pessoas para terminá-lo. Para evitar os problemas de comunicação, adotaram o princípio de uma equipe cirúrgica, na qual temos 2 cirurgiões e 1 anestesista, sendo apoiados por várias outras pessoas. Lembre-se que o cirurgião deve ter foco total no trabalho e problema diante de sí e não pode nem deve ser distraído com coisas como buscar soro aquecido ou procurar luvas esterelizadas. Essa analogia serve para projetos de software, o dividir para conquistar. Um projeto é dividido em vários outros menores, com seu prazo e escopo definidos.

Inspirado no livro, fiz o diagrama abaixo, baseado nas minhas próprias experiências e literatura corrente como o SWEBOK. Aproveitei para usar outra analogia também. Espero que gostem e entendam.

equipe_Software

Essencialmente, temos uma equipe de pelo menos 3 pessoas. Um analista/programador principal, que toma as decisões de arquitetura, tecnologia e projeta o software e um outro analista/programador de apoio. Um coordenador ou gerente de projetos é necessário para tomar conta de toda a burocracia que afeta o projeto diretamente, mas não faz parte da construção do mesmo.

O diagrama acima é apenas uma sugestão do que seria uma célula de desenvolvimento e cabe a você adaptar e decidir o que é melhor para o seu projeto. Preste atenção na quantidade de pessoas, pois aumenta a dificuldade de comunicação e difusão de conhecimento entre seus membros. Uma equipe de desenvolvimento deve ser coesa na forma de trabalhar e se expressar no código-fonte gerado.

Lembrete: de nada adianta criar regras e padrões se ninguém irá aderir a eles. Determine o que é mais confortável e que irá ser seguido, mesmo debaixo de pressão. Algum planejamento é essencial, por menor que seja.

Outros analistas/programadores podem fazer parte do projeto, mas devem seguir as normas, arquitetura e estilo definidos pela dupla principal. Se isso não for seguido, o que você terá no final é código-lixo, com estilos de programação diferentes e que apenas uma ou outra pessoa será capaz de efetuar manutenções, alterações e correções. Nem sempre o programador concorda com uma abordagem. Ele pode e deve sugerir mudanças, mas cabe ao líder pesar se essa melhoria vale a pena ser propagada para todo o restante do código. Boas idéias e soluções sempre surgirão durante um projeto, mas coesão é mais importante que inovação depois de 10 meses.

Mas… e se a empresa for muito pequena? Euquipe?

euquipe

A primeira coisa a se fazer, é planejar seu tempo. Considere tudo, até os minutinhos gastos em reunião, telefonemas com o cliente, etc. Precisou passar no banco, contabilize. Justifique seu tempo com ajuda a colegas e avise o seu gerente o tempo todo e liste o que foi feito com o seu tempo durante o dia ou semana. São os 15 minutos mais bem gastos do seu dia, nem que precise ficar depois do horário ou chegar uns minutos antes.

Um bom gerente irá criar um escudo contra as burocracias e atividades da empresa que atrapalham o trabalho de análise e programação. A melhor saída é usar um velho conhecido, o TimeBox.

Ele consiste em definir o que pode ser feito dentro de um prazo de 2 semanas. E o que estiver pronto em duas semanas é entregue. O prazo nunca muda e sim os requisitos. Se um requisito é grande demais para ser feito e entregue em duas semanas, o CLIENTE deve ser informado e a decisão é tomada de forma conjunta. Lembre-se também que o tempo gasto em planejamento deve ser contado e justificado. É muito comum o capataz gerente considerar o seguinte no cronograma, se houver um: 2 semanas = 10 dias = 8-10 horas/dia => 80-100 horas-homem de programação. É mais seguro considerar 5-6 horas por dia no começo e ajustar semanalmente.

Não é possível 9 mulheres gerar um bebê em 1 mês. (Frederick Brooks)

Fontes: Bicalho’s Memory About Fraked Up Projects
BROOKS, Frederick P., Jr. 1995. The Mythical Man-Month, Anniversary Edition. Reading, Mass.: Addison-Wesley.
(referência não está no formato ABNT)

  • http://rollingwithcode.blogspot.com fellix

    Muito bem colocada suas ideias, achei muito interessente principalmente a divisão das tarefas do Dividir e conquistar. Também é crucial a definição de tempo, por isso muitas empresas não vão longe, vendem o que não tem e não conseguem fazer ele num prazo minusculo.

    Parabéns excelente artigo

    []‘s

    ———————————-
    http://rollingwithcode.blogspot.com

  • http://www.wallck.com.br/ wallck

    Tomar as decisões juntamente com o Cliente é importantíssimo, ele também faz “parte da equipe”. Muito bom! 8)

    http://wallck.spaces.live.com/
    wallace.go@gmail.com

    • http://bilgi.com.br/mr moi.robles

      [quote=wallck]Tomar as decisões juntamente com o Cliente é importantíssimo, ele também faz “parte da equipe”. Muito bom! 8)

      http://wallck.spaces.live.com/
      wallace.go@gmail.com[/quote]

      O único problema de tomar decisões com o cliente é que você tem que ter um DOM, uma paciência incrível! Infelizmente em muitos casos o “cliente” não passa de um usuário que acha que entende de tudo e pede as coisas mais absurdas que existem.

      “Clientes todos tem, apenas analistas e traficantes de drogas tem usuários” – Anônimo

      _____
      “Um gênio é 1% de inspiração e 99% de transpiração.” – Thomas Edison

      • Cazu

        De qualquer maneira ele ainda faz parte do fluxograma de desenvolvimento nas etapas de levantamento de requisitos e homologação do projeto.

        É sabido que o cliente vai querer mudar o escopo do projeto durante o desenvolvimento, mas isso deve ser previsto previamente pelo gestor para não afetar muito o cronograma.

      • http://rollingwithcode.blogspot.com fellix

        Na verdade não há como fugir do contato com o cliente, o ideal é encontrar uma linguagem neutra para a conversa, afinal nós fazemos sistemas para os usuários e a maioria deles entende do que o sistema deve fazer, não de como nós fazemos.

        O ruim é que nós costumamos chegar com termos que eles nem fazem ideia do que são. Não adianta fugir disso, e por isso o gerente de projetos tem que ser algum comunicativo e saber conversar com a equipe e com os clientes.

        []‘s

        ———————————-
        http://rollingwithcode.blogspot.com

      • ASAFE

        [quote=moi.robles]
        “Clientes todos tem, apenas analistas e traficantes de drogas tem usuários” – Anônimo[/quote]

        Nem viciado enche tanto quanto usuário de computador ainda mais porque o viciado você mata se não pagar…
        _____________________________________________________________

        Sempre programe como se seu cliente fosse um maníaco serial killer que sabe onde você mora.

  • danielrcom

    Muito bom o artigo. Eu trabalho numa empresa grande com uma equipe pequena, e na maioria das vezes o tempo é mal administrado.

    [off-thread] Qual software foi utilizado para fazer esses organogramas?

    • Ricardo Bicalho

      Justamente por isso que o TimeBox é útil: o que pode ser feito em 2 semanas? O Scrum surgiu a partir dele.

      Eu uso o Mind Manager no Windows e XMind no Mac. O Freemind é bom e atende em termos funcionalidade, mas eu acho a interface dele pobre. Boa idéia de post…

  • Alanhrq

    Mais um bom artigo Bicalho.
    Não trabalho na área de programação há muito tempo, porém acredito que um bom planejamento é fundamental em qualquer setor.
    Só uma coisa pra lembrar. Uma grande qtde de administradores de empresas pararam no tempo. Ainda se intitulam Chefes de alguém, como em tribos indígenas. Aí o controle de tempo vai por água a baixo.
    Um exemplo: Trabalhei durante X dias para uma empresa atuando em Administração de Redes. Um belo dia (dia D), o chefe chegou mais cedo (eu já estava lá, pois era o de praxe) e perguntou o que eu estava fazendo. Então respondi: Terminando um relatório de Análise de Infra de Redes e planejando o dia. Resposta: Dexa isso pra outra hora, você tem muita coisa pra fazer!!! A partir daí tive mais uma coisa pra fazer, procurar outro emprego, pois mandei aquele pro espaço.
    Bom dia e bom fim de semana a todos!!!

  • http://monthiel.com monthiel

    Nossa, que artigo show. Já tive a oportunidade de trabalhar numa equipe de desenvolvimento. Eu não era desenvolvedor, mas percebi que lá a bagunça era geral. Caso eu fosse desenvolvedor teria sérios problemas de comunicação lá dentro, já que não era adotado nenhum padrão de comunicação, tarefas, etc.

    Parabéns pelo artigo.

    Já conhece o blog do Monthiel? Não!
    Então venha conhecer

  • http://www.gotchait.com wiltonpaulo

    “de nada adianta criar regras e padrões se ninguém irá aderir a eles”
    Falou tudo.

    Achei bem interessante. Algumas coisas me lembraram a metodologia Scrum.

    []s
    Wilton Paulo
    _______________________
    Blog: Gotcha IT
    Twitter: twitter.com/wiltonpaulo

  • http://melinka.net Rocky

    E como faz quando a equipe é formada por três pessoas e só você trabalha enquanto o resto fica enrolando?

    E visite meu blog.
    _____________________
    About MeMuita Pimenta para sua vida.
    01010010 01101111 01100011 01101011 01

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

      [quote=Rocky]E como faz quando a equipe é formada por três pessoas e só você trabalha enquanto o resto fica enrolando?

      E visite meu blog.
      _____________________
      About MeMuita Pimenta para sua vida.
      01010010 01101111 01100011 01101011 01[/quote]

      o ficar enrolando aposto que é o famoso pintar paredes.
      São pessoas que estão estagnadas ou estão procurando outro emprego, isso prejudica muito um grupo, quando você tem um chefe bom que consiga encergar isso com certeza ele saberá “eliminar” os problemas e valorizar quem realmente se importa.
      __________________________________________________________

      “Somente a Beira do Abismo que nos vemos Obrigados a Evoluir”

    • hayashi

      Sabe, eu também leio o Meio Bit. Mas deixa quieto. :sick:

      RPG e outros: Multiverso RPG

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

        [quote=hayashi]Sabe, eu também leio o Meio Bit. Mas deixa quieto. :sick:

        RPG e outros: Multiverso RPG[/quote]

        lol

        Você pode aceitar como uma crítica construtiva indireta.
        Ou simplesmente mudar suas atitudes no trabalho ;)
        __________________________________________________________

        “Somente a Beira do Abismo que nos vemos Obrigados a Evoluir”

        • hayashi

          [quote=H123er](…)
          lol

          Você pode aceitar como uma crítica construtiva indireta.
          Ou simplesmente mudar suas atitudes no trabalho ;) [/quote]

          Eu até aceitaria como uma crítica construtiva, se ele estivesse com a razão; mas na verdade ninguém a tinha. Ser hipócrita de se fazer de coitado e único que trabalhava enquanto os outros não faziam nada é irritante.
          Todos tinhamos seus momentos de muito trabalho, mas todos tinhamos também seus momentos que não havia o que fazer.

          Mudar as atitudes de trabalho? Com certeza, mas não sou o único.

          Me desculpem pelo desabafo.

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

            [quote=hayashi][quote=H123er](…)
            lol

            Você pode aceitar como uma crítica construtiva indireta.
            Ou simplesmente mudar suas atitudes no trabalho ;) [/quote]

            Me desculpem pelo desabafo.[/quote]

            Hora de Reunião Interna. Good Luck ;)
            __________________________________________________________

            “Somente a Beira do Abismo que nos vemos Obrigados a Evoluir”

          • tevi

            Conta tudo pra sua mãe kiko!!!
            ____________________
            Ouça o que eu digo:
            não ouça ninguém!!!!

      • http://magno-naval.blogspot.com magno

        Esquenta não, acho que meu chefe também lê o Meiobit.

    • http://meiobit.pop.com.br/o-que-e-uma-salsinha Salsinha

      O papel do líder inexiste ou não está sendo realizado. Lembre-se que líder não é quem manda, mas sim o condutor de um grupo (quem dirige).

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

    Trabalho em uma empresa de porte grande no entanto as tarefas e procedimentos estão tão bem alinhados e acordados pelos usuários e responsáveis de TI que sempre temos um bom atendimento com poucas pessoas no grupo.
    Trabalho na aprte administrativa de TI e sei que planejamento, parâmetros, quando definidos e seguidos pela equipe a performance e a satisfação com serviços prestados sempre é alta.

    Excelente post Bicalho ;)
    __________________________________________________________

    “Somente a Beira do Abismo que nos vemos Obrigados a Evoluir”

  • Stormbringer

    o problema da analogia é que “o fim” é o cirurgião… ele que poe a mão na massa de verdade… o cirurgiao da analogia é o programador, nao o “lider de projeto”

    e nem todo mundo trabalha pro programador… alias, o resto da equipe adora sobrecarregar o pobre coitado

    /***************/

    Quer Games online, Xadrez e diversao?

    Route10-games – http://www.route10.com.br

    • Ricardo Bicalho

      É que o livro foi originalmente publicado em 1975 sobre um projeto entre 1963 e 1966.

      Nesse caso, ele considera o cirurgião o programador-chefe. Ele é O cara. E todo o resto da equipe está lá para apoiar ele. Ele é chefe da equipe, mas não se preocupa com tarefas administrativas.

      O que se pode tirar da analogia é o conceito de célula de desenvolvimento. Aí aproveitei para colocar algumas coisas novas, mudar a analogia, mas o conceito essencial continua.

  • ricardocouto

    Tem alguns problemas bem básicos nesse diagrama.. como colocar em paralelo responsabilidades com pessoas, como se fossem a mesma coisa.

    Além do que, pensar que programadores sozinhos podem fazer bons aplicativos. Bem, isso é uma visão consideravelmente simplista. Eu esperava mais, considerando os bons posts que aparecem por aqui eventualmente.

    • Ricardo Bicalho

      [quote=ricardocouto]Tem alguns problemas bem básicos nesse diagrama.. como colocar em paralelo responsabilidades com pessoas, como se fossem a mesma coisa.
      [/quote]
      Não é um diagrama hierárquico, fluxograma ou organograma. É um mapa mental. Leia mais em:
      http://en.wikipedia.org/wiki/Mind_map
      E um bom exemplo em:
      http://www.mindtools.com/media/Diagrams/mindmap.jpg

      [quote]Além do que, pensar que programadores sozinhos podem fazer bons aplicativos. Bem, isso é uma visão consideravelmente simplista.[/quote]

      Você está se referindo ao Euquipe ou a parte em que mostro uma proposta de montagem de equipe baseada na literatura?

  • nwolf

    Excelente artigo Bicalho. A série “Freaked Up Projects” é a melhor do MeioBit.

    ____________________________
    “Better to understand a little than to misunderstand a lot”

    • Ricardo Bicalho

      Não é Freaked Up, é Fraked Up mesmo. Ninguém pescou a referência, snif…

      Frak = Fuck em BattleStar Gallatica
      Fraked Up = Fucked Up

      • nwolf

        Whops :barf:

        ____________________________
        “Better to understand a little than to misunderstand a lot”

  • Rodrigo8

    Show a matéria parabéns!

  • http://icaju.wordpress.com Mamutti

    Estou prestes a desenvolver um sistema para servir de TCC. A equipe é constituída de duas pessoas, que vão(mos) fazer tudo. Temos um ano para fazê-lo. Envolve semântica e sintaxe de textos em português (inicialmente), além de uma boa dose de matemática. O produto final é um software para desktop e possivelmente uma rede social (aquela coisa 2.0).

    Iai? comofas~ Qual a melhor forma de dividir tarefas, estabelecer diretrizes e combinar prazos, e etc?

      iCaju
    • Ricardo Bicalho

      . Listar habilidades e aptidões de cada um.
      . Listar e diagramar a lista de tarefas.
      . Dar notas de dificuldade em cada tarefa de 1 a 3.
      . Separar as tarefas em prioridades: Fazer, Deveria fazer e Poderia fazer (Must, Should, Could)
      . Dividir as tarefas e criar um cronograma de entregas, a cada 15 dias. Faça um cronograma para cada 4 ciclos, ou seja, 2 meses.

      E lembrar que planejamento inicial pode evitar dores de cabeça daqui alguns meses.

      • http://icaju.wordpress.com Mamutti

        Acho que é um bom começo. Assim que possível pretendo revelar do que se trata o projeto e espero contar com a colaboração dos usuários do MeioBit. Acredito que o projeto será do interesse da maioria das pessoas aqui. :)

          iCaju
        • http://yawara.br.com Ubiratan.apo

          Você já pensou em usar GTD (Get Things Done)?

          Peguem as tochas, foices e acendam as fogueiras!

          • http://icaju.wordpress.com Mamutti

            Cara, se você não mandasse o link eu pensaria que estava sendo sarcástico. :P

            Dei uma lida, não conhecia.

              iCaju
    • http://cognostech.posterous.com/ Ramon E. Ritter

      Mamutti,

      Cuidado para não complicar o teu TCC. Procure limitar o que puder no escopo, pois vocês irão gastar um tempo considerável na parte de documentação e isso vai deixar um prazo bem reduzido para implementação…

      E se o negócio for viável comercialmente, vocês podem aprimorar o resultado final depois de terminado o curso. Até porque, os professores estão mais interessados no teoria do que na aplicação prática…

      Salada de Bits

      • http://icaju.wordpress.com Mamutti

        Era exatamente desse jeito que eu estava pensando. Por isso mesmo o projeto em si é somente um software pra desktop que implemente o conceito da monografia, que é pra junho.

        O Sr. é professor? Falou igualzinho a professora encarregada de orientar e avaliar os projetos lá do curso! :D

          iCaju
  • rod.stuchi

    Realmente esse post é muito interessante, ainda mais pra quem faz graduação em SI e gosta de Engª de Software.

    Parabéns Bicalho pelo artigo.

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

    Sinto que além de se ter um controle de gerenciamento eficaz nos projetos devemos valorizar a figura de um gerente de projetos.Porque sem ele não conseguimos ter uma visão estratégica do projeto e ainda nao conseguimos alocar corretamente os membros da equipe para as tarefas de acordo com o perfil de cada um.

    E sem a realização efetiva desses itens o desenvolvimento do projeto tende a ficar caotico.

    Por isso esse post a respeito de como deve ser feita a elaboração do desenvolvimento do projeto nos traz a idéia de que não devemos visualizar somente as linhas de código e sim todo o conceito que existe por trás.

    http://alfamundo.wordpress.com
    http://infowd.blogspot.com

    • http://meiobit.pop.com.br/o-que-e-uma-salsinha Salsinha

      Ainda com o teclado estragado? Tenho um aqui que a vírgula está funcionando. Prova: ,,,,,,,,,,, :)

      Ah… ele também não “come” palavras inteiras.

      • http://icaju.wordpress.com Mamutti

        Desiste. ;)

        Tem outros bots novos, já reparou?

          iCaju