Lidando com programadores inflexíveis

17

Às vezes, programadores que trabalham em um projeto por muito tempo ficam inflexíveis e fica difícil argumentar com eles. Mesmo se conseguirmos convencê-los, é improvável que eles implementem nossas sugestões.

Por exemplo, ingressei recentemente em um projeto em que o processo de compilação e liberação é muito complicado e apresenta obstáculos desnecessários.

Sugeri que nos livássemos de algumas das despesas gerais de desenvolvimento (como preencher algumas planilhas) apenas integrando ferramentas de gerenciamento de defeitos e controle de versão (ambas são ferramentas IBM-Rational, para que a integração possa ser um esforço único e muito fácil). Além disso, se usarmos ferramentas como Maven & Ant (o projeto envolve Java e alguns produtos COTS), a compilação e a liberação podem ser simplificadas, o que deve reduzir erros e intervenções manuais.

Consegui convencer os outros e estou pronto para fazer um esforço para desenvolver uma prova de conceito. Mas o desenvolvedor 'Sênior' não está disposto, possivelmente porque o processo atual o torna mais valioso.

Como lidamos com essa situação sem desenvolver atritos na equipe?

Singleton
fonte
2
Eu acho que você precisa expandir sua pergunta com alguns exemplos específicos. Caso contrário, "bata na cabeça com uma vara", "saia", "escreva um white paper, gráficos e apresentações em powerpoint para comunicar suas idéias" são os únicos tipos de respostas que você pode esperar ...
Dean Harding
"eles serão inflexíveis em aceitar sugestões a bordo" - você quer dizer "contra aceitar sugestões a bordo?"
ozz 15/02/11
Obrigado pelo esclarecimento, torna a questão muito mais valiosa e útil, IMO. +1!
22611 Dean Harding
2
Muitas vezes pensei que programar por tempo suficiente acabaria por ser colocado em um hospital psiquiátrico.
1527 Marcie
5
@ Marci-Eu sempre acreditei que o campo do desenvolvimento de software permitiu que uma porcentagem da população evitasse hospitais de saúde mental. Não que eles não devam ser institucionalizados, mas que eles podem se esconder dentro de algumas equipes de desenvolvimento.
Jim Rush

Respostas:

21

Você é o novo membro da equipe e deseja alterar alguns aspectos fundamentais de como a equipe funciona. Boa sorte, sinto uma equipe feliz no seu futuro.

Ok, alguns conselhos práticos:

Prove-se para a equipe. Você precisará fazer isso de uma perspectiva técnica e de confiabilidade. Se você quer que as pessoas o sigam, você precisa dar um motivo para isso.

Entenda o histórico da metodologia. Por que isso existe? Que problema estava resolvendo na época? Verifique se a sua solução é realmente um benefício para a equipe. Talvez suas alterações sejam melhores, mas elas podem não resolver o problema da equipe.

Conheça seus obstáculos. Descubra as razões de sua resistência e trabalhe nesses itens.

Se você deseja ser um agente de mudança, aprenda como ser um agente de mudança bem-sucedido . Dezenas de livros e outras fontes disponíveis para lhe fornecer muito mais informações do que você encontrará aqui.

E sim, desejo-lhe boa sorte. Mas por favor, pelo bem da sua felicidade e da felicidade de sua equipe, seja esperto. Seu desejo de mudar o processo, sem investir energia para criar o caminho certo, pode causar muito mais mal do que bem.

Jim Rush
fonte
+1 para entender o histórico da metodologia. Em muitos casos, existem coisas que parecem irracionais que têm uma base altamente racional. Freqüentemente, o problema não é que o processo esteja errado, é que ele e as razões por trás dele foram mal explicadas porque é uma segunda natureza para a equipe existente que, como resultado, não consegue o que precisa ser explicado a um recém-chegado. .
Jon Hopkins
1
@ Jon Hopkins: Alternativamente, o processo está errado, mas ocorreu em resposta mal concebida a problemas reais. Em ambos os casos, as propostas do recém-chegado serão rejeitadas com base inteiramente legítima de que ele ou ela não entende os problemas reais, e a única esperança do recém-chegado é entender a história e os problemas que levaram ao processo atual.
David Thornley
@ David - Isso é certamente possível, mas acho que é o mesmo que eu acho - não assuma, tente entender os detalhes e a história e faça a ligação.
Jon Hopkins
2
Ainda tenho que ver uma equipe "fazendo errado" por qualquer motivo que não seja a ignorância técnica. Este parece ser outro caso em que o "cara novo" conhece melhor que todos os outros, mas não será ouvido devido a esse problema de "cred"; portanto, todos continuarão a fazer coisas incorretas sem nem perceber.
Wayne Molina
@ Wayne: se fosse apenas ignorância técnica, basta apontar as lacunas no conhecimento seria suficiente. Dado que não é esse o caso, é muito mais que ignorância. Muitas pessoas, por sua natureza e situação, são resistentes à mudança. Quanto aos motivos, muitos. Uma simples pesquisa de "por que as pessoas são resistentes à mudança" produzirá um grande número de resultados úteis.
Jim Corrida
7

