Estou trabalhando em um projeto que tem um cronograma muito apertado. Não tenho muito tempo para codificar e testar (embora eu trabalhe mais de 12 horas todos os dias, ainda está atrasado), e o resultado é muito frágil. Seu código também é muito dilema.
Este programa é usado por todos os escritórios da empresa de nossos clientes, localizada em muitos países. Eu recebo telefonemas regularmente à meia-noite sobre erros de nosso usuário / testador ou sobre eles não saberem usar alguns recursos.
Depois de três anos nesse projeto, sinto-me muito estressado e não consigo dormir bem porque estou muito preocupado com erros e telefonemas.
Eu tenho algumas perguntas:
- Por três anos, todo o código que escrevi é apenas o código do cenário de uso perfeito (para que ele se quebre facilmente). É mal projetado e não possui nenhum teste de unidade. Eu tenho muitos problemas por causa disso. Portanto, quero saber se é possível escrever código que funcione quando o projeto tem um cronograma muito apertado?
- Como posso escrever um código melhor na mesma quantidade de tempo?
- Como posso clarear minha mente e não ficar preocupado com o trabalho quando vou dormir?
time-management
Anônimo
fonte
fonte
Respostas:
Banir chamadas telefônicas
Se seus usuários estão em todo o mundo, certamente não podem esperar que você atenda um telefone quando forem quatro da manhã e você estiver na cama. Eu proibiria telefonemas e mudaria para outros meios de comunicação que possam atender melhor a esse cenário (email ou algum banco de dados de rastreamento de problemas). Mas mesmo no escritório, faça uma programação agendada de acessibilidade por telefone. Caso contrário, você não poderá fazer nada durante o período em que estiver no escritório.
Isso proporcionará um sono e descanso valiosos.
Horário apertado
Se esse projeto foi apertado por três anos, alguém deve suspeitar de algo que realmente não está funcionando. Talvez já esteja na hora de alguém dizer aos planejadores algo e especialmente aos seus usuários / clientes e gerentes que este é um projeto de marcha da morte. Está em desenvolvimento há três anos, está atrasado e está cheio de bugs. O plano deve ser completamente reavaliado, o código existente deve ser refatorado e os novos recursos não devem ser desenvolvidos até que vários problemas sejam resolvidos.
Ordem do caos
Estabeleça uma metodologia de desenvolvimento que torne as coisas previsíveis e suportáveis para você. Se você é um desenvolvedor, atender chamadas telefônicas quando elas entram não permite que você faça nenhum trabalho. Cada interrupção leva 15 minutos para voltar ao ponto em que você parou. As chamadas telefônicas devem estar desligadas . Pelo menos em sua mesa porque você é um desenvolvedor. Se você puder redirecionar chamadas telefônicas para outra pessoa que não o incomodará após cada ligação, isso será feito.
Estabeleça algum tipo de banco de dados de incidentes / erros. Dedique algum tempo todas as manhãs quando chegar ao trabalho e priorize novos incidentes (você, sua equipe ou seu cliente / gerente). Tente resolvê-los nessa ordem posterior de prioridade e nem tente pensar em telefonemas.
E se
E se você não puder desligar o telefone e não puder dizer aos usuários que eles não podem ligar para você quando quiserem? Se você tiver o número de telefone do usuário, sugiro que você faça o oposto: quando ele ligar para você, faça um aviso e informe que você ligará de volta quando ele for solucionado. Depois, ligue de volta quando estiverem dormindo. Se eles lhe disserem que estão dormindo, lembre-se da resposta e use-a quando ligar para você no meio da noite da próxima vez. As pessoas geralmente entendem melhor sua própria língua.
Se eles usarem o telefone do escritório e você usar um telefone celular para que não possa telefonar para ele fora do horário de trabalho, eles podem começar a desligar o celular depois de sair do escritório. Você está lá há 12 horas e merece estar fora do trabalho. Se o seu telefone celular for seu, sua empresa deve comprar um novo e você deve informar seus usuários / clientes sobre isso. Se eles começarem a ligar para você pessoalmente depois (porque eles não podem entrar em contato com você na sua empresa, você também:
A coisa mais importante
Não desenvolva nenhuma nova funcionalidade até resolver os problemas existentes. Pelo menos de alta e média prioridade.
fonte
A menos que você seja a única pessoa na equipe - nesse caso, você provavelmente está a meio caminho da estrada para se esgotar - se revezam com o 'pager'. Isso deve diminuir a carga por enquanto.
Então você precisa dizer à gerência que eles precisam agendar uma fase para pagar a dívida técnica - isso significa teste, limpeza de código, refatoração. E isso precisa ser agendado em breve. Geralmente, isso significa que, por um tempo, não há novo código que não seja uma refatoração ou um teste. Se não, só vai piorar.
Uma vez nessa fase, você escolhe as seções mais problemáticas da base de código, refatora-a, limpa-a e escreve testes para testar a merda dela. Quando as chamadas param ou podem ser tratadas sem que os desenvolvedores enlouquecem, você está pronto para outra fase dos recursos (se é isso que eles querem). Nesse ponto, você escreve testes com o novo código e continua executando as regressões. No momento, o software parece estar no caminho de uma reescrita.
Pontos de venda para sua conversa com seu chefe:
Sejamos honestos. Até o momento, sua empresa não achou que esse fosse um problema grande o suficiente para se fazer algo; você vai queimar. Parece que ninguém na administração tem uma experiência real de desenvolvimento. Comece a procurar.
fonte
Embora possa haver algumas técnicas que permitirão obter pequenos ganhos de produtividade, um aumento de 5% na produção do trabalho é pior do que inútil para você no momento. A verdadeira habilidade que você está perdendo aqui é simples e fundamental:
Aprenda a dizer não
Diga não a todas as expectativas irracionais que você já sabe que deveria recusar. Você sabe o que são. Isso é óbvio. Se você não pode dizer não agora, encontre um emprego onde puder. Empregadores inteligentes acharão essa habilidade desejável.
fonte
Comece entendendo que seu projeto falhará se nada mudar. Este é o passo mais importante para fazer o que você precisa fazer. Um desenvolvedor não pode sustentar 12 horas por dia de esforço e pode produzir código útil. Você chegará a um ponto em que criará erros estúpidos e perderá o progresso porque precisará começar todos os dias consertando o que fez no dia anterior. Parece que você já está lá.
Há dois problemas principais que precisam ser resolvidos antes que você possa ter sanidade novamente:
Para corrigir sua situação, você precisa da adesão da gerência. O problema é que eles não estão sentindo dor e você não quer acabar no hospital com um derrame para chamar sua atenção. O primeiro passo é explicar à sua gerência onde você está e a pressão que está sofrendo. Se não conseguirem, suba outro nível de gerenciamento. Ou, possivelmente, descreva suas condições de trabalho para o departamento de RH. Exigir que você trabalhe mais de 8 horas por dia por longos períodos de tempo pode ser uma violação da lei, e o departamento de RH terá certeza.
Supondo que a gerência ouça o seu pedido, você deseja executar as seguintes ações:
Depois de concluir a versão crítica, é hora de planejar a próxima. Todos os recursos e correções de bugs precisam ser priorizados e as liberações precisam ser planejadas em torno de um subconjunto da carga de trabalho pendente. Você descobrirá que, ao trazer alguma sanidade à sua vida profissional, seus níveis de estresse diminuirão, sua qualidade aumentará e você será mais eficiente em geral.
fonte
Você parece estar sofrendo com o que considero um caso de economia falsa , e quanto mais você aderir a essas coisas que não funcionam, pior será o seu problema.
Alguns indicadores principais:
A resposta curta é sim. A resposta longa é complexa e exigirá uma mudança maciça de percepções em nome da gerência e, possivelmente, também do cliente, e um esforço hercúlea da sua parte ... mas voltarei a tudo isso em um momento.
Realisticamente, você não pode se supor que pode fazer qualquer coisa que lhe poupe tempo e ainda assim obtenha um resultado perfeito. Você precisa aplicar técnicas que aumentarão o tempo necessário para implementar seu código, porque você precisará de um tempo para se concentrar em obter os detalhes corretos. Isso leva tempo, e é aqui que suas falsas economias estão mais afetando você. No entanto, ao fazer as coisas de uma maneira melhor, você melhora a qualidade do seu código e isso, por sua vez, resultará na redução da fragilidade do seu sistema. Mais uma vez, vou explicar isso mais adiante.
A ansiedade causa falta de sono e a perda de sono cria ansiedade. Este é um círculo vicioso, se é que houve algum, e se não for controlado, provavelmente levará à depressão gêmea do mal da ansiedade . A perda crônica de sono, que suponho que seja provavelmente combinada com a falta de exercício e também com maus hábitos nutricionais, provavelmente resultará em fadiga crônica . Tudo isso é sintomático de todos os problemas que você está enfrentando no seu local de trabalho e dos problemas resultantes que provavelmente está enfrentando em sua vida doméstica. É aqui que reside a maior evidência de falsas economias, e provavelmente é o problema mais sério com o qual você precisa lidar primeiro.
Antes de mais nada, devo declarar que não sou um profissional médico, e você deve procurar aconselhamento com seu médico antes de agir sobre qualquer coisa. Observarei, no entanto, que vivi as experiências que você descreveu em sua postagem e sei como é difícil lidar com elas e como é importante fazer algo a respeito. Eu vivi a depressão, a ansiedade, o cansaço crônico, o estresse e todos os outros pequenos problemas que os acompanham, por isso vou oferecer alguns conselhos com base nessas experiências:
Agora que analisamos todas as coisas relacionadas à medicina, vejamos o que você pode fazer sobre o seu trabalho:
Em termos de coisas reais relacionadas à programação:
Mais importante de tudo, você precisa gerenciar as expectativas, começando pelas suas. Você é apenas humano e só pode fazer muito a qualquer momento. Você precisa gerenciar as expectativas de seu chefe e fazer com que ele se encarregue diretamente) de gerenciar as expectativas de seus clientes. Isso significa priorizar seriamente o trabalho que você faz. Aloque tempo para novos recursos e tempo para bugs e assuma que seus prazos serão cumpridos. Ao lidar com a possibilidade de adiar as datas de entrega, prometa apenas fornecer um conjunto de recursos críticos e deixe o restante como "agradável de ter, se possível". Na próxima data de entrega, você passará novamente por esse processo, aumentando as prioridades do prazo de entrega anterior e assim por diante. Construa isso em sua metodologia de desenvolvimento como um ponto de partida mínimo, e depois revise após algumas entregas para ver onde você pode ajustar seus processos e melhorar sua eficiência. As maiores eficiências virão de suas mudanças no estilo de vida, no entanto, sempre há poucas coisas que você pode fazer para otimizar seu trabalho, como reduzir as despesas gerais relacionadas à documentação e comunicação entre você e os usuários finais.
Seja proativo em tudo isso. Mostre ao seu chefe que os dois podem trabalhar juntos para melhorar realmente os assuntos, o que acabará refletindo bem em vocês e na empresa em geral.
Além disso, não tome decisões drásticas agora. Espere até que você lide com sua saúde e sua carga de trabalho e veja como vai por um tempo. Quando sua mente ficar mais clara e quando você sentir que está em um lugar melhor, será a hora de decidir se vale a pena ficar ou se é hora de seguir em frente. O que estou dizendo basicamente é lidar com um problema de cada vez e deixar o resto mexer um pouco até que eles precisem de sua atenção.
fonte
Se sua agenda é pequena, você precisa ser compulsivo quanto a Não se repita . Identifique os métodos mais usados e garanta que eles sejam reutilizados fortemente.
Planeje o que você estará trabalhando hoje, anote e cumpra-o. Tente limitar o que você precisa lembrar a qualquer momento a sete ou menos itens.
Eu daria mais um passo e evitaria repetir o trabalho de outras pessoas. Use as bibliotecas do idioma sempre que possível. Use bibliotecas de terceiros, se possível.
Pode parecer que leva mais tempo para escrever, mas procure métodos que façam apenas uma coisa. Limito um método a tomar decisões ou a fazer coisas. A coesão do seu código deve aumentar enquanto o acoplamento diminui. Você deve achar que o teste é mais fácil. Isso se presta bem à decomposição progressiva.
Simplifique o máximo possível. Use modelos, listas de verificação e quaisquer técnicas que permitam evitar pensar em trivialidades.
Você precisará evitar interrupções. Cada interrupção custará cerca de 15 minutos na programação. Proteja seu tempo.
Se isso for de longo prazo, vá para casa quando descobrir que seu desempenho está ficando lento. Se você trabalha constantemente 12 horas por dia, é provável que seu desempenho seja o que você obteria trabalhando 8 horas por dia. Você pode não perceber o quanto seu desempenho está degradado. Aproveite as quatro horas extras para se exercitar e descansar. Veja se você pode tirar uma soneca no meio do dia ou tirar algumas horas depois do almoço.
fonte
Se eu fosse você, conversaria com meu gerente e explicaria a eles que os prazos que eles estão estabelecendo não são realistas. Se você continuar trabalhando assim, eles acharão que está tudo bem, eles não estarão cientes dos problemas que você está tendo e você acabará adicionando cada vez mais código mal escrito ao seu sistema, o que vai complicar ainda mais o seu trabalho.
Como alternativa, você sempre pode mudar para outro trabalho :-)
fonte
Acompanhe tudo o que você faz
Reserve um tempo para rastrear tudo o que você faz e quanto tempo você e sua equipe gastam nisso. Isso acabará sendo o que você traz para a gerência para mostrar a eles que você precisa fazer as coisas de maneira diferente. Se você não tem os fatos concretos sobre o que está fazendo e quanto tempo está gastando para corrigir os problemas relatados por outras pessoas, será muito mais difícil convencê-los de que mudanças precisam ser feitas. Cada hora deve ser rastreada por todos para que isso seja preciso. Isso deve ser usado para dizer que você passou 80 horas nas últimas 3 semanas consertando um sistema que poderia ter sido reconstruído desde o início na mesma quantidade de tempo.
Tente mudar as coisas
Use o rastreamento que você reuniu e as ótimas sugestões que outros fizeram para elaborar um plano para melhorar o software. Escolha as partes do software que estão causando mais problemas. Elabore o plano que você acha que trará as coisas a um ritmo gerenciável normal. Dê tempo para trabalhar.
Prepare-se para o fato de que talvez seja hora de sair
Se a gerência não estiver disposta a mudar as coisas e trabalhar com você, talvez seja hora de pensar em seguir em frente. Eu concordo com os outros que você está queimando. Comece a preparar seu currículo e portfólio. As coisas podem melhorar e você não precisará seguir em frente, mas se a gerência não se comprometer a fazer alterações, siga em frente. Sua saúde mental e física é mais importante do que permanecer em um emprego que está tirando muito de você.
fonte
Pelo amor de Deus, onde está o seu gerente de projeto?
Se você não possui um gerente de projetos para ajudá-lo a estabelecer um tempo produtivo, precisa de um. Você precisa de uma pessoa dedicada a manter seu tempo de desenvolvimento, limitar a fluência do escopo, gerenciar expectativas, etc.
Você faz um trabalho criativo para viver. Se você não tem uma barreira entre seus clientes / usuários e você, como você pode se concentrar efetivamente no seu desenvolvimento?
Um bom PM pode ser bom para muitas coisas ...
1. Para jogar a carta 'Higher Power':
Seus usuários estão incomodando você por novos recursos, mas você realmente precisa de algum tempo para se concentrar em uma versão de correção de bug. Quem disse que você tem que conversar com os usuários? É sua responsabilidade escrever os contratos? É seu trabalho gerenciar as expectativas dos clientes? Você tem poder de decisão final para ditar os termos do contrato?
Não? Então, por que você é o único responsável por interagir com o cliente? O desenvolvimento é difícil e requer muita concentração. Você precisa recuperar o tempo de desenvolvimento e pode fazê-lo com uma boa MP e uma boa desculpa.
Independentemente do que o seu PM faça em relação a você, se os clientes começarem a incomodá-lo com modificações fora das especificações, basta dizer.
É uma maneira educada de dizer, eu não dou a mínima.
Siga isso doendo o 'Scope Creep Dog' neles.
Agora me deixa em paz. A capacidade do usuário de interagir diretamente com os desenvolvedores é permitida como um privilégio que pode ser retirado. Se não for esse o caso, sua administração está falhando com você.
2. Gerenciando expectativas 101
Quem em sã consciência pensa que você pode trabalhar com uma agenda tão louca e lidar com o suporte técnico 24/7. Você precisa de alguém para defendê-lo, porque seu tempo é valioso e deve ser dedicado ao seu ofício.
Isso se aplica aos clientes e à empresa em que você trabalha. Para os clientes, se eles estão ultrapassando, você sempre pode perguntar ...
Caso contrário, você tem o direito de rejeitar solicitações. Não me entenda mal, é bom ir além para deixar seus clientes felizes, mas é igualmente importante que eles saibam a diferença entre o que é esperado e o que você está dando a eles como um favor.
Para a empresa em que trabalha, você precisa de alguém para transmitir a mensagem ...
Ou seja, eles estão pagando 60 mil por ano para gastar 50% do seu tempo prestando suporte técnico por telefone, o que é uma posição de pagamento muito menor. Esse é um tópico perigoso para abordar, para que você precise de um gerente de confiança em que possa confiar. O argumento que você deve fazer para ele é ...
Ou, vocês me contrataram e estão de bom grado perdendo dinheiro com esse investimento, fazendo com que eu gaste metade do meu tempo preenchendo uma posição de baixa nota. Acredite ou não, maximizando seu potencial, eles podem ganhar mais dinheiro a longo prazo.
Quando se trata de negócios, é muito mais fácil fazer com que a empresa mude de posição se você pode apresentar uma situação em que todos saem ganhando. Você não precisa ser um mestre em negociação para que este continue. Obviamente, se os recursos da empresa forem limitados, isso poderá sair pela culatra.
3. Todo mundo poderia usar uma líder de torcida às vezes
Um bom PM será naturalmente uma pessoa-pessoa. O núcleo do que eles fazem é as relações das pessoas. Um bom PM terá a capacidade de dizer ao seu cliente o que ele não quer ouvir e ainda assim deixá-lo ir embora feliz.
Eles também podem ser uma grande fonte de apoio moral quando os tempos ficam difíceis. Um simples impulso moral não deve ser demais para um bom PM lidar, se você perguntar. Você precisa de alguém do seu lado, ou o seu moral diminui e o trabalho parece esmagador.
Se você não tem alguém mais alto na organização que é responsável por gerenciar as expectativas, seu gerenciamento está falhando e os superiores provavelmente nem sabem o quão ruim está o projeto.
Essa é a principal razão pela qual evito trabalhar para empresas como a praga. Tive a sorte de trabalhar para empresas menores, onde tenho alguém mais alto. Posso honestamente discutir problemas com quem manterá confidencialmente o que tenho a dizer e tomará medidas, se necessário.
Você precisa de alguém do seu lado para ajudar a mantê-lo alinhado com os requisitos de negócios e gerenciar distrações. Se você não tem isso e não há esperança de encontrá-lo no futuro, boa sorte ...
fonte
Uau uau uau ! Segure o seu cavalo cowboy !. Você parece ter um desenvolvimento totalmente errado lá. Você está perdendo alguns fundamentos de software aqui durante a codificação. Sim, retifique seu básico ... a vida será muito mais fácil.
De volta à hora da escola agora
fonte
Eu gosto de fazer uma lista de tarefas, classificá-la em ordem de necessidade e manter essa ordem incondicionalmente - mesmo que eu queira procrastinar algumas tarefas.
Você ficaria surpreso com quanto tempo você pode economizar apenas reduzindo o tempo gasto pensando no que trabalhar em seguida.
fonte
Agora, o que você pode fazer é
Isso significa que pelo menos o que você faz a partir de agora foi aprovado por DUAS pessoas, com esperança de melhorar esses bits de código.
O que mais pode ser feito depende do gerenciamento. Você pode mostrar a eles esta pergunta com as respostas!
fonte
Interrompa telefonemas e implemente uma regra estrita de "bugs vá apenas para o rastreador de erros". Então, o seu primeiro passo do dia é fazer a triagem de bugs recém-inseridos, limpar duplamente, priorizar e começar a trabalhar com as correções de bugs PRIMEIRO. E certifique-se de que suas correções realmente corrigem o erro e não introduzam novos erros.
Como você faz essa última parte? Atualizando casos de teste em seu código existente. Se você tiver funções, teste se elas inserem e produzem o que você espera e que elas falham bem se você der a elas lixo. Use algum tipo de teste automatizado da interface do usuário para testar a integração e o desempenho frente a frente.
Você não está saindo da cama às três da manhã para resolver problemas de código, está? Nesse caso, você merece tudo o que recebe.
fonte
Tente usar a técnica pomodoro . Além disso, tenho três regras pessoais para saber se estou escrevendo um código bom ou ruim que você pode achar útil.
fonte
Você e desenvolvedores como você são a única razão pela qual consigo pensar em exigir uma licença de desenvolvimento de software, como médicos e advogados. Dessa forma, sua licença pode ser revogada por não seguir boas práticas básicas mínimas de programação. Além de proteger o setor de incompetentes, protegerá também os programadores competentes dos gerentes que insistem em que os programadores não sigam boas práticas.
Para sua informação, praticamente todo mundo trabalha em um prazo apertado. No entanto, os desenvolvedores que sabem o que estão fazendo seguem as práticas recomendadas porque o trabalho é feito mais rapidamente a longo prazo. Então eles não precisam trabalhar 12 horas por dia durante 3 anos seguidos.
fonte