Atualmente sou estudante de Ciência da Computação em um ano de estágio em uma empresa que produz e oferece suporte a um aplicativo Web de grande porte. Estou adorando a experiência de ver como o software é produzido no mundo real e sinto muita sorte de encontrar uma empresa que oferece a chance de não apenas manter e estender a funcionalidade existente, mas também desenvolver recursos totalmente novos para o produto.
Tudo o que disse, porém, estou muito consciente de que é muito, muito improvável que seja um exemplo perfeito de como se desenvolver corretamente. Longe disso, de fato. Sinto que estou aprendendo muito com a minha experiência aqui, e não quero aprender coisas erradas ou pegar maus hábitos de colegas que podem ser difíceis de se afastar mais adiante. Principalmente, é fácil dizer o que é bom e o que não é - por exemplo, a cobertura do Teste de Unidade aqui é praticamente inexistente por vários motivos (principalmente desculpas ruins misturadas com um ou dois pontos válidos). Ultimamente, porém, tenho notado uma ocorrência regular da qual não tenho certeza.
Sempre que iniciamos um novo projeto, naturalmente precisamos encontrar qualquer código relevante que precise ser estendido, alterado ou removido. Parece-me que, na grande maioria das vezes, qualquer coisa que não esteja nas seções mais usadas do aplicativo leva uma idade para ser encontrada na base de código. Há um ou dois líderes técnicos que conhecem bem sua seção do código, mas mesmo às vezes ficam perplexos e precisam gastar muito tempo procurando o que precisam, ou recorrem a alguém que editou essa parte do código recentemente ( se alguém) para obter ajuda. Quando digo muito tempo, não quero dizer horas (geralmente), mas parece-me que uma boa base de código seria navegável para qualquer ponto dentro de alguns minutos, na pior das hipóteses, para alguém que estivesse vagamente familiarizado com o sistema.
Então, minha pergunta. O problema acima é devido ao código mal estruturado? Como alternativa, cabe aos desenvolvedores não ter conhecimento suficiente da base de código? Ou é simplesmente inevitável em aplicativos grandes, independentemente de quanto trabalho seja necessário para manter a estrutura do arquivo limpa?
Ou, de fato ... estou apenas perdendo meu tempo em um tópico que realmente não importa?