Um pouco de experiência: sou um dos dois programadores do nosso departamento de 10 pessoas (o resto são artistas e administração). Nós dois fazemos toda a codificação necessária para fazer as coisas fluírem bem e desenvolvemos todos os projetos que surgirem. Venho programando há cerca de 4 anos, onde este é seu primeiro trabalho "real" (como ele diz). Geralmente, trabalhamos em diferentes projetos a qualquer momento.
Há alguns meses, desenvolvi um conjunto (de maneira alguma perfeito) de classes que seriam usadas em um projeto posterior. Uma grande parte desse projeto foi delegada a ele (por motivos de cobrança) para projetar e programar uma interface GUI. Como ele era novo, ajudei um pouco no design e pedi ajuda se ele precisava disso com o resto. Ele terminou a interface há algumas semanas, e demonstrou que ela funcionava, embora um pouco lenta.
A próxima parte desse projeto começou, na qual estou trabalhando. Abri a interface para começar com as próximas etapas e imediatamente me deparei com problemas (um pouco lento era um pouco de eufemismo, erros em ações comuns etc.). Procurei no código alguns problemas e estou encontrando O(n^n)
chamadas que deveriam ser O(n)
, digite suposições sem verificação de erro (está em Python), referências à GUI adicionada ao código original e assim por diante.
Agora, eu definitivamente gostaria de ensinar a ele o que estava errado e como corrigi-lo, mas ele já passou para o seu próximo projeto, e isso foi há algumas semanas atrás. Receio que eu diga "Volte e faça o que é certo!" (com ajuda, é claro) é muito duro, e ainda temos outros projetos a serem feitos nesse meio tempo. Devo apenas corrigir o código por enquanto e tentar pegar as coisas no futuro?
O(n^n)
menos que não exista outra maneira. Se o fizerem, provavelmente obtiveram um C em algoritmos ou não o aceitaram ou tiveram um professor de baixa qualidade. Aproveitar algum tipo de ferramenta para ajudar a encontrar problemas comuns seria bom. Talvez como a próxima tarefa esse cara possa escrever alguns testes de desempenho?