Antecedentes do meu ambiente de trabalho
Meu gerente não tem experiência ou conhecimento de computadores ou software. É muito provável que ele não tenha visto código de nenhuma forma (nem mesmo a uma distância física de três metros ou menos) em sua vida.
Não há ninguém que entenda a complexidade do que me pedem para implementar. A tal ponto que se eu semi-codificasse ninguém saberia.
No teste de Joel, obtemos uma pontuação inacreditável 0.
Os problemas
- O gerente e outras vezes "sênior" continuam alterando a especificação de requisitos. Alterações que, se uma boa engenharia for feita e não "correções" irregulares, exigirão alterações no design subjacente.
- Não existe absolutamente ninguém que veja o código (provavelmente porque ninguém sabe como, ou mesmo se deve ser feito), o que significa que ninguém jamais será capaz de:
- Aprecie a complexidade do problema ou a elegância da solução.
- Sugira melhorias para a abordagem.
- Aprecie a qualidade do código.
- Indique onde o código pode ser aprimorado.
- Muito jargão é usado, o que faz sentido gramaticalmente, mas não faz sentido de outra maneira.
- Não se sente, se comporta ou funciona como uma empresa de software.
A questão
O que deveria ser feito? Especialmente em relação a não haver ninguém que apontasse melhorias no meu código.
Atualizar
Para responder à pergunta do HLGEM (e possivelmente de outros) sobre o que eu fiz para tentar corrigi-lo. Ofereci-me para configurar o Redmine e introduzir o controle de origem para todos. Eu disse que recomendaria distribuído (git ou mercurial), mas também falaria sobre os centralizados e deixaria a equipe decidir. A resposta foi que as coisas estão sendo feitas e serão feitas dentro de semanas. Não vi isso nem sei se outras partes da empresa o usam.
fonte
Respostas:
A versão curta :
Corre.
A versão um pouco mais longa :
Se o gerente não souber como executar um projeto, e se o senior concordar com ele, você terá quase nenhuma chance de consertar as coisas.
Para gerenciar projetos de software, um gerente precisa entender algo sobre software. Se os gerentes não, eles precisam aprender primeiro. Quais são as suas chances de convencer sua gerência e seus séniores a entenderem tudo errado? Quais são as chances de você lhes ensinar alguma coisa?
Eu já estive em uma situação semelhante uma vez (apenas não havia seniores). Parei depois de um ano terrível e nunca olhei para trás (exceto com nojo).
fonte
Parece o mundo real. Isso acontece o tempo todo, em qualquer lugar. Sim, é péssimo, mas é suportável com algum tipo de atitude ágil. Além disso, uma medida da qualidade do software é sua maleabilidade. Tome isso como um desafio.
Novamente, não parece tão familiar ;-)
Nem mesmo você? Se você entende isso, então há uma pessoa no espelho que entende isso. Portanto, sua responsabilidade pelo bem-estar da sua empresa é provavelmente mais pesada do que o seu título formal sugere. Se você entende os problemas e seu gerente não, é de sua responsabilidade deixar as coisas claras para a gerência, para que elas possam direcionar adequadamente a empresa. Pode ser razoável supor que seus gerentes mais próximos deve ser tecnicamente competente (não necessariamente tão competente quanto você - enquanto eles são gerentes, você é o especialista - mas pelo menos um pouquinho competente), mas se eles não são obviamente e você poderia ajudá-los, por que não?
Uma solução escapista simples é mudar de empresa. Mas como outra opção, considere implementar os itens do teste Joel. Embora os itens de 5 em diante exijam mais cooperação com a gerência, os itens de 1 a 4 são tais que você pode configurá-los sem perguntar a ninguém.
Dito isto, ninguém aqui no SE pode conhecer sua situação exata. É possível que você esteja em uma empresa lotada de idiotas incompetentes, e fazer algo de bom com essa bagunça pode ser demais para qualquer um. Você deve avaliar a situação você mesmo.
fonte
Você diz em um dos comentários que este é seu primeiro emprego. Os gerentes geralmente não são técnicos em lugar algum, exceto na minha experiência em uma loja de software dedicada. Isso faz parte da vida, apenas se acostume com isso.
Você chora e se queixa porque não há ninguém que aprecie a elegância de suas soluções. O verdadeiro problema aqui não é que não haja ninguém para apreciar a elegância de suas soluções, mas que não haja ninguém para lhe ensinar que suas soluções não são tão boas quanto você pensa que são. Praticamente todos os novos programadores superestimam suas habilidades reais. Sem mentor, não há ninguém para ajudá-lo a melhores práticas. Se não houver ninguém lá para orientá-lo, participe de grupos de usuários locais, participe ativamente e leve alguém para orientá-lo. Melhor ainda, isso o ajudará a encontrar um emprego melhor eventualmente.
Você marca um zero no teste Joel? Se você é o único codificador (e parece que você escreveu), eles não estão usando o controle de origem? O que está impedindo você? Se você não é o único codificador, por que ninguém pode fazer análises de código? Todos os nossos desenvolvedores fazem revisão de código, não é uma função de gerenciamento, especialmente quando os gerentes não são técnicos.
Os requisitos mudam em praticamente todos os lugares. As necessidades comerciais mudam continuamente e os não programadores geralmente não conseguem visualizar o que o programa fará até que eles façam algo. Então eles percebem que não é o que precisam. É por isso que o Agile surgiu realmente porque os métodos mais antigos não estavam lidando bem com essa mudança.
Configure o rastreamento de erros, mesmo que o gerenciamento não queira inserir os dados. Seja responsável por inserir novos erros / recursos à medida que alguém os mencionar. Realmente ajuda poder dizer ao gerente, quando ele quer uma mudança, que lhe foram atribuídas outras 27 coisas, e aqui está a lista. Qual você deseja que eu mova para baixo na lista de prioridades para acomodar essa nova alteração? Isso ajudará no momento da revisão, pois você poderá contar o número de correções e recursos implementados. Se todo mundo não está usando, pelo menos você pode fazer o seu próprio trabalho. Se eles não permitirem a instalação de nenhum software, use uma planilha do Excel. Tome alguma iniciativa. Depois que você mostrar os resultados, outros ficarão mais interessados. Se você acha que há muito trabalho para uma pessoa, o rastreador de erros o ajudará a provar isso.
Não faça demonstrações de aparência polida! As demonstrações devem parecer rabiscadas com caneta em um pedaço de papel. Quanto mais polida a interface, mais a pessoa não técnica pensa que está concluída.
Mesmo que ninguém saiba se você não segue as práticas recomendadas e o código semi-difícil, por exemplo, você saberá e entrará em maus hábitos desleixados. Isso não o servirá bem em seu próximo emprego. Portanto, faça as coisas o mais próximo possível da maneira correta, dadas as circunstâncias. Certifique-se de escrever testes (considere isso como parte do tempo de desenvolvimento e reserve tempo para fazê-lo em qualquer estimativa que você administre, mesmo que você não diga especificamente que isso faz parte da estimativa) e use-os para garantir mudanças posteriores não quebram outra coisa.
Você precisa ver isso como uma oportunidade inestimável para crescer e melhorar. Você tem mais liberdade na codificação real do que muitas pessoas têm nessa fase da sua carreira. Portanto, considere isso uma oportunidade para criar um portfólio de projetos implementados com sucesso. Quando você procura o próximo trabalho, ser capaz de apontar realizações como controle de origem instituído, rastreamento de erros instituído, número X criado de implementações bem-sucedidas de projetos etc. fará com que você se destaque do resto.
Você também tem uma grande oportunidade aqui para aprender como gerenciar as expectativas para cima. Isso é algo que será útil no resto de sua carreira. Você não tem nada a perder ao tentar fazer isso aqui, as coisas já não são boas. Mas você pode aprender as habilidades políticas que o ajudarão em lugares melhores posteriormente. Aprenda a fazer uma análise de custo-benefício. Aprenda a subestimar o domínio comercial para que você possa ser convincente ao conversar com eles. Aprenda a falar em termos de benefícios para a empresa e lucro. Faça estimativas para todas as tarefas que lhe foram atribuídas e, mesmo que não correspondam ao que o gerenciamento lhe oferece, mantenha registros do que você estimou e do que foi realmente necessário para melhorar sua capacidade de estimar o trabalho. Depois de mostrar que suas estimativas historicamente foram mais precisas que as de gerenciamento, eles serão mais propensos a ouvir quando você diz que a estimativa é muito baixa. Mas é preciso construir um histórico primeiro de estimativas mais precisas e, mais importante, da capacidade de entregar os projetos e fazê-los funcionar. Novamente, é uma boa habilidade a ter à medida que você avança em sua carreira.
Acima de tudo, não seja passivo e espere que a melhoria venha de cima.
fonte
Se eu fosse você, tentaria encontrar outro emprego. Por quê? Eu acho que você sabe que, infelizmente, seu gerente não é bom. Você deve tentar resolver algumas coisas com seu gerente.
Se você não quiser sair, e / ou não vai falar com ninguém, terá que encontrar alguma coisa. Se ninguém na empresa conhece seu código, como seu gerente deve saber que você atende aos requisitos? Apenas dizendo.
fonte
Converse com seu gerente e com os idosos sobre isso. Explique seus problemas e sugira soluções. Prepare a conversa um pouco para que você saiba a mensagem geral que deseja transmitir.
Após a conversa, aguarde um pouco . Veja se as coisas mudam ou não. Caso contrário, tente implementar você mesmo as alterações e mostre ao gerente e aos idosos os resultados positivos de suas alterações .
Se a conversa não ajudar e suas alterações forem descartadas, você deverá avaliar por si mesmo o quanto gosta de trabalhar naquele local. Sim, o trabalho pode ser ruim, mas talvez o pagamento seja bom e você tenha apenas uma viagem de 5 minutos? Os aspectos positivos do seu trabalho superam os negativos? Se eles não, eu começaria a procurar um novo emprego.
fonte
Seu problema é que os sistemas de emissão de bilhetes e o controle de versão são questões TÉCNICAS e você deve fazer isso independentemente da entrada de um gerente não técnico. Isso deve ser assumido como uma prática recomendada tecnicamente e, se eles não tiverem essa configuração, você deve fazer isso acontecer.
Você não pode esperar que um gerente não técnico entenda os benefícios do rastreamento de defeitos, controle de origem e integração contínua. É por isso que eles não são técnicos, não devem saber ou se importar com isso, são especialistas em domínio e conhecimento de negócios. A única coisa que eles devem fornecer é orientação e requisitos de alto nível.
Também tenho um gerente não técnico e fui capaz de aumentar a pontuação do Teste Joel de 4 para 8 apenas porque fui e fiz e não pedi permissão.
Seu grupo precisa de um forte líder técnico e ninguém se adiantou.
Confira http://community.rallydev.com/. Eles têm uma edição da comunidade que faz um excelente trabalho de gerenciamento de projetos Agile e rastreamento de defeitos. Isso por si só aumentará sua pontuação no Joel e não custará NENHUM espaço ou tempo no servidor para configurar.
fonte
Se esta é uma pequena loja em que você e o outro "sênior" são basicamente as únicas pessoas que codificam, na verdade pode ser sua responsabilidade indicar ao gerente o que precisa ser feito para satisfazer o "Teste Joel".
As mudanças nos requisitos sempre estarão presentes, e seu trabalho é adotá-las, que é um dos princípios básicos do desenvolvimento ágil :
Mas adaptar-se às novas exigências significa seguir também outros princípios ágeis. No nível gerencial, isso significa que o gerente deve poder apresentar de forma transparente ao cliente que todas essas alterações têm um custo: o escopo do projeto deve ser alterado para atender aos prazos ou os prazos devem ser alterados (o último não é recomendado).
Se esse é um tipo de projeto em que seu gerente é responsável por todos os requisitos, você deve agir como se fosse seu cliente ágil e explicar a mesma coisa para eles (o escopo <--> compromete o prazo )
Mas no nível do desenvolvedor em uma pequena empresa, eu diria que é sua responsabilidade garantir que a parte da codificação esteja em conformidade com as recomendações ágeis.
Estas são algumas etapas que você absolutamente precisa executar e provavelmente precisará executá-las:
Lembre-se de que você pode ter um repositório SVN localmente em sua própria máquina. Uma lista TODO simples pode servir como um sistema de rastreamento de bugs de pessoas pobres (um pouco extremo, mas ei). E não há desculpa para não ter scripts de construção.
Além disso, antes de fazer qualquer declaração sobre comprometimentos de escopo / prazo, alguém também precisa fazer previsões sobre quanto tempo um determinado recurso levará. Isso geralmente é feito em "dias ideais" no mundo ágil, o que significa que você deve fazer o possível para prever o esforço relativo de cada recurso e, em seguida, usar sua velocidade de codificação real para ver o quão bem você previu (e dimensionar a "curva" de acordo) )
fonte
Acho que faltam camadas de responsabilidade em sua equipe. Deve haver um gerente de projeto, analista de sistemas, analista de negócios e desenvolvedores. A função de gerente de projeto é responsável por definir e aplicar a estratégia de comunicação do projeto do cliente (entre outras tarefas).
Os gerentes não são obrigados a entender código ou complexidades. A necessidade de entender, recursos, custo e risco.
As versões do código fonte, a qualidade do código, a complexidade, etc. são de responsabilidade do gerente ou do desenvolvedor sênior.
A solução é:
1-Definir a estrutura da equipe do projeto e suas responsabilidades
2-Educar o gerente em casos de falhas de software causadas por mau gerenciamento - Fique longe de detalhes técnicos. Você pode encontrar alguns exemplos pesquisando no Google.
fonte
Não foi possível tentar configurar revisões de código para que haja pessoas visualizando o código? Existem convenções e padrões que ajudariam a dar alguma estrutura ao código? Presume-se que você não seja o único desenvolvedor lá, é claro.
Enquanto você provavelmente está em um lugar não muito bom, parece que está funcionando no final? Os projetos estão sendo realizados e as coisas estão avançando? As coisas estão sendo feitas? O programador de fita adesiva seria o artigo de Joel que você pode querer ler.
fonte
Opção 1 - diga a eles 'com todas as alterações que você está fazendo neste projeto, quando o implementarmos, o sistema funcionará muito lentamente' ou 'o cliente não conseguirá descobrir'. Seus gerentes não se preocupam com o código de espaguete, mas se preocupam com o cliente. Lance o problema para eles em termos do que compreendem, não em termos de escrita de código.
Opção 2 - dê o que eles querem. Quando eles reclamam de algo que você diz "mas foi o que você pediu"
fonte