Existe alguma maneira de acelerar a solução de bugs? Acabei de receber um aviso do meu chefe [fechado]


129

Acabei de me dizer pelo meu chefe que vou receber uma avaliação de desempenho negativa na segunda-feira. Ele quer falar comigo sobre por que sou tão lenta e por que minha taxa de correção de bugs é tão baixa.

Adoro programar e resolver problemas, mas realmente acho meu trabalho muito difícil.

Na verdade, sou programador há cerca de 10 anos. Mas este é o meu primeiro trabalho de linux incorporado multithreading - estou aqui há 2 anos e é óbvio para todos que ainda estou lutando. E acho que fiquei tão desmoralizado e me sinto tão marginalizado que perdi muito do fogo que tinha no início do trabalho.

Alguém já esteve em uma situação semelhante e como você aumenta sua taxa de correção de bugs?


Atualização: Eu tive a revisão. Fiz um 'programa de desenvolvimento de funcionários' de três meses (do tipo mencionado por Dunk). Não tenho certeza se eu posso mudar isso. Mas mesmo que eu tenha que seguir em frente, aprendi muito com essa experiência.

Outra atualização

Já se passaram 6 semanas desde a primeira revisão. Meu conselho para quem enfrenta a mesma situação é ser humilde o suficiente para receber críticas e aprender com seus erros. E não ter medo de parecer idiota. Faça muitas perguntas. Informe as pessoas que você está tentando aprender e continue perguntando até você entender. Mas esteja preparado para não dar certo. Estou construindo um portfólio de códigos ... e também dando o meu melhor.

Mais uma atualização

Hesito em colocar isso aqui, pois estou preocupado em não poder encaminhar futuros empregadores para o meu perfil de stackoverflow ... Mas, de qualquer forma, pode ser interessante para alguém que está lendo esta pergunta, mas na verdade perdi minha conta. trabalho há algumas semanas. Estou no meio de aperfeiçoar todas as habilidades necessárias - segui muito os conselhos dados aqui.


170
Informe o seu chefe que foi muito gentil da parte dele economizar a revisão, em vez de mencioná-la quando percebeu que era um problema.
Blrfl

13
A programação de manutenção requer um certo tipo de pessoa. Talvez não seja o seu lugar. Da mesma forma, o novo desenvolvimento requer outro tipo de pessoa. Você fala sobre a descoberta de ferramentas / dicas / truques. Quantas dessas ferramentas você criou para seu próprio uso? Se a resposta for nenhuma, então eu realmente acho que você não é um tipo de pessoa de programação de manutenção. Se você foi arrastado entre vários projetos por falta de desempenho, considere isso como uma mensagem clara de que você não está qualificado para a posição em que está. Encontre algo mais adequado para você.
Dunk

40
Se você precisar adivinhar que está sendo embaralhado por causa de seu desempenho, a gerência está fazendo algo errado. Da mesma forma, se a primeira vez que você ouvir seu desempenho inferior for após dois anos, a gerência estará fazendo algo errado.
Michael Shaw

32
@ Bee: Normalmente, uma vez que alguém recebe uma crítica ruim, é hora de sair. Eles podem colocá-lo em um "programa de desenvolvimento de funcionários", mas acho que nunca vi alguém se recuperar assim que alcançou esse estágio. O momento mais fácil para encontrar um emprego é quando você já tem um. Então, se eu fosse você, atualizaria meu currículo e começaria a procurar em outro lugar, muito em breve. Você também deve ter muito cuidado com o tipo de trabalho que realiza. 7 anos de experiência ainda deixam opções. Depois de atingir 10, as empresas esperam experiência em áreas específicas. Escolha uma área que você gosta e é bom. Ops, acabamos de ver que você atingiu 10.
Dunk

8
Não é o suficiente para ser uma resposta, mas em relação à "maneira de acelerar": você afirma que é um domínio em que você é novo. Pode ser que sua maneira de corrigir seja muita tentativa e erro, sem realmente saber o que está acontecendo "lá no fundo"? Nesse caso, aprender o básico minuciosamente o ajudará a identificar os possíveis problemas.
Matsemann

Respostas:


80

Muitas respostas questionaram os métodos / táticas / métricas / etc do seu chefe. Mas isso não vem ao caso. Talvez você seja lento. Toda sala de desenvolvedores precisa ter UM que é mais lento que o resto, certo? (Isso é apenas uma teoria dos conjuntos). Então, vamos supor que seja você. A resposta é: por que você está lento? (Claramente, essa é a pergunta que você deve responder antes de poder resolver sua pergunta declarada sobre como acelerar).

