Elemar DEV

Negócios, tecnologia e desenvolvimento

Notas de Leitura – The Clean Coder – Sobre Gerentes e Desenvolvedores

Olá. Tudo certo?!

Resolvi iniciar um novo tipo de post aqui no blog. Chamarei este tipo de “notas de leitura”!

Meu objetivo será compartilhar com vocês trechos de livros que eu esteja lendo e minhas opiniões. Em troca, espero saber a opinião de vocês.

Para começar, gostaria de compartilhar impressões sobre um trecho do livro “The Clean Coder”, do Uncle Bob. Trata-se de um livro “combinado” para o “The Clean Code” – considerado por muitos (eu, inclusive) como essencial para qualquer desenvolvedor.

O que é esperado de cada papel

Uncle Bob compartilha uma visão interessante sobre os papéis de “gerente” e “desenvolvedor”. Transcrevendo:

Managers are people with a job to do, and the most managers know how to do that job pretty well. Part of that job is to pursue and defend their objectives as aggressively as they can.

By the same token, programmers are also people with a job to do, and the most them know how to do that job pretty well. If they are professionals they will pursue and defend their objectives as aggressively as they can.

Perceba, Uncle Bob reconhece a existência e a necessidade desses dois papéis. Além disso, aponta que cada parte, para ser efetiva, precisa ser “agressiva” na obtenção de seus objetivos.

Vejamos um cenário descrito pelo próprio Uncle Bob:

When your manager tells you that the “login page” has to be ready by tomorrow, he is pursuing and defending one of his objectives. He is doing his job. If you know full well that getting the login page done by tomorrow is impossible, then you are not doing your job if you say “Ok, I’ll try.”

[..] The manager is counting on you to defend your objectives as aggressively as he defend his. That’s how the two of you are going to get to the best possible outcome.

Pegou a ideia?! O que acha disso?

O “porquê” não ajuda em nada – ou, “Cada um no seu quadrado”

Uncle Bob também defende a separação das responsabilidades de cada papel. Vejamos:

[..] Perhaps you think that the developer should have explained why some feature was going to take so much longer. My experience is that the why is a lot less important than the fact. That fact is that the feature will require two weeks(, for example). Why it will take two weeks is just a detail.

Still, knowing why might help the manager to understand, and therefore to accept, the fact. Fair enough. And in situations where the Manager has the technical expertise and temperament to understand, such explanations might be useful. On the other hand, the Manager might disagree with the conclusion. The manager might decide that the team was doing it all wrong. He might tell that they doesn’t need all that testing, or all that reviewing, or that step 12 could be omitted. Providing too much detail can be an invitation for micromanagement.

Curioso, não?!

Concluindo

Uncle Bob parte do princípio (que concordo) que um time precisa de gerentes e desenvolvedores. Afinal, eles tem objetivos nativamente distintos. Além disso, ele afirma que cada parte deve defender enfaticamente esses objetivos que, a primeira vista, podem parecer trade-offs.

É natural, e até desejável, que o gerente esteja cobrando prazo e custo. É natural que o restante do time equilibre com a necessidade da qualidade. Você não acha?

Por agora, erra isso. Em breve, devo trazer outro trecho do livro para discussão.

