Opções para um programador líder que prefere programação a liderança? [fechadas]

19

No início deste ano, fui promovido a um papel de desenvolvedor líder depois que o desenvolvedor líder de nossa equipe mudou-se para um departamento diferente. Tenho cerca de 5 anos de experiência profissional e, devido à disponibilidade e desempenho passado, fui a principal escolha da gerência para liderar o projeto. Fiquei um pouco apreensivo, mas decidi que era uma boa oportunidade para avançar na carreira e experiência, então aceitei.

Mas minha conclusão até agora é que eu não aprecio tanto quanto a minha posição anterior de desenvolvedor. Embora eu tenha liderado com sucesso uma equipe de 5 desenvolvedores em vários lançamentos, quase nunca toquei em nenhum código. Em vez disso, realizo o planejamento, o design e o gerenciamento de equipes, juntamente com as revisões de código. A necessidade de acompanhar muitas outras coisas e ter tarefas planejadas para que possam ser atribuídas à equipe, literalmente me causa dores de cabeça todos os dias. Mesmo que raramente trabalhe horas extras, sinto-me esgotada quase todos os dias quando saio do trabalho e acho que nem sequer aproveitei o tempo de folga como resultado.

Então, minha pergunta: como você lidaria ou como lidou com essa situação? Para pessoas em situações semelhantes, você encontrou maneiras de gerenciar melhor sua equipe, tarefas e tempo que fizeram você gostar do trabalho? Ou você encontrou uma maneira de voltar à posição mais orientada para o desenvolvimento? Sei que os cargos de desenvolvedor líder quase sempre pagam um salário mais alto, mas posso me ver chegando a um ponto em que me preocupo menos com dinheiro e promoções do que com meu gozo no meu emprego atual.

Não discuti isso com ninguém da administração, pois pensei que deveria tentar me ajustar por pelo menos um ano.

William Fontaine
fonte
"Eu não discuti isso com ninguém na administração". Por que diabos não? Corra, não ande, para gerenciar e explicar. Uma boa empresa / bom gerente entenderá e reorganizará as coisas para benefício de todos - o seu e o deles. Você não quer trabalhar em outro tipo de empresa de qualquer maneira
Mawg diz que restabelece Monica

Respostas:

16

A resposta que estou fornecendo aqui é o meu melhor palpite sobre o que poderia funcionar potencialmente, mas não o vi funcionar, pois estou tentando sair de uma situação semelhante em que você se encontra. A coisa toda ainda é uma experiência de aprendizado para mim, mas estou vendo uma tendência positiva em minha equipe.

Na minha empresa, fui promovido a líder de equipe (eles chamam de "líder de design") e, devido à falta de pessoas que conhecem o produto e têm experiência suficiente, me ofereci para liderar 2 equipes diferentes. Há alguns meses, "para ajudar no cronograma", a gerência dobrou o tamanho dessas duas equipes.