Pode haver todos os tipos de razões, mas aqui estão algumas explicações possíveis a serem consideradas:

  1. Você é menos inteligente do que eles . É possível né? (Os estudos mostraram que TODOS somos menos populares , menos interessantes e (a seguir) menos inteligentes do que nossos amigos.) Então, talvez você seja um cérebro lento. Então, novamente, no seu caso, acho isso improvável. Uma rápida olhada no seu perfil do StackOverflow mostra que você tem um histórico de perguntas inteligentes sobre uma ampla variedade de tópicos. Então você é obviamente um pensador e provavelmente um bom nisso.

  2. Você está espalhado muito magro. Esse mesmo perfil SO mostra que suas perguntas abrangem uma gama muito ampla de tecnologias nos últimos 2 anos (gráficos, web, python, c ++, c, linux, incorporado, threads, soquetes etc.). Pessoalmente, sei que, quando me coloco na situação de ter (ou querer) mergulhar em uma infinidade de correntes diferentes, me vejo nadando em correnteza muito rápido (ou melhor, muito devagar ). Talvez o que você realmente precise aqui seja o FOCO . E talvez uma dose saudável de priorização . Existe alguma maneira de relegar os potes menos importantes para o segundo plano e aumentar o calor do prato principal?

  3. Você não está se divertindo. Quando o fogo se apaga, o motor a vapor está destinado a desacelerar. Você admitiu em sua postagem que seu moral sofreu um sério golpe recentemente. Infelizmente, você foi engolido pelo vórtice sugador de harmônicos negativos auto-reforçadores - uma força que pode destruir pontes . É uma espiral muito familiar: tarefa difícil -> estresse -> prazo perdido -> mais estresse -> mecanismo de enfrentamento deficiente -> mais estresse -> procrastinação -> prazos mais perdidos -> críticas / fofocas (reais ou imaginárias) - > ainda mais estresse. Você entendeu a foto. Isso raramente leva a qualquer lugar útil. Tome uma lição dos meus dias em rafting em águas brancas: quando você é sugado para debaixo d'água por uma corrente circulante na parte traseira de uma classe 4 rápida, seu colete salva-vidas NÃObóia você de volta à superfície. A melhor estratégia (embora não intuitiva) é encontrar o fundo do rio e sair da correnteza. Portanto, meu conselho para você é: encontre um terreno , cara (amigos, igreja, novos hábitos saudáveis, etc.) e use-o para se afastar da banheira de hidromassagem.

  4. Você não está na sua zona. Michael Jordan fez um jogador de beisebol esfarrapado. (OK, ele ainda era melhor do que eu, mas definitivamente era um pouco menor.) Talvez "linux incorporado multithreading" simplesmente não seja o seu show. Mas o desenvolvimento de software é um campo extremamente amplo (como você bem sabe; cf # 2 acima). Sua empresa é ampla o suficiente para encontrar outro nicho? No meu último emprego, fui contratado como desenvolvedor de software embarcado. (Eu não tinha experiência nesse domínio, mas disse a eles que era um "aprendiz rápido".) Eu afundei rapidamente como uma pedra. Mas continuei trabalhando duro e continuei procurando problemas que eu faziasabe como resolver para eles. Como se viu, fui gradualmente capaz de migrar para novas responsabilidades nas quais pude brilhar e pelas quais recebi elogios consideráveis. Então, talvez você precise mudar sua marca.

O ponto é: se você for lento, há uma razão. Mas, ei - você é um engenheiro de software, cara! Depure você mesmo!


2
que resposta brilhante. eu acho que todos os seus pontos são aplicáveis a mim (e sobre # 1, bem talvez eu sou menos inteligente, eu ouço que há diferentes tipos de inteligência -. Então, talvez que está relacionado a # 4 talvez eu sou um numbskull incorporado linux dev mas talvez eu seja melhor em coisas da web ... e agora penso nisso, isso pode ser realista). de qualquer maneira - você é muito perspicaz.
BeeBand

14
3 e 4 são maiores (para programadores) do que a maioria dos chefes pode imaginar. Se um programador tem moral baixa, ele / ela não consegue se concentrar no trabalho. Para um programador, o moral é o momento e o momento é tudo.
TimG 28/05

7
Excelente resposta. Depurar você mesmo é uma ótima frase, btw. Eu gostaria de poder te votar uma segunda vez apenas por isso.
Kyeotic

2
Seu "seguiria" não funciona no ponto 1, pois o paradoxo da amizade modela as relações entre duas pessoas como uma simples margem bidirecional entre dois vértices de um gráfico, enquanto um gráfico de quem é "mais inteligente" do que quem teria que considerar uma vasta gama de outros fatores, sem mencionar que as regras de transitividade não se aplicam. Concordo com os pontos 2,3 e 4. No caso do OP, acho que o chefe dele é um idiota que sofre com o efeito dunning-krueger.
Funkymushroom

1
programador, depure-se. adoro :) boa resposta também. útil para mim, não porque estou nessa situação, mas porque agora posso ver como evitá-la. +1
jammypeach

56

Seu chefe pode estar correto: você pode estar "com baixo desempenho" (mais sobre isso em um minuto). Mas pode não ser apenas o seu nível de competência que deve ser responsabilizado. Eu não acho que seria possível sugerir que forças fora do seu controle estão causando estresse, o que está afetando negativamente o seu desempenho.

Vamos dar uma olhada em alguns dos motivos pelos quais seu chefe pode estar trazendo isso à tona agora:

Cultura e Política

Pode haver forças além do seu controle exigindo que seu chefe agora expresse sua preocupação. É importante entender o sistema em que você está trabalhando. Seu trabalho é fazer com que seu chefe tenha uma boa aparência. A única maneira de fazer isso é entender as pressões sob as quais ele está.

Habilidade

É possível que a habilidade não esteja ao mesmo nível, como você diz abertamente. Aqui está o que eu faria nesta situação:

Obtenha feedback específico do seu chefe sobre como ele mede o desempenho. Você não está fechando tantos bugs quanto a pessoa X? Existe um número definido de bugs que você deve resolver? Se você está trabalhando sozinho, precisa garantir que as pessoas que medem seu desempenho o medem de maneira justa e não com base em alguma ideia preconcebida.

Se o seu desempenho for lento e baseado em uma lacuna real, identifique essa lacuna e coloque um plano detalhado junto com seu chefe, com o objetivo de eliminá-la.

Esta revisão também é uma boa oportunidade para mostrar que você não é feliz. É bom que você tenha identificado que não ama este trabalho. Mas descubra o porquê. Que parte do seu trabalho você gosta e o que não gosta? Pode ser que este trabalho não seja para você ...


2
Essa é uma ótima resposta. Penso um pouco sobre o motivo de não estar gostando deste trabalho. Principalmente são os arquivos de log que eles nos dão para acompanhar os bugs, eu os detesto mais do que qualquer outra pessoa - começo sempre completamente e totalmente no escuro com qualquer bug que eles me fornecerem. Eu acho que é esse sentimento 'no escuro' que eu odeio.
BeeBand

4
A menos que alguém tenha experimentado um problema semelhante no mesmo projeto, a maioria das pessoas começa "no escuro" quando recebe um novo bug. Depois, com base nos sintomas, você descobre como recriar o problema, o que deve fornecer idéias sobre por onde começar a adivinhar a causa do problema. Você continua passo a passo. Nada mágico, nada para odiar. Você diz que odeia os arquivos de log. Você criou alguma ferramenta para automatizar a análise desses arquivos de log? Ignorando o fato de que os arquivos de log devem ser úteis, se não fossem, não demoraria muito para que eu criasse uma ferramenta para ajudar a analisá-los para mim.
Dunk

1
@ Dunker sim, eu criei uma ferramenta para analisar os arquivos de log de várias maneiras. Descobri depois que alguém já havia criado um há um ano ou mais.
BeeBand

@ Bee: Sua criação de uma ferramenta mostra alguma iniciativa necessária. Ninguém fornece uma visão geral do ambiente de desenvolvimento quando você faz a transição entre projetos? Se existirem ferramentas, parece que o líder do projeto deveria ter informado sobre elas.
Dunk

Visão geral do @Dunk re - não. Meu primeiro líder de equipe me mostrou uma ferramenta específica - mas não indicou que era útil para corrigir bugs de um tipo específico ou que poderia ser traduzida para outros projetos. Quando fui transferido para este novo projeto de manutenção, ninguém me falou sobre o ambiente de desenvolvimento - eu só precisava perguntar. Foi só depois de lutar para criar minha própria ferramenta que perguntei a um colega e ele mencionou como eu poderia usar a ferramenta original. (Nota: esta é uma ferramenta diferente do meu comentário anterior).
BeeBand

38

Alguns ambientes de trabalho são impraticáveis. Vi ambientes em que ninguém poderia sobreviver (exceto aqueles que estavam no começo) porque muita coisa não era documentada e as perguntas eram tão veementemente desencorajadas.

Você realmente precisa ser honesto consigo mesmo com relação às expectativas e aos recursos fornecidos para ajudá-lo a atendê-las. O problema pode não ser você.

Você menciona que existem pessoas fazendo trabalhos semelhantes aos seus que, presumo, não estão tendo dificuldades, mas que têm mais de 5 anos de experiência em seus 2. Como você se sente em comparação com seus colegas? Eles são estrelas do rock que superam você completamente (a esse respeito) ou são como você? Talvez eles tenham acabado de conhecer o sistema quando era mais simples ... Você mencionou ter 8 anos de experiência em programação antes dessa linha de trabalho. Como você fez lá? Se você se saiu bem, isso deve lhe dizer uma coisa.

A parte que me impressionou é o fato de você se descrever como estando no escuro com relação a todos os bugs que aparecem no seu caminho. Pode ser que a base de código seja tão vasta e desconhecida que as expectativas possam não ser razoáveis.

Para você ter chegado o mais longe possível, significa que fez algo certo e tem algo a seu favor.

O ponto principal, eu acho, é que você precisa se sentir bem consigo mesmo e com o que está fazendo. E se isso significa seguir em frente, que assim seja.

Melhor seguir em frente do que ter um emprego arruinando sua vida.


2
Vi em minha carreira profissional equipes exatamente como você descreveu. O código que eles mantêm é vasto e enigmático, e as informações sobre como ele funciona são zelosamente protegidas. Os novos membros da equipe são intencionalmente deixados para seus próprios dispositivos e acabam sendo transferidos para salvar suas carreiras.
Anthony Giorgio

31

Primeiro, observe: essa resposta pode se aplicar apenas a determinadas regiões onde é ilegal demitir um funcionário sem indenização. Dito isto...

Pode ser um caso de demissão construtiva e ilegal.

A tática é desmoralizar e diminuir a auto-estima de um funcionário até que ele saia do emprego. É uma maneira de a empresa economizar dinheiro por não ter que pagar indenização ou resolver o problema de ter que confrontar o funcionário e demiti-lo.

Ele quer falar comigo sobre por que sou tão lenta e por que minha taxa de correção de bugs é tão baixa.

Essa falha é muito ambígua. É impossível que um dos lados da parte afirme que o outro está errado. Você levou um mês para consertar um bug. E daí! Isso o coloca em uma posição defensiva, ao apresentar fatos para apoiar sua reivindicação de que um mês foi necessário. Dada sua habilidade, experiência e conhecimento atuais como fatores. Como empregador, é tarefa do empregador gerenciar o tempo e os esforços de seus funcionários. O empregador deve ser a pessoa envolvida no risco associado à correção dos erros. Não é o empregado. Ele sempre teve a opção de atribuir o bug a outra pessoa.

Se você é um contratado e afirma no seu contrato que será responsável pela correção de bugs, é uma história completamente diferente.

É errado o empregador reclamar que você está demorando demais? Absolutamente não, mas ele não pode responsabilizá-lo por isso, e ele não pode demiti-lo por isso. Ele pode lhe dizer: "Não temos mais bugs que exijam suas habilidades e você é dispensado", mas eles devem informar no momento em que surgir um novo problema que você poderá corrigir. Caso contrário, eles devem terminar com indenização. O que ele não pode fazer é fornecer um trabalho que você não pode lidar e depois reclamar. Eu acho que isso é ilegal.

Adoro programar e resolver problemas, mas realmente acho meu trabalho muito difícil.

Há uma grande diferença entre aceitar um emprego que você acha difícil e seu empregador oferecer um trabalho que é muito difícil. Se você acha que as tarefas atribuídas a você foram realizadas para desencorajá-lo a ter uma carreira na empresa, isso pode ser ilegal.

Na verdade, sou programador há cerca de 10 anos. Mas este é o meu primeiro trabalho de linux incorporado multithreading - estou aqui há 2 anos e é óbvio para todos que ainda estou lutando.

É por isso que acho que você se viu no meio de uma demissão construtiva. Eles não estão felizes com você, então empilham a porcaria em você até você sair.

E acho que fiquei tão desmoralizado e me sinto tão marginalizado que perdi muito do fogo que tinha no início do trabalho.

Um empregador é responsável por fornecer um ambiente de trabalho seguro e positivo. Sem mais informações (provavelmente pessoais), é difícil para quem está de fora dizer o que realmente está acontecendo aqui. Peça a um advogado de emprego para uma consulta gratuita. Eles poderão dizer se você está sendo jogado.

Referências

Não sou advogado, mas o Google encontrou alguns documentos discutindo o tópico Demissão construtiva que valem a pena ser lidos antes de você escrever sua opinião na segunda-feira. O ponto principal aqui é observar uma redução no salário, humilhação e mudanças repentinas na sua carreira na empresa.

Fatos relevantes atentos a:

  • Falha em apoiar adequadamente um funcionário durante condições difíceis de trabalho
  • Disciplina excessiva de um funcionário Impor uma mudança no local de trabalho dos funcionários a curto prazo
  • Imposição de redução de ordenados ou salários

Perguntas e respostas legais: Demissão construtiva

Razões para pedir demissão construtiva

Wikipedia

elementos de uma demissão construtiva


11
Não é ilegal para dar opiniões negativas de desempenho, mas eles não tem que ser objetivo e concorda critérios viáveis para trabalho e apoiá-lo.
Pjc50

9
Eu pensei, talvez esteja exagerando, quando publiquei essa resposta, mas a leitura da sua postagem ressoou nas minhas próprias experiências. A correção de erros não é algo que pode ser medido com um contexto de desempenho. Passei três meses uma vez para corrigir um único bug. Geralmente, os caras inteligentes são os que mais sofrem com os bugs.
Reactgular

9
Estou votando negativamente porque não vejo provas de que você seja advogado e afirme dar aconselhamento jurídico. Além disso, se outros funcionários estão consertando X bugs em média por mês, mas o OP está consertando X / 10, isso é absolutamente objetivo e razoável.
1013 Andy

7
@ Andy, obrigado por compartilhar o motivo pelo qual você votou negativamente. Concordo que as taxas de correção de bugs são um indicador, mas o que é objetivo em dizer a alguém na sexta-feira que eles têm uma revisão negativa na segunda-feira seguinte. Com exceção de tato fazê-los suar durante o fim de semana. Não é seguro supor que o resultado desejado seria que o funcionário não comparecesse na segunda-feira para a revisão? Isso não seria classificado como demissão construtiva? Espero poder mudar sua perspectiva, porque a demissão construtiva é um problema contínuo em nosso setor.
Reactgular

7
Não há como um juiz decidir que isso é uma demissão construtiva. Você pode se intrometer na letra da lei, mas esse tipo de lei existe para os casos em que um funcionário está sendo assediado ou abusado, uma situação ativamente hostil. Com base no que o OP está dizendo, eles foram informados de que estão recebendo uma crítica negativa porque ele / ela não está se comparando com os colegas no que diz respeito à taxa de correção de bugs; é uma situação difícil, mas dificilmente hostil e certamente não ilegal. Talvez o chefe poderia ter sido mais discreto, mas o feedback não tem de ser restrito a oficiais avaliações de desempenho
Pdubs

26

Talvez você esteja sendo comparado a um dos programadores originais de um projeto. Sei que, como desenvolvedor original de um dos projetos em que trabalho, tenho uma enorme vantagem ao corrigir bugs. Eu não acho que seja por falta de documentação, é só que eu posso intuitivamente pular para problemas em potencial porque meu cérebro conhece todo o código.

Se você está sendo comparado a isso, simplesmente não está à altura. Sempre levará mais tempo para você se familiarizar com o projeto e não saberá onde estão todos os possíveis pontos de interação.

Li o seu comentário sobre não descobrir ferramentas e truques que outros programadores estão usando para resolver problemas. Talvez para a sua próxima correção de bug, você precise tentar a programação em pares. Isso pode ser incrivelmente útil. Se revezam dirigindo o teclado. Converse bastante .

Você pode usar um notebook ou um quadro branco para traçar caminhos de função, threads e vida útil do bloqueio, e marcar onde observa vários bits de comportamento e onde pode inserir novos probes.

Resolver esses tipos de problemas de encadeamento de baixo nível pode ser muito difícil e tenho muita simpatia por você. Eu tive que analisar vários gigabytes de arquivos de log antes para identificar um problema de duas linhas. E sabe de uma coisa? Fiquei olhando isso por dias antes de pedir ajuda a um engenheiro júnior que havia sido estagiário no ano anterior, e ele surgiu com uma nova abordagem e descobriu o problema em uma hora. Então, depois de dedicar algum tempo a um bug, coloque novos olhos nele. Isso pode ajudar muito!


3
Esta é uma resposta fantástica. Estou muito impressionado.
Daniel Hollinrake

26

Uma das disfunções de gerenciamento mais comuns nesse setor é não entender que a depuração é intrinsecamente difícil . Tenho quase 20 anos de experiência e ainda tenho que passar regularmente uma semana inteira descobrindo o erro de uma linha que faz o programa travar uma vez em cada cinquenta. E então, se meu gerente não entender essas coisas, ele me incomodará por levar uma semana para alterar uma linha de código.

O que você pode fazer sobre isso?

  • Faça anotações ao depurar. Apenas sempre abra uma janela do editor e anote seu fluxo de consciência. Não precisa fazer sentido para ninguém além de você. Você pode achar que isso ajuda a depurar mais rapidamente, mas também significa que você tem algo concreto para apontar para demonstrar que não estava jogando Nethack a semana toda.

  • Compare anotações com todos os seus colegas de trabalho. Quanto tempo normalmente leva para corrigir bugs? Seus bugs permanecem corrigidos? Com que frequência eles mudam uma coisinha e se vêem enterrados sob uma pilha de consequências em cascata? As respostas a essas perguntas lhe darão uma idéia de se você está realmente lutando em relação ao resto do departamento.

  • Faça amizade com o pessoal de controle de qualidade e o suporte ao cliente. Eles são os que têm a melhor idéia de quão importantes são os bugs. Geralmente, isso tem pouca ou nenhuma correlação com a dificuldade dos bugs, para que você possa brincar um pouco com o sistema e tentar receber todos os bugs de alta importância e baixa dificuldade. (Isso não é realmente trapaça. Uma equipe bem organizada sempre procura esses bugs primeiro.)

  • Se o seu chefe não fornece feedback adequado sobre o seu desempenho há dois anos consecutivos, esse é um problema a ser apresentado nesta revisão de desempenho e, depois, quando você recebe a resposta, para aumentar com o chefe do seu chefe. Seja educado e, especialmente, não permita que eles vejam como você está com raiva, mas receba críticas específicas por escrito.


4
"A depuração é duas vezes mais difícil do que escrever o código em primeiro lugar." - Brian Kernigan (pai de C, UNIX)
TimG

4
@ TimG: E como todos os outros programadores, Kernigan estava subestimando a dificuldade.
mu é muito curto

Uau, gostaria de salientar que esta é uma pergunta muito difícil e estou realmente surpreso ao ver uma resposta tão boa e perspicaz aqui. Obrigado.
maksymko

12

Embora você goste de programar e resolver problemas, pode haver a questão de quão bem você está aplicando o que está aprendendo em outras áreas. Algum dos últimos doze erros corrigidos foi semelhante o suficiente para ajudar o usuário a corrigir um deles? Isso faz parte de uma retrospectiva do que você fez e quanto tempo levou para fazê-lo. Apenas uma ideia a considerar.

Em segundo lugar, eu examinaria como você está fazendo seu trabalho. Você está sendo interrompido regularmente e, ao tentar corrigir o erro A, é informado que os erros B e C são de maior prioridade? Considere com cuidado que tipos de mudanças na maneira como você faz seu trabalho podem ajudá-lo aqui, pois isso provavelmente faz parte do que seu chefe deseja saber.

Alguns locais de trabalho me disseram que não gostavam de quanto tempo levava para concluir um pouco do meu trabalho. É claro que esses eram os lugares onde, se eu fizesse uma coisa, 5 coisas novas seriam jogadas no meu colo e, portanto, era fácil ficar sobrecarregado. Embora eu possa não mais trabalhar lá, não tive uma boa solução para chamar minha atenção para algumas coisas, de modo que não sinto que estou tentando dominar mil coisas de uma só vez. Se eu puder saber algumas coisas importantes a serem feitas e como meu trabalho será julgado, então eu sou muito melhor do que se eu tivesse uma lista de "tarefas pendentes" com uma milha de comprimento e ninguém parece se importar se eu conseguir partes dele feitas. Assim, pode ser que haja um componente cultural nisso dentro da organização, embora eu tenha cuidado ao pedir que as coisas aqui mudem.


2
ended up getting micromanaged until I was terminated- Bem, acabei de olhar para o seu perfil de SO e você claramente se recuperou, então acho sua resposta animadora. Vou falar sobre o seu primeiro ponto na segunda-feira - estou recebendo bugs de áreas muito diferentes.
BeeBand

10

Depois de dois anos no trabalho, deve ser óbvio para todos (você, seu chefe, seus colegas) qual a sua posição. Ou seja, você nunca deve descobrir que está se saindo mal apenas uma vez por ano; um ambiente de trabalho ideal fornecerá feedback contínuo.

Enfim, sobre como depurar código multithread: você não mencionou se esse é o seu código ou de outra pessoa. Existem alguns novos depuradores e analisadores estáticos que podem lidar com simultaneidade. Mas, na verdade, conhecer os padrões será sua melhor aposta, pois você saberá o que procurar.

Se você entender como seções críticas e condições de corrida e impasse funcionam, estará em uma posição melhor para identificar coisas inesperadas. Se você vir "comunicação" entre dois threads sem variáveis ​​de condição, ou se os recursos forem mutexados sem uma ordem específica, ou se uma variável local for declarada staticsem motivo aparente, você terá um bug em potencial! Portanto, aprenda as melhores práticas do seu domínio e estará em uma posição melhor para julgar quando algo está fora do comum.


2
sim, este não é o meu código - é um vasto sistema incorporado, arquitetado pela primeira vez há 10 anos. Acho que você está certo sobre os padrões - preciso voltar ao básico.
BeeBand

1
@BeeBand, seria bom saber como você se saiu. Espero que as coisas dêem certo.
Daniel Hollinrake

10

Não lute sozinho, a menos que você precise. Recrute colegas. Faça com que eles ajudem na caça aos insetos. Pergunte a eles sobre seu processo de pensamento e ferramentas. Talvez mencione isso em sua análise como parte de seu plano de melhoria. Se todos ao seu redor estão se saindo melhor nesse sistema , talvez eles saibam algo específico?


Seria interessante saber se o BeeBand já fez isso. Lendo os comentários e respostas, parece que é um ambiente bastante hostil.
Daniel Hollinrake

1
Bem, eu posso simpatizar com isso. Eu sei como é estar em uma empresa em que a equipe de desenvolvimento está sobrecarregada de trabalho. Felizmente, no meu caso, trabalho com alguns ótimos colegas e nos cuidamos. Existe alguém com quem você possa emparelhar? O tempo gasto treinando você e ajudando você a se tornar mais produtivo valerá a pena para todos. Pelo som das coisas que você se importa e tem consciência, sua empresa se beneficiaria de mantê-lo.
Daniel Hollinrake

8

Acabei de me dizer pelo meu chefe que vou receber uma avaliação de desempenho negativa na segunda-feira. Ele quer falar comigo sobre por que sou tão lenta e por que minha taxa de correção de bugs é tão baixa.

Esteja ciente de que em qualquer empresa não disfuncional as coisas não acontecem nessa ordem. Se o seu chefe estiver preocupado com o seu desempenho, ele deve definir metas de curto prazo e conversar sobre os resultados para descobrir onde está o problema.

Em vez disso, ele decide fazer uma crítica negativa e descobrir o motivo. Parece que ele não está disposto a se envolver no problema, e ele só quer resultados na tabela.

Não tente resolver erros mais rapidamente. Procure avaliar sua capacidade, verifique como seus colegas trabalham, como eles sabem o que sabem e esteja ciente de que essa não é uma empresa ideal.

Quanto às dicas práticas, eu uso trechos de código e minha própria mediawiki para fazer anotações. Sempre tenho em mente quais livros ler a seguir e que direção seguir para continuar meu aprendizado. Aprender é o caminho para um emprego melhor e uma vida mais feliz.


7

Primeiro, um aumento de confiança:

Por que sofrer? Você pode facilmente encontrar um emprego em que eles pensem que você é "deus", apenas porque você pode fazer qualquer coisa incorporada ao Linux, independentemente da sua taxa de correção de bugs.

De qualquer forma, é impossível estabelecer um limite de tempo para caçar um bug. A caça a insetos é uma habilidade, sem dúvida, e a eficiência é altamente valiosa.

Você pode estar perdendo algum truque básico que os outros conhecem, o que o torna mais lento.

Por exemplo, se você e eu estamos trabalhando em algum middleware Linux, e estou usando o Valgrind para encontrar problemas de corrupção de memória e condições de corrida de dados, enquanto você está apenas confiando no gdb e no printf, provavelmente vou chutar sua bunda, mesmo que você é mais esperto que eu.

Além disso, como você entende a concorrência ? Se você está desenvolvendo há dez anos, mas a maior parte dessa experiência não foi com código multithread, isso pode ser um problema.

Você deve estudar o multithreading em detalhes: mais do que apenas saber como usar as APIs, mas realmente "obtê-las" em um nível profundo. Se você estiver fazendo programação multithread, você deve ser o desenvolvedor que pode olhar para uma base de código a uma milha de distância e identificar cenários de condições de corrida, impasses, inversões de prioridade, fome ...


1
O maior problema com a simultaneidade é que é muito mais fácil escrever código livre de erros do que corrigir erros no código de buggy. Especialmente se o código estiver quase correto. E os bugs geralmente não estão em um lugar, mas distribuídos em muitos.
gnasher729

5

Recentemente, li o livro Trabalhando Efetivamente com o Código Legado e isso me deu um impulso significativo de confiança ao lidar com um problema em qualquer base de código.

Se o código com o qual você está trabalhando for algo menos que perfeito, acho que este livro seria útil. Descobri que, na maioria das vezes, para corrigir um erro, primeiro preciso refatorar o código ao redor para entendê- lo e, depois que eu entender o código, e espero torná-lo testável, rastreando e corrigir o problema é menos uma provação. (Às vezes, até reescrevi o código apenas para entendê-lo, mas depois reverto minhas alterações para reduzir o risco de introdução de novos bugs. Depois insiro minha correção de bugs. Essa técnica é baseada em um truque do livro.)

Acho que minha sugestão aborda apenas parte do seu problema, e de certa forma indiretamente, mas vale a pena ler o livro, não importa o que aconteça, pois trabalhar com código legado é uma inevitabilidade para qualquer desenvolvedor.


Atualmente, estou lendo isso por sua recomendação.
BeeBand 31/08

3

Pergunte ao seu superior qual é a sua velocidade de correção de bugs e qual a velocidade média da equipe para corrigir bugs. Mais importante, pergunte a ele como é medida a velocidade de correção de bugs ...

Esse tipo de métrica não é realmente uma métrica; se fosse, seria ainda mais confiável que o LOC (embora medindo coisas diferentes). E sem uma medida adequada, não há razão para acusá-lo de qualquer coisa.


Presumivelmente, é medido como problemas fechados / unidade de tempo . Pode ser razoável dizer "bem, alguns bugs demoram mais que outros", mas, a menos que o OP esteja trabalhando em uma parte particularmente difícil do código e todo mundo esteja fazendo coisas fáceis, provavelmente isso não vai atrapalhar.
Caleb

3

Reconheça que você trabalha COM empregadores e / ou cliente, NÃO para eles. Não hesite em mencionar isso nas entrevistas, apenas para esclarecer as coisas desde o início.

Você é um profissional com muito investimento em sua pequena empresa, ou seja, você mesmo.

Você está disposto a trabalhar enquanto houver um sindicato de interesses levando-o para fora da prateleira todos os dias.

Se essa propulsão não existir por um período de tempo, siga em frente.

Você está desperdiçando seu tempo e energia em um empregador que não mantém seu interesse / habilidades atualizadas / tarefas desafiadoras e / ou interessantes para você trabalhar. Esse é o trabalho da gerência. Fora isso, eles são pura sobrecarga .....

Mantenha sua paixão, pois essa é a chave.


2

Estive em situações semelhantes porque tinha medo de pedir ajuda. A julgar pelo que você disse neste comentário ...

"Mas o que é frustrante é que existem certas ferramentas / dicas / truques que eu só descobri depois de estar lá um ano e meio. Eu mudei de equipe para equipe (acho que porque eu estava com baixo desempenho) e estou descobrindo essas ferramentas 'ocultas' de vez em quando. "

... você pode ter tido o mesmo problema que eu. A depuração é tão fácil quanto escrever código que não requer tanta depuração em primeiro lugar. Observar outros desenvolvedores trabalhando com um problema de depuração pode ser altamente educativo. Peça ajuda a eles quando tiver problemas para resolver algo. Especialmente se você estiver cobrindo um terreno que não tinha antes. E faça-o idealmente antes que seja hora de entrar em pânico, porque você não está fazendo nada.

Dito isto, concordo com os comentários de que a gerência estava fazendo algo errado. Se alguém está lutando com alguma coisa, deve obter ajuda antes que a diversão negativa da revisão comece. Inferno, se alguém em uma equipe está lutando e nunca recebe ajuda, eu diria que todos os membros dessa equipe estão fazendo algo errado (embora isso possa ser um resultado direto de pessoas observando suas taxas de correção de erros excessivamente).


2

O que está faltando no OP é qualquer menção a um processo ou método repetível que está sendo seguido para resolver bugs.

Então, primeiro, documente o processo que você segue. Certifique-se de documentar o que cada etapa do processo deve alcançar.

Você pode descrever o processo como tendo tarefas como esta:

  1. Certifique-se de entender exatamente qual é o problema que está sendo relatado.
  2. Tente reproduzir o problema.
  3. Comece a dividir o problema em pedaços menores
  4. Pense nas possíveis causas do problema.
  5. Teste essas hipóteses

Seria útil saber se os erros existem há muito tempo ou estão sendo introduzidos com alterações recentes. Se os erros foram introduzidos com alterações recentes, fazer revisões de código e / ou apenas ler o código que as pessoas estão criando pode ajudar.

Eu acho que se você pode definir claramente o problema, por exemplo, "Eu tenho problemas para pensar em hipóteses a serem testadas ao tentar resolver bugs", então você pode obter conselhos mais focados.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.