Digamos que você trabalhe para uma empresa e o que você faz é desenvolver software para elas. Você não tem idéia do quadro geral ou talvez leve. O que você tem são tarefas atribuídas a você por meio do sistema de rastreamento de problemas. Você recebe tarefas, as faz funcionar da maneira que a tarefa as descreve, as envia de volta. Como adicionar 2 números inteiros:
function add(a,b){return a + b;}
Porém, mais tarde, à medida que o projeto avança, você percebe que, à medida que add
se torna mais complexo, percebe que ele deveria ter necessitado de alguma forma de arquitetura, mais do que apenas uma função que adiciona parâmetros e retorna um valor. No entanto, você não sabia disso. Em primeiro lugar, tudo o que eles precisavam era simples assim add
. Você não esperava que o add se tornasse tão complexo.
O projeto avança com mais recursos, que você não esperava ter em primeiro lugar. E, no final, você continua acumulando hacks e camadas e mais camadas de funções para evitar a quebra / reescrita do código existente.
Como você lida com essas situações? Como você luta contra a dívida técnica como "o desenvolvedor mais baixo"?
Esclarecimento:
Você é o "implementador", o mais baixo da hierarquia.
Você vê o problema, mas não tem voz a dizer sobre o assunto.
Não estou quantificando dívidas técnicas ou procurando ferramentas.
Em relação ao terceiro "duplicado"
- Refatoração e reescrita - Você está bloqueado para suas tarefas. Você não é pago para fazer extra.
- Visão geral da arquitetura - Você conhece o sistema geral, mas não faz ideia da arquitetura.
- Code Freeze - Não é sua ligação. Você não é gerente.
- Modularização - Não faço ideia de arquitetura. Módulos mudam conforme os requisitos mudam.
- Testes automatizados - Não existe.
Respostas:
Sempre que perceber algo assim, insira um novo ticket no seu sistema de rastreamento de problemas.
Crie o hábito de usar o rastreador de problemas como uma ferramenta primária para comunicar coisas desse tipo, porque a partir daí será fácil escolher, avaliar e priorizar seus colegas seniores / líder / gerente / quem for responsável por rastrear os problemas em seu projeto .
Use a ferramenta certa para o trabalho. Eu sempre faço isso e recomendo fortemente que você faça o mesmo.
Como exemplo, aqui está um ticket que criei cerca de um mês atrás. Após a conclusão de um recurso específico, descobri que o código se tornou substancialmente mais complicado do que era antes, mas não posso corrigi-lo no prazo estabelecido para a implementação do recurso.
(Os nomes dos recursos, tickets e código usados no rastreador real são obscurecidos, mas o texto é copiado como está).
FWIW, meu conselho se aplica independentemente do "nível" que você é.
Eu tenho usado no seu nível atual ("mais baixo") e estou usando agora que meu nível está muito longe de "mais baixo" e tenho um "dizer" satisfatório, como você chama, e eu vou usá-lo sempre não importa o quê.
Pense nisso, sem nível, não importa quanta autoridade você tenha, simplesmente não pode haver melhor maneira.
Se você "disser" ei, temos um problema , é apenas um ruído de ar. E mesmo se seu chefe / líder concordar e disser que você está certo, temos um problema , isso não muda nada - é apenas um ruído de ar novamente, e não pode ser mais nada.
Use a ferramenta certa para o trabalho. Para o trabalho que você descreve, o rastreador de problemas é exatamente a ferramenta certa.
Você percebe o problema, entra no sistema projetado para rastrear esses dados e cuida do resto, da melhor maneira possível - simplesmente porque foi projetado para isso :
Quaisquer outros meios que você queira escolher para se comunicar, ter um ticket no rastreador apenas facilitará as coisas para você.
Mesmo se você preferir mexer no ar , dizer "Eu gostaria de discutir o TICKET-54321 ..." é um ponto de partida mais sólido do que "Ouça, eu gostaria de falar sobre algum código com o qual lidei há um tempo atrás. ... "E você pode passar com segurança as referências ao ticket pelo correio: mesmo se o correio for perdido, o problema ainda estará presente no rastreador, com todos os detalhes que você deseja informar.
fonte
O que me faz sentir mal com o seu cenário é exatamente o que você escreveu no título e várias vezes no texto da pergunta:
Você é o desenvolvedor mais baixo da cadeia
Por que esse ponto é tão importante? Bem, primeiro de tudo, e de um ponto de vista puramente tecnológico, você certamente está certo. Você é contratado como o que chama de "implementador" das coisas, uma abelha operária que age de acordo com os comandos dados.
Mas mesmo se você for o desenvolvedor mais baixo em relação à classificação, isso ainda não está certo. A chave aqui é perceber que você está apenas se percebendo como sendo o desenvolvedor mais baixo. Você já tentou superar essa autopercepção e realmente assumir a responsabilidade por alguma coisa ?
Toma! Não espere, até que alguém o torne responsável.
Normalmente, é o contrário: você recebe mais e sua opinião é respeitada mais, depois de mostrar que vale a pena . É "faça antes de ter", e não o contrário.
O que espero das pessoas da minha equipe é exatamente isso: Um senso de responsabilidade pelo projeto ou produto que estamos tentando criar e por todos os processos relacionados a esse esforço. Sempre que alguém da minha equipe me impressiona assumindo a responsabilidade, por exemplo, propondo melhorias ou ainda melhor começa a melhorar as coisas por conta própria, essas são as pessoas que serão promovidas.
Em outras palavras: ninguém promove as abelhas operárias, as pessoas aguardam passivamente as tarefas que lhes são atribuídas, sem o menor piscar de iniciativa " porque elas não são pagas por isso ", finalmente choramingando que nunca tiveram chance.
Obviamente, tudo isso depende da cultura da sua empresa, com a qual Joel se refere nas "Duas histórias" vinculadas por Arthur. Se os gerentes da empresa são realmente tão estúpidos para impedir seu próprio pessoal de progredir, então a taxa de flutuação provavelmente já é muito alta e pode ser hora de tirar conclusões disso. Mas, se esse não for o caso, o verdadeiro problema pode estar dentro de você.
fonte
Você é um profissional. Seu empregador contratou você para ser profissional. Assim, tratar suas preocupações da mesma forma que você gostaria profissionais que você contratar para tratar seus profissionais opiniões . Em particular, você espera que outros profissionais façam as otimizações e correções necessárias ao longo do caminho, desde que essas otimizações não aumentem inesperadamente o custo.
Por exemplo, suponha que você leve seu carro a um mecânico para substituir uma lâmpada. O mecânico percebe quatro coisas:
Cada um desses cenários, e tenho certeza que outros, têm paralelos no desenvolvimento de software - especialmente se você se considera um profissional de qualquer nível . Como profissional, com muito poucas exceções, seu trabalho é atingir o objetivo final de melhorar o produto de uma maneira específica, de acordo com sua compreensão profissional .
fonte
Você faz isso da mesma maneira que um funcionário de um escritório de advocacia luta contra comportamentos antiéticos, um funcionário de fast-food luta contra comportamentos insalubres ou um policial de estacionamento combate a corrupção policial.
No exemplo que você forneceu, com uma
add
função que sofreu uma fluência completa no recurso, reserve alguns minutos e rascunhe o esboço do que o melhoraria. Envie isso para quem você precisar de aprovação para implementá-lo e siga em frente.Supondo que sua empresa foi gerenciada por pessoas extremamente competentes e estruturada corretamente, sua preocupação seria encaminhada para o projetista de sistema certo para uma decisão ou você teria uma margem de manobra para implementar sua sugestão. Como desenvolvedor júnior, eu me preocuparia mais em aprender como sua empresa funciona do que em dívida técnica - e, se você conhece o primeiro, como lidar com o último deve ser óbvio.
fonte
Nunca ouvi falar de uma organização que não quisesse que seus funcionários participassem. Você diz que você é pago apenas para executar as tarefas. Sinceramente, duvido que você tenha as tarefas certas em mente. Porque você é pago para escrever um bom software.
Assuma essa responsabilidade. Diga não à adição de recursos se você não puder suportar a base. Aconselhe o cliente com sua experiência. Pise no freio agora, antes que seja tarde demais e você tenha que jogar fora todo o projeto, porque ele não será mais sustentável.
fonte