Eu estive na posição que você mencionou. Passei anos como desenvolvedor Java e, eventualmente, fui para um trabalho em que todos estavam usando Smalltalk. Minha primeira reação foi "OMG, eles estão usando essa tecnologia antiquada" e comecei a tentar resolver problemas específicos do Smalltalk com soluções Java. Só posso imaginar como devo ter sido uma dor de cabeça para os outros desenvolvedores e eles odiavam o Java com paixão.

Não foi até que recebi um projeto de tamanho médio para trabalhar enquanto fui orientado por dois desenvolvedores seniores ao longo de alguns meses que comecei a entender o idioma do Smalltalk e a aprender a gostar dele. Desde que deixei esse trabalho e voltei a fazer o desenvolvimento Java, me sinto muito mais flexível, pois posso pegar um projeto e implementá-lo em qualquer linguagem que a empresa use. O principal para que essas pessoas entendam é que a linguagem nada mais é do que o meio. Eu também tomei um tempo para me ensinar Lisp e Erlang, mas isso pode não funcionar com todos.

Como estratégia de formação de equipe, recomendo o Seven Languages ​​in Seven Weeks para as pessoas com quem você está tendo problemas.

Eu acho que também se resume a quanto tempo essas pessoas estão dispostas a investir para se tornarem mais flexíveis. O problema com a maioria das universidades (pelo menos as que eu já vi) é que elas são direcionadas a um idioma específico e seus alunos se tornam 'institucionalizados' como você mencionou. Eu acho que parte da sua estratégia deve ser cultivar flexibilidade em sua equipe. Isso pode ser complementado com o desenvolvimento orientado a domínio .

(1) Modele um domínio (simples) (2) Implemente-o usando duas linguagens diferentes (por exemplo, Java e Lisp)

Novamente, isso pressupõe que eles estejam motivados para fazer o que precede e que estejam dispostos a investir seu próprio tempo para conseguir isso.

Espero que isto ajude

Desolate Planet
fonte
1
Por favor, use o título do livro no link em vez de "este livro". É um passo a menos para aqueles leitores decidirem se clicam ou não. Especialmente aqueles que já leram anteriormente.
Huperniketes
Obrigado pela atenção, Huperniketes, fiquei bastante emocionado quando digitei isso e não voltei à verificação de sanidade do que digitei.
Desolate Planet
4

Eu posso estar no caminho totalmente errado aqui, mas parece-me que os mesmos problemas são comuns em uma escala mais ampla e se relacionam ao conservadorismo humano. As pessoas geralmente se recusam a mudar os padrões de comportamento conhecidos, por razões que são numerosas demais para mencionar.

Sendo um desenvolvedor russo (e, portanto, vendo menos pragmatismo ocidental racional), vejo o raciocínio prático muito menos convincente do que tentar andar no lugar de outra pessoa.

Em outras palavras, você mencionou que o programador sênior valoriza sua própria posição relacionada ao esquema de trabalho atual. Talvez você deva convencê-lo de que a nova maneira de fazer as coisas tornará sua posição ainda mais valiosa, e existem muitas maneiras de fazê-lo. Por exemplo, você pode fazê-lo pronunciar sua ideia e obter crédito por ela, ou você pode encontrar um ponto específico no processo que ele possa controlar exclusivamente etc.

Acredito que ser flexível fora das vantagens aparentes da sua ideia poderia ser seu feitiço aqui.

etranger
fonte
O crédito deve ser concedido onde o crédito é devido. O cara mais velho ainda poderia liderar a implementação do sistema, mas ainda assim deveria dar crédito àquele que deu a sugestão e elaborou a maioria dos detalhes da implementação. É justo.
Htbaa
Essa é a ética, que sempre deve ser considerada. Mas, sendo um conjunto de regras muito estratégico, a ética não necessariamente joga bem para resultados imediatos.
etranger 15/02
2
@Htbaa - realmente fazer o trabalho é provavelmente mais importante, certificando-se de que todos recebam o devido crédito. Vamos ser sinceros: a vida não é justa.
Stephen C
Eu acho que você está certo Stephen C
Htbaa
3