36 comentários em “Notas de Leitura – The Clean Coder – Sobre Gerentes e Desenvolvedores

  1. Já gostei desse formato. Talvez eu faça também em meu blog.
    Abraço Elemar.

  2. acazsouza
    27/03/2013

    Observo que esse tipo de cenário é comum em times seniores, que já bateram muito a cabeça.

  3. Breno Ferreira
    27/03/2013

    O triste é que em muitos casos, nenhuma dessas frases é verdadeira:
    “Managers … know how to do that job pretty well.”
    “… programmers … know how to do that job pretty well”
    Pelo menos no Brasil, ainda é a realidade em muitos lugares.

    • moreirayokoyama
      28/03/2013

      Na prática, gerentes são necessários para programadores que não sabem fazer o seu trabalho porque normalmente este tipo de programador não sabe nem por onde começar o projeto, coisa que o gerente já se forma sabendo. Por outro lado, os gerentes não sabem entregar projeto, o que faz dele um cara que também não sabe bem como desempenhar seu papel no longo prazo, e acaba dependendo do programador, que apesar de não saber como começar, ajuda a terminar.

      • Breno Ferreira
        28/03/2013

        Realmente, essa ajuda mútua entre os desenvolvedores e gerentes é boa. O que eu estava me referindo era quando nenhum dos dois sabe fazer seu trabalho direito, e o caos reina.

  4. Eduardo Pires
    27/03/2013

    Sinceramente não vejo a necessidade de um gerente.

    Um PO + SM + Time multidisciplinar e auto gerenciável (maduro) é o suficiente para entregar um projeto (de qualquer tamanho).

    • Se o time é auto-gerenciável e maduro, não precisa nem do SM.

      • Eduardo Pires
        28/03/2013

        Alguém vai ter que puxar a responsa na hora de fazer as cerimônias por ex. (Papel do SM). Se alguém no time vestir o chapéu quando necessário ok!

        Um time auto-gerenciável e maduro já é difícil montar, um que independa do SM é um ponto de dificuldade a mais.

        • moreirayokoyama
          28/03/2013

          Nem, man… Experiência própria. O próprio time cria sua própria rotina de fazer o daily meeting, os plannings, retrospective (ou o nome que quiser dar para estas coisas no seu ambiente). O SM a meu ver é uma necessidade transacional apenas, para um time que ainda está passando por esta transição para uma abordagem ágil.

          • Eduardo Pires
            28/03/2013

            Não discordo não, mas convenhamos que esse time é um “Time de Ouro”.

            Eu não duvido da capacidade de um time quando ele está focado e empenhado em entregar, o difícil é encontrar isso por ai.

            • Como eu disse: é uma transição. Não é um time de ouro… em algum tempo o SM tinha seu papel e cobrava timeboxes, daily meetings, etc… Aos poucos o time começou a se sentir desconfortável em não saber o que todos estavam fazendo, e o daily meeting começou a acontecer naturalmente. Assim como timeboxes, retrospectivas, etc.

              • Eduardo Pires
                28/03/2013

                Agora quantas equipes dessa existem por ai? É difícil chegar nesse nível!

                • moreirayokoyama
                  28/03/2013

                  Eu insisto que o tempo faz isso com o time, cara. Talvez o time não perceba, e conta com o SM pelo costume. Se o time sabe cobrar de si mesmo pelo alinhamento, pelos ajustes no processo de acordo com o que aconteceu na última iteração, mesmo que você tenha um SM, ele só vai servir pra garantir que o time não se desvirtue disto.

                  • Eduardo Pires
                    29/03/2013

                    Não to discordando de ti não, mas você já deve ter rodado umas equipes por ai… Esse nível de equipe não se acha em qq lugar não, quem dera, falta muito profissional maduro nesse mercado…

  5. o Eduardo dizendo que não vê necessidade de gerente…para um gerente.

    E eu gostei desse formato novo, Elemar, bacana.

    Infelizmente acho que não tenho muito o que contribuir com a discussão, só discordo do Eduardo e concordo com o Breno. (wtf)

    • Eduardo Pires
      28/03/2013

      Eu digo que não vejo necessidade independente do papel que a pessoa exerça.

      O lance de um framework do tipo Scrum prega uma dinâmica onde não tem o papel do gerente, e eu sou agilista, defendo essa visão.

      Talvez um gerente nesse caso ocupe um patamar mais alto, ligado diretamente a área e não ao projeto, concordo que pode/deve existir gerentes, mas gerentes de projeto eu não acho necessário. (dentro dos critérios que eu citei).
      :)

  6. moreirayokoyama
    28/03/2013

    Nunca li o clean coder. Não posso dizer se isto é uma manifestação do Uncle Bob pra dizer que precisamos de gerentes, ou se ele só quis separar os papéis pois, afinal, os papéis existem. Sei lá. Eu não consigo interpretar este trecho como o Uncle Bob tomando uma posição nesta discussão (precisaria ler mais conteúdo pra entender isto, ou não).
    Mas, independente do que o Uncle Bob escreva (e às vezes ele escreve até demais), se tem algo que torne o papel do gerente necessário no ambiente de desenvolvimento de software, com certeza não é isto que está na descrição deste livro.
    Eu vivo jogando lenha em discussões com o Bassi em sua cruzada contra os gerentes, um tanto irracional, quase uma manifestação de ódio (aparentemente não violento, por ora) como normalmente ele é quando se apega a qualquer causa (e ele também faz isso até demais… tudo pra ele vira uma cruzada pessoal). Mas o fato de eu gostar de jogar lenha nestas discussões que tenho com ele é pra extrair mais da experiência de quem concluiu aquilo por algum motivo que só ele pode entender a ponto de perseguir com tanta determinação.
    De fato, eu me deixei convencer que gerentes não são necessários, e em muitos casos são inúteis, chegando a não ser raras as situações onde eles mais atrapalham que ajudam. E eu tenho me esforçado pra avaliar bem os dois lados da discussão, da mesma maneira como tento extrair do Bassi a experiência de quem resolveu fazer disto sua própria cruzada, tento de outras formas entender a necessidade do gerente, e nisto tenho me frustrado cada vez mais.
    Me desaponta um pouco saber que o motivo que te faz pensar que eles são necessários seja justamente o cabo de guerra que se provou ser insustentável com o passar dos anos. A própria idéia de torná-los dispensáveis já vem da evidência de que programadores que sabem desempenhar seus papéis no projeto buscam formas cada vez mais agressivas de garantir uma boa entrega. Isso resume uma série de práticas que temos adotado ao longo destes anos para melhorar nosso desempenho no que diz respeito à tríade do inferno (escopo, custo, prazo) mas também extrapola os limites do trio, perseguindo melhoria na qualidade e no relacionamento com o cliente e muito mais.
    E aqui, pra mim, se estabelece o que define a verdadeira utilidade de um gerente: estamos falando de programadores que sabem desempenhar seus papéis, que se importam com tal desempenho. Para os outros programadores, aqueles que não sabem ou não se importam, estes acabam sendo os mais propícios para serem gerenciados. E isto cria um cenário bem distinto deste apresentado pelo Uncle Bob.

    • Eduardo Pires
      28/03/2013

      Resumindo, tudo depende do nível da equipe, um time responsável com a entrega faz o papel do gerente, um time não responsável (apenas programadores por ex) precisa de um gerenciamento. Fato que muitas vezes isso também não resolve muita coisa devido a qualidade da maioria dos gerentes do nosso mercado.

      • moreirayokoyama
        28/03/2013

        Mas um gerente não consegue garantir que um time não responsável se comprometa com seus objetivos, e é aí que está o paradoxo. Não precisamos de gerente, e quem precisa, não vai fazer que seu papel seja muito diferente daquilo que nos fez achar que eles não são necessários: comando e controle.

        • Eduardo Pires
          28/03/2013

          Se a empresa tem um time “não responsável” pela entrega alguém vai ter que “tentar” controlar a gestão e provavelmente vai cair naquilo que sempre vimos por ai, atrasos, falta de qualidade, prejuízo ou até mesmo a não entrega.

          Deixar o time não responsável trabalhar sem controle nenhum é loucura, montar um time responsável depende do fator tempo e investimento, enquanto muitas empresas tiverem o foco de vender projetos visando apenas o lucro eu não vejo a luz no fim do túnel para esse paradoxo deixar de existir. Vai ter sempre a equipe meia boca trabalhando e “re-trabalhando” enquanto o gerente tenta fazer a gestão do caos.

          • moreirayokoyama
            28/03/2013

            Pois é. É um paradoxo.

  7. Geek
    28/03/2013

    Se a função do gerente não existisse, eu que não iria de criá-la :)
    No geral são pessoas que não se importam com a maneira como construímos software e conseguem tornar tudo mais chato.

  8. g2-54538210de60020fd1258981ff2a5bd4
    28/03/2013

    Eu divido de forma rígida, como o Feathers faz com código legado. Equipe de TI é quem codifica; equipe de gerência é que não codifica. Simples assim. Por isso não vejo uma empresa sem gerente.

  9. elemarjr
    28/03/2013

    Não estaríamos sendo um cadin arrogantes e assumindo que sabemos tudo que compete ao gerente?

    Discordo frontalmente de que gerentes não são necessários. Talvez eu não seja tão maduro quanto os integrantes dos times relacionados por vocês.

    • moreirayokoyama
      28/03/2013

      Eu até considero esta hipótese. Por isto, como eu disse antes, me interesso muito por essa discussão. Mas se a posição do Uncle Bob sobre a necessidade do Gerente é criar um cabo-de-guerra sobre o que ele quer e o que eu sei que posso fazer ou não posso, neste aspecto, minha opinião a respeito é que definitivamente não preciso de um gerente.

      • elemarjr
        28/03/2013

        Acredito que a visão do Uncle Bob seja um pouco maior. Além disso, honestamente, acho que o “cabo-de-guerra” é necessário com frequência maior do que gostaria de reconhecer.

        • moreirayokoyama
          28/03/2013

          É aí onde discordamos muito. O cabo-de-guerra não só é desnecessário, como é prejudicial, por que no geral, é uma perda de tempo e energia.

  10. elemarjr
    28/03/2013

    Todos no time sempre tem competência, ou seja, saber e querer fazer em nível apropriado para as atividades. E o que acontece quando alguém com maturidade mais baixa é admitido (mais cedo ou mais tarde, isso vai ser necessário)?

    • moreirayokoyama
      28/03/2013

      Ele vai se familiarizar com a rotina do time. Passamos por isto também, e não tivemos problemas. Veja, não ouso dizer que tudo pode ser simplesmente assim em qualquer contexto… eu precisaria desenvolver mais times assim pra poder afirmar algo do tipo. O problema é que, ao mesmo tempo que admito isso, não vejo isso como motivo pra dizer que precisamos de gerentes.

      • elemarjr
        28/03/2013

        O gerente é o responsável por fazer o equilíbrio entre o capital e o trabalho. Senão, temos a regra de ouro: “quem tem o ouro decide”.

        • moreirayokoyama
          28/03/2013

          O gerente precisa equilibrar isto quando o capital e o trabalho tem conflito de interesses. O que passa a acontecer no ambiente de desenvolvimento (e agora expandindo-se aos poucos para outras áreas de atuação) é que os interesses do capital não são tão diferentes do trabalho: o desenvolvedor se interessou pela entrega, pela qualidade, pela satisfação do cliente.
          Quando o trabalho se empenha num objetivo que ajuda o capital a cumprir o seu próprio objetivo, você perde a necessidade de ter alguém responsável por este equilíbrio.

          • Eduardo Pires
            28/03/2013

            Atualmente estou trabalhando sem a posição do gerente, eu respondo ao vice diretor da área, A equipe estima e se cobra sobre os prazos e qualidade, a área de negócios nos provê suporte ao entendimento e fornece o feedback.

            Quando precisamos de capital (contratação, licenças, etc) a equipe conhece o budget disponível, debatemos sobre a melhor opção e eu entro com um pedido de compra, o vice aprova e damos seguimento.

            Temos reuniões periódicas onde eu exponho os resultados e faço o alinhamento das necessidades/estratégias.

            Eu não sou o gerente, estou longe disso, eu sou mais um apoio técnico que desenvolve junto com o time e assumo responsabilidades quais eu sei trabalhar.

  11. Pingback: Notas de Leitura – The Clean Coder – Sobre o “Vou Tentar” e saber dizer não | Elemar DEV

  12. Giovanni Bassi
    30/03/2013

    Troque gerente por lider e eu concordo.

    • elemarjr
      30/03/2013

      Para mim, o bom gerente é fatalmente um bom líder. Mas, entendo o seu ponto e, de certa forma, concordo com ele (surpreso!).

      De qualquer forma, a abordagem é do Uncle Bob. São apenas notas de leitura.

  13. Marcelo
    03/04/2013

    Se o gerente não é necessário, gostaria de saber quem vai fazer o fluxo de caixa do projeto, quem vai calcular o $$$$ necessário pro gerenciamento de riscos, quem passa pro cliente os índices do projeto (IDP, IDC, Previsão de prazos e custos futuros, etc), que vai gerir o pool de recursos, entre outras diversas atividades que ocorrem e a galera que fica com o fone nos ouvidos, na maior partes das vezes, nem sabe que ocorre e nem tem vontade de saber.

    Não consigo ver onde equipes autossuficientes se encaixam em corporações com 600-700 profissionais e onde diversos projetos, dos mais diversos tipos, iniciam e acabam toda a semana.

    Fora o desenvolvimento dos profissionais. Dentro de equipes temos profissionais senior, plenos, junior e estagiarios. E certamente todos tem q ser desenvolvidos. Quem avalia os profissionais se não tiver um gerente. Um avalia o outro?

    Na minha opinião um bom gerente é essencial para bons times.

    O grande problema é que maus gerentes deixaram o pessoal traumatizado. Dai a galera generaliza e vai nas ondas das modinhas que vendem que é legal trabalhar de bermuda, tomar cerveja no serviço e pagam salarios risiveis pros funcionarios (sendo que lucram 3x o valor da hora do cara).

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Informação

Publicado às 27/03/2013 por em Post e marcado , .

Estatísticas

  • 692,444 hits
%d blogueiros gostam disto: