Eu fui colocado em um projeto há cerca de três meses, que estava sendo desenvolvido até então por um único desenvolvedor recém-contratado, porque estava ficando para trás. Para ser justo, o projeto é uma interface para um dispositivo médico que possui muitas sutilezas e é relativamente complexo, portanto, colocar uma pessoa no projeto que não tinha experiência na empresa foi provavelmente uma má decisão do ponto de vista gerencial.
Enfim, quando comecei a trabalhar, percebi que ... bem, simplesmente não funcionou. A interface do usuário parecia boa, mas na verdade não fazia muita coisa, e o que fazia fazia incorretamente. Mais uma vez, para ser justo, muito disso ocorreu devido ao fato de esse desenvolvedor não estar preparado adequadamente para gravar uma interface em nosso dispositivo. No entanto, também percebi rapidamente que o código existente era frágil e extremamente difícil de manter.
Agora, não pretendo ser o melhor programador do mundo. Eu trabalho com muitas pessoas muito inteligentes, que são melhores desenvolvedores do que eu. No entanto, eu tento muito escrever código tão simples quanto possível e robusto. Eu testo meus checkins. Se vejo que meu código está ficando confuso e difícil de trabalhar desde o início, eu o altero. Eu tive algumas conversas com meu colega de trabalho na tentativa de ajudá-lo a escrever um código melhor. Isso é um pouco complicado, porque a) ele tem mais de 20 anos de experiência no campo e eu tenho apenas 5 eb) foi contratado como o chamado "especialista em UX" e outros o veem como um indivíduo experiente.
Dito isto, eu simplesmente não vejo. Ele é um cara muito legal e é razoável, mas, repetidamente, verifica códigos frágeis, funciona apenas nos casos mais otimistas e 9 em 10 vezes acabo corrigindo bugs em seu trabalho. Seu código parece amador e ele obviamente não tem o nível de experiência que afirmou ter quando foi contratado. Chegou ao ponto em que as horas extras que gasto refatorando seu código e corrigindo seus erros me afetaram. Na minha opinião, tenho duas opções:
- Não faça nada, busque minha bunda para garantir que este produto saia no prazo e seja robusto e espere que ele falhe no futuro (não vou trabalhar com ele nesse projeto após o lançamento inicial).
- Conte ao meu chefe sobre o desempenho dele. Meu chefe é um homem razoável, mas me sinto estranho ao adotar essa abordagem. Eu não gosto de 'bater' (por falta de um termo melhor) com meus colegas de trabalho e não sei como ele o aceitará.
Então é isso. Tentei trabalhar com isso com meu colega de trabalho, explicando por que sua implementação não funcionará ou como seu código pode ser tornado mais sustentável, mas ele continua cometendo os mesmos erros. Estou muito interessado em saber como outras pessoas lidaram com situações semelhantes, especialmente as pessoas na administração atualmente. Agradecemos antecipadamente por qualquer conselho que você possa me oferecer.
fonte
Respostas:
Eu consideraria pelo menos a possibilidade de que, se ele foi contratado como um UX, pode ser que ninguém realmente espere um código realmente bom dele - eles podem esperar que o código dele seja apenas basicamente um protótipo que descreve o UX, e cabe a outros codificadores escrever código de produção com base nisso.
Agora, certamente não estou dizendo que é esse o caso, mas não me pareceria terrivelmente surpreendente. Pelo menos na minha experiência, não é raro as pessoas UX produzirem principalmente protótipos e storyboards. Se qualquer coisa, se o cara foi realmente contratado especificamente como especialista em UX, estou chocado com a noção de seu código de verificação. Tenho certeza de que nunca vi isso feito.
Se o cara é realmente um especialista em UX, a solução pode não ser tentar fazê-lo produzir um código melhor, mas tirá-lo da codificação (pelo menos qualquer coisa, exceto protótipos). Se ele é honestamente bom em design de UX, o verdadeiro erro é provavelmente pedir-lhe para escrever o código de produção. Em vez disso, ele provavelmente deveria estar (no máximo) trabalhando em uma sandbox de prototipagem de UX, onde seu resultado é usado para orientar a próxima rodada de código real que é produzido, mas nunca fez check-in como código de produção.
fonte
Eu tento ter uma regra de que eu sempre mantenho meu chefe informado das coisas que afetam o projeto. Positivamente e negativamente ... e em casos como esse, tento culpar coisas como o código, em oposição à pessoa que o escreveu. Parece muito menos que você está criticando um colega de trabalho e mais como se estivesse tentando melhorar a qualidade do produto.
Do ponto de vista gerencial, existem três maneiras comuns de lidar com os funcionários nessa situação:
Controle suas fraquezas, procurando ajuda externa.
Você não está pedindo a outra pessoa para participar do projeto, está pedindo mais informações por especialistas por um curto período de tempo. Produza os documentos de que eles precisam, diagramas UML e trechos de código, se é isso que o arquiteto deseja. Eles verão em que estado está o código e, em seguida, seu chefe terá outra pessoa ecoando suas opiniões.
Esperamos que, a partir da reunião, você obtenha um design melhor que você e o outro desenvolvedor possam seguir sem que ele estrague muito. É para isso que projetamos e especificações em muitos casos: reduzindo o dano que desenvolvedores ruins podem causar.
Jogue com seus pontos fortes
Aqui, é provável que seu chefe veja através dele; que você está dizendo a ele que o outro desenvolvedor não é muito bom ... mas pelo menos você não está sendo um idiota sobre isso. E se ele for honestamente realmente bom no trabalho de UX, ele poderá encontrar uma posição estável pulando em cada projeto e tornando-os ótimos do ponto de vista da usabilidade. Eu imagino que ele gostaria melhor assim também.
fonte
Pare de corrigir repetidamente seus erros. Ele não aprenderá; Eu sei que não.
A programação é amplamente uma tarefa lógica, mas também envolve a lembrança de memória. Quando você costuma escrever código comum, lembra-se de como implementou a solução da última vez , em vez de descobrir tudo de novo. Se ele nunca implementou o código correto, posso ver por que ele continua repetindo os mesmos erros.
Mostre a ele o que ele fez de errado e, talvez, conserte da primeira vez. Para outras ocorrências do mesmo incidente, peça para ele implementar a correção que você lhe mostrou.
fonte
Eu seria muito cuidadoso por alguns motivos:
Como você tem certeza de que não estará trabalhando com ele após o lançamento inicial? Sua gerência poderia pensar: "Que equipe, veja como eles entregaram essa grandiosidade juntos!" e quero mantê-lo junto.
Se você for ao seu chefe, qual é o seu nível técnico, tentando explicar sua posição? Quanta documentação você tem dos seus colegas com baixo desempenho?
Essas seriam as dicas que eu anotaria do que você pediu. Eu sugiro que você pergunte a ele sobre o código e veja se ele tem algumas justificativas para o motivo. Talvez ele esteja rodando em círculos enquanto o codifica, o que causa alguns problemas. O círculo é onde você codifica algo e, por meio de uma série de alterações, termina quase no mesmo ponto em que você começou, quando a lista de alterações de alguém é cancelada no final. Eu já estive nessas situações em que está mudando e desfazendo alterações após alterações que se cansam muito rapidamente.
fonte
Quais são as consequências se você não refazer todo o trabalho dele e deixar o projeto falhar? As consequências para você, quero dizer.
Certamente alguém do seu nível de experiência e posição não chegou lá por acidente, ou o trabalho dele não é tão ruim quanto você o percebe ou toda a sua carreira é composta por pessoas como você, carregando-o junto.
Se você estiver trabalhando mais de 50 horas por semana em qualquer projeto, isso é algo muito errado e você se desassocia por não chamar a atenção do MP ou sair. Sou um forte defensor de trabalhar MAIS INTELIGENTE, NÃO MAIS DURO.
Trabalhe 50 inteligentes e, se o projeto não der certo, NÃO É SUA FALHA. Se falhar por causa de sua incompetência e eles a culparem, provavelmente esse não é o ambiente para o qual você gostaria de trabalhar.
Muitos amigos meus trabalham BEM ao longo das 40 semanas semanais em um projeto mal administrado, porque têm medo do fracasso quando não percebem o quão pouco o fracasso OU o sucesso afeta diretamente toda a sua carreira.
Mais de 80% dos projetos falham, não há vergonha nisso.
fonte
É chamado de revisão por pares. Seu gerente espera isso de você e precisa ser informado sobre o tempo gasto com o valioso desenvolvedor. Estou surpreso que ele já não saiba disso - mas, novamente, já vi coisas piores.
Não fale com ele em termos do outro cara, fale com ele em termos do trabalho diário que você faz. Se isso significa dissing seu código, que assim seja. Vá armado com links de check-in, etc., para dar algum tipo de prova do seu trabalho diário. Seu gerente pode querer exatamente isso de você - ele traz os 20 anos de experiência do usuário e você obtém o código robusto. Em vez de fazer wireframes, ele apenas escreve código de nível de protótipo. Converse com seu gerente.
E espero que você não tenha sido contratado como babá. Boa sorte.
fonte
O projeto será iniciado mais cedo se você não tiver que reescrever / refazer o trabalho dele? Ajudará a entrar abaixo do orçamento? Você não precisa se intimidar, para levantar suas preocupações em particular. Aqui é onde a maioria das pessoas erra, elas reclamam sem oferecer soluções.
Existem recomendações específicas que você pode oferecer ao seu chefe para melhorar o resultado. Melhor documentação? Teste de usuário robusto? Seu objetivo é tornar a empresa, o projeto, seu colega e você mesmo um sucesso. Fingir que não há problema garante falha para três dos quatro - e você não é o sortudo.
fonte
Você precisa ir ao seu chefe o mais rápido possível e claramente dizer o que disse aqui.
Primeiro, este é um dispositivo médico. Alguém pode se machucar ou morrer se houver um bug? O código no qual a vida ou a saúde das pessoas depende precisa ser o mais robusto possível humanamente, não o lixo de buggy, escrito por um otimista para o melhor cenário.
Ok, colocando meu chapéu de ex-gerente ... você não tem idéia se o seu chefe sabe disso, ou qual será a resposta dele se for novidade para ele. Mas se ele não sabe, ele precisa, e você não deve adivinhar, escondendo essas informações. Se ele concordar com seu colega de trabalho que codifica dessa maneira, ele informará você.
Eu me deparei com uma situação como essa há muitos anos. Eu e um "guru da rede" estávamos trabalhando em uma prova de conceito como contratados. Na verdade, ele mal estava conseguindo fazer alguma coisa, e principalmente brincando. Um dia, nosso chefe nos disse que tínhamos uma demo chegando. Logo, o "guru da rede" começou a receber muitas ligações telefônicas, e ele finalmente me disse que iria sair antes da demonstração para fazer outro show de contratação. Assim que pude pegar nosso chefe sozinho, contei a ele. Ele largou o "guru da rede" e trouxe alguém que eu recomendei, que produziu mais código em três dias do que o "guru" em três meses. A demo foi um sucesso - mas se eu tivesse ficado quieto, o projeto teria falhado completamente.
fonte
Sim, conte ao seu chefe. Então você verá se não é você quem está fora do lugar. O trabalho do gerente é saber como a equipe está se saindo e, se o chefe ainda não percebeu, talvez eles não se importem tanto com você quanto pela codificação adequada - como em muitos lugares em que estive.
E entre todos esses locais de trabalho diferentes, se eu tiver uma mão cheia (ou seja, 5) de amigos de todos eles já é um grande número. Todos eles tinham bons rapazes e moças, mas você não perde uma amizade por fazer seu trabalho - se você os perder, isso é uma coisa boa. No seu caso, ele estaria valorizando o trabalho mais do que você.
É verdade que não é uma tentativa de despedi-lo. Isso está apenas mostrando sua preocupação com o bem-estar do projeto, e é por isso que todos vocês estão (ou deveriam) estar lá.
Você tentou conversar com ele, afinal de contas, e se você não fizer nada, estará arriscando seu emprego lá.
fonte