Alguma coisa que tenho tentado fazer ...

  1. Deixe claro para todos (incluindo a gerência) que a minha posição e a de todos os outros não é uma tarefa permanente. Todos são bem-vindos para se atualizar, ter uma visão mais ampla do projeto e participar de decisões de arquitetura / design. Terei a palavra final (por enquanto) se houver um desacordo sem resolução, mas até agora isso nunca aconteceu.
  2. Concentre-se em ajudar outras pessoas a se desenvolverem e crescerem. Eu tive discussões (quase filosóficas) com diferentes desenvolvedores em diferentes momentos sobre codificação e design e abordagens diferentes para fazer as coisas. Algumas dessas discussões estão relacionadas ao trabalho real, outras são exercícios puros de pensamento. Eu tinha um cara com mais de 20 anos de experiência, voltei para a estante e pegue um livro em C ++ porque ele estava interessado em algumas coisas de baixo nível que eu fiz com a meta programação de modelos. Essas discussões são um tanto infecciosas e, depois que você aborda esses tópicos várias vezes, as pessoas começam a pensar sobre essas coisas por conta própria.
  3. Delegue o máximo que posso em outras pessoas. Embora eu examine muitas coisas, não participo de todas as revisões de código. Em vez disso, faço revisões de código para nossos funcionários intermediários e deixo esses funcionários fazerem revisões de código para algumas pessoas mais ecológicas. Vejo as revisões de código como mais uma ferramenta de transferência de conhecimento, em vez de "vamos garantir que lemos todas as linhas e encontremos todos os erros possíveis".
  4. Depois que as interfaces são definidas e o design básico está em vigor, deixo que até os mais novos tenham a maior liberdade possível de codificação de classes internas. Sim, muito desse código está longe de ser perfeito, mas é testado e funciona. Se ele ultrapassar um determinado limite subjetivo em termos de "cheiro de código" e não o refatorar, eu sugeriria que certas classes devam ser divididas ou reorganizadas. Às vezes, é doloroso, mas quando volto alguns dias depois e recebo uma resposta: "Eu odeio admitir, mas esse código parece muito melhor agora", que na verdade me dá uma sensação quente e confusa.
  5. Desafie as pessoas. Em vez de apenas atribuir um recurso a ele para adicionar ao produto, peça que ele adicione esse recurso, mas faça isso sem aumentar o número de funções / membros de dados nas classes existentes. Se você precisa inserir algo novo, precisa retirar algo existente e dedicar algum tempo para descobrir o que é. Todo mundo sabe sobre refatoração, mas sem força extra no começo, parece que as pessoas precisam de ajuda para dar esse salto para realmente fazer isso. No mínimo, faço questão de visitar esse ponto durante quase todas as revisões de código.
  6. Tudo é sobre equilíbrio. Você não pode ser a única pessoa sênior da equipe que observa todos os outros. Você não pode passar a semana inteira em reuniões e fazendo revisões. Você não pode esperar que irá pegar todos os erros que sua equipe cometer. No final do dia, você precisa alocar o tempo para ser o líder, mas também precisa alocar tempo para ser um desenvolvedor. Eu ficaria louco se não pudesse codificar. Mesmo com todo o resto, ainda tenho tempo para escrever código e não apenas código, mas algumas coisas realmente muito bacanas. Acabei de colocar minhas mãos nos livros de meta-programação e comecei a cavar dentro do Boost. Os caras que criaram essas coisas têm que ser loucos (no bom sentido). Se seu gerenciamento começar a incomodá-lo por que nem tudo está sendo revisado ou por que um noob está revisando outro código de noobs, você só precisa explicar tudo sobre o equilíbrio e que a equipe simplesmente não tem pessoas experientes o suficiente e no final do dia "é o que é". Se sua equipe tem pessoal sênior, é hora de capacitá-los e dar-lhes a liberdade de fazer seus próprios projetos / revisões / ajudar outras pessoas e não os tratam como simplesmente geradores de código. Com o empoderamento vem a liberdade e as pessoas amam a liberdade. Se você tem desenvolvedores que não se importam com liberdade / empoderamento, tudo bem. Toda equipe ainda precisa de codificadores puros, apenas lute pelo equilíbrio. É hora de capacitar e dar a eles a liberdade de fazer seus próprios projetos / revisões / ajudar os outros e não os tratar como simplesmente geradores de código. Com o empoderamento vem a liberdade e as pessoas amam a liberdade. Se você tem desenvolvedores que não se importam com liberdade / empoderamento, tudo bem. Toda equipe ainda precisa de codificadores puros, apenas lute pelo equilíbrio. É hora de capacitar e dar a eles a liberdade de fazer seus próprios projetos / revisões / ajudar os outros e não os tratar como simplesmente geradores de código. Com o empoderamento vem a liberdade e as pessoas amam a liberdade. Se você tem desenvolvedores que não se importam com liberdade / empoderamento, tudo bem. Toda equipe ainda precisa de codificadores puros, apenas lute pelo equilíbrio.
  7. Seu tempo é valioso. Portanto, peça à equipe que envie por e-mail todas as perguntas críticas pontuais que podem esperar algumas horas antes de obter uma resposta. Quando a pergunta é feita, toda a equipe deve ser copiada. Eventualmente, quando você tem uma pausa no seu dia, pode dar uma olhada no problema e ajudar a pessoa, mas muitas vezes alguém já pode ter lhe batido na resposta e você não precisa fazer nada. Obviamente, como líder, ainda me coloco à disposição e esclareço esse fato, porque acredito que um dos meus objetivos é garantir que ninguém na equipe fique preso por um período prolongado sem progredir.
  8. Verifique se sua equipe usa o maior número de ferramentas possível para tornar as comunicações mais eficazes. Por exemplo, temos um site wiki e sempre que o mesmo problema surge várias vezes, pergunto ao último cara que ajudei a criar uma página wiki.
DXM
fonte
1
+1 resposta excelente, muitos conselhos práticos. Delegação e equilíbrio são habilidades extremamente importantes, que devem ser constantemente desenvolvidas e refinadas.
Péter Török
Excelentes conselhos. +1 especialmente para o nº 4; Vi pessoas perderem muito tempo por não pensarem dessa maneira.
precisa saber é o seguinte
Estou intrigado com a sua ideia de adicionar recursos sem adicionar novos alunos. Você acha que essa estratégia funciona bem?
Maxpm 30/01/12
@ Maxpm: Fora do trabalho, gosto de trabalhar em carros. Eu também tentei mexer em eletrônicos e hardware. Eu trago muitas coisas para casa. Minha abordagem às aulas é a abordagem que minha esposa leva comigo: "se você traz algo, precisa retirar algo". Não estou dizendo que nunca adicione uma nova variável ou método, mas existe um certo limite acima do qual você não pode simplesmente adicionar. Se o seu código ficar grande, é provável que você possa pegar um pedaço grande e dividi-lo em uma ou mais unidades independentes. Então, em vez de grande monólito, você terá blocos de construção e você pode mover e reorganizar conforme necessário
DXM
@ Maxpm: esqueceu de adicionar ... Sim, essa estratégia funciona extremamente bem e é o cerne dos princípios do SOLID que eu recomendaria que todos se familiarizassem. Já faz um bom tempo desde que tive que lidar com a podridão no meu código.
DXM
4