Consegui convencer os outros e estou pronto para fazer um esforço para desenvolver uma prova de conceito. Mas o desenvolvedor 'Sênior' não está disposto, possivelmente porque o processo atual o torna mais valioso.

Em vez de lançar aspersões sobre o personagem do desenvolvedor sênior (má jogada), talvez você deva tentar entender por que ele não está entusiasmado:

  • Talvez ele pense que você é uma daquelas pessoas que exageram nas idéias. Talvez ele duvide que você possa cumpri-los.

  • Talvez ele pense que você está exagerando nos problemas. (Eles não podem ser tão ruins ...)

  • Talvez ele pense que você não entende completamente os riscos técnicos.

  • Talvez ele pense (sabe) que há coisas mais importantes a fazer agora.

  • Talvez você apenas o esfregue da maneira errada.

Meu conselho seria provar a si mesmo para ele. Como entregando os projetos que você realmente recebeu. Quando ele confiar mais em sua capacidade e julgamento, revisite esse assunto.

Se você deseja seguir a linha "melhoria de processo" agora, meu conselho seria fazê-lo lentamente, em pequenas etapas.

Lembre-se de que, sem dúvida, existe o risco de que as alterações propostas tenham um impacto maciço na produtividade do seu grupo e até na capacidade delas de manter o software existente. Se isso acontecer, é provável que o responsável receba o máximo de críticas da gerência sênior.

Stephen C
fonte
2

Institucionalizado sobre o que em particular? Tecnologias, padrões, práticas?

Se eles estão na organização / projeto há muito tempo, é provável que sejam desenvolvedores seniores e tenham a responsabilidade / experiência para fazer essas ligações, e tenham tido experiências no projeto, em vez de serem condicionados como o experimento dos 5 macacos .

A solução para convencê-los dependerá de qual é o assunto, pois se um padrão / tecnologia já for escolhido, haverá uma boa razão e terá que haver uma melhor razão para mudar para justificar jogar fora o trabalho e se familiarizar, etc. ., se assim for, uma solução é para um arquiteto / desenvolvedor sênior organizando uma reunião para decidir democraticamente a melhor solução.

StuperUser
fonte
1

Se a equipe realmente tiver obstáculos desnecessários, provavelmente ficará muito feliz em ajudá-los a corrigi-los. Note, no entanto, que pode haver uma boa razão para eles estarem lá, e você parecerá estúpido se tiver que dizer "oh, bem, minha ideia fantástica não funciona então" depois de vendê-la a todos por um longo tempo.

Investigue primeiro e depois avance. Observe também que ser capaz de MOSTRAR como você sugere a melhoria é muito melhor do que a navegação manual.


fonte
1

Estou inclinado a dizer que é você quem é o "Programador Inflexível". Você é novo no projeto, mas insiste em que sua idéia é a melhor e o cara que lidera o projeto, que já faz mais tempo e conhece o sistema por dentro e por fora, está fora de controle.

Sou bastante experiente, bem conceituado e sou frequentemente designado para consertar projetos difíceis como membro de uma equipe de tigres. Mesmo assim, ainda dedico um tempo para aprender como, por que, dinâmica da equipe, o projeto e suas práticas, sem entrar em detalhes e dizer a eles como isso e aquilo estão errados. Na verdade, nunca digo que o que eles estão fazendo está errado, porque isso não obtém a resposta que eu quero e, geralmente, o que eles estão fazendo não está errado, só precisa de alguns ajustes.

Cada projeto é único. Cada equipe é única. Sua solução pode ser melhor para você e os desenvolvedores, mas pode não ser melhor para o líder, o cliente, o negócio ou o projeto, mas como você não tem experiência com o projeto para conhecer melhor, não saberia a resposta para isso.

Dunk
fonte
0

A melhor maneira de levar as pessoas a fazer o que você quer é fazê-las pensar que tudo é idéia delas. Então, em vez de fazer sugestões diretamente, apresente opções. Se suas idéias são claramente melhores do que as alternativas, dê ao desenvolvedor sênior a chance de selecioná-las e torná-las suas. Não se preocupe em obter crédito. As pessoas que importam saberão o que está acontecendo.

Roger escasso
fonte