Eu não discuti isso com ninguém na gerência

Eu acho que você sabe que isso provavelmente ajudaria. Comunicar seu desconforto com uma posição não está necessariamente especificando nada concretamente. Ele permite que a gerência saiba quais cartões eles possuem e, se for uma boa administração, eles tentarão encontrar uma maneira de usar seu melhor potencial. Não aceite menos.

Ben Lakey
fonte
3

Quando o seu projeto terminar, procure uma posição mais orientada ao programador em sua empresa ou fora dela.

Discuta com a gerência que você gostaria de menos gerência e mais habilidades práticas.

Parece que você está na posição de gerente de equipe versus um desenvolvedor líder. Eu consideraria um desenvolvedor líder codificando mais.

Jon Raynor
fonte
Sim, eu também. Infelizmente, alguns projetos são assim, o meu simplesmente não é assim. Há coisas técnicas suficientes para gerenciar que eu tenho que fazer isso 95% do tempo. Vou tentar mudar isso no futuro.
William Fontaine
3

Perspectiva dos empregadores :

Se você gosta do emprego atual e tem uma boa história lá, eu gostaria de mantê-lo e encontrar um lugar para você, para que não me preocupasse muito em conversar com eles.

Um grande desenvolvedor é uma coisa valiosa, mas você precisa vender a eles que vale mais a pena codificar e talvez criar design do que o ato de malabarismo.

Dê a eles um caminho para apoiá-lo, estabelecendo um plano de sucessão. Basicamente, você encontra alguém na equipe atual que está interessado em fazer as coisas que lhe causam dor de cabeça. Nos próximos 6 a 9 meses, você os treina, dando-lhes as tarefas uma de cada vez.

Escolha algo fácil primeiro, como atualizações semanais de status:

  • Sente-os ao seu lado quando você estiver fazendo uma atualização de status.
  • Sente-se ao lado deles enquanto eles fazem a próxima atualização de status.
  • Deixe-os fazer sozinhos e revise-os antes de sair para a final.

Em seguida, programe-os progressivamente até que você entregue a maior parte de suas responsabilidades adicionais.

A razão pela qual esses empregos menos desejáveis ​​recebem mais é porque, se não fossem, ninguém os faria, não necessariamente porque exigem um nível mais alto de habilidade ... oferta e demanda.

Para mantê-lo pagando mais alto ... Se fosse eu, eu gostaria de saber que você está por perto, você ajudará essa pessoa quando necessário, será um mentor para os caras mais novos, será o designer / cérebro-chave / especialista em domínio em vez de líder de projeto. Basicamente, esta é uma posição valiosa, alguém pode fazer o ato de correr e fazer malabarismos (por mais remuneração, obviamente).

Eu acho que se você apresentasse ao seu empregador um plano de 6 a 9 meses que dizia

  • Boa explicação de por que você acha que é melhor voltar a concentrar-se na codificação das outras responsabilidades.
  • Em quem participar ... ou eles têm que encontrar alguém ... acho que esse é um fator decisivo.
  • Rach mês por 6 meses, quais responsabilidades você entregaria à nova pessoa
  • Quais responsáveis ​​você manteria no ombro (como design, talvez participando de revisões de código etc.).
  • Uma idéia da diminuição dos salários que você estaria disposto a aceitar (em algum momento entre o original e o agora), embora permita que eles façam isso.

Se você juntar isso como um plano para mim, como empregador, ficaria feliz em trabalhar com você para que isso aconteça.

Boa sorte.

Robin Vessey
fonte
1

Eu estive exatamente na sua situação. a resposta se resume ao relacionamento que você tem com seu gerente. No meu caso, foi muito bom, então o levei de lado um dia e disse que não estava gostando do trabalho, estava muito estressado e queria voltar à codificação. Ele ficou muito mais feliz ao ouvir isso do que me fazer entrar e sair. Por isso, elaboramos um plano para que outra pessoa assuma o cargo de líder da equipe e eu voltemos à codificação.

drekka
fonte
0

2 perguntas que não são óbvias em sua postagem:

  • Você está em uma empresa que ganha dinheiro diretamente com o software que você escreve (como Google, Microsoft ou Fog Creek) ou está em uma função subsidiária (como em um banco ou empresa de alimentos)?

  • O CEO é um tecnólogo ou alguém que se destacou por meio de funções de negócios?

Se você é uma empresa de software com um CEO tecnólogo, não se preocupe. A liderança corporativa saberá quem são os desenvolvedores valiosos e fará o que for necessário para mantê-los. Se todos os executivos são pessoas que tiveram suas chances de "administrar pessoas" ou "administrar orçamentos", preocupe-se. Fique duplamente preocupado se você estiver em um departamento de TI interno. Se for esse o caso, você deve aceitar que um bom equilíbrio entre vida profissional e pessoal seja a recompensa por permanecer como desenvolvedor.

Um último ponto - faça o que o fará feliz. O conselho de todos os outros sobre escolhas de carreira como essa é sobre o que os faria felizes - e isso é sobre você.

MathAttack
fonte